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

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 (1000) hide show
  1. package/README.md +3 -3
  2. package/dist/admin/create-admin-pages-from-spec.d.ts +1 -1
  3. package/dist/application-spec/errors/diagnostic-codes.d.ts +4 -0
  4. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  5. package/dist/application-spec/errors/diagnostic-messages.d.ts +4 -0
  6. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  7. package/dist/application-spec/generate-application/code/common/index.d.ts +1 -0
  8. package/dist/application-spec/generate-application/code/common/index.js +1 -1
  9. package/dist/application-spec/generate-application/code/common/project-module-list.d.ts +8 -0
  10. package/dist/application-spec/generate-application/code/common/project-module-list.js +3 -0
  11. package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
  12. package/dist/application-spec/generate-application/code/project-scaffolding.d.ts +8 -1
  13. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  14. package/dist/application-spec/generate-application/code/templates/admin-domain-code.d.ts +1 -2
  15. package/dist/application-spec/generate-application/code/templates/admin-domain-code.js +6 -14
  16. package/dist/application-spec/generate-application/code/templates/admin-frontend-code.d.ts +1 -2
  17. package/dist/application-spec/generate-application/code/templates/admin-frontend-code.js +4 -4
  18. package/dist/application-spec/generate-application/code/templates/configurator-domain-code.d.ts +1 -2
  19. package/dist/application-spec/generate-application/code/templates/configurator-domain-code.js +7 -16
  20. package/dist/application-spec/generate-application/code/templates/configurator-frontend-code.d.ts +1 -2
  21. package/dist/application-spec/generate-application/code/templates/configurator-frontend-code.js +7 -9
  22. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-assistant.d.ts +2 -2
  23. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-assistant.js +1 -1
  24. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.js +46 -44
  25. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.d.ts +1 -1
  26. package/dist/application-spec/generate-application/code/templates/domain-spec/generate-invariants.js +1 -1
  27. package/dist/application-spec/generate-application/code/templates/domain-spec.js +4 -4
  28. package/dist/application-spec/generate-application/code/templates/domain.js +5 -5
  29. package/dist/application-spec/generate-application/code/templates/index.d.ts +1 -7
  30. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  31. package/dist/application-spec/generate-application/code/templates/package-json.js +1 -1
  32. package/dist/application-spec/generate-application/code/templates/skills/phoenix-cli-skill.js +1 -1
  33. package/dist/application-spec/generate-application/code/templates/skills/phoenix-create-configurator-skill.js +93 -41
  34. package/dist/application-spec/generate-application/code/templates/skills/phoenix-feedback-skill.js +1 -1
  35. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +2 -2
  36. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +1 -1
  37. package/dist/application-spec/generate-application/code/templates/skills/phoenix-variants-skill.d.ts +1 -0
  38. package/dist/application-spec/generate-application/code/templates/skills/phoenix-variants-skill.js +6 -0
  39. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +37 -12
  40. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +19 -7
  41. package/dist/application-spec/generate-application/code/templates/webhook-builders.js +9 -4
  42. package/dist/application-spec/generate-application/code/templates/webhooks-config.js +2 -2
  43. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.d.ts +4 -3
  44. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.js +1 -1
  45. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  46. package/dist/application-spec/parse-application-files/spec/application/admin-spec/admin-spec.js +1 -1
  47. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/configurator-spec.js +1 -1
  48. package/dist/application-spec/parse-application-files/spec/model/defaults.d.ts +5 -0
  49. package/dist/application-spec/parse-application-files/spec/model/defaults.js +1 -1
  50. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.d.ts +25 -0
  51. package/dist/application-spec/parse-application-files/spec/relations/reference-field-type.js +1 -0
  52. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.d.ts +46 -0
  53. package/dist/application-spec/parse-application-files/spec/relations/relation-field-mismatch.js +1 -0
  54. package/dist/application-spec/parse-application-files/spec/relations/relations.d.ts +4 -3
  55. package/dist/application-spec/parse-application-files/spec/relations/relations.js +1 -1
  56. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-field-type.d.ts +3 -8
  57. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-field-type.js +1 -1
  58. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.d.ts +9 -43
  59. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  60. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-server-settings.d.ts +2 -2
  61. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant.d.ts +5 -21
  62. package/dist/client/authorized-client.d.ts +3 -1
  63. package/dist/client/authorized-client.js +1 -1
  64. package/dist/client/contract.d.ts +34 -0
  65. package/dist/client/contract.js +1 -1
  66. package/dist/client/index.d.ts +2 -2
  67. package/dist/client/index.js +1 -1
  68. package/dist/client/local-authorized-client.d.ts +3 -1
  69. package/dist/client/local-authorized-client.js +1 -1
  70. package/dist/client/memory-authorized-client.d.ts +3 -1
  71. package/dist/client/memory-authorized-client.js +1 -1
  72. package/dist/client/phoenix-api.d.ts +271 -30
  73. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  74. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +245 -13
  75. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  76. package/dist/configurator/application-runtime/extensions/systems/assistant-system/change-recorder.d.ts +85 -0
  77. package/dist/configurator/application-runtime/extensions/systems/assistant-system/change-recorder.js +1 -0
  78. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.d.ts +8 -3
  79. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.js +1 -1
  80. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.d.ts +4 -0
  81. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.js +1 -1
  82. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +16 -1
  83. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  84. package/dist/configurator/application-runtime/extensions/systems/graphql-system/side-effects.d.ts +9 -0
  85. package/dist/configurator/application-runtime/extensions/systems/graphql-system/side-effects.js +1 -0
  86. package/dist/configurator/application-runtime/extensions/systems/index.d.ts +1 -1
  87. package/dist/configurator/common/frontend-analytics.d.ts +21 -21
  88. package/dist/configurator/index.d.ts +0 -1
  89. package/dist/configurator/index.js +1 -1
  90. package/dist/configurator/pages/DefaultConfiguratorLayout.d.ts +6 -0
  91. package/dist/configurator/pages/DefaultConfiguratorLayout.js +1 -0
  92. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  93. package/dist/configurator/scene/scene-analytics/scene-analytics.d.ts +2 -2
  94. package/dist/configurator/ui/assistant/AssistantChips.js +1 -1
  95. package/dist/configurator/ui/assistant/AssistantComposer.d.ts +3 -7
  96. package/dist/configurator/ui/assistant/AssistantComposer.js +1 -1
  97. package/dist/configurator/ui/assistant/AssistantPanel.js +1 -1
  98. package/dist/configurator/ui/assistant/AssistantThread.d.ts +7 -8
  99. package/dist/configurator/ui/assistant/AssistantThread.js +1 -1
  100. package/dist/configurator/ui/assistant/index.d.ts +1 -1
  101. package/dist/configurator/ui/assistant/index.js +1 -1
  102. package/dist/configurator/ui/assistant/thread-items.d.ts +14 -3
  103. package/dist/configurator/ui/assistant/thread-items.js +1 -1
  104. package/dist/configurator/ui/assistant/tool-chip.d.ts +8 -1
  105. package/dist/configurator/ui/assistant/tool-chip.js +1 -1
  106. package/dist/configurator/ui/assistant/use-is-assistant-panel-open.d.ts +5 -0
  107. package/dist/configurator/ui/assistant/use-is-assistant-panel-open.js +1 -0
  108. package/dist/configurator/ui/configurator-layout/universal/DesktopLayout.js +4 -4
  109. package/dist/configurator/ui/configurator-layout/universal/DesktopPreview.js +1 -1
  110. package/dist/configurator/ui/configurator-layout/universal/Layout.js +1 -1
  111. package/dist/configurator/ui/configurator-layout/universal/MobileLayout.js +2 -2
  112. package/dist/configurator/ui/configurator-layout/universal/MobilePreview.js +1 -1
  113. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.d.ts +47 -0
  114. package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.js +1 -0
  115. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.d.ts +11 -26
  116. package/dist/configurator/ui/configurator-layout/universal/use-scene-safe-area.js +1 -1
  117. package/dist/configurator/ui/legacy/mobile-controls/MobileControls.d.ts +1 -1
  118. package/dist/configurator/ui/phoenix-layout-elements/AssistantToolbarButton.d.ts +2 -2
  119. package/dist/configurator/ui/phoenix-layout-elements/AssistantToolbarButton.js +1 -1
  120. package/dist/docs/complex-use-cases/filtered-controls-with-fix-dialog.mdx +100 -117
  121. package/dist/docs/complex-use-cases/navigation-reset-selection.mdx +18 -12
  122. package/dist/docs/complex-use-cases/sketching.mdx +0 -38
  123. package/dist/docs/controls/select-attribute/cardselect.mdx +9 -13
  124. package/dist/docs/index.json +1 -1
  125. package/dist/docs/integrations/woocommerce/local-development.mdx +1 -1
  126. package/dist/docs/layouts/custom-price.mdx +14 -16
  127. package/dist/docs/layouts/sidebar/tabs.mdx +24 -21
  128. package/dist/docs/layouts/toolbar.mdx +3 -1
  129. package/dist/docs/other-features/domain-actions.mdx +1 -1
  130. package/dist/docs/other-features/side-effects.mdx +76 -45
  131. package/dist/docs/other-features/transformers.mdx +1 -1
  132. package/dist/docs/other-features/violation-messages.mdx +52 -56
  133. package/dist/docs/phoenix/admin.mdx +9 -24
  134. package/dist/docs/phoenix/configurator-interface.mdx +100 -65
  135. package/dist/docs/phoenix/deployments.mdx +1 -1
  136. package/dist/docs/phoenix/domain-model.mdx +4 -0
  137. package/dist/docs/phoenix/expression-context.mdx +11 -3
  138. package/dist/docs/phoenix/getting-started.mdx +1 -1
  139. package/dist/docs/phoenix/localization.mdx +3 -22
  140. package/dist/docs/phoenix/phoenix-cli.mdx +124 -49
  141. package/dist/docs/phoenix/project-structure.mdx +24 -11
  142. package/dist/docs/phoenix/quickstart.mdx +2 -2
  143. package/dist/docs/phoenix/sdk-builder-workflow.mdx +12 -11
  144. package/dist/docs/phoenix/webhooks.mdx +1 -1
  145. package/dist/docs/recipes-and-delete/recipe-hierarchy-selection.mdx +15 -13
  146. package/dist/docs/relations/hierarchy.mdx +13 -2
  147. package/dist/docs/ux-guidelines/choosing-a-control.mdx +11 -0
  148. package/dist/domain/admin-domain/__generated/enhanced-model.d.ts +1 -2
  149. package/dist/domain/admin-domain/__generated/model/versions/v1.d.ts +1 -1
  150. package/dist/domain/admin-domain/__generated/model/versions/v2.d.ts +1 -1
  151. package/dist/domain/admin-domain/__generated/model/versions/v3.d.ts +1 -1
  152. package/dist/domain/admin-domain/__generated/model/versions/v4.d.ts +1 -1
  153. package/dist/domain/admin-domain/__generated/model/versions/v5.d.ts +1 -1
  154. package/dist/domain/admin-domain/__generated/model/versions/v6.d.ts +2 -2
  155. package/dist/domain/admin-domain/__generated/model/versions/v6.js +1 -1
  156. package/dist/domain/admin-domain/implementation/common-admin-expressions.d.ts +26 -14
  157. package/dist/domain/admin-domain/implementation/common-admin-migrations.d.ts +1 -1
  158. package/dist/domain/admin-domain/index.d.ts +9 -5
  159. package/dist/domain/admin-domain/index.js +1 -1
  160. package/dist/domain/application/GetApplicationWrapperHandler.d.ts +1 -1
  161. package/dist/domain/application/GetThemeHandler.d.ts +1 -1
  162. package/dist/domain/application/GetWebComponentOptions.d.ts +1 -1
  163. package/dist/domain/application/admin-page-factories.d.ts +1 -2
  164. package/dist/domain/application/application-config.d.ts +24 -95
  165. package/dist/domain/application/assistant/assistant-manifest.d.ts +63 -0
  166. package/dist/domain/application/assistant/assistant-resolved-manifest.d.ts +95 -0
  167. package/dist/domain/application/assistant/assistant-value-type.d.ts +9 -0
  168. package/dist/domain/application/assistant/assistant-value-type.js +1 -0
  169. package/dist/domain/application/assistant/build-assistant-manifest.d.ts +4 -0
  170. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -0
  171. package/dist/domain/application/assistant/generate-assistant-prompt.d.ts +3 -0
  172. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -0
  173. package/dist/domain/application/assistant/index.d.ts +4 -0
  174. package/dist/domain/application/assistant/index.js +1 -0
  175. package/dist/domain/application/assistant-field-options.d.ts +2 -3
  176. package/dist/domain/application/assistant-mutations.d.ts +3 -5
  177. package/dist/domain/application/assistant-mutations.js +1 -1
  178. package/dist/domain/application/assistant-recipe-groups.d.ts +3 -7
  179. package/dist/domain/application/configurator-builder.d.ts +33 -18
  180. package/dist/domain/application/configurator-builder.js +1 -1
  181. package/dist/domain/application/create-initial-published-data.d.ts +1 -2
  182. package/dist/domain/application/index.d.ts +3 -5
  183. package/dist/domain/application/index.js +1 -1
  184. package/dist/domain/application/published-data/DataRowValidatorHandler.d.ts +1 -1
  185. package/dist/domain/application/published-data/FilterPublishedChunksHandler.d.ts +1 -1
  186. package/dist/domain/application/published-data/MapPublishedChunkedDataHandler.d.ts +1 -1
  187. package/dist/domain/application/published-data/MapPublishedRevisionDataHandler.d.ts +1 -1
  188. package/dist/domain/application/published-data/SheetValidatorHandler.d.ts +1 -1
  189. package/dist/domain/application/published-data/build-legend-data.d.ts +1 -1
  190. package/dist/domain/application/published-data/create-finalize-admin-domain.d.ts +1 -2
  191. package/dist/domain/application/published-data/format-field-type.d.ts +1 -1
  192. package/dist/domain/application/published-data/map-data-to-sheet.d.ts +1 -1
  193. package/dist/domain/application/published-data/map-published-chunked-data.d.ts +2 -2
  194. package/dist/domain/application/published-data/map-published-data.d.ts +1 -2
  195. package/dist/domain/application/published-data/validate-sheet-data.d.ts +1 -1
  196. package/dist/domain/available-system-components.js +1 -1
  197. package/dist/domain/core/action/action-factory.d.ts +11 -0
  198. package/dist/domain/core/{action.d.ts → action/action.d.ts} +22 -18
  199. package/dist/domain/core/action/index.d.ts +2 -0
  200. package/dist/domain/core/action/index.js +1 -0
  201. package/dist/domain/{components → core/component}/component-reader-types.d.ts +1 -2
  202. package/dist/domain/{components → core/component}/debug-state-component.d.ts +1 -1
  203. package/dist/domain/core/component/debug-state-component.js +1 -0
  204. package/dist/domain/core/component/domain-component-optic.d.ts +66 -0
  205. package/dist/domain/core/component/domain-component-optic.js +16 -0
  206. package/dist/domain/{components → core/component}/drag-state-component.d.ts +1 -1
  207. package/dist/domain/core/component/drag-state-component.js +1 -0
  208. package/dist/domain/{components → core/component}/export-state-component.d.ts +1 -1
  209. package/dist/domain/core/component/export-state-component.js +1 -0
  210. package/dist/domain/{components → core/component}/fullscreen-state-component.d.ts +1 -1
  211. package/dist/domain/core/component/fullscreen-state-component.js +1 -0
  212. package/dist/domain/{components → core/component}/group-components-by-entity-id-and-name.d.ts +1 -2
  213. package/dist/domain/core/component/group-components-by-entity-id-and-name.js +1 -0
  214. package/dist/domain/{components → core/component}/hover-state-component.d.ts +1 -1
  215. package/dist/domain/core/component/hover-state-component.js +1 -0
  216. package/dist/domain/core/component/index.d.ts +18 -0
  217. package/dist/domain/core/component/index.js +1 -0
  218. package/dist/domain/{components → core/component}/legacy-filter.d.ts +4 -19
  219. package/dist/domain/{components → core/component}/navigation-state-component.d.ts +1 -1
  220. package/dist/domain/core/component/navigation-state-component.js +1 -0
  221. package/dist/domain/{components → core/component}/selection-state-component.d.ts +1 -1
  222. package/dist/domain/core/component/selection-state-component.js +1 -0
  223. package/dist/domain/{components → core/component}/system-component-builder.d.ts +1 -2
  224. package/dist/domain/core/component/system-component-builder.js +1 -0
  225. package/dist/domain/{components → core/component}/system-component-filter.d.ts +25 -20
  226. package/dist/domain/core/component/system-virtual-entity.js +1 -0
  227. package/dist/domain/{components → core/component}/tool-state-component.d.ts +1 -1
  228. package/dist/domain/core/component/tool-state-component.js +1 -0
  229. package/dist/domain/{components → core/component}/updates.d.ts +17 -2
  230. package/dist/domain/{components → core/component}/view-state-component.d.ts +1 -1
  231. package/dist/domain/core/component/view-state-component.js +1 -0
  232. package/dist/domain/{components → core/component}/viewport-state-component.d.ts +1 -1
  233. package/dist/domain/core/component/viewport-state-component.js +1 -0
  234. package/dist/domain/core/data-schema/data-cell-value.d.ts +4 -0
  235. package/dist/domain/core/data-schema/data-schema-array-field.d.ts +5 -0
  236. package/dist/domain/core/data-schema/data-schema-field-object.d.ts +4 -0
  237. package/dist/domain/core/data-schema/data-schema-field.d.ts +2 -0
  238. package/dist/domain/core/data-schema/data-schema-field.js +1 -0
  239. package/dist/domain/core/data-schema/data-schema-localized-field.d.ts +4 -0
  240. package/dist/domain/core/data-schema/data-schema-localized-field.js +1 -0
  241. package/dist/domain/core/data-schema/data-schema-primitive-field.d.ts +5 -0
  242. package/dist/domain/core/data-schema/data-schema-primitive-field.js +1 -0
  243. package/dist/domain/core/data-schema/data-schema.d.ts +2 -0
  244. package/dist/domain/core/data-schema/data-schema.js +1 -0
  245. package/dist/domain/core/data-schema/index.d.ts +7 -0
  246. package/dist/domain/core/data-schema/index.js +1 -0
  247. package/dist/domain/core/decoder/create-decoder.d.ts +6 -0
  248. package/dist/domain/core/decoder/create-decoder.js +1 -0
  249. package/dist/domain/core/decoder/decoder.d.ts +6 -0
  250. package/dist/domain/core/decoder/decoder.js +1 -0
  251. package/dist/domain/core/decoder/index.d.ts +2 -0
  252. package/dist/domain/core/decoder/index.js +1 -0
  253. package/dist/domain/core/domain-factory.d.ts +4 -5
  254. package/dist/domain/core/domain-factory.js +1 -1
  255. package/dist/domain/core/domain.d.ts +4 -5
  256. package/dist/domain/core/domain.js +1 -1
  257. package/dist/domain/core/emission/index.d.ts +8 -0
  258. package/dist/domain/core/emission/index.js +1 -0
  259. package/dist/domain/core/emission/reset-state-emission.d.ts +12 -0
  260. package/dist/domain/core/emission/reset-state-emission.js +1 -0
  261. package/dist/domain/core/emission/state-emission.d.ts +4 -0
  262. package/dist/domain/core/emission/state-emission.js +1 -0
  263. package/dist/domain/core/emission/state-update-emission.d.ts +14 -0
  264. package/dist/domain/core/emission/state-update-emission.js +1 -0
  265. package/dist/domain/core/emission/state-validation-result.d.ts +18 -0
  266. package/dist/domain/core/emission/state-validation-result.js +1 -0
  267. package/dist/domain/core/emission/transformation-log.d.ts +2 -0
  268. package/dist/domain/core/emission/transformation-log.js +1 -0
  269. package/dist/domain/core/emission/transformer-log-entry.d.ts +6 -0
  270. package/dist/domain/core/emission/transformer-log-entry.js +1 -0
  271. package/dist/domain/core/emission/transformer-log.d.ts +11 -0
  272. package/dist/domain/core/emission/transformer-log.js +1 -0
  273. package/dist/domain/core/emission/transformer-phase.d.ts +1 -0
  274. package/dist/domain/core/emission/transformer-phase.js +1 -0
  275. package/dist/domain/core/expression/aliased-expressions.d.ts +10 -0
  276. package/dist/domain/core/expression/aliased-expressions.js +1 -0
  277. package/dist/domain/{expressions → core/expression}/constant-expressions.d.ts +3 -4
  278. package/dist/domain/core/expression/constant-expressions.js +1 -0
  279. package/dist/domain/core/expression/custom-expression.d.ts +25 -0
  280. package/dist/domain/core/expression/custom-expression.js +1 -0
  281. package/dist/domain/core/expression/expression.d.ts +46 -0
  282. package/dist/domain/core/expression/expression.js +1 -0
  283. package/dist/domain/core/expression/index.d.ts +4 -0
  284. package/dist/domain/core/expression/index.js +1 -0
  285. package/dist/domain/core/index.d.ts +13 -17
  286. package/dist/domain/core/index.js +1 -1
  287. package/dist/domain/{invariants → core/invariant}/builtin-invariant.d.ts +2 -2
  288. package/dist/domain/core/invariant/custom-invariants.d.ts +13 -0
  289. package/dist/domain/core/invariant/custom-invariants.js +1 -0
  290. package/dist/domain/core/invariant/index.d.ts +5 -0
  291. package/dist/domain/core/invariant/index.js +1 -0
  292. package/dist/domain/core/invariant/invariants.d.ts +10 -0
  293. package/dist/domain/core/invariant/invariants.js +1 -0
  294. package/dist/domain/core/invariant/violation-component.js +1 -0
  295. package/dist/domain/{invariants → core/invariant}/violation.d.ts +2 -2
  296. package/dist/domain/core/{component.d.ts → model/component.d.ts} +1 -1
  297. package/dist/domain/core/model/index.d.ts +6 -0
  298. package/dist/domain/core/model/index.js +1 -0
  299. package/dist/domain/core/{reflection.d.ts → model/reflection.d.ts} +1 -1
  300. package/dist/domain/core/model/reflection.js +1 -0
  301. package/dist/domain/core/recipe/index.d.ts +1 -0
  302. package/dist/domain/core/recipe/index.js +1 -0
  303. package/dist/domain/{domain-context/recipe-system → core/recipe}/recipes.d.ts +1 -3
  304. package/dist/domain/core/recipe/recipes.js +1 -0
  305. package/dist/domain/{relations → core/relation}/all-of-type-relation.d.ts +3 -4
  306. package/dist/domain/core/relation/all-of-type-relation.js +1 -0
  307. package/dist/domain/{relations → core/relation}/component-factories.d.ts +1 -2
  308. package/dist/domain/core/relation/component-factories.js +1 -0
  309. package/dist/domain/{relations → core/relation}/composed-of.d.ts +1 -1
  310. package/dist/domain/core/relation/composed-of.js +1 -0
  311. package/dist/domain/{relations → core/relation}/direct-relation.d.ts +2 -3
  312. package/dist/domain/core/relation/index.d.ts +9 -0
  313. package/dist/domain/core/relation/index.js +1 -0
  314. package/dist/domain/{relations → core/relation}/indirect-relation.d.ts +3 -4
  315. package/dist/domain/core/relation/indirect-relation.js +1 -0
  316. package/dist/domain/{relations → core/relation}/reference-component.d.ts +4 -5
  317. package/dist/domain/core/relation/reference-component.js +1 -0
  318. package/dist/domain/{relations → core/relation}/reference-field.d.ts +1 -1
  319. package/dist/domain/core/relation/reference-field.js +1 -0
  320. package/dist/domain/{relations → core/relation}/relation-factory.d.ts +2 -3
  321. package/dist/domain/{relations → core/relation}/relation-implementation.d.ts +3 -4
  322. package/dist/domain/core/relation/relation-implementation.js +1 -0
  323. package/dist/domain/core/schema/enhanced-json-schema.js +1 -0
  324. package/dist/domain/core/schema/extended-schema-validator.js +1 -0
  325. package/dist/domain/core/schema/index.d.ts +3 -0
  326. package/dist/domain/core/schema/index.js +1 -0
  327. package/dist/domain/core/schema/schema-validator.js +1 -0
  328. package/dist/domain/core/state/id-sequence.d.ts +15 -0
  329. package/dist/domain/core/state/id-sequence.js +1 -0
  330. package/dist/domain/core/state/index.d.ts +3 -0
  331. package/dist/domain/core/state/index.js +1 -0
  332. package/dist/domain/core/{migrations.d.ts → state/migrations.d.ts} +15 -47
  333. package/dist/domain/core/state/migrations.js +1 -0
  334. package/dist/domain/core/{state.d.ts → state/state.d.ts} +1 -2
  335. package/dist/domain/domain-builder.d.ts +11 -11
  336. package/dist/domain/domain-builder.js +1 -1
  337. package/dist/domain/domain-context/action-system/action-system.d.ts +2 -4
  338. package/dist/domain/domain-context/action-system/action-system.js +1 -1
  339. package/dist/domain/domain-context/action-system/index.d.ts +1 -0
  340. package/dist/domain/domain-context/action-system/index.js +1 -0
  341. package/dist/domain/domain-context/analytics-system/index.d.ts +2 -0
  342. package/dist/domain/domain-context/analytics-system/index.js +1 -0
  343. package/dist/domain/domain-context/create-transformer.d.ts +2 -2
  344. package/dist/domain/domain-context/dimension-system/dimension-state.js +1 -1
  345. package/dist/domain/domain-context/dimension-system/dimension-system.d.ts +3 -4
  346. package/dist/domain/domain-context/dimension-system/dimension-system.js +1 -1
  347. package/dist/domain/domain-context/dimension-system/index.d.ts +1 -0
  348. package/dist/domain/domain-context/dimension-system/index.js +1 -0
  349. package/dist/domain/domain-context/domain-context-systems.d.ts +8 -10
  350. package/dist/domain/domain-context/index.d.ts +8 -18
  351. package/dist/domain/domain-context/index.js +1 -1
  352. package/dist/domain/domain-context/navigation-system/index.d.ts +3 -0
  353. package/dist/domain/domain-context/navigation-system/index.js +1 -0
  354. package/dist/domain/domain-context/navigation-system/navigation-system.d.ts +5 -8
  355. package/dist/domain/domain-context/navigation-system/navigation-system.js +1 -1
  356. package/dist/domain/domain-context/navigation-system/navigation-updates.d.ts +1 -12
  357. package/dist/domain/domain-context/navigation-system/navigation-updates.js +1 -1
  358. package/dist/domain/domain-context/navigation-system/selection-transformers.d.ts +2 -2
  359. package/dist/domain/domain-context/navigation-system/selection-transformers.js +1 -1
  360. package/dist/domain/domain-context/recipe-system/index.d.ts +1 -0
  361. package/dist/domain/domain-context/recipe-system/index.js +1 -0
  362. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.d.ts +2 -4
  363. package/dist/domain/domain-context/recipe-system/recipe-cooker-system.js +1 -1
  364. package/dist/domain/domain-context/relation-transformers/cascade-deletes.d.ts +3 -3
  365. package/dist/domain/domain-context/relation-transformers/cascade-deletes.js +1 -1
  366. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.d.ts +3 -3
  367. package/dist/domain/domain-context/relation-transformers/cascade-ref-pruning.js +1 -1
  368. package/dist/domain/domain-context/relation-transformers/create-entity-refs.d.ts +3 -3
  369. package/dist/domain/domain-context/relation-transformers/create-entity-refs.js +2 -2
  370. package/dist/domain/domain-context/relation-transformers/index.d.ts +4 -0
  371. package/dist/domain/domain-context/relation-transformers/index.js +1 -0
  372. package/dist/domain/domain-context/relation-transformers/replace-refs.d.ts +3 -3
  373. package/dist/domain/domain-context/relation-transformers/replace-refs.js +1 -1
  374. package/dist/domain/domain-context/store-system/apply-updates.d.ts +1 -3
  375. package/dist/domain/domain-context/store-system/apply-updates.js +1 -1
  376. package/dist/domain/domain-context/store-system/index.d.ts +4 -0
  377. package/dist/domain/domain-context/store-system/index.js +1 -0
  378. package/dist/domain/domain-context/store-system/next-domain-entity-id.d.ts +1 -13
  379. package/dist/domain/domain-context/store-system/next-domain-entity-id.js +1 -1
  380. package/dist/domain/domain-context/store-system/reconcile-projected-entities.d.ts +1 -2
  381. package/dist/domain/domain-context/store-system/reconcile-projected-entities.js +1 -1
  382. package/dist/domain/domain-context/store-system/store-system.d.ts +2 -39
  383. package/dist/domain/domain-context/store-system/store-system.js +2 -2
  384. package/dist/domain/domain-context/store-system/system-state.d.ts +2 -4
  385. package/dist/domain/domain-context/store-system/system-state.js +1 -1
  386. package/dist/domain/domain-context/transformers/actions-builder.d.ts +1 -2
  387. package/dist/domain/domain-context/transformers/actions-builder.js +1 -1
  388. package/dist/domain/domain-context/transformers/auto-snap-transformer.d.ts +6 -10
  389. package/dist/domain/domain-context/transformers/auto-snap-transformer.js +1 -1
  390. package/dist/domain/domain-context/transformers/chain-builder.d.ts +3 -3
  391. package/dist/domain/domain-context/transformers/context.d.ts +2 -7
  392. package/dist/domain/domain-context/transformers/context.js +1 -1
  393. package/dist/domain/domain-context/transformers/entity-builder.d.ts +1 -5
  394. package/dist/domain/domain-context/transformers/entity-builder.js +1 -1
  395. package/dist/domain/domain-context/transformers/index.d.ts +1 -1
  396. package/dist/domain/domain-context/transformers/index.js +1 -1
  397. package/dist/domain/domain-context/transformers/then-builder.d.ts +1 -2
  398. package/dist/domain/domain-context/transformers/then-builder.js +1 -1
  399. package/dist/domain/domain-context/transformers/when-builder.d.ts +3 -9
  400. package/dist/domain/domain-context/transformers/when-builder.js +1 -1
  401. package/dist/domain/domain-context/undo-system.d.ts +2 -3
  402. package/dist/domain/domain-runtime/domain-context/action-context.d.ts +11 -0
  403. package/dist/domain/domain-runtime/domain-context/action-context.js +1 -0
  404. package/dist/domain/domain-runtime/domain-context/component-reader.d.ts +1 -4
  405. package/dist/domain/domain-runtime/domain-context/component-reader.js +1 -1
  406. package/dist/domain/domain-runtime/domain-context/domain-context.js +1 -1
  407. package/dist/domain/domain-runtime/domain-context/expression-context.d.ts +8 -0
  408. package/dist/domain/domain-runtime/domain-context/expression-context.js +1 -0
  409. package/dist/domain/domain-runtime/domain-context/index.d.ts +3 -0
  410. package/dist/domain/domain-runtime/domain-context/runtime-expression-context.d.ts +18 -0
  411. package/dist/domain/domain-runtime/domain-context/runtime-expression-context.js +1 -0
  412. package/dist/domain/domain-runtime/domain-context/selectors.d.ts +6 -13
  413. package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
  414. package/dist/domain/domain-runtime/domain-runtime.d.ts +56 -56
  415. package/dist/domain/domain-runtime/spec/create-violation-expressions.d.ts +24 -0
  416. package/dist/domain/domain-runtime/spec/create-violation-expressions.js +1 -0
  417. package/dist/domain/domain-runtime/spec/index.d.ts +5 -0
  418. package/dist/domain/domain-runtime/spec/index.js +1 -1
  419. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  420. package/dist/domain/{expressions → domain-runtime/spec}/memoize-expression.d.ts +1 -2
  421. package/dist/domain/{application → domain-runtime/spec/module-checks}/element-registration.d.ts +6 -1
  422. package/dist/domain/domain-runtime/spec/module-checks/element-registration.js +1 -0
  423. package/dist/domain/{application → domain-runtime/spec/module-checks}/handler-registration.d.ts +5 -0
  424. package/dist/domain/domain-runtime/spec/module-checks/handler-registration.js +1 -0
  425. package/dist/domain/domain-runtime/spec/module-checks/index.d.ts +8 -0
  426. package/dist/domain/domain-runtime/spec/module-checks/index.js +1 -0
  427. package/dist/domain/domain-runtime/spec/module-checks/project-modules.d.ts +25 -0
  428. package/dist/domain/domain-runtime/spec/module-checks/project-modules.js +1 -0
  429. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.d.ts +4 -0
  430. package/dist/domain/domain-runtime/spec/module-checks/resolve-action-modules.js +1 -0
  431. package/dist/domain/domain-runtime/spec/module-checks/resolve-component-optic-modules.d.ts +4 -0
  432. package/dist/domain/domain-runtime/spec/module-checks/resolve-component-optic-modules.js +1 -0
  433. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.d.ts +15 -0
  434. package/dist/domain/domain-runtime/spec/module-checks/resolve-expression-modules.js +1 -0
  435. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.d.ts +22 -0
  436. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.js +1 -0
  437. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.d.ts +6 -0
  438. package/dist/domain/domain-runtime/spec/module-checks/resolve-invariant-modules.js +1 -0
  439. package/dist/domain/{actions → domain-runtime/spec}/prepare-action-implementations.d.ts +1 -1
  440. package/dist/domain/domain-runtime/spec/prepare-action-implementations.js +5 -0
  441. package/dist/domain/{expressions → domain-runtime/spec}/prepare-domain-expressions.d.ts +1 -1
  442. package/dist/domain/domain-runtime/spec/selectors.d.ts +7 -8
  443. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  444. package/dist/domain/domain-runtime/spec/types.d.ts +6 -6
  445. package/dist/domain/{system-components → extensions}/angle-indicator.d.ts +1 -1
  446. package/dist/domain/extensions/angle-indicator.js +1 -0
  447. package/dist/domain/extensions/attribute-switch.js +1 -0
  448. package/dist/domain/{system-components → extensions}/autorotate-camera-component.d.ts +1 -1
  449. package/dist/domain/extensions/autorotate-camera-component.js +1 -0
  450. package/dist/domain/{system-components → extensions}/basic-sidebar-footer.d.ts +1 -1
  451. package/dist/domain/extensions/basic-sidebar-footer.js +1 -0
  452. package/dist/domain/extensions/camera-based-hidden-entity-object.js +1 -0
  453. package/dist/domain/extensions/camera-based-hidden-entity.js +1 -0
  454. package/dist/domain/{system-components → extensions}/canvas-config.d.ts +1 -1
  455. package/dist/domain/extensions/canvas-config.js +1 -0
  456. package/dist/domain/extensions/canvas-custom-environment.js +1 -0
  457. package/dist/domain/{system-components → extensions}/canvas-padding.d.ts +1 -1
  458. package/dist/domain/extensions/canvas-padding.js +1 -0
  459. package/dist/domain/{system-components → extensions}/canvas-preset-environment.d.ts +1 -1
  460. package/dist/domain/extensions/canvas-preset-environment.js +1 -0
  461. package/dist/domain/{system-components → extensions}/child-entity-recipe-hierarchy.d.ts +2 -2
  462. package/dist/domain/extensions/child-entity-recipe-hierarchy.js +1 -0
  463. package/dist/domain/extensions/client-side-image.js +1 -0
  464. package/dist/domain/extensions/color-value.js +1 -0
  465. package/dist/domain/{system-components → extensions}/common/angle-indicator-schema.d.ts +1 -1
  466. package/dist/domain/extensions/common/angle-indicator-schema.js +1 -0
  467. package/dist/domain/{system-components → extensions}/common/dimension-indicator-schema.d.ts +1 -1
  468. package/dist/domain/extensions/common/dimension-indicator-schema.js +1 -0
  469. package/dist/domain/extensions/common/index.d.ts +4 -0
  470. package/dist/domain/extensions/common/index.js +1 -0
  471. package/dist/domain/{system-components → extensions}/custom-header.d.ts +2 -2
  472. package/dist/domain/{system-components → extensions}/custom-header.js +1 -1
  473. package/dist/domain/extensions/custom-price-footer.js +1 -0
  474. package/dist/domain/{system-components → extensions}/custom-sidebar-footer.d.ts +2 -2
  475. package/dist/domain/{system-components → extensions}/custom-sidebar-footer.js +1 -1
  476. package/dist/domain/{system-components → extensions}/dimension-indicator.d.ts +1 -1
  477. package/dist/domain/extensions/dimension-indicator.js +1 -0
  478. package/dist/domain/{system-components → extensions}/editable-angle-indicator.d.ts +3 -2
  479. package/dist/domain/extensions/editable-angle-indicator.js +1 -0
  480. package/dist/domain/{system-components → extensions}/editable-distance-dimension-indicator.d.ts +3 -2
  481. package/dist/domain/extensions/editable-distance-dimension-indicator.js +1 -0
  482. package/dist/domain/{system-components → extensions}/editable-offset-indicator.d.ts +3 -2
  483. package/dist/domain/extensions/editable-offset-indicator.js +1 -0
  484. package/dist/domain/{system-components → extensions}/editable-size-indicator.d.ts +3 -2
  485. package/dist/domain/extensions/editable-size-indicator.js +1 -0
  486. package/dist/domain/{system-components → extensions}/entity-header.d.ts +1 -1
  487. package/dist/domain/extensions/entity-header.js +1 -0
  488. package/dist/domain/{system-components → extensions}/exit-tool-mode-fab.d.ts +1 -1
  489. package/dist/domain/extensions/exit-tool-mode-fab.js +1 -0
  490. package/dist/domain/{system-components → extensions}/finalize-action.d.ts +1 -1
  491. package/dist/domain/extensions/finalize-action.js +1 -0
  492. package/dist/domain/extensions/finalize-component.js +1 -0
  493. package/dist/domain/extensions/fit-selection-orthographic-camera-component.js +1 -0
  494. package/dist/domain/extensions/fit-selection-perspective-camera-component.js +1 -0
  495. package/dist/domain/{system-components → extensions}/fixed-header.d.ts +1 -1
  496. package/dist/domain/extensions/fixed-header.js +1 -0
  497. package/dist/domain/{system-components → extensions}/floating-header.d.ts +1 -1
  498. package/dist/domain/extensions/floating-header.js +1 -0
  499. package/dist/domain/{system-components → extensions}/hidden-header.d.ts +1 -1
  500. package/dist/domain/extensions/hidden-header.js +1 -0
  501. package/dist/domain/{system-components → extensions}/hidden-sidebar-footer.d.ts +1 -1
  502. package/dist/domain/extensions/hidden-sidebar-footer.js +1 -0
  503. package/dist/domain/{system-components → extensions}/horizontal-tabs.d.ts +1 -1
  504. package/dist/domain/extensions/horizontal-tabs.js +1 -0
  505. package/dist/domain/extensions/index.d.ts +69 -0
  506. package/dist/domain/extensions/index.js +1 -0
  507. package/dist/domain/{system-components → extensions}/list-selector-dimension-indicator.d.ts +3 -2
  508. package/dist/domain/extensions/list-selector-dimension-indicator.js +1 -0
  509. package/dist/domain/extensions/multilingual-text-value.js +1 -0
  510. package/dist/domain/extensions/navigation-steps.js +1 -0
  511. package/dist/domain/{system-components → extensions}/offset-anchors.d.ts +1 -1
  512. package/dist/domain/extensions/offset-anchors.js +1 -0
  513. package/dist/domain/{system-components → extensions}/offset-indicator.d.ts +1 -2
  514. package/dist/domain/extensions/offset-indicator.js +1 -0
  515. package/dist/domain/{system-components → extensions}/offset.d.ts +1 -1
  516. package/dist/domain/extensions/offset.js +1 -0
  517. package/dist/domain/{system-components → extensions}/other-action.d.ts +1 -1
  518. package/dist/domain/extensions/other-action.js +1 -0
  519. package/dist/domain/{system-components → extensions}/property-page.d.ts +2 -2
  520. package/dist/domain/extensions/property-page.js +1 -0
  521. package/dist/domain/{system-components → extensions}/read-sidebar-footer.d.ts +1 -1
  522. package/dist/domain/extensions/read-sidebar-footer.js +1 -0
  523. package/dist/domain/{system-components → extensions}/replace-entity-recipe-hierarchy.d.ts +2 -2
  524. package/dist/domain/extensions/replace-entity-recipe-hierarchy.js +1 -0
  525. package/dist/domain/extensions/rotatable.js +1 -0
  526. package/dist/domain/extensions/rotation-handle.js +1 -0
  527. package/dist/domain/extensions/save-template-thumbnail.js +1 -0
  528. package/dist/domain/{system-components → extensions}/scene-entity-add-fab.d.ts +1 -1
  529. package/dist/domain/extensions/scene-entity-add-fab.js +1 -0
  530. package/dist/domain/extensions/scene-entity-animation.js +1 -0
  531. package/dist/domain/extensions/scene-entity-control.js +1 -0
  532. package/dist/domain/{system-components → extensions}/scene-entity-delete-fab.d.ts +1 -1
  533. package/dist/domain/extensions/scene-entity-delete-fab.js +1 -0
  534. package/dist/domain/extensions/scene-entity-floor-object.js +1 -0
  535. package/dist/domain/{system-components → extensions}/scene-entity-html-hotspot.d.ts +1 -1
  536. package/dist/domain/extensions/scene-entity-html-hotspot.js +1 -0
  537. package/dist/domain/{system-components → extensions}/scene-entity-navigation-hotspot.d.ts +1 -1
  538. package/dist/domain/extensions/scene-entity-navigation-hotspot.js +1 -0
  539. package/dist/domain/{system-components → extensions}/scene-entity-object-html-hotspot.d.ts +1 -1
  540. package/dist/domain/extensions/scene-entity-object-html-hotspot.js +1 -0
  541. package/dist/domain/{system-components → extensions}/scene-entity-select-hotspot.d.ts +1 -1
  542. package/dist/domain/extensions/scene-entity-select-hotspot.js +1 -0
  543. package/dist/domain/extensions/scene-entity-wall-object.js +1 -0
  544. package/dist/domain/extensions/selectable-component.js +1 -0
  545. package/dist/domain/{system-components → extensions}/sidebar-tabs.d.ts +1 -1
  546. package/dist/domain/extensions/sidebar-tabs.js +1 -0
  547. package/dist/domain/extensions/simple-summary.js +1 -0
  548. package/dist/domain/{system-components → extensions}/size.d.ts +1 -1
  549. package/dist/domain/extensions/size.js +1 -0
  550. package/dist/domain/{system-components → extensions}/sketching-draw.d.ts +1 -1
  551. package/dist/domain/extensions/sketching-draw.js +1 -0
  552. package/dist/domain/{system-components → extensions}/sketching-edit.d.ts +2 -2
  553. package/dist/domain/extensions/sketching-edit.js +1 -0
  554. package/dist/domain/extensions/summary-component.js +1 -0
  555. package/dist/domain/extensions/text-value.js +1 -0
  556. package/dist/domain/extensions/tool-controls.js +1 -0
  557. package/dist/domain/{system-components → extensions}/tool-menu-fab.d.ts +2 -2
  558. package/dist/domain/extensions/tool-menu-fab.js +1 -0
  559. package/dist/domain/{system-components → extensions}/toolbar.d.ts +2 -2
  560. package/dist/domain/{system-components → extensions}/toolbar.js +1 -1
  561. package/dist/domain/{system-components → extensions}/universal-sidebar-footer.d.ts +1 -1
  562. package/dist/domain/extensions/universal-sidebar-footer.js +1 -0
  563. package/dist/domain/extensions/view-controls.js +1 -0
  564. package/dist/domain/index.d.ts +2 -32
  565. package/dist/domain/index.js +1 -1
  566. package/dist/domain/mocks/create-mock-domain-runtime-services.d.ts +1 -1
  567. package/dist/domain/mocks/create-mock-domain-runtime.d.ts +13 -13
  568. package/dist/domain/mocks/create-mock-domain-runtime.js +1 -1
  569. package/dist/domain/projections/blender-projections/blender-projections.d.ts +2 -3
  570. package/dist/domain/projections/blender-projections/blender-projections.js +1 -1
  571. package/dist/domain/projections/blender-projections/camera.d.ts +1 -1
  572. package/dist/domain/projections/collision-projections.d.ts +1 -1
  573. package/dist/domain/projections/composition-projections.d.ts +1 -1
  574. package/dist/domain/projections/composition-projections.js +1 -1
  575. package/dist/domain/projections/constraint-projections.d.ts +1 -1
  576. package/dist/domain/projections/index.d.ts +1 -1
  577. package/dist/domain/projections/position-projections.d.ts +1 -1
  578. package/dist/domain/projections/projected-entities-projections.d.ts +2 -3
  579. package/dist/domain/projections/snap-matching.d.ts +1 -2
  580. package/dist/domain/projections/snap-utils.d.ts +1 -2
  581. package/dist/domain/projections/snapping-projections.d.ts +1 -1
  582. package/dist/domain/projections/validation-projections.d.ts +3 -20
  583. package/dist/domain/projections/validation-projections.js +1 -1
  584. package/dist/domain/sketching/sketching-projections.d.ts +1 -1
  585. package/dist/domain/system-components/admin-sidebar.d.ts +1 -1
  586. package/dist/domain/system-components/admin-sidebar.js +1 -1
  587. package/dist/domain/system-components/angle-dimension.js +1 -1
  588. package/dist/domain/system-components/application-config.d.ts +1 -1
  589. package/dist/domain/system-components/application-config.js +1 -1
  590. package/dist/domain/system-components/attribute-selection.js +1 -1
  591. package/dist/domain/system-components/bounding-box-component.d.ts +1 -1
  592. package/dist/domain/system-components/bounding-box-component.js +1 -1
  593. package/dist/domain/system-components/bounding-sphere-component.d.ts +1 -1
  594. package/dist/domain/system-components/bounding-sphere-component.js +1 -1
  595. package/dist/domain/system-components/child-entity-recipes.d.ts +1 -1
  596. package/dist/domain/system-components/child-entity-recipes.js +1 -1
  597. package/dist/domain/system-components/child-entity-selection.d.ts +1 -2
  598. package/dist/domain/system-components/child-entity-selection.js +1 -1
  599. package/dist/domain/system-components/collision-box-geometry.d.ts +1 -1
  600. package/dist/domain/system-components/collision-box-geometry.js +1 -1
  601. package/dist/domain/system-components/collision-geometries.d.ts +1 -1
  602. package/dist/domain/system-components/collision-geometry.d.ts +1 -1
  603. package/dist/domain/system-components/collision-geometry.js +1 -1
  604. package/dist/domain/system-components/collision-point-geometry.d.ts +1 -1
  605. package/dist/domain/system-components/collision-point-geometry.js +1 -1
  606. package/dist/domain/system-components/common/index.d.ts +0 -4
  607. package/dist/domain/system-components/common/index.js +1 -1
  608. package/dist/domain/system-components/common/recipes.d.ts +1 -2
  609. package/dist/domain/system-components/constraint.d.ts +1 -1
  610. package/dist/domain/system-components/constraint.js +1 -1
  611. package/dist/domain/system-components/create-blueprint.d.ts +1 -1
  612. package/dist/domain/system-components/custom-scene-entity.d.ts +1 -1
  613. package/dist/domain/system-components/custom-scene-entity.js +1 -1
  614. package/dist/domain/system-components/detail.js +1 -1
  615. package/dist/domain/system-components/distance-dimension-select.d.ts +1 -1
  616. package/dist/domain/system-components/distance-dimension-select.js +1 -1
  617. package/dist/domain/system-components/distance-dimension.d.ts +1 -1
  618. package/dist/domain/system-components/distance-dimension.js +1 -1
  619. package/dist/domain/system-components/drag-handle.d.ts +1 -1
  620. package/dist/domain/system-components/drag-handle.js +1 -1
  621. package/dist/domain/system-components/fit-entity-orthographic-camera-component.js +1 -1
  622. package/dist/domain/system-components/fit-entity-perspective-camera-component.js +1 -1
  623. package/dist/domain/system-components/fit-root-orthographic-camera-component.js +1 -1
  624. package/dist/domain/system-components/fit-root-perspective-camera-component.js +1 -1
  625. package/dist/domain/system-components/generic-dimension.d.ts +1 -1
  626. package/dist/domain/system-components/generic-dimension.js +1 -1
  627. package/dist/domain/system-components/hidden-entity.js +1 -1
  628. package/dist/domain/system-components/hotspot-drag-handle.d.ts +1 -2
  629. package/dist/domain/system-components/hotspot-drag-handle.js +1 -1
  630. package/dist/domain/system-components/index.d.ts +0 -68
  631. package/dist/domain/system-components/index.js +1 -1
  632. package/dist/domain/system-components/material-override-property-transition.js +1 -1
  633. package/dist/domain/system-components/material-override-transformer.js +1 -1
  634. package/dist/domain/system-components/material-swatch.js +1 -1
  635. package/dist/domain/system-components/navigation-page.js +1 -1
  636. package/dist/domain/system-components/navigation-panel-list.js +1 -1
  637. package/dist/domain/system-components/phoenix-entity-elements/admin-data-table-sidebar.d.ts +1 -1
  638. package/dist/domain/system-components/phoenix-layout-elements/admin-connected-resource-page.d.ts +1 -1
  639. package/dist/domain/system-components/phoenix-layout-elements/admin-data-table-actions.d.ts +1 -1
  640. package/dist/domain/system-components/phoenix-layout-elements/admin-data-table-page.d.ts +1 -1
  641. package/dist/domain/system-components/pivot-point.d.ts +1 -1
  642. package/dist/domain/system-components/pivot-point.js +1 -1
  643. package/dist/domain/system-components/price.js +1 -1
  644. package/dist/domain/system-components/projected-entities.d.ts +1 -1
  645. package/dist/domain/system-components/projected-entities.js +1 -1
  646. package/dist/domain/system-components/replace-entity-recipes.d.ts +1 -1
  647. package/dist/domain/system-components/replace-entity-recipes.js +1 -1
  648. package/dist/domain/system-components/scene-entity-ambient-light.js +1 -1
  649. package/dist/domain/system-components/scene-entity-box-object.js +1 -1
  650. package/dist/domain/system-components/scene-entity-directional-light.js +1 -1
  651. package/dist/domain/system-components/scene-entity-local-material-override.js +1 -1
  652. package/dist/domain/system-components/scene-entity-material-override.js +1 -1
  653. package/dist/domain/system-components/scene-entity-object-clip.js +1 -1
  654. package/dist/domain/system-components/scene-entity-object-decal.js +1 -1
  655. package/dist/domain/system-components/scene-entity-object-group.js +1 -1
  656. package/dist/domain/system-components/scene-entity-object-local-material-override.js +1 -1
  657. package/dist/domain/system-components/scene-entity-object-material-override.js +1 -1
  658. package/dist/domain/system-components/scene-entity-object-properties.js +1 -1
  659. package/dist/domain/system-components/scene-entity-object-remote-material-override.js +1 -1
  660. package/dist/domain/system-components/scene-entity-object-text-decal.js +1 -1
  661. package/dist/domain/system-components/scene-entity-object-transformer.js +1 -1
  662. package/dist/domain/system-components/scene-entity-object-transimissive-material-override.js +1 -1
  663. package/dist/domain/system-components/scene-entity-object.js +1 -1
  664. package/dist/domain/system-components/scene-entity-point-light.js +1 -1
  665. package/dist/domain/system-components/scene-entity-properties.js +1 -1
  666. package/dist/domain/system-components/scene-entity-rect-area-light.js +1 -1
  667. package/dist/domain/system-components/scene-entity-remote-material-override.js +1 -1
  668. package/dist/domain/system-components/scene-entity-remote-object.js +1 -1
  669. package/dist/domain/system-components/scene-entity-spot-light.js +1 -1
  670. package/dist/domain/system-components/scene-entity-transimissive-material-override.js +1 -1
  671. package/dist/domain/system-components/sketching-line.d.ts +1 -1
  672. package/dist/domain/system-components/sketching-line.js +1 -1
  673. package/dist/domain/system-components/sketching-rectangle.d.ts +1 -1
  674. package/dist/domain/system-components/sketching-rectangle.js +1 -1
  675. package/dist/domain/system-components/sketching.d.ts +1 -1
  676. package/dist/domain/system-components/sketching.js +1 -1
  677. package/dist/domain/system-components/snap-axis.d.ts +1 -1
  678. package/dist/domain/system-components/snap-axis.js +1 -1
  679. package/dist/domain/system-components/snap-edge.d.ts +1 -1
  680. package/dist/domain/system-components/snap-edge.js +1 -1
  681. package/dist/domain/system-components/snap-plane.d.ts +1 -1
  682. package/dist/domain/system-components/snap-plane.js +1 -1
  683. package/dist/domain/system-components/snap-point.d.ts +1 -1
  684. package/dist/domain/system-components/snap-point.js +1 -1
  685. package/dist/domain/system-components/static-orthographic-camera-component.d.ts +1 -1
  686. package/dist/domain/system-components/static-orthographic-camera-component.js +1 -1
  687. package/dist/domain/system-components/static-perspective-camera-component.d.ts +1 -1
  688. package/dist/domain/system-components/static-perspective-camera-component.js +1 -1
  689. package/dist/domain/utils/eval-cache.d.ts +1 -2
  690. package/dist/domain/utils/memo-eval.d.ts +2 -4
  691. package/dist/editor/Editor.js +1 -1
  692. package/dist/editor/domain-editors/use-implementation-files.d.ts +7 -6
  693. package/dist/editor/domain-editors/use-implementation-files.js +1 -1
  694. package/dist/editor/graphql/GraphQLPanel.js +1 -1
  695. package/dist/editor/variants/VariantAnswerFooter.d.ts +17 -0
  696. package/dist/editor/variants/VariantAnswerFooter.js +1 -0
  697. package/dist/editor/variants/VariantPreviewHandler.d.ts +6 -0
  698. package/dist/editor/variants/VariantPreviewHandler.js +1 -0
  699. package/dist/editor/variants/variant-preview-styles.d.ts +49 -0
  700. package/dist/editor/variants/variant-preview-styles.js +1 -0
  701. package/dist/i18n/locales/cs/messages.js +1 -1
  702. package/dist/i18n/locales/da/messages.js +1 -1
  703. package/dist/i18n/locales/de/messages.js +1 -1
  704. package/dist/i18n/locales/de-AT/messages.js +1 -1
  705. package/dist/i18n/locales/en/messages.js +1 -1
  706. package/dist/i18n/locales/en-AU/messages.js +1 -1
  707. package/dist/i18n/locales/en-GB/messages.js +1 -1
  708. package/dist/i18n/locales/es/messages.js +1 -1
  709. package/dist/i18n/locales/fr/messages.js +1 -1
  710. package/dist/i18n/locales/hu/messages.js +1 -1
  711. package/dist/i18n/locales/it/messages.js +1 -1
  712. package/dist/i18n/locales/nl/messages.js +1 -1
  713. package/dist/i18n/locales/pl/messages.js +1 -1
  714. package/dist/i18n/locales/pt/messages.js +1 -1
  715. package/dist/i18n/locales/ro/messages.js +1 -1
  716. package/dist/i18n/locales/sk/messages.js +1 -1
  717. package/dist/i18n/locales/tr/messages.js +1 -1
  718. package/dist/legacy/domain-cli/gen/configurator-builder.js +21 -8
  719. package/dist/legacy/domain-cli/gen/constant-expressions.js +1 -3
  720. package/dist/legacy/domain-cli/gen/implementation.js +7 -11
  721. package/dist/legacy/domain-cli/gen/invariants.js +7 -6
  722. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  723. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  724. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/claude-md.d.ts +1 -1
  725. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/cursor-rules.d.ts +1 -1
  726. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.d.ts +1 -1
  727. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/agents/shared-sdk-content.js +1 -0
  728. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/domain-index.js +17 -15
  729. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/env-example.d.ts +1 -1
  730. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/env-example.js +4 -0
  731. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-admin.js +18 -19
  732. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-configurator.js +15 -16
  733. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-admin.js +22 -23
  734. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-configurator.js +15 -16
  735. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/generator-shared.d.ts +7 -2
  736. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/generator-shared.js +8 -12
  737. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/index.d.ts +1 -1
  738. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/index.js +1 -1
  739. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/webhook-builders.js +7 -7
  740. package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
  741. package/dist/phoenix/application-spec/resolve-deployment-data.d.ts +4 -3
  742. package/dist/phoenix/application-spec/resolve-deployment-data.js +2 -2
  743. package/dist/phoenix/cli.js +1 -1
  744. package/dist/phoenix/commands/deploy.js +2 -2
  745. package/dist/phoenix/commands/dev.js +5 -5
  746. package/dist/phoenix/commands/index.d.ts +1 -0
  747. package/dist/phoenix/commands/index.js +1 -1
  748. package/dist/phoenix/commands/init.d.ts +4 -4
  749. package/dist/phoenix/commands/init.js +1 -1
  750. package/dist/phoenix/commands/prepare-deployment-command.js +2 -2
  751. package/dist/phoenix/commands/prepare-local-environment-command.js +1 -1
  752. package/dist/phoenix/commands/prettier.js +1 -1
  753. package/dist/phoenix/commands/story-dev.js +2 -2
  754. package/dist/phoenix/commands/variants.d.ts +35 -0
  755. package/dist/phoenix/commands/variants.js +1 -0
  756. package/dist/phoenix/editor-server/commands-router.d.ts +68 -1
  757. package/dist/phoenix/editor-server/commands-router.js +1 -1
  758. package/dist/phoenix/editor-server/editor-router.d.ts +65 -0
  759. package/dist/phoenix/editor-server/editor-server.d.ts +3 -3
  760. package/dist/phoenix/editor-server/editor-server.js +1 -1
  761. package/dist/phoenix/editor-server/protocol.d.ts +1 -0
  762. package/dist/phoenix/editor-server/spec-router.js +1 -1
  763. package/dist/phoenix/editor-server/trpc.d.ts +3 -0
  764. package/dist/phoenix/scripts/build-admin.js +1 -1
  765. package/dist/phoenix/services/application-spec-project-watcher.d.ts +13 -2
  766. package/dist/phoenix/services/application-spec-project-watcher.js +3 -3
  767. package/dist/phoenix/services/index.d.ts +4 -0
  768. package/dist/phoenix/services/index.js +1 -1
  769. package/dist/phoenix/services/phoenix-application.d.ts +21 -0
  770. package/dist/phoenix/services/phoenix-application.js +1 -0
  771. package/dist/phoenix/services/phoenix-store.d.ts +48 -0
  772. package/dist/phoenix/services/phoenix-store.js +1 -0
  773. package/dist/phoenix/services/phx-variant-previews-plugin.d.ts +9 -0
  774. package/dist/phoenix/services/phx-variant-previews-plugin.js +1 -0
  775. package/dist/phoenix/services/prepare-development-environment.js +1 -1
  776. package/dist/phoenix/services/variant-file-session.d.ts +36 -0
  777. package/dist/phoenix/services/variant-file-session.js +1 -0
  778. package/dist/phoenix/services/variant-preview-service.d.ts +80 -0
  779. package/dist/phoenix/services/variant-preview-service.js +1 -0
  780. package/dist/phoenix/services/vite-config.js +1 -1
  781. package/dist/phoenix/utils/git/index.d.ts +1 -0
  782. package/dist/phoenix/utils/git/index.js +1 -0
  783. package/dist/phoenix/utils/git/is-inside-git-repository.d.ts +6 -0
  784. package/dist/phoenix/utils/git/is-inside-git-repository.js +1 -0
  785. package/dist/phoenix/utils/index.d.ts +1 -0
  786. package/dist/phoenix/utils/index.js +1 -1
  787. package/dist/react-sdk/application-runtime/common-services/analytics/analytics-service.d.ts +2 -2
  788. package/dist/react-sdk/application-runtime/common-services/analytics/domain-controls-analytics.d.ts +21 -21
  789. package/dist/react-sdk/application-runtime/hooks/data/use-published-data.d.ts +1 -1
  790. package/dist/react-sdk/application-runtime/hooks/use-domain-application-props.d.ts +5 -2
  791. package/dist/react-sdk/application-runtime/hooks/use-spec.d.ts +1 -1
  792. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.d.ts +1 -1
  793. package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
  794. package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +24 -24
  795. package/dist/react-sdk/domain-context/common-hooks/use-domain-context.d.ts +5 -5
  796. package/dist/ui-sdk/common/use-viewport-size.d.ts +4 -1
  797. package/dist/ui-sdk/common/use-viewport-size.js +1 -1
  798. package/dist/ui-sdk/components/mobile-controls/index.d.ts +1 -1
  799. package/dist/ui-sdk/theme/types.d.ts +1 -1
  800. package/dist/webhook/builders/common.d.ts +8 -0
  801. package/dist/webhook/builders/webhook-builder.d.ts +1 -1
  802. package/dist/webhook/builders/webhook-builder.js +1 -1
  803. package/package.json +4 -4
  804. package/dist/application-spec/generate-application/code/templates/env-ci.d.ts +0 -1
  805. package/dist/application-spec/generate-application/code/templates/env-ci.js +0 -25
  806. package/dist/application-spec/generate-application/code/templates/env-example.d.ts +0 -1
  807. package/dist/application-spec/generate-application/code/templates/env-example.js +0 -90
  808. package/dist/application-spec/generate-application/code/templates/prettier-ignore.d.ts +0 -1
  809. package/dist/application-spec/generate-application/code/templates/prettier-ignore.js +0 -6
  810. package/dist/application-spec/generate-application/code/templates/private-assets-readme.d.ts +0 -1
  811. package/dist/application-spec/generate-application/code/templates/private-assets-readme.js +0 -24
  812. package/dist/application-spec/generate-application/code/templates/public-assets-readme.d.ts +0 -1
  813. package/dist/application-spec/generate-application/code/templates/public-assets-readme.js +0 -24
  814. package/dist/application-spec/generate-application/code/templates/readme.d.ts +0 -1
  815. package/dist/application-spec/generate-application/code/templates/readme.js +0 -23
  816. package/dist/application-spec/generate-application/code/templates/skills/agents-md.d.ts +0 -1
  817. package/dist/application-spec/generate-application/code/templates/skills/agents-md.js +0 -2
  818. package/dist/configurator/assistant/index.d.ts +0 -1
  819. package/dist/configurator/assistant/index.js +0 -1
  820. package/dist/configurator/assistant/use-assistant-chat.d.ts +0 -30
  821. package/dist/configurator/assistant/use-assistant-chat.js +0 -1
  822. package/dist/configurator/ui/assistant/AssistantPanelProvider.d.ts +0 -42
  823. package/dist/configurator/ui/assistant/AssistantPanelProvider.js +0 -1
  824. package/dist/domain/actions/action-factory.d.ts +0 -10
  825. package/dist/domain/actions/prepare-action-implementations.js +0 -5
  826. package/dist/domain/application/element-registration.js +0 -1
  827. package/dist/domain/application/handler-registration.js +0 -1
  828. package/dist/domain/application/resolve-imported-transformers.d.ts +0 -13
  829. package/dist/domain/application/resolve-imported-transformers.js +0 -1
  830. package/dist/domain/components/debug-state-component.js +0 -1
  831. package/dist/domain/components/domain-component-optic.d.ts +0 -76
  832. package/dist/domain/components/domain-component-optic.js +0 -16
  833. package/dist/domain/components/drag-state-component.js +0 -1
  834. package/dist/domain/components/export-state-component.js +0 -1
  835. package/dist/domain/components/fullscreen-state-component.js +0 -1
  836. package/dist/domain/components/group-components-by-entity-id-and-name.js +0 -1
  837. package/dist/domain/components/hover-state-component.js +0 -1
  838. package/dist/domain/components/index.d.ts +0 -2
  839. package/dist/domain/components/index.js +0 -1
  840. package/dist/domain/components/navigation-state-component.js +0 -1
  841. package/dist/domain/components/selection-state-component.js +0 -1
  842. package/dist/domain/components/system-component-builder.js +0 -1
  843. package/dist/domain/components/system-virtual-entity.js +0 -1
  844. package/dist/domain/components/tool-state-component.js +0 -1
  845. package/dist/domain/components/view-state-component.js +0 -1
  846. package/dist/domain/components/viewport-state-component.js +0 -1
  847. package/dist/domain/core/expression.d.ts +0 -50
  848. package/dist/domain/core/json-schema.js +0 -1
  849. package/dist/domain/core/migrations.js +0 -1
  850. package/dist/domain/core/reflection.js +0 -1
  851. package/dist/domain/domain-context/recipe-system/recipes.js +0 -1
  852. package/dist/domain/expressions/constant-expressions.js +0 -1
  853. package/dist/domain/expressions/custom-expression.d.ts +0 -13
  854. package/dist/domain/expressions/custom-expression.js +0 -1
  855. package/dist/domain/expressions/index.d.ts +0 -1
  856. package/dist/domain/expressions/index.js +0 -1
  857. package/dist/domain/invariants/custom-invariants.d.ts +0 -22
  858. package/dist/domain/invariants/custom-invariants.js +0 -1
  859. package/dist/domain/invariants/invariants.d.ts +0 -68
  860. package/dist/domain/invariants/invariants.js +0 -1
  861. package/dist/domain/invariants/violation-component.js +0 -1
  862. package/dist/domain/relations/all-of-type-relation.js +0 -1
  863. package/dist/domain/relations/component-factories.js +0 -1
  864. package/dist/domain/relations/composed-of.js +0 -1
  865. package/dist/domain/relations/indirect-relation.js +0 -1
  866. package/dist/domain/relations/reference-component.js +0 -1
  867. package/dist/domain/system-components/angle-indicator.js +0 -1
  868. package/dist/domain/system-components/attribute-switch.js +0 -1
  869. package/dist/domain/system-components/autorotate-camera-component.js +0 -1
  870. package/dist/domain/system-components/basic-sidebar-footer.js +0 -1
  871. package/dist/domain/system-components/camera-based-hidden-entity-object.js +0 -1
  872. package/dist/domain/system-components/camera-based-hidden-entity.js +0 -1
  873. package/dist/domain/system-components/canvas-config.js +0 -1
  874. package/dist/domain/system-components/canvas-custom-environment.js +0 -1
  875. package/dist/domain/system-components/canvas-padding.js +0 -1
  876. package/dist/domain/system-components/canvas-preset-environment.js +0 -1
  877. package/dist/domain/system-components/child-entity-recipe-hierarchy.js +0 -1
  878. package/dist/domain/system-components/client-side-image.js +0 -1
  879. package/dist/domain/system-components/color-value.js +0 -1
  880. package/dist/domain/system-components/common/angle-indicator-schema.js +0 -1
  881. package/dist/domain/system-components/common/dimension-indicator-schema.js +0 -1
  882. package/dist/domain/system-components/custom-price-footer.js +0 -1
  883. package/dist/domain/system-components/dimension-indicator.js +0 -1
  884. package/dist/domain/system-components/editable-angle-indicator.js +0 -1
  885. package/dist/domain/system-components/editable-distance-dimension-indicator.js +0 -1
  886. package/dist/domain/system-components/editable-offset-indicator.js +0 -1
  887. package/dist/domain/system-components/editable-size-indicator.js +0 -1
  888. package/dist/domain/system-components/entity-header.js +0 -1
  889. package/dist/domain/system-components/exit-tool-mode-fab.js +0 -1
  890. package/dist/domain/system-components/finalize-action.js +0 -1
  891. package/dist/domain/system-components/finalize-component.js +0 -1
  892. package/dist/domain/system-components/fit-selection-orthographic-camera-component.js +0 -1
  893. package/dist/domain/system-components/fit-selection-perspective-camera-component.js +0 -1
  894. package/dist/domain/system-components/fixed-header.js +0 -1
  895. package/dist/domain/system-components/floating-header.js +0 -1
  896. package/dist/domain/system-components/hidden-header.js +0 -1
  897. package/dist/domain/system-components/hidden-sidebar-footer.js +0 -1
  898. package/dist/domain/system-components/horizontal-tabs.js +0 -1
  899. package/dist/domain/system-components/list-selector-dimension-indicator.js +0 -1
  900. package/dist/domain/system-components/multilingual-text-value.js +0 -1
  901. package/dist/domain/system-components/navigation-steps.js +0 -1
  902. package/dist/domain/system-components/offset-anchors.js +0 -1
  903. package/dist/domain/system-components/offset-indicator.js +0 -1
  904. package/dist/domain/system-components/offset.js +0 -1
  905. package/dist/domain/system-components/other-action.js +0 -1
  906. package/dist/domain/system-components/property-page.js +0 -1
  907. package/dist/domain/system-components/read-sidebar-footer.js +0 -1
  908. package/dist/domain/system-components/replace-entity-recipe-hierarchy.js +0 -1
  909. package/dist/domain/system-components/rotatable.js +0 -1
  910. package/dist/domain/system-components/rotation-handle.js +0 -1
  911. package/dist/domain/system-components/save-template-thumbnail.js +0 -1
  912. package/dist/domain/system-components/scene-entity-add-fab.js +0 -1
  913. package/dist/domain/system-components/scene-entity-animation.js +0 -1
  914. package/dist/domain/system-components/scene-entity-control.js +0 -1
  915. package/dist/domain/system-components/scene-entity-delete-fab.js +0 -1
  916. package/dist/domain/system-components/scene-entity-floor-object.js +0 -1
  917. package/dist/domain/system-components/scene-entity-html-hotspot.js +0 -1
  918. package/dist/domain/system-components/scene-entity-navigation-hotspot.js +0 -1
  919. package/dist/domain/system-components/scene-entity-object-html-hotspot.js +0 -1
  920. package/dist/domain/system-components/scene-entity-select-hotspot.js +0 -1
  921. package/dist/domain/system-components/scene-entity-wall-object.js +0 -1
  922. package/dist/domain/system-components/selectable-component.js +0 -1
  923. package/dist/domain/system-components/sidebar-tabs.js +0 -1
  924. package/dist/domain/system-components/simple-summary.js +0 -1
  925. package/dist/domain/system-components/size.js +0 -1
  926. package/dist/domain/system-components/sketching-draw.js +0 -1
  927. package/dist/domain/system-components/sketching-edit.js +0 -1
  928. package/dist/domain/system-components/summary-component.js +0 -1
  929. package/dist/domain/system-components/text-value.js +0 -1
  930. package/dist/domain/system-components/tool-controls.js +0 -1
  931. package/dist/domain/system-components/tool-menu-fab.js +0 -1
  932. package/dist/domain/system-components/universal-sidebar-footer.js +0 -1
  933. package/dist/domain/system-components/view-controls.js +0 -1
  934. package/dist/phoenix/application-spec/generate-assistant-prompt.d.ts +0 -12
  935. package/dist/phoenix/application-spec/generate-assistant-prompt.js +0 -1
  936. /package/dist/domain/{components/component-reader-types.js → application/assistant/assistant-manifest.js} +0 -0
  937. /package/dist/domain/{core/action.js → application/assistant/assistant-resolved-manifest.js} +0 -0
  938. /package/dist/domain/{actions → core/action}/action-factory.js +0 -0
  939. /package/dist/domain/core/{enhanced-json-schema.js → action/action.js} +0 -0
  940. /package/dist/domain/core/{expression.js → component/component-reader-types.js} +0 -0
  941. /package/dist/domain/{components → core/component}/legacy-filter.js +0 -0
  942. /package/dist/domain/{components → core/component}/system-component-filter.js +0 -0
  943. /package/dist/domain/{components → core/component}/system-virtual-entity.d.ts +0 -0
  944. /package/dist/domain/{components → core/component}/updates.js +0 -0
  945. /package/dist/domain/core/{schema-validator.js → data-schema/data-cell-value.js} +0 -0
  946. /package/dist/domain/{relations/reference-field.js → core/data-schema/data-schema-array-field.js} +0 -0
  947. /package/dist/domain/{relations/relation-implementation.js → core/data-schema/data-schema-field-object.js} +0 -0
  948. /package/dist/domain/{invariants → core/invariant}/builtin-invariant.js +0 -0
  949. /package/dist/domain/{invariants → core/invariant}/violation-component.d.ts +0 -0
  950. /package/dist/domain/{invariants → core/invariant}/violation.js +0 -0
  951. /package/dist/domain/core/{alias.d.ts → model/alias.d.ts} +0 -0
  952. /package/dist/domain/core/{alias.js → model/alias.js} +0 -0
  953. /package/dist/domain/core/{common-definitions.d.ts → model/common-definitions.d.ts} +0 -0
  954. /package/dist/domain/core/{common-definitions.js → model/common-definitions.js} +0 -0
  955. /package/dist/domain/core/{component.js → model/component.js} +0 -0
  956. /package/dist/domain/core/{model.d.ts → model/model.d.ts} +0 -0
  957. /package/dist/domain/core/{model.js → model/model.js} +0 -0
  958. /package/dist/domain/core/{preset.d.ts → model/preset.d.ts} +0 -0
  959. /package/dist/domain/core/{preset.js → model/preset.js} +0 -0
  960. /package/dist/domain/{relations → core/relation}/direct-relation.js +0 -0
  961. /package/dist/domain/{relations → core/relation}/relation-factory.js +0 -0
  962. /package/dist/domain/core/{schema-validator-ajv.d.ts → schema/create-ajv-schema-validator.d.ts} +0 -0
  963. /package/dist/domain/core/{schema-validator-ajv.js → schema/create-ajv-schema-validator.js} +0 -0
  964. /package/dist/domain/core/{schema-validator-csp.d.ts → schema/create-csp-schema-validator.d.ts} +0 -0
  965. /package/dist/domain/core/{schema-validator-csp.js → schema/create-csp-schema-validator.js} +0 -0
  966. /package/dist/domain/core/{enhanced-json-schema.d.ts → schema/enhanced-json-schema.d.ts} +0 -0
  967. /package/dist/domain/core/{json-schema.d.ts → schema/extended-schema-validator.d.ts} +0 -0
  968. /package/dist/domain/core/{schema-validator.d.ts → schema/schema-validator.d.ts} +0 -0
  969. /package/dist/domain/core/{state.js → state/state.js} +0 -0
  970. /package/dist/domain/{expressions → domain-runtime/spec}/memoize-expression.js +0 -0
  971. /package/dist/domain/{expressions → domain-runtime/spec}/prepare-domain-expressions.js +0 -0
  972. /package/dist/domain/{system-components → extensions}/attribute-switch.d.ts +0 -0
  973. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity-object.d.ts +0 -0
  974. /package/dist/domain/{system-components → extensions}/camera-based-hidden-entity.d.ts +0 -0
  975. /package/dist/domain/{system-components → extensions}/canvas-custom-environment.d.ts +0 -0
  976. /package/dist/domain/{system-components → extensions}/client-side-image.d.ts +0 -0
  977. /package/dist/domain/{system-components → extensions}/color-value.d.ts +0 -0
  978. /package/dist/domain/{system-components → extensions}/common/dimension-indicators.d.ts +0 -0
  979. /package/dist/domain/{system-components → extensions}/common/dimension-indicators.js +0 -0
  980. /package/dist/domain/{system-components → extensions}/common/editable-indicator-button-variant.d.ts +0 -0
  981. /package/dist/domain/{system-components → extensions}/common/editable-indicator-button-variant.js +0 -0
  982. /package/dist/domain/{system-components → extensions}/custom-price-footer.d.ts +0 -0
  983. /package/dist/domain/{system-components → extensions}/finalize-component.d.ts +0 -0
  984. /package/dist/domain/{system-components → extensions}/fit-selection-orthographic-camera-component.d.ts +0 -0
  985. /package/dist/domain/{system-components → extensions}/fit-selection-perspective-camera-component.d.ts +0 -0
  986. /package/dist/domain/{system-components → extensions}/multilingual-text-value.d.ts +0 -0
  987. /package/dist/domain/{system-components → extensions}/navigation-steps.d.ts +0 -0
  988. /package/dist/domain/{system-components → extensions}/rotatable.d.ts +0 -0
  989. /package/dist/domain/{system-components → extensions}/rotation-handle.d.ts +0 -0
  990. /package/dist/domain/{system-components → extensions}/save-template-thumbnail.d.ts +0 -0
  991. /package/dist/domain/{system-components → extensions}/scene-entity-animation.d.ts +0 -0
  992. /package/dist/domain/{system-components → extensions}/scene-entity-control.d.ts +0 -0
  993. /package/dist/domain/{system-components → extensions}/scene-entity-floor-object.d.ts +0 -0
  994. /package/dist/domain/{system-components → extensions}/scene-entity-wall-object.d.ts +0 -0
  995. /package/dist/domain/{system-components → extensions}/selectable-component.d.ts +0 -0
  996. /package/dist/domain/{system-components → extensions}/simple-summary.d.ts +0 -0
  997. /package/dist/domain/{system-components → extensions}/summary-component.d.ts +0 -0
  998. /package/dist/domain/{system-components → extensions}/text-value.d.ts +0 -0
  999. /package/dist/domain/{system-components → extensions}/tool-controls.d.ts +0 -0
  1000. /package/dist/domain/{system-components → extensions}/view-controls.d.ts +0 -0
package/README.md CHANGED
@@ -44,8 +44,8 @@ Run the CLI through the project's package manager so its version matches the ins
44
44
 
45
45
  | Command | What it does |
46
46
  | ------------------------------ | ----------------------------------------------------------------------------------------------------------------- |
47
- | `phoenix init [folder]` | Starts a project: `package.json` when missing, and a starter spec. |
48
- | `phoenix sync` | Regenerates project files and aligns dependencies and scripts. |
47
+ | `phoenix init [folder]` | Starts a project: `package.json` when missing, the five project scripts it lacks, and a starter spec. |
48
+ | `phoenix sync` | Regenerates project files and aligns dependencies. |
49
49
  | `phoenix dev` | Development server with hot reload, webhook tunnel and the editor. |
50
50
  | `phoenix build` | Production build of the frontend and the webhooks. |
51
51
  | `phoenix check` / `fix` | Type check, lint and format; `fix` applies the automatic fixes. |
@@ -99,7 +99,7 @@ The `package.json` `exports` map is the machine-readable list, and the TypeScrip
99
99
 
100
100
  - `pnpm phoenix docs -s "<topic>"` searches the bundled documentation; `phoenix docs -r <path>` reads a page.
101
101
  - `phoenix sync` generates agent skills into `.claude/skills/` and `.agents/skills/`, so coding agents know the project conventions and the CLI.
102
- - Studio, where you sign in and manage projects, has builder guides for getting started, the CLI and deployments.
102
+ - The builder docs at [docs.salsita.ai](https://docs.salsita.ai) have the guides for getting started and the CLI reference; Studio is where you sign in and manage projects.
103
103
  - `pnpm phoenix feedback "<message>"` reaches the team directly.
104
104
 
105
105
  Existing projects may still call the legacy `domain-cli`, `webhook-cli`, `deployment-cli` and `embedding-cli` binaries, which remain installed for compatibility. New automation uses `phoenix`.
@@ -2,7 +2,7 @@ import type { AdminPagesSpec, DataSpec, DomainComponentOptic, NavigationListItem
2
2
  type AdminPageComponent = DomainComponentOptic<any, any, any, any, any, any, SystemComponentTypeConstraint>;
3
3
  type AdminPageNavigationItem = NavigationListItem | NestedNavigationListItem;
4
4
  export declare const createAdminPagesFromSpec: (spec: AdminPagesSpec, dataSpec?: DataSpec) => {
5
- components: (import("../domain/components/domain-component-optic.js").DomainComponentSimpleOptic<import("#package/domain").AnyDomainEntity, import("#package/domain").Admin, import("../domain/admin-domain/__generated/application-types.js").PublishedData, import("../domain/admin-domain/__generated/application-types.js").SessionData, Record<string, unknown>, import("#package/domain").Admin, import("#package/domain").SystemComponentType<"navigationPanelList", import("#package/domain").NavigationPanelListComponentState, never>> | import("../domain/components/domain-component-optic.js").DomainComponentSimpleOptic<import("#package/domain").AnyDomainEntity, import("#package/domain").Admin, import("../domain/admin-domain/__generated/application-types.js").PublishedData, import("../domain/admin-domain/__generated/application-types.js").SessionData, Record<string, unknown>, import("#package/domain").Preset, import("#package/domain").SystemComponentType<"attributeSelection", import("#package/domain").AttributeSelectionComponentState, "value">> | AdminPageComponent)[];
5
+ components: (import("#package/domain").DomainComponentSimpleOptic<import("#package/domain").AnyDomainEntity, import("#package/domain").Admin, import("../domain/admin-domain/__generated/application-types.js").PublishedData, import("../domain/admin-domain/__generated/application-types.js").SessionData, Record<string, unknown>, import("#package/domain").Admin, import("#package/domain").SystemComponentType<"navigationPanelList", import("#package/domain").NavigationPanelListComponentState, never>, unknown> | import("#package/domain").DomainComponentSimpleOptic<import("#package/domain").AnyDomainEntity, import("#package/domain").Admin, import("../domain/admin-domain/__generated/application-types.js").PublishedData, import("../domain/admin-domain/__generated/application-types.js").SessionData, Record<string, unknown>, import("#package/domain").Preset, import("#package/domain").SystemComponentType<"attributeSelection", import("#package/domain").AttributeSelectionComponentState, "value">, unknown> | AdminPageComponent)[];
6
6
  pages: AdminPageNavigationItem[];
7
7
  };
8
8
  export {};
@@ -74,6 +74,9 @@ export declare enum DiagnosticCode {
74
74
  RELATION_UNKNOWN_FIELD_DIRECT = "RELATION_UNKNOWN_FIELD_DIRECT",
75
75
  RELATION_UNKNOWN_FIELD_INDIRECT = "RELATION_UNKNOWN_FIELD_INDIRECT",
76
76
  RELATION_IMMUTABLE_FIELD = "RELATION_IMMUTABLE_FIELD",
77
+ RELATION_FIELD_NOT_REFERENCE = "RELATION_FIELD_NOT_REFERENCE",
78
+ RELATION_FIELD_REFERENCES_OTHER_TYPES = "RELATION_FIELD_REFERENCES_OTHER_TYPES",
79
+ RELATION_FIELD_CARDINALITY_MISMATCH = "RELATION_FIELD_CARDINALITY_MISMATCH",
77
80
  RELATION_MISSING_COUNTERPART = "RELATION_MISSING_COUNTERPART",
78
81
  RELATION_COUNTERPART_COMPOSED_OF_MISMATCH = "RELATION_COUNTERPART_COMPOSED_OF_MISMATCH",
79
82
  RELATION_ENTITY_NOT_IN_COMPOSITION_TREE = "RELATION_ENTITY_NOT_IN_COMPOSITION_TREE",
@@ -128,6 +131,7 @@ export declare enum DiagnosticCode {
128
131
  DEFAULTS_UNKNOWN_ENTITY_KEY = "DEFAULTS_UNKNOWN_ENTITY_KEY",
129
132
  DEFAULTS_UNKNOWN_PROPERTY = "DEFAULTS_UNKNOWN_PROPERTY",
130
133
  DEFAULTS_SCHEMA_VIOLATION = "DEFAULTS_SCHEMA_VIOLATION",
134
+ DEFAULTS_INCOMPLETE = "DEFAULTS_INCOMPLETE",
131
135
  DEFAULTS_DEPRECATED = "DEFAULTS_DEPRECATED",
132
136
  COMPONENT_INVALID_INSTANCE_NAME = "COMPONENT_INVALID_INSTANCE_NAME",
133
137
  COMPONENT_MERGE_CONFLICT = "COMPONENT_MERGE_CONFLICT",
@@ -1 +1 @@
1
- var E;export var DiagnosticCode=((E={}).EMPTY_SPEC_FILE="EMPTY_SPEC_FILE",E.YAML_PARSE_ERROR="YAML_PARSE_ERROR",E.SCHEMA_PARSE_ERROR="SCHEMA_PARSE_ERROR",E.IMPORT_MODULE_NOT_FOUND="IMPORT_MODULE_NOT_FOUND",E.IMPORT_MODULE_OUTSIDE_PROJECT="IMPORT_MODULE_OUTSIDE_PROJECT",E.MERGE_CONFLICT="MERGE_CONFLICT",E.MISSING_MODEL="MISSING_MODEL",E.MISSING_LATEST="MISSING_LATEST",E.INVALID_VERSION_KEY="INVALID_VERSION_KEY",E.MISSING_VERSION="MISSING_VERSION",E.NAME_CLASH="NAME_CLASH",E.INVALID_ENTITY_TYPE_NAME="INVALID_ENTITY_TYPE_NAME",E.DUPLICATE_ENTITY_TYPE="DUPLICATE_ENTITY_TYPE",E.INVALID_ALIAS_NAME="INVALID_ALIAS_NAME",E.RESERVED_ALIAS_NAME="RESERVED_ALIAS_NAME",E.MISSING_ROOT_ENTITY="MISSING_ROOT_ENTITY",E.CIRCULAR_ALIAS="CIRCULAR_ALIAS",E.UNKNOWN_ALIAS_MEMBER="UNKNOWN_ALIAS_MEMBER",E.UNKNOWN_SHAPE_KEY="UNKNOWN_SHAPE_KEY",E.UNKNOWN_REFERENCE_TARGET="UNKNOWN_REFERENCE_TARGET",E.RESERVED_PROPERTY="RESERVED_PROPERTY",E.INVALID_SHAPE_PROPERTY_NAME="INVALID_SHAPE_PROPERTY_NAME",E.UNKNOWN_PHX_DEFINITION="UNKNOWN_PHX_DEFINITION",E.UNKNOWN_COMMON_TYPE_REF="UNKNOWN_COMMON_TYPE_REF",E.INVALID_REF="INVALID_REF",E.MISSING_MIGRATION="MISSING_MIGRATION",E.MIGRATION_INVALID_START="MIGRATION_INVALID_START",E.UNKNOWN_MIGRATION="UNKNOWN_MIGRATION",E.PROTECTED_SHAPE="PROTECTED_SHAPE",E.PROTECTED_ALIAS="PROTECTED_ALIAS",E.RESERVED_ALIAS="RESERVED_ALIAS",E.ALIAS_INCLUDES_COMMON="ALIAS_INCLUDES_COMMON",E.PROTECTED_INVARIANT="PROTECTED_INVARIANT",E.PROTECTED_RELATION="PROTECTED_RELATION",E.PROTECTED_EXPRESSION="PROTECTED_EXPRESSION",E.PROTECTED_COMMON_TYPE="PROTECTED_COMMON_TYPE",E.PROTECTED_ENTITY_TYPE="PROTECTED_ENTITY_TYPE",E.PRESET_UNKNOWN_ROOT_ENTITY_TYPE="PRESET_UNKNOWN_ROOT_ENTITY_TYPE",E.PRESET_UNKNOWN_ENTITY_TYPE="PRESET_UNKNOWN_ENTITY_TYPE",E.PRESET_INVALID_ENTITY_ID_FORMAT="PRESET_INVALID_ENTITY_ID_FORMAT",E.PRESET_MISSING_ROOT_ENTITY="PRESET_MISSING_ROOT_ENTITY",E.PRESET_MULTIPLE_ROOT_ENTITIES="PRESET_MULTIPLE_ROOT_ENTITIES",E.PRESET_ENTITY_SCHEMA_VIOLATION="PRESET_ENTITY_SCHEMA_VIOLATION",E.PRESET_DUPLICATE_ENTITY_ID="PRESET_DUPLICATE_ENTITY_ID",E.PRESET_ENTITY_ID_TYPE_MISMATCH="PRESET_ENTITY_ID_TYPE_MISMATCH",E.PRESET_UNKNOWN_REFERENCE="PRESET_UNKNOWN_REFERENCE",E.PRESET_REFERENCE_TYPE_MISMATCH="PRESET_REFERENCE_TYPE_MISMATCH",E.PRESET_RELATION_CARDINALITY_VIOLATION="PRESET_RELATION_CARDINALITY_VIOLATION",E.PRESET_COMPOSITION_MULTIPLE_PARENTS="PRESET_COMPOSITION_MULTIPLE_PARENTS",E.PRESET_COMPOSITION_CYCLE="PRESET_COMPOSITION_CYCLE",E.PRESET_ENTITY_NOT_IN_COMPOSITION_TREE="PRESET_ENTITY_NOT_IN_COMPOSITION_TREE",E.ADMIN_PRESET_MULTIPLE_PER_FILE="ADMIN_PRESET_MULTIPLE_PER_FILE",E.ADMIN_PRESET_ROOT_TYPE_NOT_ADMIN="ADMIN_PRESET_ROOT_TYPE_NOT_ADMIN",E.ACTIONS_IN_ADMIN_FILE="ACTIONS_IN_ADMIN_FILE",E.INVALID_ACTION_NAME="INVALID_ACTION_NAME",E.ACTION_UNKNOWN_REFERENCE_TARGET="ACTION_UNKNOWN_REFERENCE_TARGET",E.EXPRESSION_UNKNOWN_ENTITY_KEY="EXPRESSION_UNKNOWN_ENTITY_KEY",E.INVALID_EXPRESSION_NAME="INVALID_EXPRESSION_NAME",E.DUPLICATE_EXPRESSION="DUPLICATE_EXPRESSION",E.EXPRESSION_RELATION_CONFLICT="EXPRESSION_RELATION_CONFLICT",E.CONSTANTS_EXPRESSION_CONFLICT="CONSTANTS_EXPRESSION_CONFLICT",E.COMPONENT_RELATION_CONFLICT="COMPONENT_RELATION_CONFLICT",E.COMPONENT_ALIAS_CONFLICT="COMPONENT_ALIAS_CONFLICT",E.INVALID_INVARIANT_NAME="INVALID_INVARIANT_NAME",E.INVALID_VIOLATION_TYPE_NAME="INVALID_VIOLATION_TYPE_NAME",E.INVARIANT_UNKNOWN_ENTITY_KEY="INVARIANT_UNKNOWN_ENTITY_KEY",E.INVARIANT_MANUAL_VIOLATIONS_COMPONENT="INVARIANT_MANUAL_VIOLATIONS_COMPONENT",E.INVARIANT_VIOLATIONS_EXPRESSION_CONFLICT="INVARIANT_VIOLATIONS_EXPRESSION_CONFLICT",E.INVALID_RELATION_NAME="INVALID_RELATION_NAME",E.RELATION_UNKNOWN_ENTITY_KEY="RELATION_UNKNOWN_ENTITY_KEY",E.RELATION_UNKNOWN_TARGET="RELATION_UNKNOWN_TARGET",E.RELATION_UNKNOWN_FIELD_DIRECT="RELATION_UNKNOWN_FIELD_DIRECT",E.RELATION_UNKNOWN_FIELD_INDIRECT="RELATION_UNKNOWN_FIELD_INDIRECT",E.RELATION_IMMUTABLE_FIELD="RELATION_IMMUTABLE_FIELD",E.RELATION_MISSING_COUNTERPART="RELATION_MISSING_COUNTERPART",E.RELATION_COUNTERPART_COMPOSED_OF_MISMATCH="RELATION_COUNTERPART_COMPOSED_OF_MISMATCH",E.RELATION_ENTITY_NOT_IN_COMPOSITION_TREE="RELATION_ENTITY_NOT_IN_COMPOSITION_TREE",E.DUPLICATE_DATA_SCHEMA="DUPLICATE_DATA_SCHEMA",E.ADMIN_DATA_SCHEMA="ADMIN_DATA_SCHEMA",E.SESSION_DATA_REQUIRED_PROPERTIES="SESSION_DATA_REQUIRED_PROPERTIES",E.CLERK_SESSION_DATA_INCOMPATIBLE="CLERK_SESSION_DATA_INCOMPATIBLE",E.RESERVED_PUBLISHED_DATA_KEY="RESERVED_PUBLISHED_DATA_KEY",E.DUPLICATE_STATE_FIELD="DUPLICATE_STATE_FIELD",E.INVALID_STATE_KEY="INVALID_STATE_KEY",E.DUPLICATE_STATE_VALUE="DUPLICATE_STATE_VALUE",E.DUPLICATE_THEME_FIELD="DUPLICATE_THEME_FIELD",E.DUPLICATE_UI_FIELD="DUPLICATE_UI_FIELD",E.CONFLICTING_TRANSFORMERS="CONFLICTING_TRANSFORMERS",E.DUPLICATE_TRANSFORMER="DUPLICATE_TRANSFORMER",E.DUPLICATE_TRANSFORMER_FILE="DUPLICATE_TRANSFORMER_FILE",E.UNMATCHED_TRANSFORMER="UNMATCHED_TRANSFORMER",E.DUPLICATE_APP_METADATA_FIELD="DUPLICATE_APP_METADATA_FIELD",E.DUPLICATE_INFRA_FIELD="DUPLICATE_INFRA_FIELD",E.INVALID_APPLICATION_VERSION="INVALID_APPLICATION_VERSION",E.INVALID_ENV_VAR_KEY="INVALID_ENV_VAR_KEY",E.DUPLICATE_ADMIN_PAGES="DUPLICATE_ADMIN_PAGES",E.ADMIN_PAGES_NAV_STATE_CONFLICT="ADMIN_PAGES_NAV_STATE_CONFLICT",E.ADMIN_PAGE_DATA_ENTRY_CONFLICT="ADMIN_PAGE_DATA_ENTRY_CONFLICT",E.CONFLICTING_BUDGETS="CONFLICTING_BUDGETS",E.CONFLICTING_CHUNKS="CONFLICTING_CHUNKS",E.CONFLICTING_ASSISTANT="CONFLICTING_ASSISTANT",E.ASSISTANT_UNKNOWN_TYPE="ASSISTANT_UNKNOWN_TYPE",E.ASSISTANT_UNKNOWN_FIELD="ASSISTANT_UNKNOWN_FIELD",E.ASSISTANT_UNSUPPORTED_EXPRESSION="ASSISTANT_UNSUPPORTED_EXPRESSION",E.ASSISTANT_NOT_WRITABLE="ASSISTANT_NOT_WRITABLE",E.ASSISTANT_UNKNOWN_RECIPE_GROUP="ASSISTANT_UNKNOWN_RECIPE_GROUP",E.ASSISTANT_DUPLICATE_RECIPE_GROUP="ASSISTANT_DUPLICATE_RECIPE_GROUP",E.ASSISTANT_META_TYPE_NAME_CONFLICT="ASSISTANT_META_TYPE_NAME_CONFLICT",E.ASSISTANT_UNKNOWN_OPTIONS_COMPONENT="ASSISTANT_UNKNOWN_OPTIONS_COMPONENT",E.ASSISTANT_RESERVED_OPTIONS_EDGE_NAME="ASSISTANT_RESERVED_OPTIONS_EDGE_NAME",E.ASSISTANT_DUPLICATE_OPTIONS_EDGE="ASSISTANT_DUPLICATE_OPTIONS_EDGE",E.ASSISTANT_RESERVED_FIELD_NAME="ASSISTANT_RESERVED_FIELD_NAME",E.ASSISTANT_FIELD_NAME_CONFLICT="ASSISTANT_FIELD_NAME_CONFLICT",E.ASSISTANT_RESERVED_TYPE_NAME="ASSISTANT_RESERVED_TYPE_NAME",E.ASSISTANT_INVALID_SCHEMA="ASSISTANT_INVALID_SCHEMA",E.ASSISTANT_UNKNOWN_ACTION="ASSISTANT_UNKNOWN_ACTION",E.ASSISTANT_MUTATION_NAME_CONFLICT="ASSISTANT_MUTATION_NAME_CONFLICT",E.ASSISTANT_ACTION_RESULT_TYPE_CONFLICT="ASSISTANT_ACTION_RESULT_TYPE_CONFLICT",E.INVALID_CHUNK_KEY="INVALID_CHUNK_KEY",E.RESERVED_CHUNK_KEY="RESERVED_CHUNK_KEY",E.CONFLICTING_DATA_ENTRY="CONFLICTING_DATA_ENTRY",E.INVALID_DATA_ENTRY_KEY="INVALID_DATA_ENTRY_KEY",E.INVALID_DATA_DEFINITION_FIELD_KEY="INVALID_DATA_DEFINITION_FIELD_KEY",E.UNKNOWN_DATA_CHUNK="UNKNOWN_DATA_CHUNK",E.INVALID_DATA_VALUE="INVALID_DATA_VALUE",E.DEFAULTS_UNKNOWN_ENTITY_KEY="DEFAULTS_UNKNOWN_ENTITY_KEY",E.DEFAULTS_UNKNOWN_PROPERTY="DEFAULTS_UNKNOWN_PROPERTY",E.DEFAULTS_SCHEMA_VIOLATION="DEFAULTS_SCHEMA_VIOLATION",E.DEFAULTS_DEPRECATED="DEFAULTS_DEPRECATED",E.COMPONENT_INVALID_INSTANCE_NAME="COMPONENT_INVALID_INSTANCE_NAME",E.COMPONENT_MERGE_CONFLICT="COMPONENT_MERGE_CONFLICT",E.COMPONENT_UNKNOWN_ENTITY_KEY="COMPONENT_UNKNOWN_ENTITY_KEY",E.COMPONENT_IMPORT_REF_UNSUPPORTED="COMPONENT_IMPORT_REF_UNSUPPORTED",E.COMPONENT_DATA_REF_UNSUPPORTED="COMPONENT_DATA_REF_UNSUPPORTED",E.READ_BINDING_UNKNOWN_FIELD="READ_BINDING_UNKNOWN_FIELD",E.WRITE_BINDING_UNKNOWN_FIELD="WRITE_BINDING_UNKNOWN_FIELD",E.WRITE_BINDING_IMMUTABLE_FIELD="WRITE_BINDING_IMMUTABLE_FIELD",E.WRITE_BINDING_EXPRESSION_TARGET="WRITE_BINDING_EXPRESSION_TARGET",E.WRITE_BINDING_DUPLICATE_TARGET="WRITE_BINDING_DUPLICATE_TARGET",E.UNKNOWN_SRC_PATH="UNKNOWN_SRC_PATH",E.INVALID_SUBDIRECTORY="INVALID_SUBDIRECTORY",E.MISSING_WEBHOOK_INDEX="MISSING_WEBHOOK_INDEX",E.MODULE_ANALYSIS_FAILED="MODULE_ANALYSIS_FAILED",E.WEBHOOK_UNSAFE_IMPORT="WEBHOOK_UNSAFE_IMPORT",E.MOCK_TEMPLATE_PARSE_ERROR="MOCK_TEMPLATE_PARSE_ERROR",E.ENHANCED_JSON_VALUE_EVAL_NOT_ALLOWED="ENHANCED_JSON_VALUE_EVAL_NOT_ALLOWED",E.ENHANCED_JSON_VALUE_MSG_NOT_ALLOWED="ENHANCED_JSON_VALUE_MSG_NOT_ALLOWED",E.ENHANCED_JSON_VALUE_EVAL_NOT_STATICALLY_INFERABLE="ENHANCED_JSON_VALUE_EVAL_NOT_STATICALLY_INFERABLE",E.ENHANCED_JSON_VALUE_CODE_REF_NOT_SUPPORTED="ENHANCED_JSON_VALUE_CODE_REF_NOT_SUPPORTED",E);
1
+ var E;export var DiagnosticCode=((E={}).EMPTY_SPEC_FILE="EMPTY_SPEC_FILE",E.YAML_PARSE_ERROR="YAML_PARSE_ERROR",E.SCHEMA_PARSE_ERROR="SCHEMA_PARSE_ERROR",E.IMPORT_MODULE_NOT_FOUND="IMPORT_MODULE_NOT_FOUND",E.IMPORT_MODULE_OUTSIDE_PROJECT="IMPORT_MODULE_OUTSIDE_PROJECT",E.MERGE_CONFLICT="MERGE_CONFLICT",E.MISSING_MODEL="MISSING_MODEL",E.MISSING_LATEST="MISSING_LATEST",E.INVALID_VERSION_KEY="INVALID_VERSION_KEY",E.MISSING_VERSION="MISSING_VERSION",E.NAME_CLASH="NAME_CLASH",E.INVALID_ENTITY_TYPE_NAME="INVALID_ENTITY_TYPE_NAME",E.DUPLICATE_ENTITY_TYPE="DUPLICATE_ENTITY_TYPE",E.INVALID_ALIAS_NAME="INVALID_ALIAS_NAME",E.RESERVED_ALIAS_NAME="RESERVED_ALIAS_NAME",E.MISSING_ROOT_ENTITY="MISSING_ROOT_ENTITY",E.CIRCULAR_ALIAS="CIRCULAR_ALIAS",E.UNKNOWN_ALIAS_MEMBER="UNKNOWN_ALIAS_MEMBER",E.UNKNOWN_SHAPE_KEY="UNKNOWN_SHAPE_KEY",E.UNKNOWN_REFERENCE_TARGET="UNKNOWN_REFERENCE_TARGET",E.RESERVED_PROPERTY="RESERVED_PROPERTY",E.INVALID_SHAPE_PROPERTY_NAME="INVALID_SHAPE_PROPERTY_NAME",E.UNKNOWN_PHX_DEFINITION="UNKNOWN_PHX_DEFINITION",E.UNKNOWN_COMMON_TYPE_REF="UNKNOWN_COMMON_TYPE_REF",E.INVALID_REF="INVALID_REF",E.MISSING_MIGRATION="MISSING_MIGRATION",E.MIGRATION_INVALID_START="MIGRATION_INVALID_START",E.UNKNOWN_MIGRATION="UNKNOWN_MIGRATION",E.PROTECTED_SHAPE="PROTECTED_SHAPE",E.PROTECTED_ALIAS="PROTECTED_ALIAS",E.RESERVED_ALIAS="RESERVED_ALIAS",E.ALIAS_INCLUDES_COMMON="ALIAS_INCLUDES_COMMON",E.PROTECTED_INVARIANT="PROTECTED_INVARIANT",E.PROTECTED_RELATION="PROTECTED_RELATION",E.PROTECTED_EXPRESSION="PROTECTED_EXPRESSION",E.PROTECTED_COMMON_TYPE="PROTECTED_COMMON_TYPE",E.PROTECTED_ENTITY_TYPE="PROTECTED_ENTITY_TYPE",E.PRESET_UNKNOWN_ROOT_ENTITY_TYPE="PRESET_UNKNOWN_ROOT_ENTITY_TYPE",E.PRESET_UNKNOWN_ENTITY_TYPE="PRESET_UNKNOWN_ENTITY_TYPE",E.PRESET_INVALID_ENTITY_ID_FORMAT="PRESET_INVALID_ENTITY_ID_FORMAT",E.PRESET_MISSING_ROOT_ENTITY="PRESET_MISSING_ROOT_ENTITY",E.PRESET_MULTIPLE_ROOT_ENTITIES="PRESET_MULTIPLE_ROOT_ENTITIES",E.PRESET_ENTITY_SCHEMA_VIOLATION="PRESET_ENTITY_SCHEMA_VIOLATION",E.PRESET_DUPLICATE_ENTITY_ID="PRESET_DUPLICATE_ENTITY_ID",E.PRESET_ENTITY_ID_TYPE_MISMATCH="PRESET_ENTITY_ID_TYPE_MISMATCH",E.PRESET_UNKNOWN_REFERENCE="PRESET_UNKNOWN_REFERENCE",E.PRESET_REFERENCE_TYPE_MISMATCH="PRESET_REFERENCE_TYPE_MISMATCH",E.PRESET_RELATION_CARDINALITY_VIOLATION="PRESET_RELATION_CARDINALITY_VIOLATION",E.PRESET_COMPOSITION_MULTIPLE_PARENTS="PRESET_COMPOSITION_MULTIPLE_PARENTS",E.PRESET_COMPOSITION_CYCLE="PRESET_COMPOSITION_CYCLE",E.PRESET_ENTITY_NOT_IN_COMPOSITION_TREE="PRESET_ENTITY_NOT_IN_COMPOSITION_TREE",E.ADMIN_PRESET_MULTIPLE_PER_FILE="ADMIN_PRESET_MULTIPLE_PER_FILE",E.ADMIN_PRESET_ROOT_TYPE_NOT_ADMIN="ADMIN_PRESET_ROOT_TYPE_NOT_ADMIN",E.ACTIONS_IN_ADMIN_FILE="ACTIONS_IN_ADMIN_FILE",E.INVALID_ACTION_NAME="INVALID_ACTION_NAME",E.ACTION_UNKNOWN_REFERENCE_TARGET="ACTION_UNKNOWN_REFERENCE_TARGET",E.EXPRESSION_UNKNOWN_ENTITY_KEY="EXPRESSION_UNKNOWN_ENTITY_KEY",E.INVALID_EXPRESSION_NAME="INVALID_EXPRESSION_NAME",E.DUPLICATE_EXPRESSION="DUPLICATE_EXPRESSION",E.EXPRESSION_RELATION_CONFLICT="EXPRESSION_RELATION_CONFLICT",E.CONSTANTS_EXPRESSION_CONFLICT="CONSTANTS_EXPRESSION_CONFLICT",E.COMPONENT_RELATION_CONFLICT="COMPONENT_RELATION_CONFLICT",E.COMPONENT_ALIAS_CONFLICT="COMPONENT_ALIAS_CONFLICT",E.INVALID_INVARIANT_NAME="INVALID_INVARIANT_NAME",E.INVALID_VIOLATION_TYPE_NAME="INVALID_VIOLATION_TYPE_NAME",E.INVARIANT_UNKNOWN_ENTITY_KEY="INVARIANT_UNKNOWN_ENTITY_KEY",E.INVARIANT_MANUAL_VIOLATIONS_COMPONENT="INVARIANT_MANUAL_VIOLATIONS_COMPONENT",E.INVARIANT_VIOLATIONS_EXPRESSION_CONFLICT="INVARIANT_VIOLATIONS_EXPRESSION_CONFLICT",E.INVALID_RELATION_NAME="INVALID_RELATION_NAME",E.RELATION_UNKNOWN_ENTITY_KEY="RELATION_UNKNOWN_ENTITY_KEY",E.RELATION_UNKNOWN_TARGET="RELATION_UNKNOWN_TARGET",E.RELATION_UNKNOWN_FIELD_DIRECT="RELATION_UNKNOWN_FIELD_DIRECT",E.RELATION_UNKNOWN_FIELD_INDIRECT="RELATION_UNKNOWN_FIELD_INDIRECT",E.RELATION_IMMUTABLE_FIELD="RELATION_IMMUTABLE_FIELD",E.RELATION_FIELD_NOT_REFERENCE="RELATION_FIELD_NOT_REFERENCE",E.RELATION_FIELD_REFERENCES_OTHER_TYPES="RELATION_FIELD_REFERENCES_OTHER_TYPES",E.RELATION_FIELD_CARDINALITY_MISMATCH="RELATION_FIELD_CARDINALITY_MISMATCH",E.RELATION_MISSING_COUNTERPART="RELATION_MISSING_COUNTERPART",E.RELATION_COUNTERPART_COMPOSED_OF_MISMATCH="RELATION_COUNTERPART_COMPOSED_OF_MISMATCH",E.RELATION_ENTITY_NOT_IN_COMPOSITION_TREE="RELATION_ENTITY_NOT_IN_COMPOSITION_TREE",E.DUPLICATE_DATA_SCHEMA="DUPLICATE_DATA_SCHEMA",E.ADMIN_DATA_SCHEMA="ADMIN_DATA_SCHEMA",E.SESSION_DATA_REQUIRED_PROPERTIES="SESSION_DATA_REQUIRED_PROPERTIES",E.CLERK_SESSION_DATA_INCOMPATIBLE="CLERK_SESSION_DATA_INCOMPATIBLE",E.RESERVED_PUBLISHED_DATA_KEY="RESERVED_PUBLISHED_DATA_KEY",E.DUPLICATE_STATE_FIELD="DUPLICATE_STATE_FIELD",E.INVALID_STATE_KEY="INVALID_STATE_KEY",E.DUPLICATE_STATE_VALUE="DUPLICATE_STATE_VALUE",E.DUPLICATE_THEME_FIELD="DUPLICATE_THEME_FIELD",E.DUPLICATE_UI_FIELD="DUPLICATE_UI_FIELD",E.CONFLICTING_TRANSFORMERS="CONFLICTING_TRANSFORMERS",E.DUPLICATE_TRANSFORMER="DUPLICATE_TRANSFORMER",E.DUPLICATE_TRANSFORMER_FILE="DUPLICATE_TRANSFORMER_FILE",E.UNMATCHED_TRANSFORMER="UNMATCHED_TRANSFORMER",E.DUPLICATE_APP_METADATA_FIELD="DUPLICATE_APP_METADATA_FIELD",E.DUPLICATE_INFRA_FIELD="DUPLICATE_INFRA_FIELD",E.INVALID_APPLICATION_VERSION="INVALID_APPLICATION_VERSION",E.INVALID_ENV_VAR_KEY="INVALID_ENV_VAR_KEY",E.DUPLICATE_ADMIN_PAGES="DUPLICATE_ADMIN_PAGES",E.ADMIN_PAGES_NAV_STATE_CONFLICT="ADMIN_PAGES_NAV_STATE_CONFLICT",E.ADMIN_PAGE_DATA_ENTRY_CONFLICT="ADMIN_PAGE_DATA_ENTRY_CONFLICT",E.CONFLICTING_BUDGETS="CONFLICTING_BUDGETS",E.CONFLICTING_CHUNKS="CONFLICTING_CHUNKS",E.CONFLICTING_ASSISTANT="CONFLICTING_ASSISTANT",E.ASSISTANT_UNKNOWN_TYPE="ASSISTANT_UNKNOWN_TYPE",E.ASSISTANT_UNKNOWN_FIELD="ASSISTANT_UNKNOWN_FIELD",E.ASSISTANT_UNSUPPORTED_EXPRESSION="ASSISTANT_UNSUPPORTED_EXPRESSION",E.ASSISTANT_NOT_WRITABLE="ASSISTANT_NOT_WRITABLE",E.ASSISTANT_UNKNOWN_RECIPE_GROUP="ASSISTANT_UNKNOWN_RECIPE_GROUP",E.ASSISTANT_DUPLICATE_RECIPE_GROUP="ASSISTANT_DUPLICATE_RECIPE_GROUP",E.ASSISTANT_META_TYPE_NAME_CONFLICT="ASSISTANT_META_TYPE_NAME_CONFLICT",E.ASSISTANT_UNKNOWN_OPTIONS_COMPONENT="ASSISTANT_UNKNOWN_OPTIONS_COMPONENT",E.ASSISTANT_RESERVED_OPTIONS_EDGE_NAME="ASSISTANT_RESERVED_OPTIONS_EDGE_NAME",E.ASSISTANT_DUPLICATE_OPTIONS_EDGE="ASSISTANT_DUPLICATE_OPTIONS_EDGE",E.ASSISTANT_RESERVED_FIELD_NAME="ASSISTANT_RESERVED_FIELD_NAME",E.ASSISTANT_FIELD_NAME_CONFLICT="ASSISTANT_FIELD_NAME_CONFLICT",E.ASSISTANT_RESERVED_TYPE_NAME="ASSISTANT_RESERVED_TYPE_NAME",E.ASSISTANT_INVALID_SCHEMA="ASSISTANT_INVALID_SCHEMA",E.ASSISTANT_UNKNOWN_ACTION="ASSISTANT_UNKNOWN_ACTION",E.ASSISTANT_MUTATION_NAME_CONFLICT="ASSISTANT_MUTATION_NAME_CONFLICT",E.ASSISTANT_ACTION_RESULT_TYPE_CONFLICT="ASSISTANT_ACTION_RESULT_TYPE_CONFLICT",E.INVALID_CHUNK_KEY="INVALID_CHUNK_KEY",E.RESERVED_CHUNK_KEY="RESERVED_CHUNK_KEY",E.CONFLICTING_DATA_ENTRY="CONFLICTING_DATA_ENTRY",E.INVALID_DATA_ENTRY_KEY="INVALID_DATA_ENTRY_KEY",E.INVALID_DATA_DEFINITION_FIELD_KEY="INVALID_DATA_DEFINITION_FIELD_KEY",E.UNKNOWN_DATA_CHUNK="UNKNOWN_DATA_CHUNK",E.INVALID_DATA_VALUE="INVALID_DATA_VALUE",E.DEFAULTS_UNKNOWN_ENTITY_KEY="DEFAULTS_UNKNOWN_ENTITY_KEY",E.DEFAULTS_UNKNOWN_PROPERTY="DEFAULTS_UNKNOWN_PROPERTY",E.DEFAULTS_SCHEMA_VIOLATION="DEFAULTS_SCHEMA_VIOLATION",E.DEFAULTS_INCOMPLETE="DEFAULTS_INCOMPLETE",E.DEFAULTS_DEPRECATED="DEFAULTS_DEPRECATED",E.COMPONENT_INVALID_INSTANCE_NAME="COMPONENT_INVALID_INSTANCE_NAME",E.COMPONENT_MERGE_CONFLICT="COMPONENT_MERGE_CONFLICT",E.COMPONENT_UNKNOWN_ENTITY_KEY="COMPONENT_UNKNOWN_ENTITY_KEY",E.COMPONENT_IMPORT_REF_UNSUPPORTED="COMPONENT_IMPORT_REF_UNSUPPORTED",E.COMPONENT_DATA_REF_UNSUPPORTED="COMPONENT_DATA_REF_UNSUPPORTED",E.READ_BINDING_UNKNOWN_FIELD="READ_BINDING_UNKNOWN_FIELD",E.WRITE_BINDING_UNKNOWN_FIELD="WRITE_BINDING_UNKNOWN_FIELD",E.WRITE_BINDING_IMMUTABLE_FIELD="WRITE_BINDING_IMMUTABLE_FIELD",E.WRITE_BINDING_EXPRESSION_TARGET="WRITE_BINDING_EXPRESSION_TARGET",E.WRITE_BINDING_DUPLICATE_TARGET="WRITE_BINDING_DUPLICATE_TARGET",E.UNKNOWN_SRC_PATH="UNKNOWN_SRC_PATH",E.INVALID_SUBDIRECTORY="INVALID_SUBDIRECTORY",E.MISSING_WEBHOOK_INDEX="MISSING_WEBHOOK_INDEX",E.MODULE_ANALYSIS_FAILED="MODULE_ANALYSIS_FAILED",E.WEBHOOK_UNSAFE_IMPORT="WEBHOOK_UNSAFE_IMPORT",E.MOCK_TEMPLATE_PARSE_ERROR="MOCK_TEMPLATE_PARSE_ERROR",E.ENHANCED_JSON_VALUE_EVAL_NOT_ALLOWED="ENHANCED_JSON_VALUE_EVAL_NOT_ALLOWED",E.ENHANCED_JSON_VALUE_MSG_NOT_ALLOWED="ENHANCED_JSON_VALUE_MSG_NOT_ALLOWED",E.ENHANCED_JSON_VALUE_EVAL_NOT_STATICALLY_INFERABLE="ENHANCED_JSON_VALUE_EVAL_NOT_STATICALLY_INFERABLE",E.ENHANCED_JSON_VALUE_CODE_REF_NOT_SUPPORTED="ENHANCED_JSON_VALUE_CODE_REF_NOT_SUPPORTED",E);
@@ -80,6 +80,9 @@ export declare const diagnosticMessages: {
80
80
  RELATION_UNKNOWN_FIELD_DIRECT: (from: string, relName: string, field: string) => string;
81
81
  RELATION_UNKNOWN_FIELD_INDIRECT: (from: string, relName: string, field: string, target: string) => string;
82
82
  RELATION_IMMUTABLE_FIELD: (from: string, relName: string, field: string, fieldOwner: string) => string;
83
+ RELATION_FIELD_NOT_REFERENCE: (from: string, relName: string, field: string, fieldOwner: string) => string;
84
+ RELATION_FIELD_REFERENCES_OTHER_TYPES: (from: string, relName: string, field: string, fieldOwner: string, referenced: readonly string[], related: string, relatedEntityTypes: readonly string[]) => string;
85
+ RELATION_FIELD_CARDINALITY_MISMATCH: (from: string, relName: string, field: string, cardinality: string, shape: 'single' | 'nullableSingle' | 'array', required: 'single' | 'nullableSingle' | 'array') => string;
83
86
  RELATION_MISSING_COUNTERPART: (from: string, relName: string, kind: 'direct' | 'indirect' | 'allOfType', target: string, field: string | undefined, composedOf: boolean) => string;
84
87
  RELATION_COUNTERPART_COMPOSED_OF_MISMATCH: (from: string, relName: string, counterpartEntity: string, counterpartName: string) => string;
85
88
  RELATION_ENTITY_NOT_IN_COMPOSITION_TREE: (entityType: string, rootTypes: readonly string[]) => string;
@@ -147,6 +150,7 @@ export declare const diagnosticMessages: {
147
150
  DEFAULTS_UNKNOWN_ENTITY_KEY: (key: string, knownNames: readonly string[]) => string;
148
151
  DEFAULTS_UNKNOWN_PROPERTY: (entityKey: string, propName: string, knownProps: readonly string[], missingOn?: readonly string[]) => string;
149
152
  DEFAULTS_SCHEMA_VIOLATION: (entityKey: string, propName: string, path: string, ajvMessage: string, memberType?: string) => string;
153
+ DEFAULTS_INCOMPLETE: (entityType: string, missingProps: readonly string[], sourceKeys: readonly string[]) => string;
150
154
  DEFAULTS_DEPRECATED: () => string;
151
155
  COMPONENT_INVALID_INSTANCE_NAME: (entityKey: string, componentName: string, instanceName: string) => string;
152
156
  COMPONENT_MERGE_CONFLICT: (entityKey: string, componentName: string, instanceName: string, fileA: string, fileB: string) => string;
@@ -1 +1 @@
1
- import{DiagnosticCode as e}from"./diagnostic-codes.js";export const diagnosticMessages={[e.EMPTY_SPEC_FILE]:()=>'Spec file is empty. Every spec file must define at least one section ("model:", "components:", or "presets:"). Add content or remove the file.',[e.YAML_PARSE_ERROR]:e=>`YAML parse error: ${e}. Check for indentation issues, missing colons, or unquoted special characters.`,[e.SCHEMA_PARSE_ERROR]:(e,t)=>`Invalid value at "${e}": ${t}. Refer to the spec documentation for the expected structure at this path.`,[e.IMPORT_MODULE_NOT_FOUND]:(e,t)=>`Import module "${e}" resolves to "${t}", but no matching project source file exists. Add the source file or update import.module to a path relative to this spec file.`,[e.IMPORT_MODULE_OUTSIDE_PROJECT]:(e,t)=>`Import module "${e}" resolves outside the project root as "${t}", so its target cannot be verified. Confirm that the external file exists and that the path is intentional.`,[e.MOCK_TEMPLATE_PARSE_ERROR]:e=>`Mock template parse warning: ${e}. The mock template was skipped. Fix the YAML or remove the file.`,[e.MERGE_CONFLICT]:(e,t,n,a)=>`"model.${e}.${t}" is defined in both "${n}" and "${a}". Each subsection (entityTypes, aliases, shapes, commonTypes) can only appear once per version. Move all "${t}" for "${e}" into one file.`,[e.MISSING_MODEL]:e=>`No "${e}" section found. Every application must define at least "${e}.latest" with entity types and aliases. Add a "${e}:" section to a spec file.`,[e.MISSING_LATEST]:e=>`"${e}.latest" is missing. The "latest" version defines the current working model and is always required. Add "latest:" under "${e}:".`,[e.INVALID_VERSION_KEY]:e=>`"${e}" is not a valid version key. Version keys must be "latest" or "v1", "v2", etc. Rename "${e}".`,[e.MISSING_VERSION]:e=>`Model version "v${e}" is missing. Versions must be contiguous (v1, v2, …, latest) with no gaps. Add "v${e}:" or remove higher versions.`,[e.NAME_CLASH]:(e,t,n)=>`Name "${t}" is used as both a ${e} and a ${n}. Names must be unique across entity types, aliases, and commonTypes within a version. Rename one of them.`,[e.INVALID_ENTITY_TYPE_NAME]:e=>`"${e}" is not a valid entity type name. Entity types must be PascalCase (e.g. "Product", "KitchenRange"). Rename it.`,[e.DUPLICATE_ENTITY_TYPE]:e=>`Entity type "${e}" is declared more than once. Entity types must be unique. Remove the duplicate.`,[e.INVALID_ALIAS_NAME]:e=>`"${e}" is not a valid alias name. Aliases must be PascalCase (e.g. "RootEntity", "EditableItems"). Rename it.`,[e.RESERVED_ALIAS_NAME]:e=>`"${e}" is a reserved alias. "AnyDomainEntity" is auto-generated from all entity types and cannot be user-defined. Choose a different name.`,[e.MISSING_ROOT_ENTITY]:()=>'"RootEntity" alias is not defined. Every model must have a "RootEntity" alias that identifies which entity types can be used as configuration roots. Add "RootEntity: [YourType]" to your aliases.',[e.CIRCULAR_ALIAS]:e=>`Circular alias reference: ${e}. An alias cannot reference itself, directly or through other aliases. Remove one reference in the cycle.`,[e.UNKNOWN_ALIAS_MEMBER]:(e,t)=>`Alias "${e}" references "${t}", which is not a declared entity type or alias. Check the spelling or add "${t}" to entityTypes.`,[e.UNKNOWN_SHAPE_KEY]:e=>`Shape "${e}" does not match any declared entity type or alias. Shapes can only be defined for names that appear in entityTypes or aliases. Check the spelling or add "${e}" to entityTypes.`,[e.UNKNOWN_REFERENCE_TARGET]:(e,t,n)=>`"${e}.${t}" references "${n}", which is not a declared entity type or alias. Check the spelling or add "${n}" to entityTypes.`,[e.RESERVED_PROPERTY]:(e,t)=>`Property "${e}" on "${t}" is reserved. "id" and "type" are injected automatically and cannot appear in shapes. Remove "${e}" from the shape.`,[e.INVALID_SHAPE_PROPERTY_NAME]:e=>`"${e}" is not a valid shape property name. Property names must match /^[a-z]\\w*$/ — start with a lowercase letter, then word characters only (e.g. "height", "positionX", "hoodId"). Rename the property.`,[e.UNKNOWN_PHX_DEFINITION]:(e,t)=>`$ref "${e}" references unknown phoenix type "${t}". Available built-in types include DomainEntityId, Localizable, MultilingualString. Check the spelling.`,[e.UNKNOWN_COMMON_TYPE_REF]:(e,t)=>`$ref "${e}" references unknown commonType "${t}". The target must be declared in commonTypes of the same model version. Check the spelling or add "${t}" to commonTypes.`,[e.INVALID_REF]:e=>`$ref "${e}" is not a recognized reference format. Use "phx:TypeName" for built-in types, "common:TypeName" for commonTypes, or "#/model/{version}/commonTypes/{name}" for explicit version refs.`,[e.MISSING_MIGRATION]:e=>`No migration file for v${e}. Every version from v2 onward needs a migration (src/migrations/v${e}.ts) that transforms state from the previous version. Create the file.`,[e.MIGRATION_INVALID_START]:e=>`Migration "${e}" starts below v2. v1 is the initial version with no predecessor to migrate from. Remove this file.`,[e.UNKNOWN_MIGRATION]:(e,t,n)=>`Migration "${e}" targets v${t}, but the latest model version is v${n}. There is no model version for this migration to apply to. Remove the file or add model version v${t}.`,[e.PROTECTED_SHAPE]:e=>`Shape "${e}" cannot be user-defined. This entity type is part of the built-in admin model and its shape is managed by the system. Remove this shape.`,[e.PROTECTED_ALIAS]:e=>`Alias "${e}" cannot be user-defined in admin files. "RootEntity" and "CommonAdminEntity" are managed by the built-in admin model. Choose a different name.`,[e.RESERVED_ALIAS]:e=>`Alias "${e}" is auto-generated and cannot be user-defined. Remove this alias definition.`,[e.ALIAS_INCLUDES_COMMON]:(e,t)=>`Alias "${e}" includes "${t}", which is a built-in admin entity type. User aliases cannot include built-in admin types. Remove "${t}" from the alias.`,[e.PROTECTED_INVARIANT]:(e,t)=>`Invariant "${e}.${t}" is a built-in common admin invariant and cannot be overridden. Remove this declaration; the built-in implementation is always applied.`,[e.PROTECTED_RELATION]:(e,t)=>`Relation "${e}.${t}" is a built-in common admin relation and cannot be overridden. Remove this declaration; the built-in relation is always applied.`,[e.PROTECTED_EXPRESSION]:(e,t)=>`Expression "${e}.${t}" is reserved for the built-in common admin spec and cannot be user-defined. Rename this expression.`,[e.PROTECTED_COMMON_TYPE]:e=>`Common type "${e}" is part of the built-in admin model and cannot be user-defined. Choose a different name.`,[e.PROTECTED_ENTITY_TYPE]:e=>`Entity type "${e}" is part of the built-in admin model and cannot be re-declared. Remove it from entityTypes.`,[e.PRESET_UNKNOWN_ROOT_ENTITY_TYPE]:(e,t)=>`Preset rootEntityType "${e}" is not allowed. Allowed root types: ${t.join(", ")}. Use one of these or update the RootEntity alias.`,[e.PRESET_UNKNOWN_ENTITY_TYPE]:(e,t,n)=>`Preset entity "${e}" has type "${t}", which is not a declared entity type. Declared types: ${n.join(", ")}. Fix the type or add "${t}" to entityTypes.`,[e.PRESET_INVALID_ENTITY_ID_FORMAT]:e=>`Entity ID "${e}" does not follow the required format. IDs must match "TypeName-N" (e.g. "Product-1", "Hood-42"). Rename it.`,[e.PRESET_MISSING_ROOT_ENTITY]:e=>`Preset declares rootEntityType "${e}" but no entity of that type exists in initialDomainEntities. Add an entity with type "${e}".`,[e.PRESET_MULTIPLE_ROOT_ENTITIES]:(e,t)=>`Preset has ${t} entities of type "${e}", but exactly one root entity is required. Remove the extra "${e}" entities.`,[e.PRESET_ENTITY_SCHEMA_VIOLATION]:(e,t,n,a)=>`Preset entity "${e}" (${t}) has invalid data at ${n}: ${a}. Fix the value to match the entity schema.`,[e.PRESET_DUPLICATE_ENTITY_ID]:e=>`Preset entity ID "${e}" is used more than once. Entity IDs must be unique in a preset. Rename or remove the duplicate entity.`,[e.PRESET_ENTITY_ID_TYPE_MISMATCH]:(e,t,n)=>`Preset entity "${e}" has type "${t}", but its ID starts with "${n}". IDs must use the entity type prefix. Rename the ID to start with "${t}-" or change the entity type.`,[e.PRESET_UNKNOWN_REFERENCE]:(e,t,n)=>`Preset entity "${e}" references "${n}" from "${t}", but no entity with that ID exists in the preset. Add the referenced entity or update the reference.`,[e.PRESET_REFERENCE_TYPE_MISMATCH]:(e,t,n,a,i)=>`Preset entity "${e}" references "${n}" from "${t}", but the referenced entity has type "${a}". Allowed target types: ${i.join(", ")}. Use a matching entity ID.`,[e.PRESET_RELATION_CARDINALITY_VIOLATION]:(e,t,n,a)=>`Preset entity "${e}" violates relation "${t}" cardinality "${n}". The relation resolves ${a} entities. Add or remove referenced entities so the relation matches its cardinality.`,[e.PRESET_COMPOSITION_MULTIPLE_PARENTS]:(e,t,n)=>`Preset entity "${e}" is composed by both "${t}" and "${n}". Composition must form one tree. Remove one parent reference.`,[e.PRESET_COMPOSITION_CYCLE]:e=>`Preset composition contains a cycle at "${e}". Composition must form a tree from the root entity. Remove the cyclic reference.`,[e.PRESET_ENTITY_NOT_IN_COMPOSITION_TREE]:(e,t)=>`Preset entity "${e}" is not reachable from root entity "${t}" through composedOf relations. Add a composition relation path from the root or remove the entity.`,[e.ADMIN_PRESET_MULTIPLE_PER_FILE]:(e,t)=>`Admin file "${e}" has ${t} presets. Only 1 preset per admin file is allowed. Split into separate files or merge into one preset.`,[e.ADMIN_PRESET_ROOT_TYPE_NOT_ADMIN]:(e,t)=>`Admin preset in "${e}" has rootEntityType "${t}". Admin presets must always use rootEntityType "Admin". Change it to "Admin".`,[e.ACTIONS_IN_ADMIN_FILE]:e=>`"${e}" is an admin spec file ("$admin: true") but declares "actions". Actions run in the configurator domain only; the admin domain has none. Move the "actions" block to a configurator spec file, or remove it.`,[e.INVALID_ACTION_NAME]:e=>`"${e}" is not a valid action name. Action names are camelCase identifiers without a prefix (e.g. "movePartBy", "swapCabinets"), since they also name the implementation, the generated types and the assistant mutation. Rename it.`,[e.ACTION_UNKNOWN_REFERENCE_TARGET]:(e,t,n)=>`"${e}.${t}" references "${n}", which is not an entity type or alias of the latest model. A "references" target types the entity id or entity the param or result member holds. Check the spelling or add "${n}" to entityTypes.`,[e.EXPRESSION_UNKNOWN_ENTITY_KEY]:(e,t)=>`Expression key "${e}" is not a declared entity type or alias. Known names: ${t.join(", ")}. Check the spelling or add "${e}" to entityTypes.`,[e.INVALID_EXPRESSION_NAME]:e=>`"${e}" is not a valid expression name. Expression names must start with "$" followed by camelCase (e.g. "$price", "$isValid"). Rename it.`,[e.DUPLICATE_EXPRESSION]:(e,t,n,a)=>`Expression "${e}.${t}" is produced by both "${n}" and "${a}" after alias expansion. Expression names must be unique for each concrete entity type. Remove one declaration or rename it.`,[e.EXPRESSION_RELATION_CONFLICT]:(e,t)=>`Expression "${e}.${t}" is declared in both "expressions:" and generated by a relation. User expressions cannot shadow relation-derived expressions. Remove the user declaration or rename the relation.`,[e.CONSTANTS_EXPRESSION_CONFLICT]:(e,t)=>`Expression "${e}.${t}" is declared in both "constants:" and "expressions:" in the same file. Use only one source of truth and migrate the legacy constant into "expressions:".`,[e.COMPONENT_RELATION_CONFLICT]:(e,t)=>`Component "${e}::${t}" is declared in both "components:" and generated by a relation. User components cannot shadow relation-derived components. Remove the user declaration or rename the relation.`,[e.COMPONENT_ALIAS_CONFLICT]:(e,t,n,a,i)=>`Component instance "${e}.${t}.${n}" is produced by both "${a}" and "${i}". Component instance names must be unique after alias expansion. Rename one instance or move the shared properties to one declaration.`,[e.COMPONENT_IMPORT_REF_UNSUPPORTED]:(e,t,n,a,i,s)=>`Component prop "${e}.${t}.${n}.${a}" uses unsupported $importRef "${i}#${s}". Application-spec component values are part of the webhook-included domain and cannot reference frontend modules. Fix: remove $importRef from the spec and attach the component from a frontend-only file in src/components.`,[e.COMPONENT_DATA_REF_UNSUPPORTED]:(e,t,n,a,i,s)=>`Component prop "${e}.${t}.${n}.${a}" combines "$read: ${i}" with the legacy "$data: ${s}" marker. Application-spec components resolve "$read" against entity fields and declared expressions only, so the combined marker never becomes a binding. Fix: remove "$data" and implement "${i}" with createDataSwatchMap('${s.split(".").at(-1)??s}') in the project's custom expressions.`,[e.INVALID_INVARIANT_NAME]:e=>`"${e}" is not a valid invariant name. Invariant names must start with a lowercase letter and contain only word characters (e.g. "nameNotEmpty"). Rename it.`,[e.INVALID_VIOLATION_TYPE_NAME]:e=>`"${e}" is not a valid violation type. Violation types must start with a lowercase letter and contain only letters, digits, underscores, or hyphens (e.g. "name-empty"). Rename it.`,[e.INVARIANT_UNKNOWN_ENTITY_KEY]:(e,t)=>`Invariants are declared for "${e}", which is not an entity type or alias in the model. Known names: ${t.join(", ")}. Check the spelling or add "${e}" to entityTypes.`,[e.INVARIANT_MANUAL_VIOLATIONS_COMPONENT]:e=>`Component "violations" on "${e}" cannot be declared manually because invariant parsing generates it automatically. Remove the manual component declaration.`,[e.INVARIANT_VIOLATIONS_EXPRESSION_CONFLICT]:(e,t)=>`Expression "${e}.$violations" is declared in "${t}:" but invariant parsing generates it automatically for the same entity type. Remove the declaration or rename it.`,[e.INVALID_RELATION_NAME]:e=>`"${e}" is not a valid relation name. Relation names must start with "$" followed by camelCase (e.g. "$top", "$legs"). Rename it.`,[e.RELATION_UNKNOWN_ENTITY_KEY]:(e,t)=>`Relations declared for "${e}" which is not an entity type or alias in the model. Known names: ${t.join(", ")}. Check the spelling or add "${e}" to entityTypes.`,[e.RELATION_UNKNOWN_TARGET]:(e,t,n,a)=>`Relation "${e}.${t}" targets "${n}" which is not an entity type or alias in the model. Known names: ${a.join(", ")}. Check the spelling or add "${n}" to entityTypes.`,[e.RELATION_UNKNOWN_FIELD_DIRECT]:(e,t,n)=>`Relation "${e}.${t}" references field "${n}" which does not exist in the shape of "${e}". Add "${n}" to the "${e}" schema or pick a different field.`,[e.RELATION_UNKNOWN_FIELD_INDIRECT]:(e,t,n,a)=>`Relation "${e}.${t}" references field "${n}" which does not exist in the shape of target "${a}". Add "${n}" to the "${a}" schema or pick a different field.`,[e.RELATION_IMMUTABLE_FIELD]:(e,t,n,a)=>`Relation "${e}.${t}" uses implicit field "${n}" on "${a}" as a relation reference holder. Implicit fields "id" and "type" are immutable and cannot hold relation references. Choose a writable shape field on "${a}".`,[e.RELATION_MISSING_COUNTERPART]:(e,t,n,a,i,s)=>{let o=void 0!==i?` with field "${i}"`:"",r=s?`Set "composedOf: false" on the counterpart because "${e}.${t}" already owns the composition.`:'Set "composedOf: false" on the counterpart for a cross-reference, or "composedOf: true" if the counterpart should own the composition.';return`Relation "${e}.${t}" (${n} → "${a}"${void 0!==i?`, field "${i}"`:""}) has no counterpart on "${a}". Every relation must be declared from both sides — add a "${"allOfType"===n?"allOfType":"direct"===n?"indirect":"direct"}" relation on "${a}" targeting "${e}"${o}. ${r}`},[e.RELATION_COUNTERPART_COMPOSED_OF_MISMATCH]:(e,t,n,a)=>`Relation "${e}.${t}" and its counterpart "${n}.${a}" both use "composedOf: true". A relation pair can have at most one composition owner — set "composedOf: false" on one side.`,[e.RELATION_ENTITY_NOT_IN_COMPOSITION_TREE]:(e,t)=>`Entity "${e}" is not reachable from any root entity type (${t.join(", ")}) via "composedOf: true" relations. Every declared entity must be part of the composition tree, otherwise instances of it can never appear in a valid domain state. Add a relation with "composedOf: true" from a reachable parent, or include "${e}" in the RootEntity alias.`,[e.DUPLICATE_DATA_SCHEMA]:(e,t,n)=>`"${e}" is defined in both "${t}" and "${n}". Each data schema can only be declared in one file. Remove the duplicate.`,[e.ADMIN_DATA_SCHEMA]:(e,t)=>`"${e}" is declared in admin spec "${t}". Data schemas are configurator-only. Move "${e}" to a non-admin spec file.`,[e.SESSION_DATA_REQUIRED_PROPERTIES]:(e,t)=>`sessionData in "${t}" declares required properties (${e.map(e=>`"${e}"`).join(", ")}), but admin and preset sessions do not carry custom session data. Remove these properties from required or set required to an empty array.`,[e.CLERK_SESSION_DATA_INCOMPATIBLE]:e=>`sessionData is not compatible with the built-in Clerk session payload: ${e.join("; ")}. When "useClerk" is true, the SDK's Clerk auth handlers return { id: string, accessToken: string, tags: string[], emailAddress: string, fullName: string | null }, and runtime session parsing rejects any payload the schema does not accept. Declare all five properties with these exact types (the "type" keyword is compared literally, so $ref, anyOf, and oneOf forms are not recognized) and keep them out of "required" so anonymous sessions stay valid. Extra project-defined properties are allowed.`,[e.RESERVED_PUBLISHED_DATA_KEY]:e=>`publishedData property "${e}" is reserved by the admin system. Properties like "presetCategories" and "recipes" are auto-injected. Remove "${e}" from your publishedData properties.`,[e.DUPLICATE_STATE_FIELD]:(e,t,n)=>`"${e}" is defined in both "${t}" and "${n}". Each state field can only be declared in one file. Remove the duplicate.`,[e.INVALID_STATE_KEY]:(e,t)=>`State key "${t}" in "${e}" is not a valid identifier. State keys must start with a letter and contain only letters, digits, or underscores (e.g. "overview", "detailView"). Rename it.`,[e.DUPLICATE_STATE_VALUE]:(e,t)=>`State value "${t}" appears more than once in "${e}". Each value within a state array must be unique. Remove the duplicate.`,[e.DUPLICATE_THEME_FIELD]:(e,t,n)=>`"${e}" is defined in both "${t}" and "${n}". Each theme field can only be declared in one file. Remove the duplicate.`,[e.DUPLICATE_UI_FIELD]:(e,t,n)=>`"${e}" is defined in both "${t}" and "${n}". Each UI field can only be declared in one file. Remove the duplicate.`,[e.CONFLICTING_TRANSFORMERS]:(e,t)=>`Transformers are declared in both "${e}" and "${t}". The "transformers" section can only appear in one spec file. Move all transformers into a single file.`,[e.DUPLICATE_TRANSFORMER]:(e,t)=>`Transformer "${e}" is declared twice in "${t}". Transformer names must be unique within the file. Remove the duplicate entry.`,[e.DUPLICATE_TRANSFORMER_FILE]:(e,t)=>`Transformer files "${e}" and "${t}" resolve to the same transformer name. Transformers are matched by file name, ignoring folders, letter case, and dashes. Rename one of the files so every transformer file name is unique.`,[e.UNMATCHED_TRANSFORMER]:(e,t)=>`Transformer "${e}" has no matching file in "src/transformers/". Every name listed under "transformers:" must correspond to a transformer module. ${t.length>0?`Available transformers: ${t.map(e=>`"${e}"`).join(", ")}. Check the spelling or add "src/transformers/${e}.ts".`:`No transformer files were found in "src/transformers/". Add "src/transformers/${e}.ts" or remove the entry.`}`,[e.DUPLICATE_APP_METADATA_FIELD]:(e,t,n)=>`"${e}" is defined in both "${t}" and "${n}". Each metadata field can only be declared in one file. Remove the duplicate.`,[e.DUPLICATE_INFRA_FIELD]:(e,t,n)=>`"${e}" is defined in both "${t}" and "${n}". Each infrastructure field can only be declared in one file. Remove the duplicate.`,[e.INVALID_APPLICATION_VERSION]:e=>`"${e}" is not a valid applicationVersion. Version must be semver (x.y.z) using three numeric segments (e.g. "1.0.0", "2.3.12"). Update "applicationVersion" to match.`,[e.INVALID_ENV_VAR_KEY]:(e,t)=>`"${t}" is not a valid env.${e} variable name. Env var names must match /^[A-Z_][A-Z0-9_]*$/ — uppercase letters, digits, and underscores; must not start with a digit (e.g. "API_URL", "_PRIVATE_FLAG"). Rename the variable.`,[e.DUPLICATE_ADMIN_PAGES]:(e,t)=>`"$adminPages" is defined in both "${e}" and "${t}". Admin pages can only be declared in one admin spec file. Move all "$adminPages" settings into one admin file.`,[e.ADMIN_PAGES_NAV_STATE_CONFLICT]:e=>`Admin navigation states [${e.join(", ")}] are declared manually and generated from "$adminPages". Remove the manual entries from "navigationStates" in the admin spec or change the "$adminPages" navigationState values.`,[e.ADMIN_PAGE_DATA_ENTRY_CONFLICT]:(e,t)=>`"$adminPages.pages.${e}.connectedDataEntry" references data entry "${t}". This data entry already creates an inferred admin data page. Remove the explicit admin page connection or change the data entry kind.`,[e.CONFLICTING_BUDGETS]:(e,t)=>`"budgets" is declared in both "${e}" and "${t}". The "budgets" section can only appear in one spec file. Move all bundle-size budgets into a single file.`,[e.CONFLICTING_CHUNKS]:(e,t)=>`"chunks" is declared in both "${e}" and "${t}". The "chunks" section can only appear in one spec file. Move all chunk definitions into a single file.`,[e.CONFLICTING_ASSISTANT]:(e,t)=>`"assistant" is declared in both "${e}" and "${t}". The "assistant" manifest can only appear in one spec file. Move the whole "assistant" section into a single file.`,[e.ASSISTANT_UNKNOWN_TYPE]:(e,t)=>`"assistant.${e}.${t}" does not name an entity type or alias of the latest model, so it has nothing to ${({entities:"expose",deletable:"make deletable",writable:"make writable",childRecipes:"add children to",replaceRecipes:"replace"})[e]}. Use an entity type or alias name from "model.latest", or remove the entry.`,[e.ASSISTANT_UNKNOWN_FIELD]:(e,t,n)=>n.startsWith("$")?`"assistant.entities.${t}.${n}" is not an expression declared on "${t}". The assistant schema exposes expressions declared in "expressions", "constants" or "relations" on the entity type or alias itself, and on an entity type also those of its aliases; an expression only inferred from a component "$read" is not declared. Declare "${n}" in "expressions", "constants" or "relations" on "${t}" (for an entity type, an alias containing it also works), or remove the entry.`:`"assistant.${e}.${t}.${n}" is not a stored field of "${t}". The assistant schema ${"entities"===e?"exposes":"writes"} shape properties of the entity type or alias, including fields every alias member has. Use a property from the "${t}" shape, or remove the entry.`,[e.ASSISTANT_UNSUPPORTED_EXPRESSION]:(e,t)=>`"assistant.entities.${e}.${t}" whitelists the "$violations" expression, which the assistant schema does not expose yet: violations get their own typed edge in CON-2869. Remove the entry.`,[e.ASSISTANT_NOT_WRITABLE]:(e,t)=>`"assistant.writable.${e}.${t}" cannot be written: ${t.startsWith("$")?"an expression is computed from the state, not stored":`"${t}" identifies the entity and never changes`}. Only stored shape properties other than "id" and "type" can be writable. Remove the entry${t.startsWith("$")?", or make the stored fields the expression reads writable instead":""}.`,[e.ASSISTANT_UNKNOWN_RECIPE_GROUP]:({section:e,component:t},n,a,i,s)=>`"assistant.${e}.${n}.groups.${a}" does not name a "${t}" component instance on "${i}", so there are no recipes to expose. ${s.length>0?`"${i}" has these "${t}" instances: ${s.join(", ")}.`:`"${i}" has no "${t}" component.`} Use the instance name of a "${t}" component attached to the entity type or to an alias containing it, or remove the entry.`,[e.ASSISTANT_DUPLICATE_RECIPE_GROUP]:({section:e,mutation:t},n,a,i)=>`"${n}" gets the recipe group id "${a}" from both "assistant.${e}.${i.join(`" and "assistant.${e}.`)}", but "${t}" finds a group of an entity by its id. The entries may come from "${n}" itself or from aliases containing it. Give one of them another id with "as".`,[e.ASSISTANT_META_TYPE_NAME_CONFLICT]:(e,t)=>`This entry exposes a recipe group or the options of a field on "${e}", so the assistant schema generates the type "${t}" for them, but the model already has an entity type or alias named "${t}". Rename that entity type or alias, or remove every "assistant.childRecipes" and "assistant.replaceRecipes" group and every "options" of a writable field of "${e}".`,[e.ASSISTANT_UNKNOWN_OPTIONS_COMPONENT]:(e,{componentType:t,instanceName:n},a,i)=>`"assistant.writable.${e}.options" names the "${t}" instance "${n}", which "${a}" does not have, so there are no choices to list. ${i.length>0?`"${a}" has these "${t}" instances: ${i.join(", ")}.`:`"${a}" has no "${t}" component.`} Use the name of a "${t}" instance attached to the entity type or to an alias containing it, correct "componentType", or remove "options".`,[e.ASSISTANT_RESERVED_OPTIONS_EDGE_NAME]:(e,t,n)=>`"assistant.writable.${e}.options" would add the edge "${t}" to the meta type, but that name is taken by a recipe groups edge. Name the edge differently with "as", e.g. "as: ${n}Choices".`,[e.ASSISTANT_DUPLICATE_OPTIONS_EDGE]:(e,t,n)=>`"${e}" gets ${"edgeName"in t?`the options edge "${t.edgeName}"`:`options for the field "${t.field}"`} from both "assistant.writable.${n.join('.options" and "assistant.writable.')}.options", but ${"edgeName"in t?"one edge lists the choices of one field":"a written value is checked against one list of choices"}. The entries may come from "${e}" itself or from aliases containing it. ${"edgeName"in t?'Give one of them another name with "as", or remove':"Remove"} "options" from one of them.`,[e.ASSISTANT_UNKNOWN_ACTION]:(e,t)=>`"assistant.actions.${e}" does not name an action declared under "actions"${t.length>0?`; the declared actions are: ${t.join(", ")}`:"; the spec declares no actions"}. Declare the action in an "actions" block of a spec file and implement it in src/actions/, or remove the entry.`,[e.ASSISTANT_MUTATION_NAME_CONFLICT]:(e,t,n)=>`"assistant.actions.${e}" exposes the mutation "${t}", which ${n}. One Mutation field runs one change. Expose the action under another name with "as", e.g. "as: ${t}Action".`,[e.ASSISTANT_ACTION_RESULT_TYPE_CONFLICT]:(e,t,n)=>`"assistant.actions.${e}" exposes the mutation "${t}", so the assistant schema generates the type "${n}" for its result, but that name is taken by an entity type, alias, generated meta type, built-in type or another action's result. Expose the action under another name with "as", or rename the conflicting type.`,[e.ASSISTANT_RESERVED_FIELD_NAME]:(e,t,n)=>`"assistant.entities.${e}.${t}" is exposed as "${n}", which the assistant schema reserves ("id", "type" and "meta" are reserved on every type). Expose it under another name with "as", e.g. "as: ${t}Value".`,[e.ASSISTANT_FIELD_NAME_CONFLICT]:(e,t,n,a)=>void 0===a?`"${t}" on "${e}" in the assistant schema maps to both "${n.join('" and "')}", but one GraphQL field can read only one stored field or expression. The entries may come from "${e}" itself or from aliases containing it. Rename one of them with "as".`:`"assistant.writable.${a}" makes "${t}" writable on "${e}" without exposing it, so its delta field would be named "${t}", but "assistant.entities" already exposes "${n[0]}" on "${e}" under that name. One name cannot read one stored field or expression and write another. Expose "${t}" in "assistant.entities" under another name with "as", or rename the entry that exposes "${n[0]}".`,[e.ASSISTANT_RESERVED_TYPE_NAME]:(e,t)=>`"${e}" is an entity type or alias name that the assistant GraphQL schema reserves for its own types (${t.join(", ")}), so the schema cannot be generated. Rename the entity type or alias, or remove the "assistant" section.`,[e.ASSISTANT_INVALID_SCHEMA]:e=>`The GraphQL schema generated from the "assistant" manifest is invalid: ${e.join(" ")} This usually means aliases sharing an entity whitelist the same field with different types. Whitelist the field on one alias only, or rename one entry with "as".`,[e.INVALID_CHUNK_KEY]:e=>`"${e}" is not a valid chunk key. Chunk keys must be lowercase kebab-case matching /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/ (e.g. "main", "swatch-data"). Rename the chunk.`,[e.RESERVED_CHUNK_KEY]:()=>'"system" is a reserved chunk key used for presets and recipes. It cannot be user-defined and is auto-injected after validation. Please use a different key name.',[e.CONFLICTING_DATA_ENTRY]:(e,t,n,a)=>`"$data.${e}.${t}" is defined in both "${n}" and "${a}". Each data entry key can only be declared once per section. Move the entry into one file, delete the duplicate, or rename one entry.`,[e.INVALID_DATA_ENTRY_KEY]:(e,t)=>`"$data.${e}.${t}" is not a valid data entry key. Data entry keys must start with a letter, followed by letters, digits, or underscores (/^[A-Za-z]\\w*$/, e.g. "colorOptions" or "ColorOptions"). Rename the entry.`,[e.INVALID_DATA_DEFINITION_FIELD_KEY]:(e,t)=>`"$data.custom.${e}.definition.${t}" is not a valid field key. Definition field keys must match /^\\$?[a-z][\\w.-]*$/ — start with lowercase or "$", then letters, digits, "_", ".", or "-". Rename the field.`,[e.UNKNOWN_DATA_CHUNK]:(e,t,n)=>`"$data.${e}.${t}" references unknown chunk "${n}". The chunk reference must match a key declared under "chunks:". Add the chunk or update the entry chunk.`,[e.INVALID_DATA_VALUE]:(e,t,n,a)=>`"$data.custom.${e}.values[${t}].${n}" has an invalid value. Expected ${a}. Fix the value or update the field definition.`,[e.DEFAULTS_UNKNOWN_ENTITY_KEY]:(e,t)=>`Defaults declared for "${e}" which is not an entity type or alias in the model. Known names: ${t.join(", ")}. Check the spelling or add "${e}" to entityTypes.`,[e.DEFAULTS_UNKNOWN_PROPERTY]:(e,t,n,a)=>{let i=n.length>0?n.join(", "):"(none)",s=a&&a.length>0?` Alias member(s) missing "${t}": ${a.join(", ")}.`:"";return`Default "${e}.${t}" refers to a property that does not exist on the shape of "${e}". Known properties: ${i}.${s} Remove the default or add "${t}" to the shape.`},[e.DEFAULTS_SCHEMA_VIOLATION]:(e,t,n,a,i)=>{let s=i?` (alias member "${i}")`:"",o=n&&"(root)"!==n?` at "${n}"`:"";return`Default "${e}.${t}"${s} does not match the entity shape${o}: ${a}. Defaults must be assignable to their shape property. Fix the value or update the shape.`},[e.DEFAULTS_DEPRECATED]:()=>'The "defaults:" section is deprecated. Defaults remain supported for legacy parity, but new specs should model initial values as "$data" entries — see spec/application-specification/parsing/data-chunks.md. Defaults are planned for removal once the $data migration path is documented.',[e.COMPONENT_INVALID_INSTANCE_NAME]:(e,t,n)=>`Component instance name "${n}" in "${e}.${t}" is not a valid identifier. Instance names must start with a letter and contain only letters, digits, or underscores (e.g. "default", "body", "main"). Rename it.`,[e.COMPONENT_MERGE_CONFLICT]:(e,t,n,a,i)=>`Component instance "${e}.${t}.${n}" is defined in both "${a}" and "${i}". Each component instance can only appear in one file. Remove the duplicate.`,[e.COMPONENT_UNKNOWN_ENTITY_KEY]:(e,t)=>`Components declared for "${e}" which is not an entity type or alias in the model. Known names: ${t.join(", ")}. Check the spelling or add "${e}" to entityTypes.`,[e.READ_BINDING_UNKNOWN_FIELD]:(e,t,n,a,i)=>`$read binding "${a}" in "${e}.${t}.${n}" references field "${i}" which does not exist in the shape of "${e}". Add "${i}" to the shape or fix the $read target.`,[e.WRITE_BINDING_UNKNOWN_FIELD]:(e,t,n,a,i)=>`$write/$bind "${a}" in "${e}.${t}.${n}" targets field "${i}" which does not exist in the shape of "${e}". Add "${i}" to the shape or fix the target.`,[e.WRITE_BINDING_IMMUTABLE_FIELD]:(e,t,n,a,i)=>`$write/$bind "${a}" in "${e}.${t}.${n}" targets implicit field "${i}". Implicit fields "id" and "type" are immutable and cannot be changed. Use $read to consume the field or choose a writable shape field.`,[e.WRITE_BINDING_EXPRESSION_TARGET]:(e,t,n,a,i)=>`$write/$bind "${a}" in "${e}.${t}.${n}" targets "${i}" which is an expression. Write targets must be entity shape fields, not expressions. Use $read for expression bindings, $write/$bind for shape fields.`,[e.WRITE_BINDING_DUPLICATE_TARGET]:(e,t,n,a,i,s)=>`Entity field "${a}" is written by both "${i}" and "${s}" in "${e}.${t}.${n}". Each entity field can only be written by one component property. Remove one of the bindings.`,[e.UNKNOWN_SRC_PATH]:e=>`File "${e}" is in an unknown src/ folder. Only known folders (expressions, actions, invariants, components, transformers, handlers, elements, webhooks, locales, admin/*, migrations) or _-prefixed shared folders are allowed. Move the file or rename the folder with a "_" prefix.`,[e.INVALID_SUBDIRECTORY]:(e,t)=>`File "${e}" is nested inside "${t}", but migrations must be flat. Move the migration file directly into "${t}" or prefix the folder with "_".`,[e.MISSING_WEBHOOK_INDEX]:()=>"Files found in src/webhooks/ but src/webhooks/index.ts is missing. The webhook entry point requires a default export from src/webhooks/index.ts. Create the file with a default export of your webhook handler.",[e.MODULE_ANALYSIS_FAILED]:(e,t)=>`Cannot analyze module "${e}": ${t}. Fix the file's syntax so its imports and webhook membership can be determined.`,[e.WEBHOOK_UNSAFE_IMPORT]:(e,t,n,a)=>`Webhook-included file "${e}" is not server-safe: it is included because ${t}, but "${n}" imports client-only "${a}". Fix: remove or isolate the client-only import, or remove the file's webhook membership.`,[e.ENHANCED_JSON_VALUE_EVAL_NOT_ALLOWED]:()=>'"$eval" is not allowed in this position. "$eval" requires "self", which is only available inside expressions and component props — it is not available in static slots such as defaults. Replace the "$eval" with a literal value, "$msg", or move the dynamic logic into an "expressions:" entry.',[e.ENHANCED_JSON_VALUE_MSG_NOT_ALLOWED]:()=>'"$msg" is not allowed in this position. This slot does not accept localized messages (e.g. component props, which are resolved without an i18n context). Replace "$msg" with a plain string, or move the message into a slot that supports i18n such as defaults or expressions.',[e.ENHANCED_JSON_VALUE_EVAL_NOT_STATICALLY_INFERABLE]:e=>`Could not infer a schema from "$eval: ${e}" because the expression is not statically foldable. Add explicit schema keys to the expression entry, or use only literals, constant operators, and deterministic Math members.`,[e.ENHANCED_JSON_VALUE_CODE_REF_NOT_SUPPORTED]:()=>'"$codeRef" with an inline "code" block is no longer supported by the application spec parser. It was never evaluated — the value was carried through as plain data. Use "$eval" instead, for example "$eval: \'4 * 25.4\'". "$eval" folds literals, constant operators, and deterministic Math members at parse time; anything else needs explicit schema keys.'};
1
+ import{DiagnosticCode as e}from"./diagnostic-codes.js";export const diagnosticMessages={[e.EMPTY_SPEC_FILE]:()=>'Spec file is empty. Every spec file must define at least one section ("model:", "components:", or "presets:"). Add content or remove the file.',[e.YAML_PARSE_ERROR]:e=>`YAML parse error: ${e}. Check for indentation issues, missing colons, or unquoted special characters.`,[e.SCHEMA_PARSE_ERROR]:(e,t)=>`Invalid value at "${e}": ${t}. Refer to the spec documentation for the expected structure at this path.`,[e.IMPORT_MODULE_NOT_FOUND]:(e,t)=>`Import module "${e}" resolves to "${t}", but no matching project source file exists. Add the source file or update import.module to a path relative to this spec file.`,[e.IMPORT_MODULE_OUTSIDE_PROJECT]:(e,t)=>`Import module "${e}" resolves outside the project root as "${t}", so its target cannot be verified. Confirm that the external file exists and that the path is intentional.`,[e.MOCK_TEMPLATE_PARSE_ERROR]:e=>`Mock template parse warning: ${e}. The mock template was skipped. Fix the YAML or remove the file.`,[e.MERGE_CONFLICT]:(e,t,n,a)=>`"model.${e}.${t}" is defined in both "${n}" and "${a}". Each subsection (entityTypes, aliases, shapes, commonTypes) can only appear once per version. Move all "${t}" for "${e}" into one file.`,[e.MISSING_MODEL]:e=>`No "${e}" section found. Every application must define at least "${e}.latest" with entity types and aliases. Add a "${e}:" section to a spec file.`,[e.MISSING_LATEST]:e=>`"${e}.latest" is missing. The "latest" version defines the current working model and is always required. Add "latest:" under "${e}:".`,[e.INVALID_VERSION_KEY]:e=>`"${e}" is not a valid version key. Version keys must be "latest" or "v1", "v2", etc. Rename "${e}".`,[e.MISSING_VERSION]:e=>`Model version "v${e}" is missing. Versions must be contiguous (v1, v2, …, latest) with no gaps. Add "v${e}:" or remove higher versions.`,[e.NAME_CLASH]:(e,t,n)=>`Name "${t}" is used as both a ${e} and a ${n}. Names must be unique across entity types, aliases, and commonTypes within a version. Rename one of them.`,[e.INVALID_ENTITY_TYPE_NAME]:e=>`"${e}" is not a valid entity type name. Entity types must be PascalCase (e.g. "Product", "KitchenRange"). Rename it.`,[e.DUPLICATE_ENTITY_TYPE]:e=>`Entity type "${e}" is declared more than once. Entity types must be unique. Remove the duplicate.`,[e.INVALID_ALIAS_NAME]:e=>`"${e}" is not a valid alias name. Aliases must be PascalCase (e.g. "RootEntity", "EditableItems"). Rename it.`,[e.RESERVED_ALIAS_NAME]:e=>`"${e}" is a reserved alias. "AnyDomainEntity" is auto-generated from all entity types and cannot be user-defined. Choose a different name.`,[e.MISSING_ROOT_ENTITY]:()=>'"RootEntity" alias is not defined. Every model must have a "RootEntity" alias that identifies which entity types can be used as configuration roots. Add "RootEntity: [YourType]" to your aliases.',[e.CIRCULAR_ALIAS]:e=>`Circular alias reference: ${e}. An alias cannot reference itself, directly or through other aliases. Remove one reference in the cycle.`,[e.UNKNOWN_ALIAS_MEMBER]:(e,t)=>`Alias "${e}" references "${t}", which is not a declared entity type or alias. Check the spelling or add "${t}" to entityTypes.`,[e.UNKNOWN_SHAPE_KEY]:e=>`Shape "${e}" does not match any declared entity type or alias. Shapes can only be defined for names that appear in entityTypes or aliases. Check the spelling or add "${e}" to entityTypes.`,[e.UNKNOWN_REFERENCE_TARGET]:(e,t,n)=>`"${e}.${t}" references "${n}", which is not a declared entity type or alias. Check the spelling or add "${n}" to entityTypes.`,[e.RESERVED_PROPERTY]:(e,t)=>`Property "${e}" on "${t}" is reserved. "id" and "type" are injected automatically and cannot appear in shapes. Remove "${e}" from the shape.`,[e.INVALID_SHAPE_PROPERTY_NAME]:e=>`"${e}" is not a valid shape property name. Property names must match /^[a-z]\\w*$/ — start with a lowercase letter, then word characters only (e.g. "height", "positionX", "hoodId"). Rename the property.`,[e.UNKNOWN_PHX_DEFINITION]:(e,t)=>`$ref "${e}" references unknown phoenix type "${t}". Available built-in types include DomainEntityId, Localizable, MultilingualString. Check the spelling.`,[e.UNKNOWN_COMMON_TYPE_REF]:(e,t)=>`$ref "${e}" references unknown commonType "${t}". The target must be declared in commonTypes of the same model version. Check the spelling or add "${t}" to commonTypes.`,[e.INVALID_REF]:e=>`$ref "${e}" is not a recognized reference format. Use "phx:TypeName" for built-in types, "common:TypeName" for commonTypes, or "#/model/{version}/commonTypes/{name}" for explicit version refs.`,[e.MISSING_MIGRATION]:e=>`No migration file for v${e}. Every version from v2 onward needs a migration (src/migrations/v${e}.ts) that transforms state from the previous version. Create the file.`,[e.MIGRATION_INVALID_START]:e=>`Migration "${e}" starts below v2. v1 is the initial version with no predecessor to migrate from. Remove this file.`,[e.UNKNOWN_MIGRATION]:(e,t,n)=>`Migration "${e}" targets v${t}, but the latest model version is v${n}. There is no model version for this migration to apply to. Remove the file or add model version v${t}.`,[e.PROTECTED_SHAPE]:e=>`Shape "${e}" cannot be user-defined. This entity type is part of the built-in admin model and its shape is managed by the system. Remove this shape.`,[e.PROTECTED_ALIAS]:e=>`Alias "${e}" cannot be user-defined in admin files. "RootEntity" and "CommonAdminEntity" are managed by the built-in admin model. Choose a different name.`,[e.RESERVED_ALIAS]:e=>`Alias "${e}" is auto-generated and cannot be user-defined. Remove this alias definition.`,[e.ALIAS_INCLUDES_COMMON]:(e,t)=>`Alias "${e}" includes "${t}", which is a built-in admin entity type. User aliases cannot include built-in admin types. Remove "${t}" from the alias.`,[e.PROTECTED_INVARIANT]:(e,t)=>`Invariant "${e}.${t}" is a built-in common admin invariant and cannot be overridden. Remove this declaration; the built-in implementation is always applied.`,[e.PROTECTED_RELATION]:(e,t)=>`Relation "${e}.${t}" is a built-in common admin relation and cannot be overridden. Remove this declaration; the built-in relation is always applied.`,[e.PROTECTED_EXPRESSION]:(e,t)=>`Expression "${e}.${t}" is reserved for the built-in common admin spec and cannot be user-defined. Rename this expression.`,[e.PROTECTED_COMMON_TYPE]:e=>`Common type "${e}" is part of the built-in admin model and cannot be user-defined. Choose a different name.`,[e.PROTECTED_ENTITY_TYPE]:e=>`Entity type "${e}" is part of the built-in admin model and cannot be re-declared. Remove it from entityTypes.`,[e.PRESET_UNKNOWN_ROOT_ENTITY_TYPE]:(e,t)=>`Preset rootEntityType "${e}" is not allowed. Allowed root types: ${t.join(", ")}. Use one of these or update the RootEntity alias.`,[e.PRESET_UNKNOWN_ENTITY_TYPE]:(e,t,n)=>`Preset entity "${e}" has type "${t}", which is not a declared entity type. Declared types: ${n.join(", ")}. Fix the type or add "${t}" to entityTypes.`,[e.PRESET_INVALID_ENTITY_ID_FORMAT]:e=>`Entity ID "${e}" does not follow the required format. IDs must match "TypeName-N" (e.g. "Product-1", "Hood-42"). Rename it.`,[e.PRESET_MISSING_ROOT_ENTITY]:e=>`Preset declares rootEntityType "${e}" but no entity of that type exists in initialDomainEntities. Add an entity with type "${e}".`,[e.PRESET_MULTIPLE_ROOT_ENTITIES]:(e,t)=>`Preset has ${t} entities of type "${e}", but exactly one root entity is required. Remove the extra "${e}" entities.`,[e.PRESET_ENTITY_SCHEMA_VIOLATION]:(e,t,n,a)=>`Preset entity "${e}" (${t}) has invalid data at ${n}: ${a}. Fix the value to match the entity schema.`,[e.PRESET_DUPLICATE_ENTITY_ID]:e=>`Preset entity ID "${e}" is used more than once. Entity IDs must be unique in a preset. Rename or remove the duplicate entity.`,[e.PRESET_ENTITY_ID_TYPE_MISMATCH]:(e,t,n)=>`Preset entity "${e}" has type "${t}", but its ID starts with "${n}". IDs must use the entity type prefix. Rename the ID to start with "${t}-" or change the entity type.`,[e.PRESET_UNKNOWN_REFERENCE]:(e,t,n)=>`Preset entity "${e}" references "${n}" from "${t}", but no entity with that ID exists in the preset. Add the referenced entity or update the reference.`,[e.PRESET_REFERENCE_TYPE_MISMATCH]:(e,t,n,a,i)=>`Preset entity "${e}" references "${n}" from "${t}", but the referenced entity has type "${a}". Allowed target types: ${i.join(", ")}. Use a matching entity ID.`,[e.PRESET_RELATION_CARDINALITY_VIOLATION]:(e,t,n,a)=>`Preset entity "${e}" violates relation "${t}" cardinality "${n}". The relation resolves ${a} entities. Add or remove referenced entities so the relation matches its cardinality.`,[e.PRESET_COMPOSITION_MULTIPLE_PARENTS]:(e,t,n)=>`Preset entity "${e}" is composed by both "${t}" and "${n}". Composition must form one tree. Remove one parent reference.`,[e.PRESET_COMPOSITION_CYCLE]:e=>`Preset composition contains a cycle at "${e}". Composition must form a tree from the root entity. Remove the cyclic reference.`,[e.PRESET_ENTITY_NOT_IN_COMPOSITION_TREE]:(e,t)=>`Preset entity "${e}" is not reachable from root entity "${t}" through composedOf relations. Add a composition relation path from the root or remove the entity.`,[e.ADMIN_PRESET_MULTIPLE_PER_FILE]:(e,t)=>`Admin file "${e}" has ${t} presets. Only 1 preset per admin file is allowed. Split into separate files or merge into one preset.`,[e.ADMIN_PRESET_ROOT_TYPE_NOT_ADMIN]:(e,t)=>`Admin preset in "${e}" has rootEntityType "${t}". Admin presets must always use rootEntityType "Admin". Change it to "Admin".`,[e.ACTIONS_IN_ADMIN_FILE]:e=>`"${e}" is an admin spec file ("$admin: true") but declares "actions". Actions run in the configurator domain only; the admin domain has none. Move the "actions" block to a configurator spec file, or remove it.`,[e.INVALID_ACTION_NAME]:e=>`"${e}" is not a valid action name. Action names are camelCase identifiers without a prefix (e.g. "movePartBy", "swapCabinets"), since they also name the implementation, the generated types and the assistant mutation. Rename it.`,[e.ACTION_UNKNOWN_REFERENCE_TARGET]:(e,t,n)=>`"${e}.${t}" references "${n}", which is not an entity type or alias of the latest model. A "references" target types the entity id or entity the param or result member holds. Check the spelling or add "${n}" to entityTypes.`,[e.EXPRESSION_UNKNOWN_ENTITY_KEY]:(e,t)=>`Expression key "${e}" is not a declared entity type or alias. Known names: ${t.join(", ")}. Check the spelling or add "${e}" to entityTypes.`,[e.INVALID_EXPRESSION_NAME]:e=>`"${e}" is not a valid expression name. Expression names must start with "$" followed by camelCase (e.g. "$price", "$isValid"). Rename it.`,[e.DUPLICATE_EXPRESSION]:(e,t,n,a)=>`Expression "${e}.${t}" is produced by both "${n}" and "${a}" after alias expansion. Expression names must be unique for each concrete entity type. Remove one declaration or rename it.`,[e.EXPRESSION_RELATION_CONFLICT]:(e,t)=>`Expression "${e}.${t}" is declared in both "expressions:" and generated by a relation. User expressions cannot shadow relation-derived expressions. Remove the user declaration or rename the relation.`,[e.CONSTANTS_EXPRESSION_CONFLICT]:(e,t)=>`Expression "${e}.${t}" is declared in both "constants:" and "expressions:" in the same file. Use only one source of truth and migrate the legacy constant into "expressions:".`,[e.COMPONENT_RELATION_CONFLICT]:(e,t)=>`Component "${e}::${t}" is declared in both "components:" and generated by a relation. User components cannot shadow relation-derived components. Remove the user declaration or rename the relation.`,[e.COMPONENT_ALIAS_CONFLICT]:(e,t,n,a,i)=>`Component instance "${e}.${t}.${n}" is produced by both "${a}" and "${i}". Component instance names must be unique after alias expansion. Rename one instance or move the shared properties to one declaration.`,[e.COMPONENT_IMPORT_REF_UNSUPPORTED]:(e,t,n,a,i,o)=>`Component prop "${e}.${t}.${n}.${a}" uses unsupported $importRef "${i}#${o}". Application-spec component values are part of the webhook-included domain and cannot reference frontend modules. Fix: remove $importRef from the spec and attach the component from a frontend-only file in src/components.`,[e.COMPONENT_DATA_REF_UNSUPPORTED]:(e,t,n,a,i,o)=>`Component prop "${e}.${t}.${n}.${a}" combines "$read: ${i}" with the legacy "$data: ${o}" marker. Application-spec components resolve "$read" against entity fields and declared expressions only, so the combined marker never becomes a binding. Fix: remove "$data" and implement "${i}" with createDataSwatchMap('${o.split(".").at(-1)??o}') in the project's custom expressions.`,[e.INVALID_INVARIANT_NAME]:e=>`"${e}" is not a valid invariant name. Invariant names must start with a lowercase letter and contain only word characters (e.g. "nameNotEmpty"). Rename it.`,[e.INVALID_VIOLATION_TYPE_NAME]:e=>`"${e}" is not a valid violation type. Violation types must start with a lowercase letter and contain only letters, digits, underscores, or hyphens (e.g. "name-empty"). Rename it.`,[e.INVARIANT_UNKNOWN_ENTITY_KEY]:(e,t)=>`Invariants are declared for "${e}", which is not an entity type or alias in the model. Known names: ${t.join(", ")}. Check the spelling or add "${e}" to entityTypes.`,[e.INVARIANT_MANUAL_VIOLATIONS_COMPONENT]:e=>`Component "violations" on "${e}" cannot be declared manually because invariant parsing generates it automatically. Remove the manual component declaration.`,[e.INVARIANT_VIOLATIONS_EXPRESSION_CONFLICT]:(e,t)=>`Expression "${e}.$violations" is declared in "${t}:" but invariant parsing generates it automatically for the same entity type. Remove the declaration or rename it.`,[e.INVALID_RELATION_NAME]:e=>`"${e}" is not a valid relation name. Relation names must start with "$" followed by camelCase (e.g. "$top", "$legs"). Rename it.`,[e.RELATION_UNKNOWN_ENTITY_KEY]:(e,t)=>`Relations declared for "${e}" which is not an entity type or alias in the model. Known names: ${t.join(", ")}. Check the spelling or add "${e}" to entityTypes.`,[e.RELATION_UNKNOWN_TARGET]:(e,t,n,a)=>`Relation "${e}.${t}" targets "${n}" which is not an entity type or alias in the model. Known names: ${a.join(", ")}. Check the spelling or add "${n}" to entityTypes.`,[e.RELATION_UNKNOWN_FIELD_DIRECT]:(e,t,n)=>`Relation "${e}.${t}" references field "${n}" which does not exist in the shape of "${e}". Add "${n}" to the "${e}" schema or pick a different field.`,[e.RELATION_UNKNOWN_FIELD_INDIRECT]:(e,t,n,a)=>`Relation "${e}.${t}" references field "${n}" which does not exist in the shape of target "${a}". Add "${n}" to the "${a}" schema or pick a different field.`,[e.RELATION_IMMUTABLE_FIELD]:(e,t,n,a)=>`Relation "${e}.${t}" uses implicit field "${n}" on "${a}" as a relation reference holder. Implicit fields "id" and "type" are immutable and cannot hold relation references. Choose a writable shape field on "${a}".`,[e.RELATION_FIELD_NOT_REFERENCE]:(e,t,n,a)=>`Relation "${e}.${t}" uses field "${n}" of "${a}", which is not a reference field. A relation reads the ids of its related entities from the field, so the field must be a "phx:DomainEntityId" with "references", such a reference or null, or an array of such references. Declare "${n}" that way in the shape of "${a}" or pick a different field.`,[e.RELATION_FIELD_REFERENCES_OTHER_TYPES]:(e,t,n,a,i,o,s)=>{let r=1===s.length&&s[0]===o?"":` (${s.join(", ")})`;return`Relation "${e}.${t}" uses field "${n}" of "${a}", which references ${i.join(", ")}, but the relation relates to "${o}"${r}. The field of a direct relation must reference exactly the entity types of its target, and the field of an indirect relation exactly the entity types the relation is declared on. Make "${a}.${n}" reference "${o}" or pick a different field.`},[e.RELATION_FIELD_CARDINALITY_MISMATCH]:(e,t,n,a,i,o)=>{let s={single:"one reference that is never null",nullableSingle:"one reference or null",array:"an array of references"};return`Relation "${e}.${t}" has cardinality "${a}", which needs a field that holds ${s[o]}, but "${e}.${n}" holds ${s[i]}. A direct relation with cardinality "1-1" reads one reference that is never null, "0-1" one reference or null, and "0-N" or "1-N" an array of references. Change the cardinality or the schema of "${n}".`},[e.RELATION_MISSING_COUNTERPART]:(e,t,n,a,i,o)=>{let s=void 0!==i?` with field "${i}"`:"",r=o?`Set "composedOf: false" on the counterpart because "${e}.${t}" already owns the composition.`:'Set "composedOf: false" on the counterpart for a cross-reference, or "composedOf: true" if the counterpart should own the composition.';return`Relation "${e}.${t}" (${n} → "${a}"${void 0!==i?`, field "${i}"`:""}) has no counterpart on "${a}". Every relation must be declared from both sides — add a "${"allOfType"===n?"allOfType":"direct"===n?"indirect":"direct"}" relation on "${a}" targeting "${e}"${s}. ${r}`},[e.RELATION_COUNTERPART_COMPOSED_OF_MISMATCH]:(e,t,n,a)=>`Relation "${e}.${t}" and its counterpart "${n}.${a}" both use "composedOf: true". A relation pair can have at most one composition owner — set "composedOf: false" on one side.`,[e.RELATION_ENTITY_NOT_IN_COMPOSITION_TREE]:(e,t)=>`Entity "${e}" is not reachable from any root entity type (${t.join(", ")}) via "composedOf: true" relations. Every declared entity must be part of the composition tree, otherwise instances of it can never appear in a valid domain state. Add a relation with "composedOf: true" from a reachable parent, or include "${e}" in the RootEntity alias.`,[e.DUPLICATE_DATA_SCHEMA]:(e,t,n)=>`"${e}" is defined in both "${t}" and "${n}". Each data schema can only be declared in one file. Remove the duplicate.`,[e.ADMIN_DATA_SCHEMA]:(e,t)=>`"${e}" is declared in admin spec "${t}". Data schemas are configurator-only. Move "${e}" to a non-admin spec file.`,[e.SESSION_DATA_REQUIRED_PROPERTIES]:(e,t)=>`sessionData in "${t}" declares required properties (${e.map(e=>`"${e}"`).join(", ")}), but admin and preset sessions do not carry custom session data. Remove these properties from required or set required to an empty array.`,[e.CLERK_SESSION_DATA_INCOMPATIBLE]:e=>`sessionData is not compatible with the built-in Clerk session payload: ${e.join("; ")}. When "useClerk" is true, the SDK's Clerk auth handlers return { id: string, accessToken: string, tags: string[], emailAddress: string, fullName: string | null }, and runtime session parsing rejects any payload the schema does not accept. Declare all five properties with these exact types (the "type" keyword is compared literally, so $ref, anyOf, and oneOf forms are not recognized) and keep them out of "required" so anonymous sessions stay valid. Extra project-defined properties are allowed.`,[e.RESERVED_PUBLISHED_DATA_KEY]:e=>`publishedData property "${e}" is reserved by the admin system. Properties like "presetCategories" and "recipes" are auto-injected. Remove "${e}" from your publishedData properties.`,[e.DUPLICATE_STATE_FIELD]:(e,t,n)=>`"${e}" is defined in both "${t}" and "${n}". Each state field can only be declared in one file. Remove the duplicate.`,[e.INVALID_STATE_KEY]:(e,t)=>`State key "${t}" in "${e}" is not a valid identifier. State keys must start with a letter and contain only letters, digits, or underscores (e.g. "overview", "detailView"). Rename it.`,[e.DUPLICATE_STATE_VALUE]:(e,t)=>`State value "${t}" appears more than once in "${e}". Each value within a state array must be unique. Remove the duplicate.`,[e.DUPLICATE_THEME_FIELD]:(e,t,n)=>`"${e}" is defined in both "${t}" and "${n}". Each theme field can only be declared in one file. Remove the duplicate.`,[e.DUPLICATE_UI_FIELD]:(e,t,n)=>`"${e}" is defined in both "${t}" and "${n}". Each UI field can only be declared in one file. Remove the duplicate.`,[e.CONFLICTING_TRANSFORMERS]:(e,t)=>`Transformers are declared in both "${e}" and "${t}". The "transformers" section can only appear in one spec file. Move all transformers into a single file.`,[e.DUPLICATE_TRANSFORMER]:(e,t)=>`Transformer "${e}" is declared twice in "${t}". Transformer names must be unique within the file. Remove the duplicate entry.`,[e.DUPLICATE_TRANSFORMER_FILE]:(e,t)=>`Transformer files "${e}" and "${t}" resolve to the same transformer name. Transformers are matched by file name, ignoring folders, letter case, and dashes. Rename one of the files so every transformer file name is unique.`,[e.UNMATCHED_TRANSFORMER]:(e,t)=>`Transformer "${e}" has no matching file in "src/transformers/". Every name listed under "transformers:" must correspond to a transformer module. ${t.length>0?`Available transformers: ${t.map(e=>`"${e}"`).join(", ")}. Check the spelling or add "src/transformers/${e}.ts".`:`No transformer files were found in "src/transformers/". Add "src/transformers/${e}.ts" or remove the entry.`}`,[e.DUPLICATE_APP_METADATA_FIELD]:(e,t,n)=>`"${e}" is defined in both "${t}" and "${n}". Each metadata field can only be declared in one file. Remove the duplicate.`,[e.DUPLICATE_INFRA_FIELD]:(e,t,n)=>`"${e}" is defined in both "${t}" and "${n}". Each infrastructure field can only be declared in one file. Remove the duplicate.`,[e.INVALID_APPLICATION_VERSION]:e=>`"${e}" is not a valid applicationVersion. Version must be semver (x.y.z) using three numeric segments (e.g. "1.0.0", "2.3.12"). Update "applicationVersion" to match.`,[e.INVALID_ENV_VAR_KEY]:(e,t)=>`"${t}" is not a valid env.${e} variable name. Env var names must match /^[A-Z_][A-Z0-9_]*$/ — uppercase letters, digits, and underscores; must not start with a digit (e.g. "API_URL", "_PRIVATE_FLAG"). Rename the variable.`,[e.DUPLICATE_ADMIN_PAGES]:(e,t)=>`"$adminPages" is defined in both "${e}" and "${t}". Admin pages can only be declared in one admin spec file. Move all "$adminPages" settings into one admin file.`,[e.ADMIN_PAGES_NAV_STATE_CONFLICT]:e=>`Admin navigation states [${e.join(", ")}] are declared manually and generated from "$adminPages". Remove the manual entries from "navigationStates" in the admin spec or change the "$adminPages" navigationState values.`,[e.ADMIN_PAGE_DATA_ENTRY_CONFLICT]:(e,t)=>`"$adminPages.pages.${e}.connectedDataEntry" references data entry "${t}". This data entry already creates an inferred admin data page. Remove the explicit admin page connection or change the data entry kind.`,[e.CONFLICTING_BUDGETS]:(e,t)=>`"budgets" is declared in both "${e}" and "${t}". The "budgets" section can only appear in one spec file. Move all bundle-size budgets into a single file.`,[e.CONFLICTING_CHUNKS]:(e,t)=>`"chunks" is declared in both "${e}" and "${t}". The "chunks" section can only appear in one spec file. Move all chunk definitions into a single file.`,[e.CONFLICTING_ASSISTANT]:(e,t)=>`"assistant" is declared in both "${e}" and "${t}". The "assistant" manifest can only appear in one spec file. Move the whole "assistant" section into a single file.`,[e.ASSISTANT_UNKNOWN_TYPE]:(e,t)=>`"assistant.${e}.${t}" does not name an entity type or alias of the latest model, so it has nothing to ${({entities:"expose",deletable:"make deletable",writable:"make writable",childRecipes:"add children to",replaceRecipes:"replace"})[e]}. Use an entity type or alias name from "model.latest", or remove the entry.`,[e.ASSISTANT_UNKNOWN_FIELD]:(e,t,n)=>n.startsWith("$")?`"assistant.entities.${t}.${n}" is not an expression declared on "${t}". The assistant schema exposes expressions declared in "expressions", "constants" or "relations" on the entity type or alias itself, and on an entity type also those of its aliases; an expression only inferred from a component "$read" is not declared. Declare "${n}" in "expressions", "constants" or "relations" on "${t}" (for an entity type, an alias containing it also works), or remove the entry.`:`"assistant.${e}.${t}.${n}" is not a stored field of "${t}". The assistant schema ${"entities"===e?"exposes":"writes"} shape properties of the entity type or alias, including fields every alias member has. Use a property from the "${t}" shape, or remove the entry.`,[e.ASSISTANT_UNSUPPORTED_EXPRESSION]:(e,t)=>`"assistant.entities.${e}.${t}" whitelists the "$violations" expression, which the assistant schema does not expose yet: violations get their own typed edge in CON-2869. Remove the entry.`,[e.ASSISTANT_NOT_WRITABLE]:(e,t)=>`"assistant.writable.${e}.${t}" cannot be written: ${t.startsWith("$")?"an expression is computed from the state, not stored":`"${t}" identifies the entity and never changes`}. Only stored shape properties other than "id" and "type" can be writable. Remove the entry${t.startsWith("$")?", or make the stored fields the expression reads writable instead":""}.`,[e.ASSISTANT_UNKNOWN_RECIPE_GROUP]:({section:e,component:t},n,a,i,o)=>`"assistant.${e}.${n}.groups.${a}" does not name a "${t}" component instance on "${i}", so there are no recipes to expose. ${o.length>0?`"${i}" has these "${t}" instances: ${o.join(", ")}.`:`"${i}" has no "${t}" component.`} Use the instance name of a "${t}" component attached to the entity type or to an alias containing it, or remove the entry.`,[e.ASSISTANT_DUPLICATE_RECIPE_GROUP]:({section:e,mutation:t},n,a,i)=>`"${n}" gets the recipe group id "${a}" from both "assistant.${e}.${i.join(`" and "assistant.${e}.`)}", but "${t}" finds a group of an entity by its id. The entries may come from "${n}" itself or from aliases containing it. Give one of them another id with "as".`,[e.ASSISTANT_META_TYPE_NAME_CONFLICT]:(e,t)=>`This entry exposes a recipe group or the options of a field on "${e}", so the assistant schema generates the type "${t}" for them, but the model already has an entity type or alias named "${t}". Rename that entity type or alias, or remove every "assistant.childRecipes" and "assistant.replaceRecipes" group and every "options" of a writable field of "${e}".`,[e.ASSISTANT_UNKNOWN_OPTIONS_COMPONENT]:(e,{componentType:t,instanceName:n},a,i)=>`"assistant.writable.${e}.options" names the "${t}" instance "${n}", which "${a}" does not have, so there are no choices to list. ${i.length>0?`"${a}" has these "${t}" instances: ${i.join(", ")}.`:`"${a}" has no "${t}" component.`} Use the name of a "${t}" instance attached to the entity type or to an alias containing it, correct "componentType", or remove "options".`,[e.ASSISTANT_RESERVED_OPTIONS_EDGE_NAME]:(e,t,n)=>`"assistant.writable.${e}.options" would add the edge "${t}" to the meta type, but that name is taken by a recipe groups edge. Name the edge differently with "as", e.g. "as: ${n}Choices".`,[e.ASSISTANT_DUPLICATE_OPTIONS_EDGE]:(e,t,n)=>`"${e}" gets ${"edgeName"in t?`the options edge "${t.edgeName}"`:`options for the field "${t.field}"`} from both "assistant.writable.${n.join('.options" and "assistant.writable.')}.options", but ${"edgeName"in t?"one edge lists the choices of one field":"a written value is checked against one list of choices"}. The entries may come from "${e}" itself or from aliases containing it. ${"edgeName"in t?'Give one of them another name with "as", or remove':"Remove"} "options" from one of them.`,[e.ASSISTANT_UNKNOWN_ACTION]:(e,t)=>`"assistant.actions.${e}" does not name an action declared under "actions"${t.length>0?`; the declared actions are: ${t.join(", ")}`:"; the spec declares no actions"}. Declare the action in an "actions" block of a spec file and implement it in src/actions/, or remove the entry.`,[e.ASSISTANT_MUTATION_NAME_CONFLICT]:(e,t,n)=>`"assistant.actions.${e}" exposes the mutation "${t}", which ${n}. One Mutation field runs one change. Expose the action under another name with "as", e.g. "as: ${t}Action".`,[e.ASSISTANT_ACTION_RESULT_TYPE_CONFLICT]:(e,t,n)=>`"assistant.actions.${e}" exposes the mutation "${t}", so the assistant schema generates the type "${n}" for its result, but that name is taken by an entity type, alias, generated meta type, built-in type or another action's result. Expose the action under another name with "as", or rename the conflicting type.`,[e.ASSISTANT_RESERVED_FIELD_NAME]:(e,t,n)=>`"assistant.entities.${e}.${t}" is exposed as "${n}", which the assistant schema reserves ("id", "type" and "meta" are reserved on every type). Expose it under another name with "as", e.g. "as: ${t}Value".`,[e.ASSISTANT_FIELD_NAME_CONFLICT]:(e,t,n,a)=>void 0===a?`"${t}" on "${e}" in the assistant schema maps to both "${n.join('" and "')}", but one GraphQL field can read only one stored field or expression. The entries may come from "${e}" itself or from aliases containing it. Rename one of them with "as".`:`"assistant.writable.${a}" makes "${t}" writable on "${e}" without exposing it, so its delta field would be named "${t}", but "assistant.entities" already exposes "${n[0]}" on "${e}" under that name. One name cannot read one stored field or expression and write another. Expose "${t}" in "assistant.entities" under another name with "as", or rename the entry that exposes "${n[0]}".`,[e.ASSISTANT_RESERVED_TYPE_NAME]:(e,t)=>`"${e}" is an entity type or alias name that the assistant GraphQL schema reserves for its own types (${t.join(", ")}), so the schema cannot be generated. Rename the entity type or alias, or remove the "assistant" section.`,[e.ASSISTANT_INVALID_SCHEMA]:e=>`The GraphQL schema generated from the "assistant" manifest is invalid: ${e.join(" ")} This usually means aliases sharing an entity whitelist the same field with different types. Whitelist the field on one alias only, or rename one entry with "as".`,[e.INVALID_CHUNK_KEY]:e=>`"${e}" is not a valid chunk key. Chunk keys must be lowercase kebab-case matching /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/ (e.g. "main", "swatch-data"). Rename the chunk.`,[e.RESERVED_CHUNK_KEY]:()=>'"system" is a reserved chunk key used for presets and recipes. It cannot be user-defined and is auto-injected after validation. Please use a different key name.',[e.CONFLICTING_DATA_ENTRY]:(e,t,n,a)=>`"$data.${e}.${t}" is defined in both "${n}" and "${a}". Each data entry key can only be declared once per section. Move the entry into one file, delete the duplicate, or rename one entry.`,[e.INVALID_DATA_ENTRY_KEY]:(e,t)=>`"$data.${e}.${t}" is not a valid data entry key. Data entry keys must start with a letter, followed by letters, digits, or underscores (/^[A-Za-z]\\w*$/, e.g. "colorOptions" or "ColorOptions"). Rename the entry.`,[e.INVALID_DATA_DEFINITION_FIELD_KEY]:(e,t)=>`"$data.custom.${e}.definition.${t}" is not a valid field key. Definition field keys must match /^\\$?[a-z][\\w.-]*$/ — start with lowercase or "$", then letters, digits, "_", ".", or "-". Rename the field.`,[e.UNKNOWN_DATA_CHUNK]:(e,t,n)=>`"$data.${e}.${t}" references unknown chunk "${n}". The chunk reference must match a key declared under "chunks:". Add the chunk or update the entry chunk.`,[e.INVALID_DATA_VALUE]:(e,t,n,a)=>`"$data.custom.${e}.values[${t}].${n}" has an invalid value. Expected ${a}. Fix the value or update the field definition.`,[e.DEFAULTS_UNKNOWN_ENTITY_KEY]:(e,t)=>`Defaults declared for "${e}" which is not an entity type or alias in the model. Known names: ${t.join(", ")}. Check the spelling or add "${e}" to entityTypes.`,[e.DEFAULTS_UNKNOWN_PROPERTY]:(e,t,n,a)=>{let i=n.length>0?n.join(", "):"(none)",o=a&&a.length>0?` Alias member(s) missing "${t}": ${a.join(", ")}.`:"";return`Default "${e}.${t}" refers to a property that does not exist on the shape of "${e}". Known properties: ${i}.${o} Remove the default or add "${t}" to the shape.`},[e.DEFAULTS_SCHEMA_VIOLATION]:(e,t,n,a,i)=>{let o=i?` (alias member "${i}")`:"",s=n&&"(root)"!==n?` at "${n}"`:"";return`Default "${e}.${t}"${o} does not match the entity shape${s}: ${a}. Defaults must be assignable to their shape property. Fix the value or update the shape.`},[e.DEFAULTS_INCOMPLETE]:(e,t,n)=>{let a=n.some(t=>t!==e)?` (declared under ${n.map(e=>`"${e}"`).join(", ")})`:"";return`Defaults for "${e}"${a} are incomplete: missing ${t.join(", ")}. Defaults for an entity type must state every property of its shape, because the recipe factory validates them as a whole entity when the application loads. Add the missing properties under "${e}" or under an alias that contains it, or remove the defaults for "${e}".`},[e.DEFAULTS_DEPRECATED]:()=>'The "defaults:" section is deprecated. Defaults remain supported for legacy parity, but new specs should model initial values as "$data" entries — see spec/application-specification/parsing/data-chunks.md. Defaults are planned for removal once the $data migration path is documented.',[e.COMPONENT_INVALID_INSTANCE_NAME]:(e,t,n)=>`Component instance name "${n}" in "${e}.${t}" is not a valid identifier. Instance names must start with a letter and contain only letters, digits, or underscores (e.g. "default", "body", "main"). Rename it.`,[e.COMPONENT_MERGE_CONFLICT]:(e,t,n,a,i)=>`Component instance "${e}.${t}.${n}" is defined in both "${a}" and "${i}". Each component instance can only appear in one file. Remove the duplicate.`,[e.COMPONENT_UNKNOWN_ENTITY_KEY]:(e,t)=>`Components declared for "${e}" which is not an entity type or alias in the model. Known names: ${t.join(", ")}. Check the spelling or add "${e}" to entityTypes.`,[e.READ_BINDING_UNKNOWN_FIELD]:(e,t,n,a,i)=>`$read binding "${a}" in "${e}.${t}.${n}" references field "${i}" which does not exist in the shape of "${e}". Add "${i}" to the shape or fix the $read target.`,[e.WRITE_BINDING_UNKNOWN_FIELD]:(e,t,n,a,i)=>`$write/$bind "${a}" in "${e}.${t}.${n}" targets field "${i}" which does not exist in the shape of "${e}". Add "${i}" to the shape or fix the target.`,[e.WRITE_BINDING_IMMUTABLE_FIELD]:(e,t,n,a,i)=>`$write/$bind "${a}" in "${e}.${t}.${n}" targets implicit field "${i}". Implicit fields "id" and "type" are immutable and cannot be changed. Use $read to consume the field or choose a writable shape field.`,[e.WRITE_BINDING_EXPRESSION_TARGET]:(e,t,n,a,i)=>`$write/$bind "${a}" in "${e}.${t}.${n}" targets "${i}" which is an expression. Write targets must be entity shape fields, not expressions. Use $read for expression bindings, $write/$bind for shape fields.`,[e.WRITE_BINDING_DUPLICATE_TARGET]:(e,t,n,a,i,o)=>`Entity field "${a}" is written by both "${i}" and "${o}" in "${e}.${t}.${n}". Each entity field can only be written by one component property. Remove one of the bindings.`,[e.UNKNOWN_SRC_PATH]:e=>`File "${e}" is in an unknown src/ folder. Only known folders (expressions, actions, invariants, components, transformers, handlers, elements, webhooks, locales, admin/*, migrations) or _-prefixed shared folders are allowed. Move the file or rename the folder with a "_" prefix.`,[e.INVALID_SUBDIRECTORY]:(e,t)=>`File "${e}" is nested inside "${t}", but migrations must be flat. Move the migration file directly into "${t}" or prefix the folder with "_".`,[e.MISSING_WEBHOOK_INDEX]:()=>"Files found in src/webhooks/ but src/webhooks/index.ts is missing. The webhook entry point requires a default export from src/webhooks/index.ts. Create the file with a default export of your webhook handler.",[e.MODULE_ANALYSIS_FAILED]:(e,t)=>`Cannot analyze module "${e}": ${t}. Fix the file's syntax so its imports and webhook membership can be determined.`,[e.WEBHOOK_UNSAFE_IMPORT]:(e,t,n,a)=>`Webhook-included file "${e}" is not server-safe: it is included because ${t}, but "${n}" imports client-only "${a}". Fix: remove or isolate the client-only import, or remove the file's webhook membership.`,[e.ENHANCED_JSON_VALUE_EVAL_NOT_ALLOWED]:()=>'"$eval" is not allowed in this position. "$eval" requires "self", which is only available inside expressions and component props — it is not available in static slots such as defaults. Replace the "$eval" with a literal value, "$msg", or move the dynamic logic into an "expressions:" entry.',[e.ENHANCED_JSON_VALUE_MSG_NOT_ALLOWED]:()=>'"$msg" is not allowed in this position. This slot does not accept localized messages (e.g. component props, which are resolved without an i18n context). Replace "$msg" with a plain string, or move the message into a slot that supports i18n such as defaults or expressions.',[e.ENHANCED_JSON_VALUE_EVAL_NOT_STATICALLY_INFERABLE]:e=>`Could not infer a schema from "$eval: ${e}" because the expression is not statically foldable. Add explicit schema keys to the expression entry, or use only literals, constant operators, and deterministic Math members.`,[e.ENHANCED_JSON_VALUE_CODE_REF_NOT_SUPPORTED]:()=>'"$codeRef" with an inline "code" block is no longer supported by the application spec parser. It was never evaluated — the value was carried through as plain data. Use "$eval" instead, for example "$eval: \'4 * 25.4\'". "$eval" folds literals, constant operators, and deterministic Math members at parse time; anything else needs explicit schema keys.'};
@@ -3,3 +3,4 @@ export * from './code-imports.js';
3
3
  export * from './exported-type-declarations.js';
4
4
  export * from './env-reader.js';
5
5
  export * from './file-headers.js';
6
+ export * from './project-module-list.js';
@@ -1 +1 @@
1
- export*from"./application-type-imports.js";export*from"./code-imports.js";export*from"./exported-type-declarations.js";export*from"./env-reader.js";export*from"./file-headers.js";
1
+ export*from"./application-type-imports.js";export*from"./code-imports.js";export*from"./exported-type-declarations.js";export*from"./env-reader.js";export*from"./file-headers.js";export*from"./project-module-list.js";
@@ -0,0 +1,8 @@
1
+ /** The default imports of one convention folder's files, as a generated barrel lists them. */
2
+ export declare const generateProjectModuleImports: (files: readonly string[], prefix: string) => readonly string[];
3
+ /**
4
+ * The origin-tagged module list a generated barrel exports for one convention folder. The barrel only
5
+ * pairs each default export with its project path; the SDK validates and merges the exports, so that an
6
+ * invalid file is reported by name and the built app and the editor's hot reload share one implementation.
7
+ */
8
+ export declare const generateProjectModuleList: (files: readonly string[], prefix: string) => string;
@@ -0,0 +1,3 @@
1
+ export const generateProjectModuleImports=(e,t)=>e.map((e,r)=>`import ${t}${r} from '../${e.replace(/\.tsx?$/,".js")}'`);export const generateProjectModuleList=(e,t)=>{if(0===e.length)return"[]";let r=e.map((e,r)=>` { origin: '${e}', exports: ${t}${r} },`);return`[
2
+ ${r.join("\n")}
3
+ ]`};
@@ -1 +1 @@
1
- import{GeneratedApplicationFile as n}from"../../core/index.js";import{createApplicationTypeImportRegistrar as e}from"./common/index.js";import{generateAdminGlobalBindingBlock as i,generateApplicationSpecAdminCode as o,generateApplicationSpecAdminFrontendCode as t,generateApplicationSpecAdminGlobals as a,generateApplicationSpecConfiguratorCode as r,generateApplicationSpecConfiguratorConfig as s,generateApplicationSpecConfiguratorFrontendCode as d,generateApplicationSpecConfiguratorGlobals as c,generateApplicationSpecDomainFile as g,generateApplicationSpecDomainSpecFile as m,generateApplicationSpecGlobals as p,generateApplicationSpecTypesModule as l,generateConfiguratorGlobalBindingBlock as f,generateImportedStateConstants as B,generatePhxExportsBlock as u,generatePhxGlobalsBlock as x,generateStateConstants as h}from"./templates/index.js";import{splitWebhookMembership as k}from"./webhook-safe-files.js";let y=()=>"";export const globalPhxBindingStrategy={generateApplicationTypesFile:(e,i)=>n("globals.d.ts",p(e,i)),generateDomainBindingBlock:x,generateStateConstants:h,generateConfiguratorBindingBlock:f,configuratorBindingDescription:"Creates the configurator interface and sets phx.frontend — must run before any user code imports.",generateAdminBindingBlock:i,adminBindingDescription:"Creates the admin interface and sets phx.frontend.admin — must run before admin user code imports."};export const modulePhxBindingStrategy={applicationTypeImportSource:"./application-types.js",generateApplicationTypesFile:(e,i)=>n("application-types.ts",l(e,i)),generateDomainBindingBlock:u,generateStateConstants:B,generateConfiguratorBindingBlock:y,configuratorBindingDescription:"Creates and exports the configurator interface for a module-scoped phx binding.",generateAdminBindingBlock:y,adminBindingDescription:"Creates and exports the admin interface for a module-scoped phx binding."};let C=n=>n.map(n=>n.file.name);export const generateDomainRuntimeFiles=(i,p)=>{let{applicationSpec:l,categorizedFiles:f,phxDefinitions:B,includeDefaultEnvs:u}=i,x=e(p.applicationTypeImportSource),h=C(f.expressions),y=C(f.actions),b=C(f.handlers),D=C(f.elements),S=C(f.transformers),A=C(f.invariants),F=C(f.adminInvariants),j=C(f.adminExpressions),I=C(f.adminElements),T=k(f.components),w=C(T.webhookIncluded),v=C(T.frontendOnly),E=k(f.adminComponents),O=C(E.webhookIncluded),P=C(E.frontendOnly);return[n("domain-spec.ts",m(l,{generateBindingBlock:p.generateDomainBindingBlock,generateStateConstants:p.generateStateConstants,registerApplicationTypeImports:x})),n("configurator-globals.ts",c(p.generateConfiguratorBindingBlock,p.configuratorBindingDescription)),n("configurator-domain-code.ts",r({expressionFiles:h,actionFiles:y,invariantFiles:A,componentFiles:w},x)),n("configurator-frontend-code.ts",d({transformerFiles:S,handlerFiles:b,elementFiles:D,componentFiles:v},x)),n("admin-domain-code.ts",o({adminExpressionFiles:j,adminInvariantFiles:F,adminComponentFiles:O},x)),n("admin-frontend-code.ts",t({adminElementFiles:I,adminComponentFiles:P},x)),n("domain.ts",g(l)),n("configurator-config.ts",s(l,{includeDefaultEnvs:u})),p.generateApplicationTypesFile(l,B),n("admin-globals.ts",a(p.generateAdminBindingBlock,p.adminBindingDescription))]};
1
+ import{GeneratedApplicationFile as n}from"../../core/index.js";import{createApplicationTypeImportRegistrar as e}from"./common/index.js";import{generateAdminGlobalBindingBlock as i,generateApplicationSpecAdminCode as o,generateApplicationSpecAdminFrontendCode as t,generateApplicationSpecAdminGlobals as a,generateApplicationSpecConfiguratorCode as r,generateApplicationSpecConfiguratorConfig as s,generateApplicationSpecConfiguratorFrontendCode as d,generateApplicationSpecConfiguratorGlobals as c,generateApplicationSpecDomainFile as g,generateApplicationSpecDomainSpecFile as m,generateApplicationSpecGlobals as p,generateApplicationSpecTypesModule as l,generateConfiguratorGlobalBindingBlock as f,generateImportedStateConstants as B,generatePhxExportsBlock as u,generatePhxGlobalsBlock as x,generateStateConstants as h}from"./templates/index.js";import{splitWebhookMembership as k}from"./webhook-safe-files.js";let y=()=>"";export const globalPhxBindingStrategy={generateApplicationTypesFile:(e,i)=>n("globals.d.ts",p(e,i)),generateDomainBindingBlock:x,generateStateConstants:h,generateConfiguratorBindingBlock:f,configuratorBindingDescription:"Creates the configurator interface and sets phx.frontend — must run before any user code imports.",generateAdminBindingBlock:i,adminBindingDescription:"Creates the admin interface and sets phx.frontend.admin — must run before admin user code imports."};export const modulePhxBindingStrategy={applicationTypeImportSource:"./application-types.js",generateApplicationTypesFile:(e,i)=>n("application-types.ts",l(e,i)),generateDomainBindingBlock:u,generateStateConstants:B,generateConfiguratorBindingBlock:y,configuratorBindingDescription:"Creates and exports the configurator interface for a module-scoped phx binding.",generateAdminBindingBlock:y,adminBindingDescription:"Creates and exports the admin interface for a module-scoped phx binding."};let C=n=>n.map(n=>n.file.name);export const generateDomainRuntimeFiles=(i,p)=>{let{applicationSpec:l,categorizedFiles:f,phxDefinitions:B,includeDefaultEnvs:u}=i,x=e(p.applicationTypeImportSource),h=C(f.expressions),y=C(f.actions),b=C(f.handlers),D=C(f.elements),S=C(f.transformers),A=C(f.invariants),F=C(f.adminInvariants),j=C(f.adminExpressions),I=C(f.adminElements),T=k(f.components),w=C(T.webhookIncluded),v=C(T.frontendOnly),E=k(f.adminComponents),O=C(E.webhookIncluded),P=C(E.frontendOnly);return[n("domain-spec.ts",m(l,{generateBindingBlock:p.generateDomainBindingBlock,generateStateConstants:p.generateStateConstants,registerApplicationTypeImports:x})),n("configurator-globals.ts",c(p.generateConfiguratorBindingBlock,p.configuratorBindingDescription)),n("configurator-domain-code.ts",r({expressionFiles:h,actionFiles:y,invariantFiles:A,componentFiles:w})),n("configurator-frontend-code.ts",d({transformerFiles:S,handlerFiles:b,elementFiles:D,componentFiles:v})),n("admin-domain-code.ts",o({adminExpressionFiles:j,adminInvariantFiles:F,adminComponentFiles:O})),n("admin-frontend-code.ts",t({adminElementFiles:I,adminComponentFiles:P})),n("domain.ts",g(l)),n("configurator-config.ts",s(l,{includeDefaultEnvs:u})),p.generateApplicationTypesFile(l,B),n("admin-globals.ts",a(p.generateAdminBindingBlock,p.adminBindingDescription))]};
@@ -2,7 +2,7 @@
2
2
  * Generates the files that configure the generated project itself.
3
3
  *
4
4
  * Membership criterion: a file belongs to this group when it describes the project rather than the
5
- * application — dependency and toolchain configuration, formatting rules, agent instructions, and
5
+ * application — dependency and toolchain configuration, formatting rules, agent skills, and
6
6
  * the initial content a fresh project starts with. Nothing here is imported by the running
7
7
  * configurator or served by the deployed application.
8
8
  *
@@ -29,11 +29,18 @@ export declare const agentSkillRoots: readonly ['.claude/skills', '.agents/skill
29
29
  * project metadata. The categorized files carry the project's existing `package.json` and `.gitignore`
30
30
  * so those templates can merge rather than clobber, and the legacy cursor rules and `CLAUDE.md` so the
31
31
  * SDK block can be stripped from them.
32
+ *
33
+ * `projectInGitRepository` says whether the project folder is inside a git work tree. `.gitignore` is
34
+ * generated only then: a project that is not under git has no use for the file, and one it already
35
+ * has is left as it is. The caller finds this out, because generation reads no file system. The
36
+ * option defaults to `true`: these options are public through the `application-spec` entry, and a
37
+ * caller that does not pass it keeps getting `.gitignore`, as every caller did before the option existed.
32
38
  */
33
39
  export interface GenerateProjectScaffoldingOptions {
34
40
  readonly applicationSpec: ApplicationSpec;
35
41
  readonly categorizedFiles: CategorizedFiles;
36
42
  readonly sdkVersion: string;
43
+ readonly projectInGitRepository?: boolean;
37
44
  readonly cliUseWorkspace?: boolean;
38
45
  readonly name?: string;
39
46
  readonly description?: string;
@@ -1,6 +1,6 @@
1
- import{GeneratedApplicationFile as e}from"../../core/index.js";import{followsCanaryBuilds as t,generateAgentsMd as n,generateApplicationSpecEnvCi as r,generateApplicationSpecEnvExample as o,generateApplicationSpecEslintConfig as i,generateApplicationSpecFavicon as a,generateApplicationSpecGitignore as s,generateApplicationSpecNvmrc as c,generateApplicationSpecPackageJson as l,generateApplicationSpecPrettierConfig as p,generateApplicationSpecPrettierIgnore as m,generateApplicationSpecPrivateAssetsReadme as f,generateApplicationSpecPublicAssetsReadme as d,generateApplicationSpecReadme as g,generateApplicationSpecRobotsTxt as u,generateApplicationSpecTsconfig as x,generateApplicationSpecWebhookImplementation as h,generateLinguiRcFile as v,generatePhoenixCliSkill as j,generatePhoenixCreateConfiguratorSkill as k,generatePhoenixCreateConfiguratorSkillReferences as b,generatePhoenixFeedbackSkill as E,generatePhoenixReviewSkill as F,generatePhoenixSkill as M,stripSdkMarkerContent as P}from"./templates/index.js";export const agentSkillRoots=[".claude/skills",".agents/skills"];let w=[{path:"CLAUDE.md",generatedPrefix:""},{path:".cursor/rules/phoenix.mdc",generatedPrefix:`---
1
+ import{GeneratedApplicationFile as e}from"../../core/index.js";import{followsCanaryBuilds as t,generateApplicationSpecEslintConfig as n,generateApplicationSpecFavicon as r,generateApplicationSpecGitignore as o,generateApplicationSpecNvmrc as i,generateApplicationSpecPackageJson as a,generateApplicationSpecPrettierConfig as c,generateApplicationSpecRobotsTxt as s,generateApplicationSpecTsconfig as l,generateApplicationSpecWebhookImplementation as p,generateLinguiRcFile as f,generatePhoenixCliSkill as m,generatePhoenixCreateConfiguratorSkill as d,generatePhoenixCreateConfiguratorSkillReferences as g,generatePhoenixFeedbackSkill as u,generatePhoenixReviewSkill as x,generatePhoenixSkill as h,generatePhoenixVariantsSkill as j,stripSdkMarkerContent as k}from"./templates/index.js";export const agentSkillRoots=[".claude/skills",".agents/skills"];let v=[{path:"CLAUDE.md",generatedPrefix:""},{path:".cursor/rules/phoenix.mdc",generatedPrefix:`---
2
2
  description: Phoenix SDK project rules
3
3
  globs:
4
4
  alwaysApply: true
5
5
  ---
6
- `}],A=[".claude/commands/review.md",".cursor/commands/review.md"],S=(e,t)=>e.projectFiles.find(e=>e.file.name===t)?.file.content;export const generateProjectScaffolding=C=>{let D,{applicationSpec:L,categorizedFiles:R,sdkVersion:$,cliUseWorkspace:y,name:K,description:G}=C,I=S(R,"package.json"),N=S(R,".gitignore"),T=void 0!==y?y:L.appMetadata.workspace,U=(t=>{let n=[],r=[...A];for(let{path:o,generatedPrefix:i}of w){let a=S(t,o);if(void 0===a)continue;let s=P(a,i);void 0===s?r.push(o):s!==a&&n.push(e(o,s,{format:!1}))}return{strippedFiles:n,removedFiles:r}})(R);return{generatedProjectFiles:[e("package.json",l({sdkVersion:$,useWorkspace:T,useClerk:L.appMetadata.useClerk??!1,name:K,description:G,existingContent:I})),e(".nvmrc",c(),{format:!1}),e(".linguirc",v(L.configurator.ui.availableLocales),{format:!1}),e("tsconfig.json",x()),e("eslint.config.js",i()),e(".gitignore",s(N)),...(D=[{name:"phoenix",content:M({checkLatestCanary:t({useWorkspace:T,sdkVersion:$})}),references:[]},{name:"phoenix-cli",content:j(),references:[]},{name:"phoenix-create-configurator",content:k(),references:b()},{name:"phoenix-feedback",content:E(),references:[]},{name:"phoenix-review",content:F(),references:[]}],agentSkillRoots.flatMap(t=>D.flatMap(n=>[e(`${t}/${n.name}/SKILL.md`,n.content),...n.references.map(r=>e(`${t}/${n.name}/${r.path}`,r.content))]))),...U.strippedFiles],initialProjectFiles:[e("README.md",g(K)),e("AGENTS.md",n()),e(".env.ci",r()),e(".env.example",o()),e("public/favicon.ico",a(),{binary:!0}),e("public/robots.txt",u(),{format:!1}),e("assets/public/README.md",d()),e("assets/private/README.md",f()),e("src/webhooks/index.ts",h())],prettierFiles:[e("prettier.config.js",p()),e(".prettierignore",m(),{format:!1})],removedProjectFiles:U.removedFiles}};
6
+ `}],b=[".claude/commands/review.md",".cursor/commands/review.md"],F=(e,t)=>e.projectFiles.find(e=>e.file.name===t)?.file.content;export const generateProjectScaffolding=P=>{let w,{applicationSpec:C,categorizedFiles:L,sdkVersion:S,projectInGitRepository:$=!0,cliUseWorkspace:y,name:M,description:A}=P,D=F(L,"package.json"),K=F(L,".gitignore"),R=void 0!==y?y:C.appMetadata.workspace,E=(t=>{let n=[],r=[...b];for(let{path:o,generatedPrefix:i}of v){let a=F(t,o);if(void 0===a)continue;let c=k(a,i);void 0===c?r.push(o):c!==a&&n.push(e(o,c,{format:!1}))}return{strippedFiles:n,removedFiles:r}})(L);return{generatedProjectFiles:[e("package.json",a({sdkVersion:S,useWorkspace:R,useClerk:C.appMetadata.useClerk??!1,name:M,description:A,existingContent:D})),e(".nvmrc",i(),{format:!1}),e(".linguirc",f(C.configurator.ui.availableLocales),{format:!1}),e("tsconfig.json",l()),e("eslint.config.js",n()),...$?[e(".gitignore",o(K))]:[],...(w=[{name:"phoenix",content:h({checkLatestCanary:t({useWorkspace:R,sdkVersion:S})}),references:[]},{name:"phoenix-cli",content:m(),references:[]},{name:"phoenix-create-configurator",content:d(),references:g()},{name:"phoenix-feedback",content:u(),references:[]},{name:"phoenix-review",content:x(),references:[]},{name:"phoenix-variants",content:j(),references:[]}],agentSkillRoots.flatMap(t=>w.flatMap(n=>[e(`${t}/${n.name}/SKILL.md`,n.content),...n.references.map(r=>e(`${t}/${n.name}/${r.path}`,r.content))]))),...E.strippedFiles],initialProjectFiles:[e("public/favicon.ico",r(),{binary:!0}),e("public/robots.txt",s(),{format:!1}),e("src/webhooks/index.ts",p())],prettierFiles:[e("prettier.config.js",c())],removedProjectFiles:E.removedFiles}};
@@ -1,8 +1,7 @@
1
- import { type ApplicationTypeImportRegistrar } from '../common/index.js';
2
1
  interface GenerateAdminCodeOptions {
3
2
  readonly adminExpressionFiles: readonly string[];
4
3
  readonly adminInvariantFiles: readonly string[];
5
4
  readonly adminComponentFiles: readonly string[];
6
5
  }
7
- export declare const generateApplicationSpecAdminCode: (options: GenerateAdminCodeOptions, registerApplicationTypeImports?: ApplicationTypeImportRegistrar) => string;
6
+ export declare const generateApplicationSpecAdminCode: (options: GenerateAdminCodeOptions) => string;
8
7
  export {};
@@ -1,17 +1,9 @@
1
- import{autoHeader as n}from"../common/file-headers.js";import{CodeImports as t,skipApplicationTypeImports as e}from"../common/index.js";let s=(n,t)=>n.map((n,e)=>{let s=`../${n.replace(/\.tsx?$/,".js")}`;return`import ${t}${e} from '${s}'`}),i=(n,t="\n")=>n.length>0?"\n"+n.join(t)+"\n":"";export const generateApplicationSpecAdminCode=(o,a=e)=>{let{adminExpressionFiles:r,adminInvariantFiles:m,adminComponentFiles:d}=o,p=new t;for(let n of["AliasedExpressions","AliasedInvariants","DomainComponentOptic","SystemComponentTypeConstraint"])p.addTypeImport("@salsita-ai/sdk/domain",n);a(p,["Admin","FrontendData","PublishedData","SessionData"]);let c=[...s(r,"adminExpressions"),...s(m,"adminInvariants"),...s(d,"adminComponents")],A=r.map((n,t)=>`for (const [type, exprs] of Object.entries(adminExpressions${t})) {
2
- mergedExpressions[type] = { ...mergedExpressions[type], ...exprs }
3
- }`),y=m.map((n,t)=>`for (const [type, invs] of Object.entries(adminInvariants${t})) {
4
- mergedInvariants[type] = [...(mergedInvariants[type] ?? []), ...invs]
5
- }`),l=d.map((n,t)=>`adminComponents${t}`);return`${n("admin-domain-code.ts","Barrel file for user-authored admin domain code — expressions, invariants and components.")}
6
- ${p.toString()}
7
- ${i(c)}
8
- const mergedExpressions: Record<string, Record<string, unknown>> = {}
9
- ${i(A,"\n\n")}
10
- export const customAdminExpressions = mergedExpressions as AliasedExpressions<Admin.AnyDomainEntity, Admin.RootEntity, PublishedData, SessionData, FrontendData, Admin.Aliases>
1
+ import{autoHeader as n}from"../common/file-headers.js";import{CodeImports as o,generateProjectModuleImports as e,generateProjectModuleList as t}from"../common/index.js";export const generateApplicationSpecAdminCode=i=>{let{adminExpressionFiles:s,adminInvariantFiles:r,adminComponentFiles:a}=i,d=new o;d.addTypeImport("@salsita-ai/sdk/domain","ProjectModule");let m=[...e(s,"adminExpressions"),...e(r,"adminInvariants"),...e(a,"adminComponents")];return`${n("admin-domain-code.ts","Barrel file for user-authored admin domain code — expressions, invariants and components.")}
2
+ ${d.toString()}
3
+ ${m.length>0?"\n"+m.join("\n")+"\n":""}
4
+ export const customAdminExpressions: readonly ProjectModule[] = ${t(s,"adminExpressions")}
11
5
 
12
- const mergedInvariants: Record<string, ReadonlyArray<unknown>> = {}
13
- ${i(y,"\n\n")}
14
- export const customAdminInvariants = mergedInvariants as AliasedInvariants<Admin.AnyDomainEntity, Admin.RootEntity, PublishedData, SessionData, FrontendData, Admin.Aliases, string>
6
+ export const customAdminInvariants: readonly ProjectModule[] = ${t(r,"adminInvariants")}
15
7
 
16
- export const customAdminComponentOptics: ReadonlyArray<DomainComponentOptic<Admin.AnyDomainEntity, Admin.RootEntity, PublishedData, SessionData, FrontendData, Admin.AnyDomainEntity, SystemComponentTypeConstraint>> = [${l.join(", ")}].flat()
8
+ export const customAdminComponentOptics: readonly ProjectModule[] = ${t(a,"adminComponents")}
17
9
  `};
@@ -1,7 +1,6 @@
1
- import { type ApplicationTypeImportRegistrar } from '../common/index.js';
2
1
  interface GenerateAdminFrontendCodeOptions {
3
2
  readonly adminElementFiles: readonly string[];
4
3
  readonly adminComponentFiles: readonly string[];
5
4
  }
6
- export declare const generateApplicationSpecAdminFrontendCode: (options: GenerateAdminFrontendCodeOptions, registerApplicationTypeImports?: ApplicationTypeImportRegistrar) => string;
5
+ export declare const generateApplicationSpecAdminFrontendCode: (options: GenerateAdminFrontendCodeOptions) => string;
7
6
  export {};
@@ -1,9 +1,9 @@
1
- import{autoHeader as n}from"../common/file-headers.js";import{CodeImports as t,skipApplicationTypeImports as e}from"../common/index.js";let o=(n,t)=>n.map((n,e)=>{let o=`../${n.replace(/\.tsx?$/,".js")}`;return`import ${t}${e} from '${o}'`});export const generateApplicationSpecAdminFrontendCode=(m,i=e)=>{let{adminElementFiles:a,adminComponentFiles:r}=m,d=new t;for(let n of["DomainComponentOptic","ElementRegistration","SystemComponentTypeConstraint"])d.addTypeImport("@salsita-ai/sdk/domain",n);i(d,["Admin","FrontendData","PublishedData","SessionData"]);let s=[...o(a,"adminElements"),...o(r,"frontendAdminComponents")],p=a.map((n,t)=>`adminElements${t}`),l=r.map((n,t)=>`frontendAdminComponents${t}`);return`${n("admin-frontend-code.ts","Barrel file for user-authored admin frontend code — elements and frontend-only components. Needs phx.frontend.admin.")}
2
- ${d.toString()}
1
+ import{autoHeader as n}from"../common/file-headers.js";import{CodeImports as e,generateProjectModuleImports as o,generateProjectModuleList as t}from"../common/index.js";export const generateApplicationSpecAdminFrontendCode=d=>{let{adminElementFiles:m,adminComponentFiles:r}=d,i=new e;i.addTypeImport("@salsita-ai/sdk/domain","ProjectModule");let s=[...o(m,"adminElements"),...o(r,"frontendAdminComponents")];return`${n("admin-frontend-code.ts","Barrel file for user-authored admin frontend code — elements and frontend-only components. Needs phx.frontend.admin.")}
2
+ ${i.toString()}
3
3
 
4
4
  import './admin-globals.js'
5
5
  ${s.length>0?"\n"+s.join("\n")+"\n":""}
6
- export const customAdminElements: readonly ElementRegistration[] = [${p.join(", ")}].flat()
6
+ export const customAdminElements: readonly ProjectModule[] = ${t(m,"adminElements")}
7
7
 
8
- export const customFrontendAdminComponentOptics: ReadonlyArray<DomainComponentOptic<Admin.AnyDomainEntity, Admin.RootEntity, PublishedData, SessionData, FrontendData, Admin.AnyDomainEntity, SystemComponentTypeConstraint>> = [${l.join(", ")}].flat()
8
+ export const customFrontendAdminComponentOptics: readonly ProjectModule[] = ${t(r,"frontendAdminComponents")}
9
9
  `};
@@ -1,9 +1,8 @@
1
- import { type ApplicationTypeImportRegistrar } from '../common/index.js';
2
1
  interface GenerateConfiguratorCodeOptions {
3
2
  readonly expressionFiles: readonly string[];
4
3
  readonly actionFiles: readonly string[];
5
4
  readonly invariantFiles: readonly string[];
6
5
  readonly componentFiles: readonly string[];
7
6
  }
8
- export declare const generateApplicationSpecConfiguratorCode: (options: GenerateConfiguratorCodeOptions, registerApplicationTypeImports?: ApplicationTypeImportRegistrar) => string;
7
+ export declare const generateApplicationSpecConfiguratorCode: (options: GenerateConfiguratorCodeOptions) => string;
9
8
  export {};
@@ -1,20 +1,11 @@
1
- import{autoHeader as t}from"../common/file-headers.js";import{CodeImports as n,skipApplicationTypeImports as e}from"../common/index.js";let o=(t,n)=>t.map((t,e)=>{let o=`../${t.replace(/\.tsx?$/,".js")}`;return`import ${n}${e} from '${o}'`}),a=(t,n="\n")=>t.length>0?"\n"+t.join(n)+"\n":"";export const generateApplicationSpecConfiguratorCode=(i,s=e)=>{let{expressionFiles:r,actionFiles:p,invariantFiles:m,componentFiles:d}=i,c=new n;for(let t of["ActionImplementations","AliasedExpressions","AliasedInvariants","DomainComponentOptic","SystemComponentTypeConstraint"])c.addTypeImport("@salsita-ai/sdk/domain",t);s(c,["$Map","ActionTypes","Aliases","AnyDomainEntity","ExportState","FrontendData","NavigationState","PublishedData","RootEntity","SessionData","ToolState","ViewState"]);let l=[...o(r,"expressions"),...o(p,"actions"),...o(m,"invariants"),...o(d,"components")],y=p.map((t,n)=>`...actions${n}`),D=r.map((t,n)=>`for (const [type, exprs] of Object.entries(expressions${n})) {
2
- mergedExpressions[type] = { ...mergedExpressions[type], ...exprs }
3
- }`),x=m.map((t,n)=>`for (const [type, invs] of Object.entries(invariants${n})) {
4
- mergedInvariants[type] = [...(mergedInvariants[type] ?? []), ...invs]
5
- }`),A=d.map((t,n)=>`components${n}`);return`${t("configurator-domain-code.ts","Barrel file for user-authored domain code — expressions, actions, invariants and components. Needs only phx.domain.")}
6
- ${c.toString()}
7
- ${a(l)}
8
- const mergedExpressions: Record<string, Record<string, unknown>> = {}
9
- ${a(D,"\n\n")}
10
- export const customExpressions = mergedExpressions as AliasedExpressions<AnyDomainEntity, RootEntity, PublishedData, SessionData, FrontendData, Aliases>
1
+ import{autoHeader as o}from"../common/file-headers.js";import{CodeImports as n,generateProjectModuleImports as e,generateProjectModuleList as t}from"../common/index.js";export const generateApplicationSpecConfiguratorCode=s=>{let{expressionFiles:r,actionFiles:i,invariantFiles:a,componentFiles:c}=s,d=new n;d.addTypeImport("@salsita-ai/sdk/domain","ProjectModule");let p=[...e(r,"expressions"),...e(i,"actions"),...e(a,"invariants"),...e(c,"components")];return`${o("configurator-domain-code.ts","Barrel file for user-authored domain code — expressions, actions, invariants and components. Needs only phx.domain.")}
2
+ ${d.toString()}
3
+ ${p.length>0?"\n"+p.join("\n")+"\n":""}
4
+ export const customExpressions: readonly ProjectModule[] = ${t(r,"expressions")}
11
5
 
12
- // A declared action without an implementation fails here; an implementation of an undeclared action fails in its own file.
13
- export const customActions: ActionImplementations<AnyDomainEntity, RootEntity, $Map, PublishedData, SessionData, FrontendData, NavigationState, ViewState, ToolState, ExportState, ActionTypes> = { ${y.join(", ")} }
6
+ export const customActions: readonly ProjectModule[] = ${t(i,"actions")}
14
7
 
15
- const mergedInvariants: Record<string, ReadonlyArray<unknown>> = {}
16
- ${a(x,"\n\n")}
17
- export const customInvariants = mergedInvariants as AliasedInvariants<AnyDomainEntity, RootEntity, PublishedData, SessionData, FrontendData, Aliases, string>
8
+ export const customInvariants: readonly ProjectModule[] = ${t(a,"invariants")}
18
9
 
19
- export const customComponentOptics: ReadonlyArray<DomainComponentOptic<AnyDomainEntity, RootEntity, PublishedData, SessionData, FrontendData, AnyDomainEntity, SystemComponentTypeConstraint>> = [${A.join(", ")}].flat()
10
+ export const customComponentOptics: readonly ProjectModule[] = ${t(c,"components")}
20
11
  `};
@@ -1,9 +1,8 @@
1
- import { type ApplicationTypeImportRegistrar } from '../common/index.js';
2
1
  interface GenerateConfiguratorFrontendCodeOptions {
3
2
  readonly transformerFiles: readonly string[];
4
3
  readonly handlerFiles: readonly string[];
5
4
  readonly elementFiles: readonly string[];
6
5
  readonly componentFiles: readonly string[];
7
6
  }
8
- export declare const generateApplicationSpecConfiguratorFrontendCode: (options: GenerateConfiguratorFrontendCodeOptions, registerApplicationTypeImports?: ApplicationTypeImportRegistrar) => string;
7
+ export declare const generateApplicationSpecConfiguratorFrontendCode: (options: GenerateConfiguratorFrontendCodeOptions) => string;
9
8
  export {};
@@ -1,15 +1,13 @@
1
- import{autoHeader as t}from"../common/file-headers.js";import{CodeImports as n,skipApplicationTypeImports as o}from"../common/index.js";let e=(t,n)=>t.map((t,o)=>{let e=`../${t.replace(/\.tsx?$/,".js")}`;return`import ${n}${o} from '${e}'`});export const generateApplicationSpecConfiguratorFrontendCode=(r,a=o)=>{let{transformerFiles:s,handlerFiles:i,elementFiles:m,componentFiles:p}=r,l=new n;for(let t of["DomainComponentOptic","ElementRegistration","HandlerRegistration","ImportedTransformer","SystemComponentTypeConstraint"])l.addTypeImport("@salsita-ai/sdk/domain",t);a(l,["$Map","AnyDomainEntity","ExportState","FrontendData","NavigationState","PublishedData","RootEntity","SessionData","ToolState","ViewState"]);let d=[...e(s,"transformers"),...e(i,"handlers"),...e(m,"elements"),...e(p,"frontendComponents")],f=s.map((t,n)=>{let o=t.replace(/^.*\//,"").replace(/\.tsx?$/,"");return` { name: '${o}', transformer: transformers${n} }`}),y=i.map((t,n)=>`handlers${n}`),c=m.map((t,n)=>`elements${n}`),$=p.map((t,n)=>`frontendComponents${n}`);return`${t("configurator-frontend-code.ts","Barrel file for user-authored frontend code — transformers, handlers, elements and frontend-only components. Needs phx.frontend.")}
2
- ${l.toString()}
1
+ import{autoHeader as o}from"../common/file-headers.js";import{CodeImports as e,generateProjectModuleImports as n,generateProjectModuleList as r}from"../common/index.js";export const generateApplicationSpecConfiguratorFrontendCode=t=>{let{transformerFiles:s,handlerFiles:d,elementFiles:l,componentFiles:a}=t,m=new e;m.addTypeImport("@salsita-ai/sdk/domain","ProjectModule");let c=[...n(s,"transformers"),...n(d,"handlers"),...n(l,"elements"),...n(a,"frontendComponents")];return`${o("configurator-frontend-code.ts","Barrel file for user-authored frontend code — transformers, handlers, elements and frontend-only components. Needs phx.frontend.")}
2
+ ${m.toString()}
3
3
 
4
4
  import './configurator-globals.js'
5
- ${d.length>0?"\n"+d.join("\n")+"\n":""}
6
- export const customTransformers: ReadonlyArray<ImportedTransformer<AnyDomainEntity, RootEntity, $Map, NavigationState, ViewState, ToolState, ExportState>> = [
7
- ${f.join(",\n")}
8
- ]
5
+ ${c.length>0?"\n"+c.join("\n")+"\n":""}
6
+ export const customTransformers: readonly ProjectModule[] = ${r(s,"transformers")}
9
7
 
10
- export const customHandlers: ReadonlyArray<HandlerRegistration<any, any>> = [${y.join(", ")}].flat()
8
+ export const customHandlers: readonly ProjectModule[] = ${r(d,"handlers")}
11
9
 
12
- export const customElements: readonly ElementRegistration[] = [${c.join(", ")}].flat()
10
+ export const customElements: readonly ProjectModule[] = ${r(l,"elements")}
13
11
 
14
- export const customFrontendComponentOptics: ReadonlyArray<DomainComponentOptic<AnyDomainEntity, RootEntity, PublishedData, SessionData, FrontendData, AnyDomainEntity, SystemComponentTypeConstraint>> = [${$.join(", ")}].flat()
12
+ export const customFrontendComponentOptics: readonly ProjectModule[] = ${r(a,"frontendComponents")}
15
13
  `};