@salsita-ai/sdk 0.50.0-develop.ed1806b910 → 0.50.0-develop.eeaf6c4605

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 (938) hide show
  1. package/README.md +8 -2
  2. package/dist/admin/AdminShell.js +1 -1
  3. package/dist/admin/legacy-admin/Application.js +1 -1
  4. package/dist/application-spec/caching/index.d.ts +6 -1
  5. package/dist/application-spec/caching/index.js +1 -1
  6. package/dist/application-spec/core/enhanced-json-value.d.ts +2 -31
  7. package/dist/application-spec/core/enhanced-json-value.js +1 -1
  8. package/dist/application-spec/core/index.d.ts +1 -3
  9. package/dist/application-spec/core/index.js +1 -1
  10. package/dist/application-spec/core/json-schema.d.ts +2 -52
  11. package/dist/application-spec/core/markers/index.d.ts +1 -1
  12. package/dist/application-spec/core/markers/index.js +1 -1
  13. package/dist/application-spec/core/markers/msg-marker.d.ts +2 -28
  14. package/dist/application-spec/core/markers/msg-marker.js +1 -1
  15. package/dist/application-spec/core/markers/raw-eval-write-marker.d.ts +1 -1
  16. package/dist/application-spec/core/markers/raw-eval-write-marker.js +1 -1
  17. package/dist/application-spec/core/markers/raw-read-write-marker.js +1 -1
  18. package/dist/application-spec/errors/diagnostic-codes.d.ts +8 -1
  19. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  20. package/dist/application-spec/errors/diagnostic-messages.d.ts +15 -1
  21. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  22. package/dist/application-spec/generate-application/code/domain-runtime-files.d.ts +0 -19
  23. package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
  24. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  25. package/dist/application-spec/generate-application/code/templates/gitignore.js +2 -1
  26. package/dist/application-spec/generate-application/code/templates/index.d.ts +2 -6
  27. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  28. package/dist/application-spec/generate-application/code/templates/lingui-rc.js +5 -4
  29. package/dist/application-spec/generate-application/code/templates/skills/core/cli.d.ts +2 -0
  30. package/dist/application-spec/generate-application/code/templates/skills/core/cli.js +1 -0
  31. package/dist/application-spec/generate-application/code/templates/skills/core/index.d.ts +3 -0
  32. package/dist/application-spec/generate-application/code/templates/skills/core/index.js +1 -0
  33. package/dist/application-spec/generate-application/code/templates/skills/core/sdk.d.ts +2 -0
  34. package/dist/application-spec/generate-application/code/templates/skills/core/sdk.js +150 -0
  35. package/dist/application-spec/generate-application/code/templates/skills/core/workflow.d.ts +2 -0
  36. package/dist/application-spec/generate-application/code/templates/skills/core/workflow.js +40 -0
  37. package/dist/application-spec/generate-application/code/templates/skills/features/custom-layout.d.ts +2 -0
  38. package/dist/application-spec/generate-application/code/templates/skills/features/custom-layout.js +1 -0
  39. package/dist/application-spec/generate-application/code/templates/skills/features/features.d.ts +3 -0
  40. package/dist/application-spec/generate-application/code/templates/skills/features/features.js +1 -0
  41. package/dist/application-spec/generate-application/code/templates/skills/features/index.d.ts +1 -0
  42. package/dist/application-spec/generate-application/code/templates/skills/features/index.js +1 -0
  43. package/dist/application-spec/generate-application/code/templates/skills/features/inspection.d.ts +2 -0
  44. package/dist/application-spec/generate-application/code/templates/skills/features/inspection.js +1 -0
  45. package/dist/application-spec/generate-application/code/templates/skills/features/variants.d.ts +2 -0
  46. package/dist/application-spec/generate-application/code/templates/skills/features/variants.js +1 -0
  47. package/dist/application-spec/generate-application/code/templates/skills/features/webhooks.d.ts +2 -0
  48. package/dist/application-spec/generate-application/code/templates/skills/features/webhooks.js +1 -0
  49. package/dist/application-spec/generate-application/code/templates/skills/guide.d.ts +54 -0
  50. package/dist/application-spec/generate-application/code/templates/skills/guide.js +18 -0
  51. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill-bundle.d.ts +10 -0
  52. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill-bundle.js +14 -0
  53. package/dist/application-spec/generate-application/code/templates/skills/processes/asset-conversion.d.ts +2 -0
  54. package/dist/application-spec/generate-application/code/templates/skills/processes/asset-conversion.js +23 -0
  55. package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/evaluate.d.ts +2 -0
  56. package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/evaluate.js +39 -0
  57. package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/feedback.d.ts +3 -0
  58. package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/feedback.js +1 -0
  59. package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/index.d.ts +1 -0
  60. package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/index.js +1 -0
  61. package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/report.d.ts +2 -0
  62. package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/report.js +7 -0
  63. package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/send.d.ts +2 -0
  64. package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/send.js +2 -0
  65. package/dist/application-spec/generate-application/code/templates/skills/processes/finalization.d.ts +2 -0
  66. package/dist/application-spec/generate-application/code/templates/skills/processes/finalization.js +2 -0
  67. package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/build.d.ts +2 -0
  68. package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/build.js +23 -0
  69. package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/direction.d.ts +2 -0
  70. package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/direction.js +26 -0
  71. package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/first-draft.d.ts +3 -0
  72. package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/first-draft.js +3 -0
  73. package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/handoff.d.ts +2 -0
  74. package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/handoff.js +7 -0
  75. package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/index.d.ts +1 -0
  76. package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/index.js +1 -0
  77. package/dist/application-spec/generate-application/code/templates/skills/processes/index.d.ts +9 -0
  78. package/dist/application-spec/generate-application/code/templates/skills/processes/index.js +1 -0
  79. package/dist/application-spec/generate-application/code/templates/skills/processes/model-migration.d.ts +2 -0
  80. package/dist/application-spec/generate-application/code/templates/skills/processes/model-migration.js +1 -0
  81. package/dist/application-spec/generate-application/code/templates/skills/{phoenix-skill.d.ts → processes/operations.d.ts} +2 -1
  82. package/dist/application-spec/generate-application/code/templates/skills/processes/operations.js +2 -0
  83. package/dist/application-spec/generate-application/code/templates/skills/processes/planning.d.ts +2 -0
  84. package/dist/application-spec/generate-application/code/templates/skills/processes/planning.js +5 -0
  85. package/dist/application-spec/generate-application/code/templates/skills/processes/review/appearance.d.ts +2 -0
  86. package/dist/application-spec/generate-application/code/templates/skills/processes/review/appearance.js +46 -0
  87. package/dist/application-spec/generate-application/code/templates/skills/processes/review/code.d.ts +2 -0
  88. package/dist/application-spec/generate-application/code/templates/skills/processes/review/code.js +2 -0
  89. package/dist/application-spec/generate-application/code/templates/skills/processes/review/hand-over.d.ts +2 -0
  90. package/dist/application-spec/generate-application/code/templates/skills/processes/review/hand-over.js +6 -0
  91. package/dist/application-spec/generate-application/code/templates/skills/processes/review/index.d.ts +1 -0
  92. package/dist/application-spec/generate-application/code/templates/skills/processes/review/index.js +1 -0
  93. package/dist/application-spec/generate-application/code/templates/skills/processes/review/review.d.ts +3 -0
  94. package/dist/application-spec/generate-application/code/templates/skills/processes/review/review.js +1 -0
  95. package/dist/application-spec/generate-application/code/templates/skills/processes/review/visual-inspection.d.ts +2 -0
  96. package/dist/application-spec/generate-application/code/templates/skills/processes/review/visual-inspection.js +13 -0
  97. package/dist/application-spec/generate-application/code/templates/skills/processes/specification/branding.d.ts +2 -0
  98. package/dist/application-spec/generate-application/code/templates/skills/processes/specification/branding.js +20 -0
  99. package/dist/application-spec/generate-application/code/templates/skills/processes/specification/catalog.d.ts +2 -0
  100. package/dist/application-spec/generate-application/code/templates/skills/processes/specification/catalog.js +1 -0
  101. package/dist/application-spec/generate-application/code/templates/skills/processes/specification/index.d.ts +1 -0
  102. package/dist/application-spec/generate-application/code/templates/skills/processes/specification/index.js +1 -0
  103. package/dist/application-spec/generate-application/code/templates/skills/processes/specification/product-definition.d.ts +2 -0
  104. package/dist/application-spec/generate-application/code/templates/skills/processes/specification/product-definition.js +22 -0
  105. package/dist/application-spec/generate-application/code/templates/skills/processes/specification/specification.d.ts +3 -0
  106. package/dist/application-spec/generate-application/code/templates/skills/processes/specification/specification.js +1 -0
  107. package/dist/application-spec/generate-application/code/templates/skills/processes/specification/ux-guidelines.d.ts +2 -0
  108. package/dist/application-spec/generate-application/code/templates/skills/processes/specification/ux-guidelines.js +25 -0
  109. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +63 -249
  110. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +3 -58
  111. package/dist/application-spec/generate-application/code/templates/spec-code/collect-spec-code.d.ts +1 -1
  112. package/dist/application-spec/generate-application/code/templates/spec-code/collect-spec-code.js +1 -1
  113. package/dist/application-spec/generate-application/code/templates/story/wrapper.js +2 -4
  114. package/dist/application-spec/generate-application/code/templates/tsconfig.js +2 -1
  115. package/dist/application-spec/generate-application/index.d.ts +1 -8
  116. package/dist/application-spec/generate-application/index.js +1 -1
  117. package/dist/application-spec/parse-application-files/merge/merged-assistant.d.ts +13 -4
  118. package/dist/application-spec/parse-application-files/merge/merged-assistant.js +1 -1
  119. package/dist/application-spec/parse-application-files/merge/merged-infra.d.ts +4 -11
  120. package/dist/application-spec/parse-application-files/merge/merged-transformers.d.ts +2 -4
  121. package/dist/application-spec/parse-application-files/parse-application-files.js +1 -1
  122. package/dist/application-spec/parse-application-files/raw-spec/raw-acl.d.ts +2 -2
  123. package/dist/application-spec/parse-application-files/raw-spec/raw-acl.js +1 -1
  124. package/dist/application-spec/parse-application-files/raw-spec/raw-admin-pages.d.ts +3 -24
  125. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +25 -20
  126. package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
  127. package/dist/application-spec/parse-application-files/raw-spec/raw-expressions.d.ts +1 -1
  128. package/dist/application-spec/parse-application-files/raw-spec/raw-expressions.js +1 -1
  129. package/dist/application-spec/parse-application-files/raw-spec/raw-resources.d.ts +19 -64
  130. package/dist/application-spec/parse-application-files/spec/application/admin-spec/admin-pages.d.ts +3 -20
  131. package/dist/application-spec/parse-application-files/spec/application/admin-spec/states.d.ts +3 -5
  132. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/states.d.ts +3 -8
  133. package/dist/application-spec/parse-application-files/spec/components/bindings/read-binding.d.ts +3 -13
  134. package/dist/application-spec/parse-application-files/spec/components/bindings/write-binding.d.ts +4 -32
  135. package/dist/application-spec/parse-application-files/spec/components/component-filter.d.ts +4 -10
  136. package/dist/application-spec/parse-application-files/spec/components/components.d.ts +3 -4
  137. package/dist/application-spec/parse-application-files/spec/components/index.d.ts +1 -2
  138. package/dist/application-spec/parse-application-files/spec/components/index.js +1 -1
  139. package/dist/application-spec/parse-application-files/spec/components/sdk-component-entry.d.ts +1 -1
  140. package/dist/application-spec/parse-application-files/spec/components/user-component-entry.d.ts +2 -3
  141. package/dist/application-spec/parse-application-files/spec/components/user-component-entry.js +1 -1
  142. package/dist/application-spec/parse-application-files/spec/components/user-components.d.ts +2 -3
  143. package/dist/application-spec/parse-application-files/spec/expressions/expression-read-types.d.ts +2 -2
  144. package/dist/application-spec/parse-application-files/spec/expressions/expressions.d.ts +7 -29
  145. package/dist/application-spec/parse-application-files/spec/expressions/index.d.ts +0 -1
  146. package/dist/application-spec/parse-application-files/spec/expressions/memo-eval-plan.d.ts +4 -71
  147. package/dist/application-spec/parse-application-files/spec/expressions/memo-eval-plan.js +1 -1
  148. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.d.ts +2 -2
  149. package/dist/application-spec/parse-application-files/spec/invariants/invariant.d.ts +5 -21
  150. package/dist/application-spec/parse-application-files/spec/invariants/invariants.d.ts +4 -14
  151. package/dist/application-spec/parse-application-files/spec/model/aliases.d.ts +3 -9
  152. package/dist/application-spec/parse-application-files/spec/model/common-types.d.ts +6 -14
  153. package/dist/application-spec/parse-application-files/spec/model/defaults.d.ts +6 -31
  154. package/dist/application-spec/parse-application-files/spec/model/entity-types.d.ts +3 -8
  155. package/dist/application-spec/parse-application-files/spec/model/model-version-key.d.ts +3 -3
  156. package/dist/application-spec/parse-application-files/spec/model/names/action-name.d.ts +3 -7
  157. package/dist/application-spec/parse-application-files/spec/model/names/alias-name.d.ts +3 -7
  158. package/dist/application-spec/parse-application-files/spec/model/names/entity-or-alias-name.d.ts +3 -8
  159. package/dist/application-spec/parse-application-files/spec/model/names/entity-type-name.d.ts +3 -8
  160. package/dist/application-spec/parse-application-files/spec/model/names/expression-name.d.ts +3 -6
  161. package/dist/application-spec/parse-application-files/spec/model/names/instance-name.d.ts +3 -7
  162. package/dist/application-spec/parse-application-files/spec/model/names/invariant-name.d.ts +3 -3
  163. package/dist/application-spec/parse-application-files/spec/model/names/shape-property-name.d.ts +3 -11
  164. package/dist/application-spec/parse-application-files/spec/model/names/violation-type-name.d.ts +3 -3
  165. package/dist/application-spec/parse-application-files/spec/model/presets.d.ts +6 -29
  166. package/dist/application-spec/parse-application-files/spec/sections/actions.d.ts +6 -23
  167. package/dist/application-spec/parse-application-files/spec/sections/app-metadata.d.ts +3 -18
  168. package/dist/application-spec/parse-application-files/spec/sections/application-version.d.ts +3 -7
  169. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
  170. package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant.js +1 -1
  171. package/dist/application-spec/parse-application-files/spec/sections/data-spec/chunks.d.ts +6 -23
  172. package/dist/application-spec/parse-application-files/spec/sections/data-spec/custom-data-spec.d.ts +1 -16
  173. package/dist/application-spec/parse-application-files/spec/sections/data-spec/data-entry-key.d.ts +3 -9
  174. package/dist/application-spec/parse-application-files/spec/sections/data-spec/data-spec.d.ts +1 -10
  175. package/dist/application-spec/parse-application-files/spec/sections/data-spec/swatch-data-spec.d.ts +1 -14
  176. package/dist/application-spec/parse-application-files/spec/sections/state-value.d.ts +3 -7
  177. package/dist/application-spec/parse-application-files/spec/sections/theme.d.ts +3 -10
  178. package/dist/application-spec/parse-application-files/spec/sections/transformers.d.ts +4 -11
  179. package/dist/application-spec/parse-application-files/spec/sections/ui.d.ts +3 -12
  180. package/dist/client/authorized-client.d.ts +4 -2
  181. package/dist/client/authorized-client.js +1 -1
  182. package/dist/client/contract.d.ts +34 -4
  183. package/dist/client/contract.js +1 -1
  184. package/dist/client/index.d.ts +1 -1
  185. package/dist/client/local-authorized-client.d.ts +3 -1
  186. package/dist/client/local-authorized-client.js +1 -1
  187. package/dist/client/memory-authorized-client.d.ts +4 -1
  188. package/dist/client/memory-authorized-client.js +1 -1
  189. package/dist/client/phoenix-api.d.ts +259 -1
  190. package/dist/configurator/ConfiguratorApp.js +1 -1
  191. package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
  192. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +92 -24
  193. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  194. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.d.ts +21 -4
  195. package/dist/configurator/application-runtime/extensions/systems/assistant-system/graphql-tools.js +1 -1
  196. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.d.ts +70 -56
  197. package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.js +1 -1
  198. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +38 -11
  199. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  200. package/dist/configurator/application-runtime/extensions/systems/graphql-system/violations.d.ts +40 -0
  201. package/dist/configurator/application-runtime/extensions/systems/graphql-system/violations.js +1 -0
  202. package/dist/configurator/application-runtime/extensions/systems/index.d.ts +1 -1
  203. package/dist/configurator/application-runtime/extensions/systems/index.js +1 -1
  204. package/dist/configurator/common/configurator-interface.d.ts +2 -2
  205. package/dist/configurator/common/configurator-interface.js +1 -1
  206. package/dist/configurator/configurator-context/configurator-hooks/index.d.ts +0 -1
  207. package/dist/configurator/configurator-context/configurator-hooks/index.js +1 -1
  208. package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.js +1 -1
  209. package/dist/configurator/configurator-context/index.d.ts +0 -5
  210. package/dist/configurator/configurator-context/index.js +1 -1
  211. package/dist/configurator/pages/ConfiguratorNotFoundPage.js +1 -1
  212. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  213. package/dist/configurator/pages/NewConfiguratorPage.js +1 -1
  214. package/dist/configurator/pages/default-configurator-elements.d.ts +6 -2
  215. package/dist/configurator/pages/default-configurator-elements.js +1 -1
  216. package/dist/configurator/pages/error-boundaries/BuiltInGeneralErrorFallback.d.ts +5 -0
  217. package/dist/configurator/pages/error-boundaries/BuiltInGeneralErrorFallback.js +1 -0
  218. package/dist/configurator/pages/error-boundaries/DevContextFallback.js +1 -1
  219. package/dist/configurator/pages/error-boundaries/DevLoadingFallback.js +1 -1
  220. package/dist/configurator/pages/error-boundaries/index.d.ts +1 -0
  221. package/dist/configurator/pages/error-boundaries/index.js +1 -1
  222. package/dist/configurator/pages/provider-slots/ContainerSlotProvider.d.ts +3 -0
  223. package/dist/configurator/pages/provider-slots/ContainerSlotProvider.js +1 -0
  224. package/dist/configurator/pages/provider-slots/LoaderSlotProvider.d.ts +3 -0
  225. package/dist/configurator/pages/provider-slots/LoaderSlotProvider.js +1 -0
  226. package/dist/configurator/pages/provider-slots/MessageHostSlotProvider.d.ts +3 -0
  227. package/dist/configurator/pages/provider-slots/MessageHostSlotProvider.js +1 -0
  228. package/dist/configurator/pages/provider-slots/SceneResourcesSlotProvider.d.ts +3 -0
  229. package/dist/configurator/pages/provider-slots/SceneResourcesSlotProvider.js +1 -0
  230. package/dist/configurator/pages/provider-slots/ThemeSlotProvider.d.ts +3 -0
  231. package/dist/configurator/pages/provider-slots/ThemeSlotProvider.js +1 -0
  232. package/dist/configurator/pages/provider-slots/configurator-provider-slot-elements.d.ts +3 -0
  233. package/dist/configurator/pages/provider-slots/configurator-provider-slot-elements.js +1 -0
  234. package/dist/configurator/pages/provider-slots/index.d.ts +6 -0
  235. package/dist/configurator/pages/provider-slots/index.js +1 -0
  236. package/dist/configurator/pages/ui-elements/BuiltInInvalidDeploymentReload.d.ts +2 -0
  237. package/dist/configurator/pages/ui-elements/BuiltInInvalidDeploymentReload.js +1 -0
  238. package/dist/configurator/pages/ui-elements/configurator-ui-elements.d.ts +3 -0
  239. package/dist/configurator/pages/ui-elements/configurator-ui-elements.js +1 -0
  240. package/dist/configurator/pages/ui-elements/index.d.ts +2 -0
  241. package/dist/configurator/pages/ui-elements/index.js +1 -0
  242. package/dist/configurator/ui/assistant/AssistantChips.d.ts +10 -0
  243. package/dist/configurator/ui/assistant/AssistantChips.js +1 -1
  244. package/dist/configurator/ui/assistant/AssistantComposer.d.ts +6 -0
  245. package/dist/configurator/ui/assistant/AssistantComposer.js +2 -1
  246. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
  247. package/dist/configurator/ui/assistant/AssistantThread.d.ts +4 -3
  248. package/dist/configurator/ui/assistant/AssistantThread.js +1 -1
  249. package/dist/configurator/ui/assistant/alert/AssistantAlert.d.ts +4 -1
  250. package/dist/configurator/ui/assistant/alert/AssistantAlert.js +1 -1
  251. package/dist/configurator/ui/assistant/attachments/MessageImages.d.ts +11 -0
  252. package/dist/configurator/ui/assistant/attachments/MessageImages.js +1 -0
  253. package/dist/configurator/ui/assistant/attachments/index.d.ts +2 -0
  254. package/dist/configurator/ui/assistant/attachments/index.js +1 -0
  255. package/dist/configurator/ui/assistant/attachments/prepare-image.d.ts +19 -0
  256. package/dist/configurator/ui/assistant/attachments/prepare-image.js +1 -0
  257. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.js +1 -1
  258. package/dist/configurator/ui/assistant/form/AssistantForm.js +1 -1
  259. package/dist/configurator/ui/assistant/form/registry/built-in-form-elements.d.ts +26 -0
  260. package/dist/configurator/ui/assistant/form-elements/FormNumber.js +1 -1
  261. package/dist/configurator/ui/assistant/popover/AssistantPopover.d.ts +24 -0
  262. package/dist/configurator/ui/assistant/popover/AssistantPopover.js +1 -0
  263. package/dist/configurator/ui/assistant/popover/index.d.ts +1 -0
  264. package/dist/configurator/ui/assistant/popover/index.js +1 -0
  265. package/dist/configurator/ui/assistant/reference-link/AssistantReferenceLink.js +1 -1
  266. package/dist/configurator/ui/assistant/reference-link/reference-styles.js +1 -1
  267. package/dist/configurator/ui/assistant/screenshots/ScreenshotThumbnails.d.ts +1 -1
  268. package/dist/configurator/ui/assistant/screenshots/ScreenshotThumbnails.js +1 -1
  269. package/dist/configurator/ui/assistant/screenshots/index.d.ts +1 -0
  270. package/dist/configurator/ui/assistant/screenshots/index.js +1 -1
  271. package/dist/configurator/ui/assistant/screenshots/tool-screenshots.d.ts +12 -4
  272. package/dist/configurator/ui/assistant/screenshots/tool-screenshots.js +1 -1
  273. package/dist/configurator/ui/assistant/screenshots/use-screenshot-src.d.ts +8 -0
  274. package/dist/configurator/ui/assistant/screenshots/use-screenshot-src.js +1 -0
  275. package/dist/configurator/ui/assistant/streamed-markdown.d.ts +11 -0
  276. package/dist/configurator/ui/assistant/streamed-markdown.js +2 -2
  277. package/dist/configurator/ui/assistant/thread-items.d.ts +2 -0
  278. package/dist/configurator/ui/assistant/thread-items.js +1 -1
  279. package/dist/configurator/ui/assistant/tool-chip.d.ts +19 -9
  280. package/dist/configurator/ui/assistant/tool-chip.js +1 -1
  281. package/dist/configurator/ui/assistant/use-load-older-on-top.d.ts +22 -0
  282. package/dist/configurator/ui/assistant/use-load-older-on-top.js +1 -0
  283. package/dist/configurator/ui/configurator-layout/slots/canvas/GPUAccelerationDisabled.js +1 -1
  284. package/dist/configurator/ui/configurator-layout/slots/canvas/WebGLNotSupported.js +1 -1
  285. package/dist/configurator/ui/configurator-layout/slots/readonly-banner/CloneToEditDialog.js +1 -1
  286. package/dist/configurator/ui/configurator-layout/universal/DesktopPreview.js +1 -1
  287. package/dist/configurator/ui/configurator-layout/universal/Layout.js +1 -1
  288. package/dist/configurator/ui/configurator-layout/universal/MobilePreview.js +1 -1
  289. package/dist/configurator/ui/legacy/chat/MobileChat.js +1 -1
  290. package/dist/configurator/ui/legacy/layout/common/CommonTopNavigation.js +1 -1
  291. package/dist/configurator/ui/legacy/layout/simple/SimpleSidebar.js +1 -1
  292. package/dist/configurator/ui/legacy/layout/simple/SimpleTopNavigation.js +1 -1
  293. package/dist/configurator/ui/legacy/layout/steps/StepsNavigation.js +1 -1
  294. package/dist/configurator/ui/legacy/layout/steps/StepsOwnerLayout.js +1 -1
  295. package/dist/configurator/ui/legacy/layout/steps/StepsSideBar.js +1 -1
  296. package/dist/configurator/ui/legacy/layout/tabs/TabsSidebar.js +1 -1
  297. package/dist/configurator/ui/phoenix-layout-elements/header/common/back-button/use-go-back-action.js +1 -1
  298. package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.js +1 -1
  299. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/basic/use-basic-sidebar-footer.js +1 -1
  300. package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/common/PreviousStepButton.js +1 -1
  301. package/dist/configurator/ui/preset-layout/CategoryPresetUi.js +1 -1
  302. package/dist/configurator/ui/save-message-snackbars/SaveMessageSnackbars.js +1 -1
  303. package/dist/docs/3d-scene/cameras/custom.mdx +4 -2
  304. package/dist/docs/drag-and-drop/room-planner.mdx +1 -1
  305. package/dist/docs/index.json +1 -1
  306. package/dist/docs/phoenix/configurator-interface.mdx +2 -2
  307. package/dist/docs/phoenix/deployments.mdx +11 -1
  308. package/dist/docs/phoenix/domain-model.mdx +4 -1
  309. package/dist/docs/phoenix/getting-started.mdx +0 -2
  310. package/dist/docs/phoenix/layout-slots.mdx +21 -0
  311. package/dist/docs/phoenix/migration-guide.mdx +10 -11
  312. package/dist/docs/phoenix/phoenix-cli.mdx +57 -15
  313. package/dist/docs/phoenix/project-structure.mdx +30 -31
  314. package/dist/docs/phoenix/sdk-builder-workflow.mdx +5 -11
  315. package/dist/docs/phoenix/testing.mdx +6 -1
  316. package/dist/docs/phoenix/webhooks.mdx +9 -1
  317. package/dist/domain/application/GetApplicationWrapperHandler.d.ts +1 -1
  318. package/dist/domain/application/GetThemeHandler.d.ts +1 -1
  319. package/dist/domain/application/GetWebComponentOptions.d.ts +1 -1
  320. package/dist/domain/application/application-config.d.ts +6 -26
  321. package/dist/domain/application/assistant/assistant-fields.d.ts +1 -1
  322. package/dist/domain/application/assistant/assistant-value-type.d.ts +1 -1
  323. package/dist/domain/application/assistant/build-assistant-lenses.d.ts +1 -2
  324. package/dist/domain/application/assistant/build-assistant-lenses.js +1 -1
  325. package/dist/domain/application/assistant/build-assistant-manifest.d.ts +1 -2
  326. package/dist/domain/application/assistant/build-assistant-manifest.js +1 -1
  327. package/dist/domain/application/assistant/generate-assistant-prompt.d.ts +1 -2
  328. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
  329. package/dist/domain/application/assistant/index.d.ts +0 -4
  330. package/dist/domain/application/assistant/index.js +1 -1
  331. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.d.ts +1 -1
  332. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.d.ts +1 -1
  333. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -1
  334. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +3 -5
  335. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -1
  336. package/dist/domain/application/assistant/session-setup/create-session-assistant.d.ts +1 -2
  337. package/dist/domain/application/assistant-field-options.d.ts +1 -1
  338. package/dist/domain/application/assistant-mutations.d.ts +1 -1
  339. package/dist/domain/application/assistant-mutations.js +1 -1
  340. package/dist/domain/application/assistant-recipe-groups.d.ts +1 -1
  341. package/dist/domain/application/configurator-builder.d.ts +1 -2
  342. package/dist/domain/application/create-initial-published-data.d.ts +2 -1
  343. package/dist/domain/application/published-data/DataRowValidatorHandler.d.ts +1 -1
  344. package/dist/domain/application/published-data/FilterPublishedChunksHandler.d.ts +1 -1
  345. package/dist/domain/application/published-data/MapPublishedChunkedDataHandler.d.ts +1 -1
  346. package/dist/domain/application/published-data/MapPublishedRevisionDataHandler.d.ts +1 -1
  347. package/dist/domain/application/published-data/SheetValidatorHandler.d.ts +1 -1
  348. package/dist/domain/available-system-components/available-system-components.d.ts +11 -0
  349. package/dist/domain/available-system-components/available-system-components.js +1 -0
  350. package/dist/domain/available-system-components/index.d.ts +1 -0
  351. package/dist/domain/available-system-components/index.js +1 -0
  352. package/dist/domain/{domain-builder.d.ts → domain-builder/domain-builder.d.ts} +2 -2
  353. package/dist/domain/domain-builder/domain-builder.js +1 -0
  354. package/dist/domain/domain-builder/index.d.ts +1 -0
  355. package/dist/domain/domain-builder/index.js +1 -0
  356. package/dist/domain/domain-runtime/domain-runtime.d.ts +24 -24
  357. package/dist/domain/domain-runtime/index.d.ts +0 -1
  358. package/dist/domain/domain-runtime/index.js +1 -1
  359. package/dist/domain/domain-runtime/spec/create-violation-expressions.d.ts +1 -1
  360. package/dist/domain/domain-runtime/spec/create-violation-expressions.js +1 -1
  361. package/dist/domain/domain-runtime/spec/index.d.ts +1 -1
  362. package/dist/domain/domain-runtime/spec/index.js +1 -1
  363. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  364. package/dist/domain/domain-runtime/spec/{module-checks/resolve-imported-transformers.d.ts → resolve-imported-transformers.d.ts} +3 -3
  365. package/dist/domain/domain-runtime/spec/resolve-imported-transformers.js +1 -0
  366. package/dist/domain/domain-runtime/spec/selectors.d.ts +5 -5
  367. package/dist/domain/domain-runtime/spec/types.d.ts +2 -2
  368. package/dist/domain/extensions/export-images/agent-screenshot.d.ts +6 -0
  369. package/dist/domain/extensions/export-images/agent-screenshot.js +1 -1
  370. package/dist/domain/extensions/export-images/index.d.ts +1 -1
  371. package/dist/domain/extensions/export-images/index.js +1 -1
  372. package/dist/domain/extensions/index.d.ts +1 -1
  373. package/dist/domain/extensions/index.js +1 -1
  374. package/dist/domain/index.d.ts +15 -2
  375. package/dist/domain/index.js +1 -1
  376. package/dist/domain/mocks/create-test-application-config.d.ts +1 -1
  377. package/dist/domain/spec/application/admin-pages-section.d.ts +29 -0
  378. package/dist/domain/spec/application/admin-pages.d.ts +26 -0
  379. package/dist/domain/spec/application/admin-states.d.ts +5 -0
  380. package/dist/domain/spec/application/configurator-states.d.ts +8 -0
  381. package/dist/domain/spec/application/index.d.ts +5 -0
  382. package/dist/domain/spec/application/index.js +1 -0
  383. package/dist/domain/spec/components/bindings/index.d.ts +2 -0
  384. package/dist/domain/spec/components/bindings/read-binding.d.ts +13 -0
  385. package/dist/domain/spec/components/bindings/read-binding.js +1 -0
  386. package/dist/domain/spec/components/bindings/write-binding.d.ts +32 -0
  387. package/dist/domain/spec/components/bindings/write-binding.js +1 -0
  388. package/dist/{application-spec/parse-application-files → domain}/spec/components/component-entry.d.ts +3 -3
  389. package/dist/domain/spec/components/component-entry.js +1 -0
  390. package/dist/{application-spec/core → domain/spec}/components/component-filter.d.ts +3 -2
  391. package/dist/domain/spec/components/component-filters.d.ts +10 -0
  392. package/dist/domain/spec/components/component-filters.js +1 -0
  393. package/dist/domain/spec/components/components.d.ts +4 -0
  394. package/dist/domain/spec/components/components.js +1 -0
  395. package/dist/domain/spec/components/index.d.ts +6 -0
  396. package/dist/domain/spec/enhanced-json/enhanced-json-value.d.ts +30 -0
  397. package/dist/domain/spec/enhanced-json/enhanced-json-value.js +1 -0
  398. package/dist/domain/spec/enhanced-json/index.d.ts +1 -0
  399. package/dist/domain/spec/enhanced-json/index.js +1 -0
  400. package/dist/{application-spec/parse-application-files → domain}/spec/expressions/expression.d.ts +9 -3
  401. package/dist/domain/spec/expressions/expression.js +1 -0
  402. package/dist/domain/spec/expressions/expressions.d.ts +27 -0
  403. package/dist/domain/spec/expressions/expressions.js +1 -0
  404. package/dist/domain/spec/expressions/index.d.ts +5 -0
  405. package/dist/domain/spec/expressions/memo-eval-plan.d.ts +70 -0
  406. package/dist/domain/spec/expressions/memo-eval-plan.js +1 -0
  407. package/dist/domain/spec/expressions/relation-expression-params.js +1 -0
  408. package/dist/domain/spec/index.d.ts +4 -0
  409. package/dist/domain/spec/index.js +1 -0
  410. package/dist/domain/spec/invariants/index.d.ts +2 -0
  411. package/dist/domain/spec/invariants/index.js +1 -0
  412. package/dist/domain/spec/invariants/invariant.d.ts +24 -0
  413. package/dist/domain/spec/invariants/invariant.js +1 -0
  414. package/dist/domain/spec/invariants/invariants.d.ts +14 -0
  415. package/dist/domain/spec/invariants/invariants.js +1 -0
  416. package/dist/domain/spec/json-schema.d.ts +52 -0
  417. package/dist/domain/spec/json-schema.js +1 -0
  418. package/dist/domain/spec/markers/index.d.ts +3 -0
  419. package/dist/domain/spec/markers/index.js +1 -0
  420. package/dist/domain/spec/markers/msg-marker.d.ts +28 -0
  421. package/dist/domain/spec/markers/msg-marker.js +1 -0
  422. package/dist/domain/spec/model/aliases.d.ts +9 -0
  423. package/dist/domain/spec/model/aliases.js +1 -0
  424. package/dist/domain/spec/model/common-types.d.ts +15 -0
  425. package/dist/domain/spec/model/common-types.js +1 -0
  426. package/dist/domain/spec/model/defaults.d.ts +33 -0
  427. package/dist/domain/spec/model/defaults.js +1 -0
  428. package/dist/domain/spec/model/entity-types.d.ts +8 -0
  429. package/dist/domain/spec/model/entity-types.js +1 -0
  430. package/dist/domain/spec/model/index.d.ts +7 -0
  431. package/dist/domain/spec/model/index.js +1 -0
  432. package/dist/domain/spec/model/model-version-key.d.ts +3 -0
  433. package/dist/domain/spec/model/model-version-key.js +1 -0
  434. package/dist/domain/spec/model/names/action-name.d.ts +7 -0
  435. package/dist/domain/spec/model/names/action-name.js +1 -0
  436. package/dist/domain/spec/model/names/alias-name.d.ts +7 -0
  437. package/dist/domain/spec/model/names/alias-name.js +1 -0
  438. package/dist/domain/spec/model/names/entity-or-alias-name.d.ts +8 -0
  439. package/dist/domain/spec/model/names/entity-or-alias-name.js +1 -0
  440. package/dist/domain/spec/model/names/entity-type-name.d.ts +8 -0
  441. package/dist/domain/spec/model/names/entity-type-name.js +1 -0
  442. package/dist/domain/spec/model/names/expression-name.d.ts +6 -0
  443. package/dist/domain/spec/model/names/expression-name.js +1 -0
  444. package/dist/domain/spec/model/names/index.d.ts +9 -0
  445. package/dist/domain/spec/model/names/index.js +1 -0
  446. package/dist/domain/spec/model/names/instance-name.d.ts +7 -0
  447. package/dist/domain/spec/model/names/instance-name.js +1 -0
  448. package/dist/domain/spec/model/names/invariant-name.d.ts +3 -0
  449. package/dist/domain/spec/model/names/invariant-name.js +1 -0
  450. package/dist/domain/spec/model/names/shape-property-name.d.ts +11 -0
  451. package/dist/domain/spec/model/names/shape-property-name.js +1 -0
  452. package/dist/domain/spec/model/names/violation-type-name.d.ts +3 -0
  453. package/dist/domain/spec/model/names/violation-type-name.js +1 -0
  454. package/dist/domain/spec/model/presets.d.ts +30 -0
  455. package/dist/domain/spec/model/presets.js +1 -0
  456. package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/element-registration.d.ts +1 -1
  457. package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/find-assistant-form-element-errors.d.ts +1 -1
  458. package/dist/domain/spec/modules/find-assistant-form-element-errors.js +1 -0
  459. package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/index.d.ts +2 -3
  460. package/dist/domain/spec/modules/index.js +1 -0
  461. package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/merge-expression-modules.d.ts +2 -2
  462. package/dist/domain/spec/modules/merge-expression-modules.js +1 -0
  463. package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/project-modules.d.ts +1 -1
  464. package/dist/domain/spec/modules/project-modules.js +1 -0
  465. package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/resolve-action-modules.d.ts +1 -1
  466. package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/resolve-component-optic-modules.d.ts +1 -1
  467. package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/resolve-expression-modules.d.ts +1 -1
  468. package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/resolve-invariant-modules.d.ts +1 -1
  469. package/dist/domain/spec/phx/index.d.ts +1 -0
  470. package/dist/domain/spec/phx/index.js +1 -0
  471. package/dist/{application-spec/generate-application/implementations → domain/spec/phx}/phx-application-types.d.ts +1 -1
  472. package/dist/domain/spec/phx/phx-application-types.js +1 -0
  473. package/dist/domain/spec/phx/phx-domain.js +1 -0
  474. package/dist/{application-spec/generate-application/implementations → domain/spec/phx}/phx-model.d.ts +2 -2
  475. package/dist/domain/spec/phx/phx-model.js +1 -0
  476. package/dist/{application-spec/generate-application/implementations → domain/spec/phx}/phx.d.ts +1 -2
  477. package/dist/{application-spec/generate-application → domain/spec}/runtime/admin-runtime/admin-runtime.d.ts +7 -6
  478. package/dist/domain/spec/runtime/admin-runtime/admin-runtime.js +1 -0
  479. package/dist/{application-spec/generate-application → domain/spec}/runtime/admin-runtime/admin-spec-runtime.d.ts +2 -2
  480. package/dist/domain/spec/runtime/admin-runtime/admin-spec-runtime.js +1 -0
  481. package/dist/domain/spec/runtime/admin-runtime/index.d.ts +2 -0
  482. package/dist/domain/spec/runtime/admin-runtime/index.js +1 -0
  483. package/dist/{application-spec/generate-application → domain/spec}/runtime/admin-runtime/states-runtime.d.ts +1 -1
  484. package/dist/{application-spec/generate-application → domain/spec}/runtime/application-runtime.d.ts +8 -6
  485. package/dist/domain/spec/runtime/application-runtime.js +1 -0
  486. package/dist/{application-spec/generate-application → domain/spec}/runtime/application-spec-slice.d.ts +3 -1
  487. package/dist/domain/spec/runtime/application-spec-slice.js +1 -0
  488. package/dist/{application-spec/generate-application → domain/spec}/runtime/configurator-runtime/configurator-runtime.d.ts +8 -10
  489. package/dist/domain/spec/runtime/configurator-runtime/configurator-runtime.js +1 -0
  490. package/dist/{application-spec/generate-application → domain/spec}/runtime/configurator-runtime/configurator-spec-runtime.d.ts +2 -2
  491. package/dist/domain/spec/runtime/configurator-runtime/configurator-spec-runtime.js +1 -0
  492. package/dist/domain/spec/runtime/configurator-runtime/index.d.ts +2 -0
  493. package/dist/domain/spec/runtime/configurator-runtime/index.js +1 -0
  494. package/dist/{application-spec/generate-application → domain/spec}/runtime/configurator-runtime/states-runtime.d.ts +1 -1
  495. package/dist/{application-spec/generate-application → domain/spec}/runtime/create-application.d.ts +3 -2
  496. package/dist/domain/spec/runtime/create-application.js +1 -0
  497. package/dist/{application-spec/generate-application/runtime/sections → domain/spec/runtime/expressions}/expression-runtime.d.ts +5 -3
  498. package/dist/domain/spec/runtime/expressions/expression-runtime.js +1 -0
  499. package/dist/{application-spec/generate-application/runtime/sections → domain/spec/runtime/expressions}/generate-memo-eval-plan-runtime.d.ts +2 -2
  500. package/dist/domain/spec/runtime/expressions/generate-memo-eval-plan-runtime.js +1 -0
  501. package/dist/domain/spec/runtime/expressions/index.d.ts +3 -0
  502. package/dist/domain/spec/runtime/expressions/index.js +1 -0
  503. package/dist/{application-spec/generate-application/runtime/sections → domain/spec/runtime/expressions}/reflection-constants-runtime.d.ts +2 -1
  504. package/dist/{application-spec/generate-application → domain/spec}/runtime/factory-data/factory-data-runtime.d.ts +4 -3
  505. package/dist/{application-spec/generate-application → domain/spec}/runtime/factory-data/recipe-defaults.d.ts +1 -1
  506. package/dist/{application-spec/generate-application → domain/spec}/runtime/factory-data/recipe-defaults.js +1 -1
  507. package/dist/{application-spec/generate-application → domain/spec}/runtime/factory-data/static-violations.d.ts +2 -2
  508. package/dist/{application-spec/generate-application → domain/spec}/runtime/factory-data/static-violations.js +1 -1
  509. package/dist/{application-spec/generate-application → domain/spec}/runtime/generate-runtime-instance.d.ts +1 -1
  510. package/dist/domain/spec/runtime/generate-runtime-instance.js +1 -0
  511. package/dist/domain/spec/runtime/index.d.ts +13 -0
  512. package/dist/domain/spec/runtime/index.js +1 -0
  513. package/dist/{application-spec/generate-application → domain/spec}/runtime/migrations/migration-runtime.d.ts +2 -2
  514. package/dist/domain/spec/runtime/migrations/migration-runtime.js +1 -0
  515. package/dist/{application-spec/generate-application/runtime/admin-runtime → domain/spec/runtime/model}/admin-model-runtime.d.ts +4 -3
  516. package/dist/domain/spec/runtime/model/admin-model-runtime.js +1 -0
  517. package/dist/{application-spec/generate-application/runtime/configurator-runtime → domain/spec/runtime/model}/configurator-model-runtime.d.ts +4 -3
  518. package/dist/domain/spec/runtime/model/configurator-model-runtime.js +1 -0
  519. package/dist/domain/spec/runtime/model/index.d.ts +2 -0
  520. package/dist/domain/spec/runtime/model/index.js +1 -0
  521. package/dist/domain/spec/runtime/optics/build-sdk-optic.d.ts +7 -0
  522. package/dist/domain/spec/runtime/optics/build-sdk-optic.js +1 -0
  523. package/dist/domain/spec/runtime/optics/build-user-bound-optic.d.ts +7 -0
  524. package/dist/domain/spec/runtime/optics/build-user-bound-optic.js +1 -0
  525. package/dist/domain/spec/runtime/optics/built-component-optic.d.ts +11 -0
  526. package/dist/domain/spec/runtime/optics/built-component-optic.js +1 -0
  527. package/dist/{application-spec/generate-application/runtime/sections → domain/spec/runtime/optics}/component-optic.d.ts +4 -14
  528. package/dist/domain/spec/runtime/optics/index.d.ts +2 -0
  529. package/dist/domain/spec/runtime/optics/index.js +1 -0
  530. package/dist/{application-spec/caching → domain/spec/runtime}/runtime-reference-store.d.ts +1 -5
  531. package/dist/domain/spec/runtime/runtime-reference-store.js +1 -0
  532. package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/actions-runtime.d.ts +3 -3
  533. package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/assistant-runtime.d.ts +2 -2
  534. package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/data-runtime.d.ts +1 -1
  535. package/dist/domain/spec/runtime/sections/index.d.ts +6 -0
  536. package/dist/domain/spec/runtime/sections/index.js +1 -0
  537. package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/preset-runtime.d.ts +4 -4
  538. package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/theme-runtime.d.ts +1 -1
  539. package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/transformers-runtime.d.ts +2 -2
  540. package/dist/{application-spec/generate-application → domain/spec}/runtime/spec-code/resolve-spec-code.d.ts +1 -1
  541. package/dist/domain/spec/runtime/spec-code/spec-code-module.js +1 -0
  542. package/dist/{application-spec/generate-application → domain/spec}/runtime/spec-runtime.d.ts +3 -3
  543. package/dist/domain/spec/runtime/spec-runtime.js +1 -0
  544. package/dist/domain/spec/runtime-spec/index.d.ts +4 -0
  545. package/dist/domain/spec/runtime-spec/index.js +1 -0
  546. package/dist/domain/spec/runtime-spec/runtime-spec.d.ts +174 -0
  547. package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/spec-code-id.d.ts +1 -1
  548. package/dist/domain/spec/sections/actions.d.ts +23 -0
  549. package/dist/domain/spec/sections/actions.js +1 -0
  550. package/dist/domain/spec/sections/app-metadata.d.ts +18 -0
  551. package/dist/domain/spec/sections/app-metadata.js +1 -0
  552. package/dist/domain/spec/sections/application-version.d.ts +7 -0
  553. package/dist/domain/spec/sections/application-version.js +1 -0
  554. package/dist/domain/{application → spec/sections}/assistant/assistant-manifest.d.ts +13 -3
  555. package/dist/domain/{application → spec/sections}/assistant/assistant-resolved-manifest.d.ts +5 -9
  556. package/dist/domain/spec/sections/assistant/assistant-resolved-manifest.js +1 -0
  557. package/dist/domain/spec/sections/assistant/index.d.ts +4 -0
  558. package/dist/domain/spec/sections/assistant/index.js +1 -0
  559. package/dist/domain/spec/sections/data-spec/chunks.d.ts +23 -0
  560. package/dist/domain/spec/sections/data-spec/chunks.js +1 -0
  561. package/dist/domain/spec/sections/data-spec/custom-data-spec-entry.d.ts +16 -0
  562. package/dist/domain/spec/sections/data-spec/custom-data-spec-entry.js +1 -0
  563. package/dist/domain/spec/sections/data-spec/data-entry-key.d.ts +9 -0
  564. package/dist/domain/spec/sections/data-spec/data-entry-key.js +1 -0
  565. package/dist/domain/spec/sections/data-spec/index.d.ts +5 -0
  566. package/dist/domain/spec/sections/data-spec/index.js +1 -0
  567. package/dist/domain/spec/sections/data-spec/parsed-data-spec-entries.d.ts +10 -0
  568. package/dist/domain/spec/sections/data-spec/parsed-data-spec-entries.js +1 -0
  569. package/dist/domain/spec/sections/data-spec/swatch-data-spec-entry.d.ts +14 -0
  570. package/dist/domain/spec/sections/data-spec/swatch-data-spec-entry.js +1 -0
  571. package/dist/domain/spec/sections/index.d.ts +10 -0
  572. package/dist/domain/spec/sections/index.js +1 -0
  573. package/dist/domain/spec/sections/infra/acl.d.ts +12 -0
  574. package/dist/domain/spec/sections/infra/acl.js +1 -0
  575. package/dist/domain/spec/sections/infra/index.d.ts +3 -0
  576. package/dist/domain/spec/sections/infra/index.js +1 -0
  577. package/dist/domain/spec/sections/infra/resource-entry.d.ts +46 -0
  578. package/dist/domain/spec/sections/infra/resource-entry.js +1 -0
  579. package/dist/domain/spec/sections/infra/resources-config.d.ts +10 -0
  580. package/dist/domain/spec/sections/infra/resources-config.js +1 -0
  581. package/dist/domain/spec/sections/state-value.d.ts +7 -0
  582. package/dist/domain/spec/sections/state-value.js +1 -0
  583. package/dist/domain/spec/sections/theme.d.ts +10 -0
  584. package/dist/domain/spec/sections/theme.js +1 -0
  585. package/dist/domain/spec/sections/transformers.d.ts +15 -0
  586. package/dist/domain/spec/sections/transformers.js +1 -0
  587. package/dist/domain/spec/sections/ui.d.ts +12 -0
  588. package/dist/domain/spec/sections/ui.js +1 -0
  589. package/dist/domain/system-definitions.js +1 -1
  590. package/dist/domain/utils/index.d.ts +2 -0
  591. package/dist/domain/utils/index.js +1 -0
  592. package/dist/editor/graphql/GraphQLPanel.js +1 -1
  593. package/dist/i18n/locales/cs/messages.js +1 -1
  594. package/dist/i18n/locales/da/messages.js +1 -1
  595. package/dist/i18n/locales/de/messages.js +1 -1
  596. package/dist/i18n/locales/de-AT/messages.js +1 -1
  597. package/dist/i18n/locales/en/messages.js +1 -1
  598. package/dist/i18n/locales/en-AU/messages.js +1 -1
  599. package/dist/i18n/locales/en-GB/messages.js +1 -1
  600. package/dist/i18n/locales/es/messages.js +1 -1
  601. package/dist/i18n/locales/fr/messages.js +1 -1
  602. package/dist/i18n/locales/hu/messages.js +1 -1
  603. package/dist/i18n/locales/it/messages.js +1 -1
  604. package/dist/i18n/locales/nl/messages.js +1 -1
  605. package/dist/i18n/locales/pl/messages.js +1 -1
  606. package/dist/i18n/locales/pt/messages.js +1 -1
  607. package/dist/i18n/locales/ro/messages.js +1 -1
  608. package/dist/i18n/locales/sk/messages.js +1 -1
  609. package/dist/i18n/locales/tr/messages.js +1 -1
  610. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +2 -2
  611. package/dist/legacy/phoenix-cli/services/webhook-service/transport.js +1 -1
  612. package/dist/legacy/phoenix-cli/services/webhook-service/tunnel.d.ts +1 -0
  613. package/dist/legacy/phoenix-cli/services/webhook-service/tunnel.js +1 -1
  614. package/dist/legacy/webhook-cli/lambda-local/index.js +1 -1
  615. package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
  616. package/dist/phoenix/application-spec/generate-application-spec-project.d.ts +1 -0
  617. package/dist/phoenix/application-spec/generate-application-spec-project.js +2 -2
  618. package/dist/phoenix/application-spec/generate-project-files.d.ts +1 -0
  619. package/dist/phoenix/application-spec/index.d.ts +2 -0
  620. package/dist/phoenix/application-spec/index.js +1 -1
  621. package/dist/phoenix/application-spec/project-files.d.ts +8 -2
  622. package/dist/phoenix/application-spec/project-files.js +1 -1
  623. package/dist/phoenix/application-spec/resolve-deployment-data.d.ts +11 -0
  624. package/dist/phoenix/application-spec/resolve-deployment-data.js +2 -2
  625. package/dist/phoenix/bin.js +1 -1
  626. package/dist/phoenix/cli.js +1 -1
  627. package/dist/phoenix/commands/activate-deployment.js +1 -1
  628. package/dist/phoenix/commands/build.js +1 -1
  629. package/dist/phoenix/commands/changelog.js +1 -1
  630. package/dist/phoenix/commands/check.js +1 -1
  631. package/dist/phoenix/commands/clean.js +1 -1
  632. package/dist/phoenix/commands/cleanup-environment.js +2 -2
  633. package/dist/phoenix/commands/create-environment.js +1 -1
  634. package/dist/phoenix/commands/data.js +1 -1
  635. package/dist/phoenix/commands/deploy.js +1 -1
  636. package/dist/phoenix/commands/deployment-build-envs-command.js +1 -1
  637. package/dist/phoenix/commands/dev.js +4 -5
  638. package/dist/phoenix/commands/docs.js +1 -1
  639. package/dist/phoenix/commands/finish-deployment-command.js +1 -1
  640. package/dist/phoenix/commands/fix.js +1 -1
  641. package/dist/phoenix/commands/index.d.ts +1 -1
  642. package/dist/phoenix/commands/index.js +1 -1
  643. package/dist/phoenix/commands/inspect-assets.js +1 -1
  644. package/dist/phoenix/commands/list-environments.js +1 -1
  645. package/dist/phoenix/commands/login.d.ts +4 -1
  646. package/dist/phoenix/commands/login.js +2 -2
  647. package/dist/phoenix/commands/prepare-deployment-command.js +2 -2
  648. package/dist/phoenix/commands/register-deployment.js +1 -1
  649. package/dist/phoenix/commands/scene.js +1 -1
  650. package/dist/phoenix/commands/screenshot.js +1 -1
  651. package/dist/phoenix/commands/state.js +1 -1
  652. package/dist/phoenix/commands/story-build.js +3 -3
  653. package/dist/phoenix/commands/story-create.js +1 -1
  654. package/dist/phoenix/commands/story-dev.js +2 -2
  655. package/dist/phoenix/commands/sync.js +1 -1
  656. package/dist/phoenix/commands/variants.js +1 -1
  657. package/dist/phoenix/editor-server/commands-router.js +1 -1
  658. package/dist/phoenix/editor-server/editor-server.d.ts +2 -13
  659. package/dist/phoenix/editor-server/editor-server.js +1 -1
  660. package/dist/phoenix/editor-server/spec-router.js +1 -1
  661. package/dist/phoenix/editor-server/trpc.d.ts +2 -12
  662. package/dist/phoenix/lingui/index.d.ts +1 -0
  663. package/dist/phoenix/lingui/index.js +1 -0
  664. package/dist/phoenix/lingui/lingui.d.ts +18 -0
  665. package/dist/phoenix/lingui/lingui.js +1 -0
  666. package/dist/phoenix/services/application-spec-project-watcher.d.ts +11 -6
  667. package/dist/phoenix/services/application-spec-project-watcher.js +2 -2
  668. package/dist/phoenix/services/cli-credentials.d.ts +3 -0
  669. package/dist/phoenix/services/cli-credentials.js +1 -1
  670. package/dist/phoenix/services/cli-exit.d.ts +5 -0
  671. package/dist/phoenix/services/cli-exit.js +1 -0
  672. package/dist/phoenix/services/deployment/deployment-preparation-service.d.ts +28 -0
  673. package/dist/phoenix/services/deployment/deployment-preparation-service.js +1 -0
  674. package/dist/phoenix/{commands → services/deployment}/generated-env-markers.d.ts +1 -0
  675. package/dist/phoenix/services/deployment/generated-env-markers.js +1 -0
  676. package/dist/phoenix/services/deployment/index.d.ts +2 -0
  677. package/dist/phoenix/services/deployment/index.js +1 -0
  678. package/dist/phoenix/services/index.d.ts +5 -1
  679. package/dist/phoenix/services/index.js +1 -1
  680. package/dist/phoenix/services/lingui-watcher.js +1 -1
  681. package/dist/phoenix/services/phoenix-store.d.ts +3 -0
  682. package/dist/phoenix/services/phoenix-store.js +1 -1
  683. package/dist/phoenix/services/prepare-development-environment.js +1 -1
  684. package/dist/phoenix/services/session/editor-server-handle.d.ts +5 -0
  685. package/dist/phoenix/services/session/editor-server-handle.js +1 -0
  686. package/dist/phoenix/services/session/index.d.ts +2 -0
  687. package/dist/phoenix/services/session/index.js +1 -0
  688. package/dist/phoenix/services/session/phoenix-application.d.ts +82 -0
  689. package/dist/phoenix/services/session/phoenix-application.js +2 -0
  690. package/dist/phoenix/services/source-archive.d.ts +2 -0
  691. package/dist/phoenix/services/source-archive.js +1 -1
  692. package/dist/phoenix/services/swc.d.ts +5 -4
  693. package/dist/phoenix/services/swc.js +2 -2
  694. package/dist/phoenix/services/telemetry/amplitude-telemetry-transport.d.ts +9 -0
  695. package/dist/phoenix/services/telemetry/amplitude-telemetry-transport.js +1 -0
  696. package/dist/phoenix/services/telemetry/index.d.ts +3 -0
  697. package/dist/phoenix/services/telemetry/index.js +1 -0
  698. package/dist/phoenix/services/telemetry/telemetry-client.d.ts +25 -0
  699. package/dist/phoenix/services/telemetry/telemetry-client.js +1 -0
  700. package/dist/phoenix/services/telemetry/telemetry-command.d.ts +2 -0
  701. package/dist/phoenix/services/telemetry/telemetry-command.js +1 -0
  702. package/dist/phoenix/services/telemetry/telemetry-event.d.ts +44 -0
  703. package/dist/phoenix/services/telemetry/telemetry-event.js +1 -0
  704. package/dist/phoenix/services/telemetry/telemetry-state.d.ts +25 -0
  705. package/dist/phoenix/services/telemetry/telemetry-state.js +2 -0
  706. package/dist/phoenix/services/vite-config.js +1 -1
  707. package/dist/phoenix/services/webhook-service/transport.js +1 -1
  708. package/dist/phoenix/services/webhook-service/tunnel.d.ts +1 -0
  709. package/dist/phoenix/services/webhook-service/tunnel.js +1 -1
  710. package/dist/react-sdk/application-runtime/domain-application-context/chat-system.d.ts +1 -1
  711. package/dist/{configurator/configurator-context → react-sdk}/configurator-routing/ConfiguratorRoutingProvider.d.ts +1 -1
  712. package/dist/react-sdk/configurator-routing/ConfiguratorRoutingProvider.js +1 -0
  713. package/dist/{configurator/configurator-context → react-sdk}/configurator-routing/OnGoToIndexHandler.d.ts +1 -2
  714. package/dist/react-sdk/configurator-routing/OnGoToIndexHandler.js +1 -0
  715. package/dist/react-sdk/configurator-routing/index.d.ts +3 -0
  716. package/dist/{configurator/configurator-context → react-sdk}/configurator-routing/index.js +1 -1
  717. package/dist/{configurator/configurator-context → react-sdk}/configurator-routing/use-power-routing-lifecycle.d.ts +2 -0
  718. package/dist/react-sdk/configurator-routing/use-power-routing-lifecycle.js +1 -0
  719. package/dist/react-sdk/configurator-ui-elements/ConfiguratorUiElementHost.d.ts +7 -0
  720. package/dist/react-sdk/configurator-ui-elements/ConfiguratorUiElementHost.js +1 -0
  721. package/dist/react-sdk/configurator-ui-elements/ErrorFallbackElement.d.ts +14 -0
  722. package/dist/react-sdk/configurator-ui-elements/ErrorFallbackElement.js +1 -0
  723. package/dist/react-sdk/configurator-ui-elements/ErrorFallbackPropsProvider.d.ts +18 -0
  724. package/dist/react-sdk/configurator-ui-elements/ErrorFallbackPropsProvider.js +1 -0
  725. package/dist/react-sdk/configurator-ui-elements/PlainErrorFallback.d.ts +5 -0
  726. package/dist/react-sdk/configurator-ui-elements/PlainErrorFallback.js +1 -0
  727. package/dist/react-sdk/configurator-ui-elements/configurator-ui-element.d.ts +17 -0
  728. package/dist/react-sdk/configurator-ui-elements/configurator-ui-element.js +1 -0
  729. package/dist/react-sdk/configurator-ui-elements/create-configurator-ui-element.d.ts +5 -0
  730. package/dist/react-sdk/configurator-ui-elements/create-configurator-ui-element.js +1 -0
  731. package/dist/react-sdk/configurator-ui-elements/index.d.ts +6 -0
  732. package/dist/react-sdk/configurator-ui-elements/index.js +1 -0
  733. package/dist/react-sdk/domain-application-context/BackendDataProvider.js +1 -1
  734. package/dist/react-sdk/domain-application-context/ConfigurationPersistSystemFailureHandler.js +1 -1
  735. package/dist/react-sdk/domain-application-context/FrontendDataProvider.js +1 -1
  736. package/dist/react-sdk/domain-application-context/OnPresetLoadedHandler.js +1 -0
  737. package/dist/react-sdk/domain-application-context/PublishedDataProvider.js +1 -1
  738. package/dist/react-sdk/domain-application-context/chat-hooks.d.ts +4 -0
  739. package/dist/react-sdk/domain-application-context/chat-hooks.js +1 -0
  740. package/dist/react-sdk/domain-application-context/index.d.ts +2 -0
  741. package/dist/react-sdk/domain-application-context/index.js +1 -1
  742. package/dist/react-sdk/elements/PhoenixEntityElement.js +1 -1
  743. package/dist/react-sdk/elements/PhoenixLayoutElement.js +1 -1
  744. package/dist/react-sdk/index.d.ts +7 -0
  745. package/dist/react-sdk/index.js +1 -1
  746. package/dist/react-sdk/integration/IntegrationSubscription.js +1 -0
  747. package/dist/react-sdk/integration/index.d.ts +1 -0
  748. package/dist/react-sdk/integration/index.js +1 -0
  749. package/dist/react-sdk/lifecycle-providers/ConfiguratorDataProvider.d.ts +8 -0
  750. package/dist/react-sdk/lifecycle-providers/ConfiguratorDataProvider.js +1 -0
  751. package/dist/react-sdk/lifecycle-providers/LifecycleProviders.js +1 -0
  752. package/dist/react-sdk/lifecycle-providers/index.d.ts +2 -0
  753. package/dist/react-sdk/lifecycle-providers/index.js +1 -0
  754. package/dist/react-sdk/notifications/index.d.ts +1 -0
  755. package/dist/react-sdk/notifications/index.js +1 -0
  756. package/dist/react-sdk/notifications/snackbar-action-button.d.ts +30 -0
  757. package/dist/react-sdk/notifications/snackbar-action-button.js +1 -0
  758. package/dist/react-sdk/preset-selection/PresetSelectionProvider.js +1 -0
  759. package/dist/react-sdk/preset-selection/index.d.ts +1 -0
  760. package/dist/react-sdk/preset-selection/index.js +1 -0
  761. package/dist/react-sdk/provider-slots/ConfiguratorProviderSlotHost.d.ts +11 -0
  762. package/dist/react-sdk/provider-slots/ConfiguratorProviderSlotHost.js +1 -0
  763. package/dist/react-sdk/provider-slots/configurator-provider-slot.d.ts +24 -0
  764. package/dist/react-sdk/provider-slots/configurator-provider-slot.js +1 -0
  765. package/dist/react-sdk/provider-slots/create-configurator-provider-slot.d.ts +5 -0
  766. package/dist/react-sdk/provider-slots/create-configurator-provider-slot.js +1 -0
  767. package/dist/react-sdk/provider-slots/index.d.ts +3 -0
  768. package/dist/react-sdk/provider-slots/index.js +1 -0
  769. package/dist/react-sdk/session/SessionServiceProvider.d.ts +5 -0
  770. package/dist/react-sdk/session/SessionServiceProvider.js +1 -1
  771. package/dist/ui-sdk/components/numerical-input/InputField.d.ts +2 -0
  772. package/dist/ui-sdk/components/numerical-input/InputField.js +1 -1
  773. package/dist/ui-sdk/components/numerical-input/NumericalInput.d.ts +2 -2
  774. package/dist/ui-sdk/components/numerical-input/Slider.d.ts +3 -1
  775. package/dist/ui-sdk/components/numerical-input/Slider.js +1 -1
  776. package/dist/ui-sdk/components/snackbar/Snackbar.d.ts +24 -3
  777. package/dist/ui-sdk/components/snackbar/Snackbar.js +1 -1
  778. package/dist/ui-sdk/icons/__generated/Paperclip.d.ts +3 -0
  779. package/dist/ui-sdk/icons/__generated/Paperclip.js +1 -0
  780. package/dist/ui-sdk/icons/__generated/index.d.ts +2 -0
  781. package/dist/ui-sdk/icons/__generated/index.js +1 -1
  782. package/dist/ui-sdk/icons/icons-registry.js +1 -1
  783. package/dist/ui-sdk/theme/types.d.ts +1 -1
  784. package/dist/watch/glob-matcher.d.ts +4 -4
  785. package/dist/watch/glob-matcher.js +1 -1
  786. package/dist/watch/watch.d.ts +4 -4
  787. package/dist/watch/watch.js +1 -1
  788. package/package.json +3 -3
  789. package/schema/domain-spec.json +22 -4
  790. package/dist/application-spec/caching/runtime-reference-store.js +0 -1
  791. package/dist/application-spec/core/components/index.d.ts +0 -2
  792. package/dist/application-spec/core/expressions/index.d.ts +0 -2
  793. package/dist/application-spec/generate-application/code/templates/skills/phoenix-cli-skill.d.ts +0 -1
  794. package/dist/application-spec/generate-application/code/templates/skills/phoenix-cli-skill.js +0 -1
  795. package/dist/application-spec/generate-application/code/templates/skills/phoenix-create-configurator-skill.d.ts +0 -3
  796. package/dist/application-spec/generate-application/code/templates/skills/phoenix-create-configurator-skill.js +0 -166
  797. package/dist/application-spec/generate-application/code/templates/skills/phoenix-feedback-skill.d.ts +0 -1
  798. package/dist/application-spec/generate-application/code/templates/skills/phoenix-feedback-skill.js +0 -54
  799. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.d.ts +0 -1
  800. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +0 -115
  801. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +0 -1
  802. package/dist/application-spec/generate-application/code/templates/skills/phoenix-variants-skill.d.ts +0 -1
  803. package/dist/application-spec/generate-application/code/templates/skills/phoenix-variants-skill.js +0 -6
  804. package/dist/application-spec/generate-application/implementations/phx-application-types.js +0 -1
  805. package/dist/application-spec/generate-application/implementations/phx-domain.js +0 -1
  806. package/dist/application-spec/generate-application/implementations/phx-model.js +0 -1
  807. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-model-runtime.js +0 -1
  808. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.js +0 -1
  809. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-spec-runtime.js +0 -1
  810. package/dist/application-spec/generate-application/runtime/application-runtime.js +0 -1
  811. package/dist/application-spec/generate-application/runtime/application-spec-slice.js +0 -1
  812. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-model-runtime.js +0 -1
  813. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.js +0 -1
  814. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-spec-runtime.js +0 -1
  815. package/dist/application-spec/generate-application/runtime/create-application.js +0 -1
  816. package/dist/application-spec/generate-application/runtime/generate-runtime-instance.js +0 -1
  817. package/dist/application-spec/generate-application/runtime/index.d.ts +0 -8
  818. package/dist/application-spec/generate-application/runtime/index.js +0 -1
  819. package/dist/application-spec/generate-application/runtime/migrations/migration-runtime.js +0 -1
  820. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.d.ts +0 -8
  821. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.js +0 -1
  822. package/dist/application-spec/generate-application/runtime/sections/build-user-bound-optic.d.ts +0 -8
  823. package/dist/application-spec/generate-application/runtime/sections/build-user-bound-optic.js +0 -1
  824. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +0 -1
  825. package/dist/application-spec/generate-application/runtime/sections/generate-memo-eval-plan-runtime.js +0 -1
  826. package/dist/application-spec/generate-application/runtime/sections/index.d.ts +0 -10
  827. package/dist/application-spec/generate-application/runtime/sections/index.js +0 -1
  828. package/dist/application-spec/generate-application/runtime/spec-runtime.js +0 -1
  829. package/dist/application-spec/generate-application/runtime-spec/index.d.ts +0 -5
  830. package/dist/application-spec/generate-application/runtime-spec/index.js +0 -1
  831. package/dist/application-spec/generate-application/runtime-spec/runtime-spec.d.ts +0 -103
  832. package/dist/configurator/application-runtime/extensions/systems/assistant-system/browser-details.d.ts +0 -17
  833. package/dist/configurator/application-runtime/extensions/systems/assistant-system/browser-details.js +0 -1
  834. package/dist/configurator/configurator-context/ConfiguratorDataProvider.d.ts +0 -2
  835. package/dist/configurator/configurator-context/ConfiguratorDataProvider.js +0 -1
  836. package/dist/configurator/configurator-context/IntegrationSubscription.js +0 -1
  837. package/dist/configurator/configurator-context/LifecycleProviders.js +0 -1
  838. package/dist/configurator/configurator-context/OnPresetLoadedHandler.js +0 -1
  839. package/dist/configurator/configurator-context/PresetSelectionProvider.js +0 -1
  840. package/dist/configurator/configurator-context/configurator-hooks/chat-hooks.d.ts +0 -1
  841. package/dist/configurator/configurator-context/configurator-hooks/chat-hooks.js +0 -1
  842. package/dist/configurator/configurator-context/configurator-routing/ConfiguratorRoutingProvider.js +0 -1
  843. package/dist/configurator/configurator-context/configurator-routing/OnGoToIndexHandler.js +0 -1
  844. package/dist/configurator/configurator-context/configurator-routing/index.d.ts +0 -2
  845. package/dist/configurator/configurator-context/configurator-routing/use-power-routing-lifecycle.js +0 -1
  846. package/dist/domain/available-system-components.d.ts +0 -11
  847. package/dist/domain/available-system-components.js +0 -1
  848. package/dist/domain/domain-builder.js +0 -1
  849. package/dist/domain/domain-runtime/spec/module-checks/find-assistant-form-element-errors.js +0 -1
  850. package/dist/domain/domain-runtime/spec/module-checks/index.js +0 -1
  851. package/dist/domain/domain-runtime/spec/module-checks/merge-expression-modules.js +0 -1
  852. package/dist/domain/domain-runtime/spec/module-checks/project-modules.js +0 -1
  853. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.js +0 -1
  854. package/dist/phoenix/commands/generated-env-markers.js +0 -1
  855. package/dist/phoenix/services/lingui.d.ts +0 -15
  856. package/dist/phoenix/services/lingui.js +0 -1
  857. package/dist/phoenix/services/phoenix-application.d.ts +0 -21
  858. package/dist/phoenix/services/phoenix-application.js +0 -1
  859. /package/dist/configurator/{configurator-context → pages/provider-slots}/ConfiguratorResponsiveProvider.d.ts +0 -0
  860. /package/dist/configurator/{configurator-context → pages/provider-slots}/ConfiguratorResponsiveProvider.js +0 -0
  861. /package/dist/{application-spec/core/expressions/relation-expression-params.js → domain/spec/application/admin-pages-section.js} +0 -0
  862. /package/dist/{application-spec/generate-application/runtime/spec-code/spec-code-module.js → domain/spec/application/admin-pages.js} +0 -0
  863. /package/dist/{application-spec/parse-application-files/spec/components/component-entry.js → domain/spec/application/admin-states.js} +0 -0
  864. /package/dist/{application-spec/core → domain/spec/application}/application-instance.d.ts +0 -0
  865. /package/dist/{application-spec/core → domain/spec/application}/application-instance.js +0 -0
  866. /package/dist/{application-spec/parse-application-files/spec/expressions/expression.js → domain/spec/application/configurator-states.js} +0 -0
  867. /package/dist/domain/{application/assistant/assistant-manifest.js → spec/components/bindings/index.js} +0 -0
  868. /package/dist/{application-spec/core → domain/spec}/components/component-filter.js +0 -0
  869. /package/dist/{application-spec/core → domain/spec}/components/index.js +0 -0
  870. /package/dist/{application-spec/core → domain/spec}/components/sdk-code-ref.d.ts +0 -0
  871. /package/dist/{application-spec/core → domain/spec}/components/sdk-code-ref.js +0 -0
  872. /package/dist/domain/{domain-runtime → spec}/errors/implementation-error-collector.d.ts +0 -0
  873. /package/dist/domain/{domain-runtime → spec}/errors/implementation-error-collector.js +0 -0
  874. /package/dist/domain/{domain-runtime → spec}/errors/implementation-error.d.ts +0 -0
  875. /package/dist/domain/{domain-runtime → spec}/errors/implementation-error.js +0 -0
  876. /package/dist/domain/{domain-runtime → spec}/errors/implementation-errors.d.ts +0 -0
  877. /package/dist/domain/{domain-runtime → spec}/errors/implementation-errors.js +0 -0
  878. /package/dist/domain/{domain-runtime → spec}/errors/index.d.ts +0 -0
  879. /package/dist/domain/{domain-runtime → spec}/errors/index.js +0 -0
  880. /package/dist/domain/{domain-runtime → spec}/errors/to-implementation-errors.d.ts +0 -0
  881. /package/dist/domain/{domain-runtime → spec}/errors/to-implementation-errors.js +0 -0
  882. /package/dist/{application-spec/core → domain/spec}/expressions/index.js +0 -0
  883. /package/dist/{application-spec/core → domain/spec}/expressions/relation-expression-params.d.ts +0 -0
  884. /package/dist/{application-spec/core → domain/spec}/expressions/sdk-expression-implementation.d.ts +0 -0
  885. /package/dist/{application-spec/core → domain/spec}/expressions/sdk-expression-implementation.js +0 -0
  886. /package/dist/{application-spec/parse-application-files/spec/components → domain/spec/markers}/component-prop-target.d.ts +0 -0
  887. /package/dist/{application-spec/parse-application-files/spec/components → domain/spec/markers}/component-prop-target.js +0 -0
  888. /package/dist/{application-spec/core → domain/spec}/markers/eval-marker.d.ts +0 -0
  889. /package/dist/{application-spec/core → domain/spec}/markers/eval-marker.js +0 -0
  890. /package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/element-registration.js +0 -0
  891. /package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/handler-registration.d.ts +0 -0
  892. /package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/handler-registration.js +0 -0
  893. /package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/resolve-action-modules.js +0 -0
  894. /package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/resolve-component-optic-modules.js +0 -0
  895. /package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/resolve-expression-modules.js +0 -0
  896. /package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/resolve-invariant-modules.js +0 -0
  897. /package/dist/{application-spec/generate-application/implementations → domain/spec/phx}/phx-domain.d.ts +0 -0
  898. /package/dist/{application-spec/generate-application/implementations → domain/spec/phx}/phx.js +0 -0
  899. /package/dist/{application-spec/generate-application → domain/spec}/runtime/admin-runtime/states-runtime.js +0 -0
  900. /package/dist/{application-spec/generate-application → domain/spec}/runtime/configurator-runtime/states-runtime.js +0 -0
  901. /package/dist/{application-spec/generate-application/runtime/sections → domain/spec/runtime/expressions}/reflection-constants-runtime.js +0 -0
  902. /package/dist/{application-spec/generate-application → domain/spec}/runtime/factory-data/factory-data-runtime.js +0 -0
  903. /package/dist/{application-spec/generate-application → domain/spec}/runtime/factory-data/index.d.ts +0 -0
  904. /package/dist/{application-spec/generate-application → domain/spec}/runtime/factory-data/index.js +0 -0
  905. /package/dist/{application-spec/generate-application → domain/spec}/runtime/migrations/index.d.ts +0 -0
  906. /package/dist/{application-spec/generate-application → domain/spec}/runtime/migrations/index.js +0 -0
  907. /package/dist/{application-spec/generate-application/runtime/sections → domain/spec/runtime/optics}/component-optic.js +0 -0
  908. /package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/actions-runtime.js +0 -0
  909. /package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/assistant-runtime.js +0 -0
  910. /package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/data-runtime.js +0 -0
  911. /package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/preset-runtime.js +0 -0
  912. /package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/theme-runtime.js +0 -0
  913. /package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/transformers-runtime.js +0 -0
  914. /package/dist/{application-spec/generate-application → domain/spec}/runtime/spec-code/index.d.ts +0 -0
  915. /package/dist/{application-spec/generate-application → domain/spec}/runtime/spec-code/index.js +0 -0
  916. /package/dist/{application-spec/generate-application → domain/spec}/runtime/spec-code/resolve-spec-code.js +0 -0
  917. /package/dist/{application-spec/generate-application → domain/spec}/runtime/spec-code/spec-code-module.d.ts +0 -0
  918. /package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/decode-runtime-spec.d.ts +0 -0
  919. /package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/decode-runtime-spec.js +0 -0
  920. /package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/encode-runtime-spec.d.ts +0 -0
  921. /package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/encode-runtime-spec.js +0 -0
  922. /package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/encoded-runtime-spec.d.ts +0 -0
  923. /package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/encoded-runtime-spec.js +0 -0
  924. /package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/runtime-spec.js +0 -0
  925. /package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/spec-code-id.js +0 -0
  926. /package/dist/domain/{application/assistant/assistant-resolved-manifest.js → spec/sections/assistant/assistant-manifest.js} +0 -0
  927. /package/dist/domain/{application → spec/sections}/assistant/form/assistant-form-element-name.d.ts +0 -0
  928. /package/dist/domain/{application → spec/sections}/assistant/form/assistant-form-element-name.js +0 -0
  929. /package/dist/domain/{application → spec/sections}/assistant/form/assistant-form-elements.d.ts +0 -0
  930. /package/dist/domain/{application → spec/sections}/assistant/form/assistant-form-elements.js +0 -0
  931. /package/dist/domain/{application → spec/sections}/assistant/form/assistant-resource-path.d.ts +0 -0
  932. /package/dist/domain/{application → spec/sections}/assistant/form/assistant-resource-path.js +0 -0
  933. /package/dist/domain/{application → spec/sections}/assistant/form/index.d.ts +0 -0
  934. /package/dist/domain/{application → spec/sections}/assistant/form/index.js +0 -0
  935. /package/dist/{configurator/configurator-context → react-sdk/domain-application-context}/OnPresetLoadedHandler.d.ts +0 -0
  936. /package/dist/{configurator/configurator-context → react-sdk/integration}/IntegrationSubscription.d.ts +0 -0
  937. /package/dist/{configurator/configurator-context → react-sdk/lifecycle-providers}/LifecycleProviders.d.ts +0 -0
  938. /package/dist/{configurator/configurator-context → react-sdk/preset-selection}/PresetSelectionProvider.d.ts +0 -0
@@ -1,37 +1,14 @@
1
- import { Branded } from '@salsita-ai/common/utils';
1
+ import type { Presets as PresetsData, SpecPreset } from '#package/domain';
2
2
  import type { ParseContext } from '../../../core/index.js';
3
3
  import type { MergedPresets } from '../../merge/index.js';
4
4
  import type { RawPreset } from '../../raw-spec/index.js';
5
5
  import type { Relations } from '../relations/index.js';
6
6
  import type { ModelVersion } from './model-version.js';
7
- /**
8
- * A single entity within a preset — id, type, and shape properties.
9
- * Properties are validated against the entity's schema from ConfigurationSchema.
10
- */
11
- export type PresetEntity = Branded<'PresetEntity', {
12
- readonly id: string;
13
- readonly type: string;
14
- readonly properties: Readonly<Record<string, unknown>>;
15
- }>;
16
- /**
17
- * A single parsed preset — the root entity type, initial entities, and optional metadata.
18
- * Represents one initial configuration state for a configurator deployment.
19
- */
20
- export type Preset = Branded<'Preset', {
21
- readonly rootEntityType: string;
22
- readonly initialDomainEntities: readonly PresetEntity[];
23
- readonly name?: string;
24
- readonly description?: string;
25
- readonly img?: string;
26
- readonly imgAlt?: string;
27
- readonly detailTitle?: string;
28
- readonly detailDescription?: string;
29
- readonly tags?: readonly string[];
30
- }>;
31
- /** All parsed presets for a parsed configurator or admin model. */
32
- export type Presets = Branded<'Presets', {
33
- readonly presets: readonly Preset[];
34
- }>;
7
+ export type { PresetEntity } from '#package/domain';
8
+ /** The parsed preset; see {@link SpecPreset} in `domain`. */
9
+ export type Preset = SpecPreset;
10
+ /** The parsed presets of a domain; see {@link PresetsData | Presets} in `domain`. */
11
+ export type Presets = PresetsData;
35
12
  export declare const Preset: (raw: RawPreset, latestModel: ModelVersion, relations: Relations, ctx: ParseContext) => Preset | undefined;
36
13
  /**
37
14
  * Parses and validates merged presets against the domain model.
@@ -1,26 +1,10 @@
1
- import { Branded } from '@salsita-ai/common/utils';
2
- import { type EnhancedJsonSchemaType, type JsonSchema, type ParseContext, type PhoenixDefinitions } from '../../../core/index.js';
1
+ import type { Actions as ActionsData } from '#package/domain';
2
+ import { type ParseContext, type PhoenixDefinitions } from '../../../core/index.js';
3
3
  import type { MergedActions } from '../../merge/index.js';
4
- import { ActionName, type ModelVersion } from '../model/index.js';
5
- /** One parameter of an action: its declared schema, and whether a call has to pass it (a nullable param is optional). */
6
- export interface ActionParam {
7
- readonly schema: EnhancedJsonSchemaType;
8
- readonly required: boolean;
9
- }
10
- /**
11
- * One validated action declaration. `params` and `result` keep the enhanced schemas for codegen and
12
- * for consumers that expose the action; `paramsSchema` is the AJV-ready object schema of the parameters, with the
13
- * refs resolved into `$defs`, which the action system validates the arguments of a call against.
14
- */
15
- export type Action = Branded<'Action', {
16
- readonly name: ActionName;
17
- readonly description?: string;
18
- readonly params: Readonly<Record<string, ActionParam>>;
19
- readonly result: Readonly<Record<string, EnhancedJsonSchemaType>>;
20
- readonly paramsSchema: JsonSchema;
21
- }>;
22
- /** The validated `actions` section: every declared action by name, in declaration order; empty when the spec declares none. */
23
- export type Actions = Branded<'Actions', ReadonlyMap<ActionName, Action>>;
4
+ import { type ModelVersion } from '../model/index.js';
5
+ export type { ActionParam, Action } from '#package/domain';
6
+ /** The validated `actions` section by action name; see {@link ActionsData | Actions} in `domain`. */
7
+ export type Actions = ActionsData;
24
8
  interface ActionsContext {
25
9
  readonly latestModel: ModelVersion;
26
10
  readonly phxDefinitions: PhoenixDefinitions;
@@ -32,4 +16,3 @@ interface ActionsContext {
32
16
  * invalid, so nothing downstream builds on a partial list.
33
17
  */
34
18
  export declare const Actions: (merged: MergedActions, context: ActionsContext, ctx: ParseContext) => Actions | undefined;
35
- export {};
@@ -1,21 +1,6 @@
1
- import { Branded } from '@salsita-ai/common/utils';
1
+ import type { AppMetadata as AppMetadataData } from '#package/domain';
2
2
  import type { ParseContext } from '../../../core/index.js';
3
3
  import type { MergedAppMetadata } from '../../merge/index.js';
4
- import { ApplicationVersion } from './application-version.js';
5
- /**
6
- * Validated application metadata — version, auth, infrastructure settings.
7
- * Used by codegen for ApplicationVersion export and builder chain methods.
8
- */
9
- export type AppMetadata = Branded<'AppMetadata', {
10
- readonly applicationVersion: ApplicationVersion;
11
- readonly workspace: boolean;
12
- readonly webComponentTag: string | undefined;
13
- readonly pageTitle: string | undefined;
14
- readonly useAuthHook: boolean;
15
- readonly useClerk: boolean;
16
- readonly enableAdminRelease: boolean;
17
- readonly jsonSchemaValidator: 'ajv' | 'csp-compatible';
18
- readonly gltfDecoder: 'js' | 'wasm';
19
- readonly collectFinalizeData: boolean;
20
- }>;
4
+ /** The validated application metadata; see {@link AppMetadataData | AppMetadata} in `domain`. */
5
+ export type AppMetadata = AppMetadataData;
21
6
  export declare const AppMetadata: (merged: MergedAppMetadata, ctx: ParseContext) => AppMetadata | undefined;
@@ -1,9 +1,5 @@
1
- import { Branded } from '@salsita-ai/common/utils';
1
+ import type { ApplicationVersion as ApplicationVersionData } from '#package/domain';
2
2
  import type { ParseContext } from '../../../core/index.js';
3
- /**
4
- * Branded semantic version (x.y.z) of the application.
5
- * Exported by codegen as the `ApplicationVersion` constant and stored as
6
- * `applicationVersion` on the deployment record.
7
- */
8
- export type ApplicationVersion = Branded<'ApplicationVersion', string>;
3
+ /** The semantic version of the application; see {@link ApplicationVersionData | ApplicationVersion} in `domain`. */
4
+ export type ApplicationVersion = ApplicationVersionData;
9
5
  export declare const ApplicationVersion: (version: string, ctx: ParseContext) => ApplicationVersion | undefined;
@@ -1 +1 @@
1
- import{isArray as e}from"@salsita-ai/common/utils";import{ASSISTANT_HINTS as t,AssistantFieldClashError as r,buildAssistantManifest as i,describeAssistantValues as n,mergeAssistantFields as s,resolveAssistantField as o}from"#package/domain";import{DiagnosticCode as a,diagnosticMessages as l}from"../../../../errors/index.js";import{createSchemaRefResolver as S,isNullableSchema as p,phxDefinitionRefName as N}from"../../common/index.js";import{resolveAssistantFieldType as T}from"./assistant-field-type.js";import{resolveFormElements as c}from"./assistant-form-elements.js";let d="AnyDomainEntity",E="RecipeGroup",f="Recipe",A="DryRun",_="FieldOption",m="agentScreenshot",u=/^(?!(true|false|null)$)[_A-Za-z][_0-9A-Za-z]*$/,O={section:"childRecipes",component:"childEntityRecipes",mutation:"addChild"},I={section:"replaceRecipes",component:"replaceEntityRecipes",mutation:"replaceEntity"},y=new Set(["id","type","meta"]),h=new Set(["Query","Mutation","Navigation",E,f,A,"DryRunError",_,"Screenshot","JSON","String","Int","Float","Boolean","ID"]),v=new Set([E,f,_,A]),b=new Set(["id","type"]),g="A string, a message descriptor or a multilingual object; passed without translation.",R=(e,t)=>Object.entries(e).find(([e])=>e===t)?.[1],M=(e,{property:t,writableKey:r},i,{resolveRef:s,exposed:o,sources:S},p)=>{let N=Object.entries(R(S,e)??{}),c=o.get(e)?.find(({source:e})=>e===t)?.name??N.find(([,{source:e}])=>e===t)?.[0],d=void 0===c?N.find(([e])=>e===t)?.[1]:void 0;if(d)return void p.at(r,t).error(a.ASSISTANT_FIELD_NAME_CONFLICT,l.ASSISTANT_FIELD_NAME_CONFLICT(e,t,[d.source,t],`${r}.${t}`));let{type:E,enumValues:f,localized:A,description:_}=T(i,s),m={...E,nonNull:!1},u=c??t,O=void 0===c?n(_,f):void 0;return A?{name:u,property:t,type:{kind:"scalar",name:"JSON",nonNull:!1},description:O?`${O} ${g}`:g}:{name:u,property:t,type:m,...void 0===O?{}:{description:O}}},C=(e,t,{model:r,components:i})=>{let n=new Set([e,...[...r.aliases].filter(([,t])=>t.includes(e)).map(([e])=>e)]);return i.filter(({componentName:e,typeOrAlias:r})=>e===t&&n.has(r)).map(({instanceName:e})=>String(e))},j=(...e)=>t.filter(t=>e.some(e=>e?.includes(t))),w=(e,t,r,i)=>{let{model:n}=r,s=new Map,o=new Map;for(let[S,{groups:p,hints:N}]of Object.entries(e)){let e=n.entityTypes.find(e=>e===S),T=e?[e]:[...n.aliases].find(([e])=>e===S)?.[1];if(!T){i.at(S).error(a.ASSISTANT_UNKNOWN_TYPE,l.ASSISTANT_UNKNOWN_TYPE(t.section,S));continue}for(let[e,n]of(T.forEach(e=>o.set(e,j(o.get(e),N))),Object.entries(p))){let o=i.at(S,"groups",e),p=`${S}.groups.${e}`,N={groupId:n?.as??e,instanceName:e,...n?.description===void 0?{}:{description:n.description},dryRuns:n?.allowDryRuns??!0};for(let i of T){let n=C(i,t.component,r),T=s.get(i)??[],c=T.find(e=>e.group.groupId===N.groupId);n.includes(e)?c?o.error(a.ASSISTANT_DUPLICATE_RECIPE_GROUP,l.ASSISTANT_DUPLICATE_RECIPE_GROUP(t,i,N.groupId,[c.entry,p])):s.set(i,[...T,{group:N,entry:p,entryCtx:o}]):o.error(a.ASSISTANT_UNKNOWN_RECIPE_GROUP,l.ASSISTANT_UNKNOWN_RECIPE_GROUP(t,S,e,i,n))}}}let S=n.entityTypes.flatMap(e=>{let t=s.get(e);return t?[{entityType:e,groups:t}]:[]});return{groups:Object.fromEntries(S.map(({entityType:e,groups:t})=>[e,t.map(({group:e})=>e)])),hints:o,metaEntries:new Map(S.flatMap(({entityType:e,groups:[t]})=>t?[[e,t.entryCtx]]:[]))}},P=(e,t,{model:r,components:i})=>{let n=new Set([e,...[...r.aliases].filter(([,t])=>t.includes(e)).map(([e])=>e)]),s=i.find(e=>e.componentName===m&&String(e.instanceName)===t&&n.has(e.typeOrAlias));if(s?.implementation.kind!=="userBound"||"composite"!==s.implementation.implementation.kind)return;let o=s.implementation.implementation.resolvedProps.exportState;return"string"==typeof o?o:void 0},D=e=>`${e}Meta`,L=e=>`${e}ScreenshotView`,U=e=>`${e.charAt(0).toUpperCase()+e.slice(1)}Result`,W=e=>{let t=(({anyOf:e,oneOf:t})=>[...e??[],...t??[]].filter(e=>"null"!==e.type))(e);return e.$ref||1!==t.length?e:t[0]},$=(e,t)=>{let{type:r,enumValues:i,localized:s,description:o}=T(e,t),a={...r,nonNull:!1},l=s?`${n(o,i)??""} ${g}`.trim():n(o,i);return{type:{...s?{kind:"scalar",name:"JSON",nonNull:!1}:a,nonNull:r.nonNull},...void 0===l?{}:{description:l}}},F=(t,r)=>{let i=(t=>{let r=W(t),i=r?.type==="array"&&r.items&&!e(r.items)?W(r.items):void 0,n=i??r;if(n?.$ref!==void 0&&"$DomainEntity"===N(n.$ref))return{target:n.references??d,list:void 0!==i}})(t);if(i)return{kind:"edge",...i,nullable:p(t,r),...void 0===t.description?{}:{description:t.description}};let{type:s,enumValues:o,localized:a,description:l}=T(t,r),S=n(l,o);return a?{kind:"value",type:{kind:"scalar",name:"JSON",nonNull:s.nonNull},description:`${l??""} ${g}`.trim()}:{kind:"value",type:s,...void 0===S?{}:{description:S}}},V=(e,t)=>{let{type:r,enumValues:i,localized:n,description:s}=T(e,t);return{type:{kind:"value",type:r},localized:!0===n,description:s,enumValues:i}},K=(e,t,r,i,s)=>{let o=t.startsWith("$")?((e,t,r,i)=>{let n=((e,t,{expressions:r,entityTypes:i})=>{let n=i.find(t=>t===e);for(let i of void 0===n?[e]:r.entityExpressions.get(n)?.shapeGroups??[]){let e=[...r.expressions.get(i)?.values()??[]].find(e=>e.name===t);if(e?.declaredSchema)return{implementation:e.implementation,declaredSchema:e.declaredSchema}}})(e.name,t,r);if(!n)return void i.error(a.ASSISTANT_UNKNOWN_FIELD,l.ASSISTANT_UNKNOWN_FIELD("entities",e.name,t));let{implementation:s}=n;if("violations"===s.kind)return void i.error(a.ASSISTANT_UNSUPPORTED_EXPRESSION,l.ASSISTANT_UNSUPPORTED_EXPRESSION(e.name,t));if("relation"===s.kind){let[{target:e,cardinality:t}]=s.params;return{type:{kind:"edge",target:e,cardinality:t},localized:!1,description:void 0}}return V(n.declaredSchema,r.resolveRef)})(e,t,i,s):((e,t,{resolveRef:r},i)=>{let n=Object.entries(e.shape.properties).find(([e])=>e===t)?.[1];return n?V(n,r):void i.error(a.ASSISTANT_UNKNOWN_FIELD,l.ASSISTANT_UNKNOWN_FIELD("entities",e.name,t))})(e,t,i,s);if(!o)return;let S=r?.as??(t.startsWith("$")?`_${t.slice(1)}`:t);return y.has(S)?void s.error(a.ASSISTANT_RESERVED_FIELD_NAME,l.ASSISTANT_RESERVED_FIELD_NAME(e.name,t,S)):{name:S,source:t,type:o.type,localized:o.localized,description:n(r?.description??o.description,o.enumValues),describedByManifest:r?.description!==void 0,enumValues:o.enumValues,valueDescription:r?.description??o.description,...r?.lenses?.length?{lenses:[...new Set(r.lenses)]}:{}}},k=(e,t,r,i,n)=>s(t,r,i,(t,r,i)=>{n.error(a.ASSISTANT_FIELD_NAME_CONFLICT,l.ASSISTANT_FIELD_NAME_CONFLICT(e,t,[r,i]))});export const resolveAssistantManifest=(e,{model:t,states:r,phxDefinitions:i,expressions:n,components:s,actions:p},N)=>{let E=N.errors.length,f=N.at("entities"),A=S(t.commonTypes,i);for(let e of t.resolvedShapes.keys())h.has(e)&&N.error(a.ASSISTANT_RESERVED_TYPE_NAME,l.ASSISTANT_RESERVED_TYPE_NAME(e,[...h]));let _=((e,t,r)=>{let i=new Map;for(let n of e){let e=[];for(let[i,s]of Object.entries(n.entries)){let o=K(n,i,s,t,r.at(n.name,i));o&&e.push(o)}i.set(n.name,e)}return i})(((e,t,r)=>{let i=[];for(let[r,n]of t.resolvedShapes){let t=e[r];t&&i.push({name:r,shape:n,entries:t})}let n=new Set(t.resolvedShapes.keys());for(let t of Object.keys(e))n.has(t)||r.at(t).error(a.ASSISTANT_UNKNOWN_TYPE,l.ASSISTANT_UNKNOWN_TYPE("entities",t));return i})(e.entities??{},t,f),{resolveRef:A,expressions:n,entityTypes:t.entityTypes},f),y=k(d,[],_.get(d)??[],()=>void 0,N),W=new Map([[d,y]]);for(let e of t.aliases.keys())e!==d&&W.set(e,k(e,[y],_.get(e)??[],()=>void 0,N));for(let e of t.entityTypes){let r=[d,...[...t.aliases].filter(([t,r])=>t!==d&&r.includes(e)).map(([e])=>e)],i=[...t.resolvedShapes].find(([t])=>t===e)?.[1];W.set(e,k(e,r.map(e=>W.get(e)??[]),_.get(e)??[],e=>{let t=Object.entries(i?.properties??{}).find(([t])=>t===e)?.[1];return t&&T(t,A).enumValues},N))}let V=Object.fromEntries(t.entityTypes.map(e=>[e,Object.fromEntries((W.get(e)??[]).map(({name:e,source:t,localized:r})=>[e,r?{source:t,localized:!0}:{source:t}]))])),Y=w(e.childRecipes??{},O,{model:t,components:s},N.at("childRecipes")),x=w(e.replaceRecipes??{},I,{model:t,components:s},N.at("replaceRecipes")),H=((e,t,r)=>{let i=new Set;for(let n of Object.keys(e)){let e=t.entityTypes.find(e=>e===n),s=e?[e]:[...t.aliases].find(([e])=>e===n)?.[1];s?s.forEach(e=>i.add(e)):r.at(n).error(a.ASSISTANT_UNKNOWN_TYPE,l.ASSISTANT_UNKNOWN_TYPE("deletable",n))}return t.entityTypes.filter(e=>i.has(e))})(e.deletable??{},t,N.at("deletable")),z=((e,t,r)=>{let{model:i}=t,n=((e,t,r)=>{let i=new Map;for(let[n,s]of Object.entries(e)){let e=t.entityTypes.find(e=>e===n),o=e?[e]:[...t.aliases].find(([e])=>e===n)?.[1],S=[...t.resolvedShapes].find(([e])=>e===n)?.[1];if(!o||!S){r.at(n).error(a.ASSISTANT_UNKNOWN_TYPE,l.ASSISTANT_UNKNOWN_TYPE("writable",n));continue}for(let e of Object.keys(s)){let t=r.at(n,e);e.startsWith("$")||b.has(e)?t.error(a.ASSISTANT_NOT_WRITABLE,l.ASSISTANT_NOT_WRITABLE(n,e)):R(S.properties,e)?o.forEach(t=>{let r=i.get(t)??new Map;i.set(t,r.has(e)?r:r.set(e,n))}):t.error(a.ASSISTANT_UNKNOWN_FIELD,l.ASSISTANT_UNKNOWN_FIELD("writable",n,e))}}return i})(e,i,r);return i.entityTypes.flatMap(e=>{let s=[...i.resolvedShapes].find(([t])=>t===e)?.[1],o=[...n.get(e)??[]].flatMap(([i,n])=>{let o=s&&R(s.properties,i);return(o&&M(e,{property:i,writableKey:n},o,t,r))??[]});return o.length>0?[{entityType:e,fields:o}]:[]})})(e.writable??{},{model:t,resolveRef:A,exposed:_,sources:V},N.at("writable")),G=((e,t,r,i)=>{let{model:n}=r,s=new Map;for(let[o,S]of Object.entries(e)){let e=n.entityTypes.find(e=>e===o),p=e?[e]:[...n.aliases].find(([e])=>e===o)?.[1]??[];for(let[e,n]of Object.entries(S)){let S=n?.options;if(!S)continue;let N=i.at(o,e,"options"),T=`${o}.${e}`;for(let i of p){let n=t.find(e=>e.entityType===i)?.fields.find(t=>t.property===e);if(!n)continue;let o=S.as??`${n.name}Options`,p=C(i,S.componentType,r),c=s.get(i)??[],d=c.find(e=>e.options.edgeName===o||e.options.field===n.name);if(p.includes(S.instanceName))if(o===O.section||o===I.section||"screenshot"===o)N.error(a.ASSISTANT_RESERVED_OPTIONS_EDGE_NAME,l.ASSISTANT_RESERVED_OPTIONS_EDGE_NAME(T,o,n.name));else if(d)N.error(a.ASSISTANT_DUPLICATE_OPTIONS_EDGE,l.ASSISTANT_DUPLICATE_OPTIONS_EDGE(i,d.options.edgeName===o?{edgeName:o}:{field:n.name},[d.entry,T]));else{let e={field:n.name,edgeName:o,componentType:S.componentType,instanceName:S.instanceName,validate:S.validate??!0,dryRuns:S.allowDryRuns??!0};s.set(i,[...c,{options:e,hints:j(S.hints),entry:T,entryCtx:N}])}else N.error(a.ASSISTANT_UNKNOWN_OPTIONS_COMPONENT,l.ASSISTANT_UNKNOWN_OPTIONS_COMPONENT(T,S,i,p))}}}return s})(e.writable??{},z,{model:t,components:s},N.at("writable")),B=((e,t,r)=>{let{model:i,states:n}=t,s=new Map;for(let[o,S]of Object.entries(e)){let e=i.entityTypes.find(e=>e===o),p=e?[e]:[...i.aliases].find(([e])=>e===o)?.[1];if(!p){r.at(o).error(a.ASSISTANT_UNKNOWN_TYPE,l.ASSISTANT_UNKNOWN_TYPE("screenshots",o));continue}for(let[e,{description:i,as:N}]of Object.entries(S)){let S=r.at(o,e),T=`${o}.${e}`,c={view:N??e,instanceName:e,description:i};if(!u.test(c.view)){S.error(a.ASSISTANT_INVALID_SCREENSHOT_VIEW_NAME,l.ASSISTANT_INVALID_SCREENSHOT_VIEW_NAME(o,e,c.view));continue}for(let r of p){let i=C(r,m,t),p=P(r,e,t),N=s.get(r)??[],d=N.find(e=>e.view.view===c.view);i.includes(e)?void 0===p||n.exportStates.includes(p)?d?S.error(a.ASSISTANT_DUPLICATE_SCREENSHOT_VIEW,l.ASSISTANT_DUPLICATE_SCREENSHOT_VIEW(r,c.view,[d.entry,T])):s.set(r,[...N,{view:c,entry:T,entryCtx:S}]):S.error(a.ASSISTANT_UNKNOWN_SCREENSHOT_EXPORT_STATE,l.ASSISTANT_UNKNOWN_SCREENSHOT_EXPORT_STATE(o,e,p,n.exportStates)):S.error(a.ASSISTANT_UNKNOWN_SCREENSHOT_VIEW,l.ASSISTANT_UNKNOWN_SCREENSHOT_VIEW(o,e,r,i))}}}let o=i.entityTypes.flatMap(e=>{let t=s.get(e);return t?[{entityType:e,views:t}]:[]});return{views:new Map(o.map(({entityType:e,views:t})=>[e,t.map(({view:e})=>e)])),metaEntries:new Map(o.flatMap(({entityType:e,views:[t]})=>t?[[e,t.entryCtx]]:[]))}})(e.screenshots??{},{model:t,components:s,states:r},N.at("screenshots"));var J=[Y.metaEntries,x.metaEntries,new Map([...G].flatMap(([e,[t]])=>t?[[e,t.entryCtx]]:[])),B.metaEntries];for(let e of t.entityTypes){let r=J.flatMap(t=>t.get(e)??[])[0],i=D(e);r&&[...t.resolvedShapes.keys()].some(e=>e===i)&&r.error(a.ASSISTANT_META_TYPE_NAME_CONFLICT,l.ASSISTANT_META_TYPE_NAME_CONFLICT(e,i))}for(let[e,r]of B.metaEntries){let i=L(e);[...t.resolvedShapes.keys()].some(e=>e===i)&&r.error(a.ASSISTANT_SCREENSHOT_VIEW_TYPE_NAME_CONFLICT,l.ASSISTANT_SCREENSHOT_VIEW_TYPE_NAME_CONFLICT(e,i))}let X=t.entityTypes.filter(e=>(Y.groups[e]?.length??0)>0||(x.groups[e]?.length??0)>0||(G.get(e)?.length??0)>0||B.views.has(e)).flatMap(e=>[D(e),...B.views.has(e)?[L(e)]:[]]),Z=((e,{actions:t,resolveRef:r,builtInMutations:i,typeNames:n},s)=>{let o=[],S=[...t.values()].map(e=>String(e.name));for(let[p,N]of Object.entries(e)){let e=s.at(p),T=[...t.values()].find(e=>e.name===p);if(!T){e.error(a.ASSISTANT_UNKNOWN_ACTION,l.ASSISTANT_UNKNOWN_ACTION(p,S));continue}let c=N?.as??p,d=o.find(e=>e.fieldName===c),E=U(c);if(i.has(c)||d){e.error(a.ASSISTANT_MUTATION_NAME_CONFLICT,l.ASSISTANT_MUTATION_NAME_CONFLICT(p,c,d?`"assistant.actions.${d.actionName}" already exposes`:"the built-in mutation of that name already takes"));continue}if(n.has(E)||o.some(e=>U(e.fieldName)===E)){e.error(a.ASSISTANT_ACTION_RESULT_TYPE_CONFLICT,l.ASSISTANT_ACTION_RESULT_TYPE_CONFLICT(p,c,E));continue}let f=N?.description??T.description;o.push({fieldName:c,actionName:p,...void 0===f?{}:{description:f},args:Object.fromEntries(Object.entries(T.params).map(([e,{schema:t}])=>[e,$(t,r)])),result:Object.fromEntries(Object.entries(T.result).map(([e,t])=>[e,F(t,r)]))})}return o})(e.actions??{},{actions:p,resolveRef:A,builtInMutations:new Set(["deleteEntity",O.mutation,I.mutation,...z.map(({entityType:e})=>`modify${e}`)]),typeNames:new Set([...h,...t.resolvedShapes.keys(),...X])},N.at("actions")),Q=((e,t)=>{let r=e.lenses??{},i=new Set;for(let[n,s]of Object.entries(e.entities??{}))for(let[e,o]of Object.entries(s))for(let s of o?.lenses??[])Object.hasOwn(r,s)?i.add(s):t.at("entities",n,e,"lenses").error(a.ASSISTANT_UNKNOWN_LENS,l.ASSISTANT_UNKNOWN_LENS(`${n}.${e}`,s,Object.keys(r)));for(let e of Object.keys(r))v.has(e)?t.at("lenses",e).error(a.ASSISTANT_RESERVED_LENS_NAME,l.ASSISTANT_RESERVED_LENS_NAME(e,[...v])):i.has(e)||t.at("lenses",e).error(a.ASSISTANT_EMPTY_LENS,l.ASSISTANT_EMPTY_LENS(e));return Object.fromEntries(Object.entries(r).map(([e,{description:t,maxDepth:r}])=>[e,{description:t,maxDepth:r??1}]))})(e,N),q=c(e.formElements??{},N.at("formElements"));if(N.errors.length>E)return;let ee=e=>Object.fromEntries(Object.entries(e).map(([e,t])=>[e,{hints:j(t.hints),groups:Object.entries(t.groups).map(([e,t])=>({instanceName:e,groupId:t?.as??e,...t?.description===void 0?{}:{description:t.description},dryRuns:t?.allowDryRuns??!0}))}]));return{declarations:{entities:Object.fromEntries(Object.keys(e.entities??{}).map(e=>[e,(_.get(e)??[]).map(e=>({name:e.name,source:e.source,type:e.type,localized:e.localized,describedByManifest:e.describedByManifest,...void 0===e.description?{}:{description:e.description},...void 0===e.valueDescription?{}:{valueDescription:e.valueDescription},...void 0===e.enumValues?{}:{enumValues:e.enumValues},...void 0===e.lenses?{}:{lenses:e.lenses}}))])),enumValues:Object.fromEntries(t.entityTypes.map(e=>[e,Object.fromEntries(Object.entries(t.resolvedShapes.get(e)?.properties??{}).flatMap(([e,t])=>{let r=T(t,A).enumValues;return r?[[e,r]]:[]}))])),deletable:Object.keys(e.deletable??{}),writable:Object.fromEntries(Object.entries(e.writable??{}).map(([e,r])=>[e,Object.fromEntries(Object.entries(r).map(([r,i])=>[r,{defaultOptionsName:i?.options?.as===void 0,members:Object.fromEntries(t.entityTypes.filter(r=>r===e||[...t.aliases].find(([t])=>t===e)?.[1].includes(r)).flatMap(i=>{let n=R(t.resolvedShapes.get(i)?.properties??{},r),s=n&&M(i,{property:r,writableKey:e},n,{model:t,resolveRef:A,exposed:new Map,sources:{}},N.at("writable")),o=G.get(i)?.find(t=>t.entry===`${e}.${r}`);return s?[[i,{field:s,...T(n,A).localized?{exposedDescription:g}:{},...o?{options:{options:o.options,hints:o.hints}}:{}}]]:[]}))}]))])),childRecipes:ee(e.childRecipes??{}),replaceRecipes:ee(e.replaceRecipes??{}),screenshots:Object.fromEntries(Object.entries(e.screenshots??{}).map(([e,t])=>[e,Object.entries(t).map(([e,{description:t,as:r}])=>({view:r??e,instanceName:e,description:t}))]))},entityTypes:t.entityTypes,aliases:Object.fromEntries(t.aliases),exampleType:t.rootEntityTypes[0]??t.entityTypes[0],states:{navigationStates:r.navigationStates,viewStates:r.viewStates,toolStates:r.toolStates},deletableTypes:H,writableTypes:z,actionFields:Z,childRecipes:Object.fromEntries(Object.entries(Y.groups).map(([e,t])=>[e,{groups:t,hints:Y.hints.get(e)??[]}])),replaceRecipes:Object.fromEntries(Object.entries(x.groups).map(([e,t])=>[e,{groups:t,hints:x.hints.get(e)??[]}])),optionsEdges:Object.fromEntries([...G].map(([e,t])=>[e,t.map(({options:e,hints:t})=>({options:e,hints:t}))])),screenshots:Object.fromEntries(B.views),fields:Object.fromEntries([...W].map(([e,t])=>[e,t.map(t=>o(t,_.get(e)??[]))])),lenses:Q,formElements:q}};export const createAssistantSchema=(e,t,n)=>{let s=resolveAssistantManifest(e,t,n);if(s)try{return{...i(s),resolved:s}}catch(e){if(e instanceof r)return void n.at("entities").error(a.ASSISTANT_FIELD_SHAPE_CONFLICT,l.ASSISTANT_FIELD_SHAPE_CONFLICT(e.fieldName,e.exposures));n.error(a.ASSISTANT_INVALID_SCHEMA,l.ASSISTANT_INVALID_SCHEMA([e instanceof Error?e.message:String(e)]));return}};
1
+ import{isArray as e}from"@salsita-ai/common/utils";import{ASSISTANT_HINTS as t,AssistantFieldClashError as i,buildAssistantManifest as r,describeAssistantValues as n,mergeAssistantFields as s,resolveAssistantField as o}from"#package/domain";import{DiagnosticCode as a,diagnosticMessages as l}from"../../../../errors/index.js";import{ASSISTANT_OPTION_COMPONENT_TYPES as S,GRAPHQL_NAME_PATTERN as N}from"../../../raw-spec/index.js";import{createSchemaRefResolver as p,isNullableSchema as T,phxDefinitionRefName as c}from"../../common/index.js";import{resolveAssistantFieldType as _}from"./assistant-field-type.js";import{resolveFormElements as d}from"./assistant-form-elements.js";let E="AnyDomainEntity",A="RecipeGroup",m="Recipe",f="DryRun",I="FieldOption",O="agentScreenshot",u=/^(?!(true|false|null)$)[_A-Za-z][_0-9A-Za-z]*$/,y={section:"childRecipes",component:"childEntityRecipes",mutation:"addChild",typeSuffix:"ChildRecipes"},h={section:"replaceRecipes",component:"replaceEntityRecipes",mutation:"replaceEntity",typeSuffix:"ReplaceRecipes"},v=new Set(["id","type","meta"]),R=new Set(["Query","Mutation","Navigation",A,m,f,"DryRunError",I,"Screenshot","JSON","String","Int","Float","Boolean","ID"]),b=new Set([A,m,I,f]),M=new Set(["id","type"]),C="A string, a message descriptor or a multilingual object; passed without translation.",g=(e,t)=>Object.entries(e).find(([e])=>e===t)?.[1],P=(e,{property:t,writableKey:i},r,{resolveRef:s,exposed:o,sources:S},N)=>{let p=Object.entries(g(S,e)??{}),T=o.get(e)?.find(({source:e})=>e===t)?.name??p.find(([,{source:e}])=>e===t)?.[0],c=void 0===T?p.find(([e])=>e===t)?.[1]:void 0;if(c)return void N.at(i,t).error(a.ASSISTANT_FIELD_NAME_CONFLICT,l.ASSISTANT_FIELD_NAME_CONFLICT(e,t,[c.source,t],`${i}.${t}`));let{type:d,enumValues:E,localized:A,description:m}=_(r,s),f={...d,nonNull:!1},I=T??t,O=void 0===T?n(m,E):void 0;return A?{name:I,property:t,type:{kind:"scalar",name:"JSON",nonNull:!1},description:O?`${O} ${C}`:C}:{name:I,property:t,type:f,...void 0===O?{}:{description:O}}},j=(e,t)=>new Set([e,...[...t.aliases].filter(([,t])=>t.includes(e)).map(([e])=>e)]),w=(e,t,{model:i,components:r})=>{let n=j(e,i);return r.filter(({componentName:e,typeOrAlias:i})=>e===t&&n.has(i)).map(({instanceName:e})=>String(e))},D=(e,t,{model:i,components:r})=>{let n=j(e,i);return r.flatMap(({componentName:e,typeOrAlias:i,instanceName:r,implementation:s})=>S.some(t=>t===e)&&n.has(i)&&"userBound"===s.kind&&"composite"===s.implementation.kind&&s.implementation.writeBindings.some(({entityField:e})=>e===t)?[{componentType:e,instanceName:String(r)}]:[])},U=(...e)=>t.filter(t=>e.some(e=>e?.includes(t))),L=(e,t)=>({groupId:t?.as??e,instanceName:e,...t?.description===void 0?{}:{description:t.description},dryRuns:t?.allowDryRuns??!0,hints:U(t?.hints)}),W=(e,t,i,r)=>{let{model:n}=i,s=new Map;for(let[o,S]of Object.entries(e)){let e=n.entityTypes.find(e=>e===o),p=e?[e]:[...n.aliases].find(([e])=>e===o)?.[1];if(!p){r.at(o).error(a.ASSISTANT_UNKNOWN_TYPE,l.ASSISTANT_UNKNOWN_TYPE(t.section,o));continue}for(let[e,n]of Object.entries(S)){let S=r.at(o,e),T=`${o}.${e}`,c=L(e,n);if(!N.test(c.groupId)){S.error(a.ASSISTANT_INVALID_RECIPE_GROUP_ID,l.ASSISTANT_INVALID_RECIPE_GROUP_ID(t,o,e,c.groupId));continue}for(let r of p){let n=w(r,t.component,i),N=s.get(r)??[],p=N.find(e=>e.group.groupId===c.groupId);n.includes(e)?p?S.error(a.ASSISTANT_DUPLICATE_RECIPE_GROUP,l.ASSISTANT_DUPLICATE_RECIPE_GROUP(t,r,c.groupId,[p.entry,T])):s.set(r,[...N,{group:c,entry:T,entryCtx:S}]):S.error(a.ASSISTANT_UNKNOWN_RECIPE_GROUP,l.ASSISTANT_UNKNOWN_RECIPE_GROUP(t,o,e,r,n))}}}let o=n.entityTypes.flatMap(e=>{let t=s.get(e);return t?[{entityType:e,groups:t}]:[]});return{groups:Object.fromEntries(o.map(({entityType:e,groups:t})=>[e,t.map(({group:e})=>e)])),metaEntries:new Map(o.flatMap(({entityType:e,groups:[t]})=>t?[[e,t.entryCtx]]:[]))}},$=(e,t,{model:i,components:r})=>{let n=new Set([e,...[...i.aliases].filter(([,t])=>t.includes(e)).map(([e])=>e)]),s=r.find(e=>e.componentName===O&&String(e.instanceName)===t&&n.has(e.typeOrAlias));if(s?.implementation.kind!=="userBound"||"composite"!==s.implementation.implementation.kind)return;let o=s.implementation.implementation.resolvedProps.exportState;return"string"==typeof o?o:void 0},F=e=>`${e}Meta`,V=e=>`${e}ScreenshotView`,k=(e,{typeSuffix:t})=>`${e}${t}`,K=(e,t,i)=>{for(let[r,n]of e){let e=k(r,t);[...i.resolvedShapes.keys()].some(t=>t===e)&&n.error(a.ASSISTANT_RECIPE_GROUPS_TYPE_NAME_CONFLICT,l.ASSISTANT_RECIPE_GROUPS_TYPE_NAME_CONFLICT(t,r,e))}},Y=e=>`${e.charAt(0).toUpperCase()+e.slice(1)}Result`,x=e=>{let t=(({anyOf:e,oneOf:t})=>[...e??[],...t??[]].filter(e=>"null"!==e.type))(e);return e.$ref||1!==t.length?e:t[0]},G=(e,t)=>{let{type:i,enumValues:r,localized:s,description:o}=_(e,t),a={...i,nonNull:!1},l=s?`${n(o,r)??""} ${C}`.trim():n(o,r);return{type:{...s?{kind:"scalar",name:"JSON",nonNull:!1}:a,nonNull:i.nonNull},...void 0===l?{}:{description:l}}},H=(t,i)=>{let r=(t=>{let i=x(t),r=i?.type==="array"&&i.items&&!e(i.items)?x(i.items):void 0,n=r??i;if(n?.$ref!==void 0&&"$DomainEntity"===c(n.$ref))return{target:n.references??E,list:void 0!==r}})(t);if(r)return{kind:"edge",...r,nullable:T(t,i),...void 0===t.description?{}:{description:t.description}};let{type:s,enumValues:o,localized:a,description:l}=_(t,i),S=n(l,o);return a?{kind:"value",type:{kind:"scalar",name:"JSON",nonNull:s.nonNull},description:`${l??""} ${C}`.trim()}:{kind:"value",type:s,...void 0===S?{}:{description:S}}},B=(e,t)=>{let{type:i,enumValues:r,localized:n,description:s}=_(e,t);return{type:{kind:"value",type:i},localized:!0===n,description:s,enumValues:r}},z=(e,t,i,r,s)=>{let o=t.startsWith("$")?((e,t,i,r)=>{let n=((e,t,{expressions:i,entityTypes:r})=>{let n=r.find(t=>t===e);for(let r of void 0===n?[e]:i.entityExpressions.get(n)?.shapeGroups??[]){let e=[...i.expressions.get(r)?.values()??[]].find(e=>e.name===t);if(e?.declaredSchema)return{implementation:e.implementation,declaredSchema:e.declaredSchema}}})(e.name,t,i);if(!n)return void r.error(a.ASSISTANT_UNKNOWN_FIELD,l.ASSISTANT_UNKNOWN_FIELD("entities",e.name,t));let{implementation:s}=n;if("violations"===s.kind)return void r.error(a.ASSISTANT_UNSUPPORTED_EXPRESSION,l.ASSISTANT_UNSUPPORTED_EXPRESSION(e.name,t));if("relation"===s.kind){let[{target:e,cardinality:t}]=s.params;return{type:{kind:"edge",target:e,cardinality:t},localized:!1,description:void 0}}return B(n.declaredSchema,i.resolveRef)})(e,t,r,s):((e,t,{resolveRef:i},r)=>{let n=Object.entries(e.shape.properties).find(([e])=>e===t)?.[1];return n?B(n,i):void r.error(a.ASSISTANT_UNKNOWN_FIELD,l.ASSISTANT_UNKNOWN_FIELD("entities",e.name,t))})(e,t,r,s);if(!o)return;let S=i?.as??(t.startsWith("$")?`_${t.slice(1)}`:t);return v.has(S)?void s.error(a.ASSISTANT_RESERVED_FIELD_NAME,l.ASSISTANT_RESERVED_FIELD_NAME(e.name,t,S)):{name:S,source:t,type:o.type,localized:o.localized,description:n(i?.description??o.description,o.enumValues),describedByManifest:i?.description!==void 0,enumValues:o.enumValues,valueDescription:i?.description??o.description,...i?.lenses?.length?{lenses:[...new Set(i.lenses)]}:{}}},J=(e,t,i,r,n)=>s(t,i,r,(t,i,r)=>{n.error(a.ASSISTANT_FIELD_NAME_CONFLICT,l.ASSISTANT_FIELD_NAME_CONFLICT(e,t,[i,r]))});export const resolveAssistantManifest=(e,{model:t,states:i,phxDefinitions:r,expressions:n,components:s,actions:S},N)=>{let T=N.errors.length,c=N.at("entities"),A=p(t.commonTypes,r);for(let e of t.resolvedShapes.keys())R.has(e)&&N.error(a.ASSISTANT_RESERVED_TYPE_NAME,l.ASSISTANT_RESERVED_TYPE_NAME(e,[...R]));let m=((e,t,i)=>{let r=new Map;for(let n of e){let e=[];for(let[r,s]of Object.entries(n.entries)){let o=z(n,r,s,t,i.at(n.name,r));o&&e.push(o)}r.set(n.name,e)}return r})(((e,t,i)=>{let r=[];for(let[i,n]of t.resolvedShapes){let t=e[i];t&&r.push({name:i,shape:n,entries:t})}let n=new Set(t.resolvedShapes.keys());for(let t of Object.keys(e))n.has(t)||i.at(t).error(a.ASSISTANT_UNKNOWN_TYPE,l.ASSISTANT_UNKNOWN_TYPE("entities",t));return r})(e.entities??{},t,c),{resolveRef:A,expressions:n,entityTypes:t.entityTypes},c),f=J(E,[],m.get(E)??[],()=>void 0,N),I=new Map([[E,f]]);for(let e of t.aliases.keys())e!==E&&I.set(e,J(e,[f],m.get(e)??[],()=>void 0,N));for(let e of t.entityTypes){let i=[E,...[...t.aliases].filter(([t,i])=>t!==E&&i.includes(e)).map(([e])=>e)],r=[...t.resolvedShapes].find(([t])=>t===e)?.[1];I.set(e,J(e,i.map(e=>I.get(e)??[]),m.get(e)??[],e=>{let t=Object.entries(r?.properties??{}).find(([t])=>t===e)?.[1];return t&&_(t,A).enumValues},N))}let v=Object.fromEntries(t.entityTypes.map(e=>[e,Object.fromEntries((I.get(e)??[]).map(({name:e,source:t,localized:i})=>[e,i?{source:t,localized:!0}:{source:t}]))])),j=W(e.childRecipes??{},y,{model:t,components:s},N.at("childRecipes")),x=W(e.replaceRecipes??{},h,{model:t,components:s},N.at("replaceRecipes")),B=((e,t,i)=>{let r=new Set;for(let n of Object.keys(e)){let e=t.entityTypes.find(e=>e===n),s=e?[e]:[...t.aliases].find(([e])=>e===n)?.[1];s?s.forEach(e=>r.add(e)):i.at(n).error(a.ASSISTANT_UNKNOWN_TYPE,l.ASSISTANT_UNKNOWN_TYPE("deletable",n))}return t.entityTypes.filter(e=>r.has(e))})(e.deletable??{},t,N.at("deletable")),X=((e,t,i)=>{let{model:r}=t,n=((e,t,i)=>{let r=new Map;for(let[n,s]of Object.entries(e)){let e=t.entityTypes.find(e=>e===n),o=e?[e]:[...t.aliases].find(([e])=>e===n)?.[1],S=[...t.resolvedShapes].find(([e])=>e===n)?.[1];if(!o||!S){i.at(n).error(a.ASSISTANT_UNKNOWN_TYPE,l.ASSISTANT_UNKNOWN_TYPE("writable",n));continue}for(let e of Object.keys(s)){let t=i.at(n,e);e.startsWith("$")||M.has(e)?t.error(a.ASSISTANT_NOT_WRITABLE,l.ASSISTANT_NOT_WRITABLE(n,e)):g(S.properties,e)?o.forEach(t=>{let i=r.get(t)??new Map;r.set(t,i.has(e)?i:i.set(e,n))}):t.error(a.ASSISTANT_UNKNOWN_FIELD,l.ASSISTANT_UNKNOWN_FIELD("writable",n,e))}}return r})(e,r,i);return r.entityTypes.flatMap(e=>{let s=[...r.resolvedShapes].find(([t])=>t===e)?.[1],o=[...n.get(e)??[]].flatMap(([r,n])=>{let o=s&&g(s.properties,r);return(o&&P(e,{property:r,writableKey:n},o,t,i))??[]});return o.length>0?[{entityType:e,fields:o}]:[]})})(e.writable??{},{model:t,resolveRef:A,exposed:m,sources:v},N.at("writable")),Z=((e,t,i,r)=>{let{model:n}=i,s=new Map,o=e=>{let t=n.entityTypes.find(t=>t===e);return t?[t]:[...n.aliases].find(([t])=>t===e)?.[1]??[]},S=new Set(Object.entries(e).flatMap(([e,t])=>Object.entries(t).flatMap(([t,i])=>i?.options===void 0?[]:o(e).map(e=>`${e}.${t}`)))),N=new Set;for(let[n,p]of Object.entries(e)){let e=o(n);for(let[o,T]of Object.entries(p)){let p=T?.options;if(null===p)continue;let c=p?r.at(n,o,"options"):r.at(n,o),_=`${n}.${o}`;for(let r of e){let e=t.find(e=>e.entityType===r)?.fields.find(e=>e.property===o),n=`${r}.${o}`;if(!e||!p&&(S.has(n)||N.has(n)))continue;p||N.add(n);let T=s.get(r)??[],d=p?.componentType===void 0||void 0===p.instanceName?void 0:{componentType:p.componentType,instanceName:p.instanceName},E=d?[d]:D(r,o,i),[A]=E,m=p?.as??`${e.name}Options`,f=T.find(t=>t.options.edgeName===m||t.options.field===e.name);if(d&&!w(r,d.componentType,i).includes(d.instanceName))c.error(a.ASSISTANT_UNKNOWN_OPTIONS_COMPONENT,l.ASSISTANT_UNKNOWN_OPTIONS_COMPONENT(_,d,r,w(r,d.componentType,i)));else if(E.length>1)c.error(a.ASSISTANT_AMBIGUOUS_OPTIONS_COMPONENT,l.ASSISTANT_AMBIGUOUS_OPTIONS_COMPONENT(p?`${_}.options`:_,r,E));else if(A)if(m===y.section||m===h.section||"screenshot"===m)c.error(a.ASSISTANT_RESERVED_OPTIONS_EDGE_NAME,l.ASSISTANT_RESERVED_OPTIONS_EDGE_NAME(_,m,e.name));else if(f)c.error(a.ASSISTANT_DUPLICATE_OPTIONS_EDGE,l.ASSISTANT_DUPLICATE_OPTIONS_EDGE(r,f.options.edgeName===m?{edgeName:m}:{field:e.name},[f.entry,_]));else{let t={field:e.name,edgeName:m,componentType:A.componentType,instanceName:A.instanceName,validate:p?.validate??!0,dryRuns:p?.allowDryRuns??!0};s.set(r,[...T,{options:t,hints:U(p?.hints),entry:_,entryCtx:c}])}else p&&c.error(a.ASSISTANT_MISSING_OPTIONS_COMPONENT,l.ASSISTANT_MISSING_OPTIONS_COMPONENT(_,r,o))}}}return s})(e.writable??{},X,{model:t,components:s},N.at("writable")),Q=((e,t,i)=>{let{model:r,states:n}=t,s=new Map;for(let[o,S]of Object.entries(e)){let e=r.entityTypes.find(e=>e===o),N=e?[e]:[...r.aliases].find(([e])=>e===o)?.[1];if(!N){i.at(o).error(a.ASSISTANT_UNKNOWN_TYPE,l.ASSISTANT_UNKNOWN_TYPE("screenshots",o));continue}for(let[e,{description:r,as:p}]of Object.entries(S)){let S=i.at(o,e),T=`${o}.${e}`,c={view:p??e,instanceName:e,description:r};if(!u.test(c.view)){S.error(a.ASSISTANT_INVALID_SCREENSHOT_VIEW_NAME,l.ASSISTANT_INVALID_SCREENSHOT_VIEW_NAME(o,e,c.view));continue}for(let i of N){let r=w(i,O,t),N=$(i,e,t),p=s.get(i)??[],_=p.find(e=>e.view.view===c.view);r.includes(e)?void 0===N||n.exportStates.includes(N)?_?S.error(a.ASSISTANT_DUPLICATE_SCREENSHOT_VIEW,l.ASSISTANT_DUPLICATE_SCREENSHOT_VIEW(i,c.view,[_.entry,T])):s.set(i,[...p,{view:c,entry:T,entryCtx:S}]):S.error(a.ASSISTANT_UNKNOWN_SCREENSHOT_EXPORT_STATE,l.ASSISTANT_UNKNOWN_SCREENSHOT_EXPORT_STATE(o,e,N,n.exportStates)):S.error(a.ASSISTANT_UNKNOWN_SCREENSHOT_VIEW,l.ASSISTANT_UNKNOWN_SCREENSHOT_VIEW(o,e,i,r))}}}let o=r.entityTypes.flatMap(e=>{let t=s.get(e);return t?[{entityType:e,views:t}]:[]});return{views:new Map(o.map(({entityType:e,views:t})=>[e,t.map(({view:e})=>e)])),metaEntries:new Map(o.flatMap(({entityType:e,views:[t]})=>t?[[e,t.entryCtx]]:[]))}})(e.screenshots??{},{model:t,components:s,states:i},N.at("screenshots")),q=t.entityTypes.filter(e=>w(e,"violations",{model:t,components:s}).length>0);var ee=[j.metaEntries,x.metaEntries,new Map([...Z].flatMap(([e,[t]])=>t?[[e,t.entryCtx]]:[])),Q.metaEntries,new Map(q.map(e=>[e,N]))];for(let e of t.entityTypes){let i=ee.flatMap(t=>t.get(e)??[])[0],r=F(e);i&&[...t.resolvedShapes.keys()].some(e=>e===r)&&i.error(a.ASSISTANT_META_TYPE_NAME_CONFLICT,l.ASSISTANT_META_TYPE_NAME_CONFLICT(e,r))}for(let[e,i]of(K(j.metaEntries,y,t),K(x.metaEntries,h,t),Q.metaEntries)){let r=V(e);[...t.resolvedShapes.keys()].some(e=>e===r)&&i.error(a.ASSISTANT_SCREENSHOT_VIEW_TYPE_NAME_CONFLICT,l.ASSISTANT_SCREENSHOT_VIEW_TYPE_NAME_CONFLICT(e,r))}let et=t.entityTypes.filter(e=>(j.groups[e]?.length??0)>0||(x.groups[e]?.length??0)>0||(Z.get(e)?.length??0)>0||Q.views.has(e)||q.includes(e)).flatMap(e=>[F(e),...(j.groups[e]?.length??0)>0?[k(e,y)]:[],...(x.groups[e]?.length??0)>0?[k(e,h)]:[],...Q.views.has(e)?[V(e)]:[]]),ei=((e,{actions:t,resolveRef:i,builtInMutations:r,typeNames:n},s)=>{let o=[],S=[...t.values()].map(e=>String(e.name));for(let[N,p]of Object.entries(e)){let e=s.at(N),T=[...t.values()].find(e=>e.name===N);if(!T){e.error(a.ASSISTANT_UNKNOWN_ACTION,l.ASSISTANT_UNKNOWN_ACTION(N,S));continue}let c=p?.as??N,_=o.find(e=>e.fieldName===c),d=Y(c);if(r.has(c)||_){e.error(a.ASSISTANT_MUTATION_NAME_CONFLICT,l.ASSISTANT_MUTATION_NAME_CONFLICT(N,c,_?`"assistant.actions.${_.actionName}" already exposes`:"the built-in mutation of that name already takes"));continue}if(n.has(d)||o.some(e=>Y(e.fieldName)===d)){e.error(a.ASSISTANT_ACTION_RESULT_TYPE_CONFLICT,l.ASSISTANT_ACTION_RESULT_TYPE_CONFLICT(N,c,d));continue}let E=p?.description??T.description;o.push({fieldName:c,actionName:N,...void 0===E?{}:{description:E},args:Object.fromEntries(Object.entries(T.params).map(([e,{schema:t}])=>[e,G(t,i)])),result:Object.fromEntries(Object.entries(T.result).map(([e,t])=>[e,H(t,i)]))})}return o})(e.actions??{},{actions:S,resolveRef:A,builtInMutations:new Set(["deleteEntity",y.mutation,h.mutation,...X.map(({entityType:e})=>`modify${e}`)]),typeNames:new Set([...R,...t.resolvedShapes.keys(),...et])},N.at("actions")),er=((e,t)=>{let i=e.lenses??{},r=new Set;for(let[n,s]of Object.entries(e.entities??{}))for(let[e,o]of Object.entries(s))for(let s of o?.lenses??[])Object.hasOwn(i,s)?r.add(s):t.at("entities",n,e,"lenses").error(a.ASSISTANT_UNKNOWN_LENS,l.ASSISTANT_UNKNOWN_LENS(`${n}.${e}`,s,Object.keys(i)));for(let e of Object.keys(i))b.has(e)?t.at("lenses",e).error(a.ASSISTANT_RESERVED_LENS_NAME,l.ASSISTANT_RESERVED_LENS_NAME(e,[...b])):r.has(e)||t.at("lenses",e).error(a.ASSISTANT_EMPTY_LENS,l.ASSISTANT_EMPTY_LENS(e));return Object.fromEntries(Object.entries(i).map(([e,{description:t,maxDepth:i}])=>[e,{description:t,maxDepth:i??1}]))})(e,N),en=d(e.formElements??{},N.at("formElements"));if(N.errors.length>T)return;let es=e=>Object.fromEntries(Object.entries(e).map(([e,t])=>[e,Object.entries(t).map(([e,t])=>L(e,t))]));return{declarations:{entities:Object.fromEntries(Object.keys(e.entities??{}).map(e=>[e,(m.get(e)??[]).map(e=>({name:e.name,source:e.source,type:e.type,localized:e.localized,describedByManifest:e.describedByManifest,...void 0===e.description?{}:{description:e.description},...void 0===e.valueDescription?{}:{valueDescription:e.valueDescription},...void 0===e.enumValues?{}:{enumValues:e.enumValues},...void 0===e.lenses?{}:{lenses:e.lenses}}))])),enumValues:Object.fromEntries(t.entityTypes.map(e=>[e,Object.fromEntries(Object.entries(t.resolvedShapes.get(e)?.properties??{}).flatMap(([e,t])=>{let i=_(t,A).enumValues;return i?[[e,i]]:[]}))])),deletable:Object.keys(e.deletable??{}),writable:Object.fromEntries(Object.entries(e.writable??{}).map(([e,i])=>[e,Object.fromEntries(Object.entries(i).map(([i,r])=>[i,{defaultOptionsName:r?.options?.as===void 0,members:Object.fromEntries(t.entityTypes.filter(i=>i===e||[...t.aliases].find(([t])=>t===e)?.[1].includes(i)).flatMap(r=>{let n=g(t.resolvedShapes.get(r)?.properties??{},i),s=n&&P(r,{property:i,writableKey:e},n,{model:t,resolveRef:A,exposed:new Map,sources:{}},N.at("writable")),o=Z.get(r)?.find(t=>t.entry===`${e}.${i}`);return s?[[r,{field:s,..._(n,A).localized?{exposedDescription:C}:{},...o?{options:{options:o.options,hints:o.hints}}:{}}]]:[]}))}]))])),childRecipes:es(e.childRecipes??{}),replaceRecipes:es(e.replaceRecipes??{}),screenshots:Object.fromEntries(Object.entries(e.screenshots??{}).map(([e,t])=>[e,Object.entries(t).map(([e,{description:t,as:i}])=>({view:i??e,instanceName:e,description:t}))]))},entityTypes:t.entityTypes,aliases:Object.fromEntries(t.aliases),exampleType:t.rootEntityTypes[0]??t.entityTypes[0],states:{navigationStates:i.navigationStates,viewStates:i.viewStates,toolStates:i.toolStates},deletableTypes:B,writableTypes:X,actionFields:ei,invariantTypes:q,childRecipes:j.groups,replaceRecipes:x.groups,optionsEdges:Object.fromEntries([...Z].map(([e,t])=>[e,t.map(({options:e,hints:t})=>({options:e,hints:t}))])),screenshots:Object.fromEntries(Q.views),fields:Object.fromEntries([...I].map(([e,t])=>[e,t.map(t=>o(t,m.get(e)??[]))])),lenses:er,formElements:en}};export const createAssistantSchema=(e,t,n)=>{let s=resolveAssistantManifest(e,t,n);if(s)try{return{...r(s),resolved:s}}catch(e){if(e instanceof i)return void n.at("entities").error(a.ASSISTANT_FIELD_SHAPE_CONFLICT,l.ASSISTANT_FIELD_SHAPE_CONFLICT(e.fieldName,e.exposures));n.error(a.ASSISTANT_INVALID_SCHEMA,l.ASSISTANT_INVALID_SCHEMA([e instanceof Error?e.message:String(e)]));return}};
@@ -1 +1 @@
1
- import{Branded as t}from"@salsita-ai/common/utils";import{createAssistantSchema as s}from"./assistant-schema.js";export const AssistantSpec=(i,a,n)=>{let{manifest:l,origin:r}=i;if(!l)return null;let e=s(l,a,(r?n.inFile(r):n).at("assistant"));return e?t(e):null};
1
+ import{Branded as t}from"@salsita-ai/common/utils";import{createAssistantSchema as s}from"./assistant-schema.js";export const AssistantSpec=(a,i,n)=>{let{manifest:r}=a;if(!r)return null;let l=s(r,i,n.at("assistant"));return l?t(l):null};
@@ -1,27 +1,10 @@
1
- import { Branded } from '@salsita-ai/common/utils';
1
+ import type { ChunkName as ChunkNameData, Chunks as ChunksData } from '#package/domain';
2
2
  import type { ParseContext } from '../../../../core/index.js';
3
3
  import type { MergedChunks } from '../../../merge/index.js';
4
- /**
5
- * Validated published-data chunk name.
6
- * Chunk names identify top-level partitions in generated `publishedData`. Data
7
- * entries point to these names through their `chunk` field, and the parser adds
8
- * the reserved `system` chunk when user chunks exist.
9
- */
10
- export type ChunkName = Branded<'ChunkName', string>;
4
+ export type { ChunkDefinition } from '#package/domain';
5
+ /** A validated published-data chunk name; see {@link ChunkNameData | ChunkName} in `domain`. */
6
+ export type ChunkName = ChunkNameData;
11
7
  export declare const ChunkName: (name: string, ctx: ParseContext) => ChunkName | undefined;
12
- /**
13
- * A named partition of published data with a scope.
14
- * `scope` is typically `'project'` (per-project data) or `'public'` (shared).
15
- */
16
- export interface ChunkDefinition {
17
- /** Visibility/storage scope used by runtime data publishing for this chunk. */
18
- readonly scope: string;
19
- }
20
- /**
21
- * Validated chunk definitions, keyed by chunk name.
22
- * When any user-defined chunks are present, the reserved `system` chunk is
23
- * auto-injected with `scope: 'public'` to carry admin presets/recipes schemas.
24
- * When the input is empty, no system injection happens (mirrors domain-spec behavior).
25
- */
26
- export type Chunks = Readonly<Record<ChunkName, ChunkDefinition>>;
8
+ /** The validated chunk definitions by chunk name; see {@link ChunksData | Chunks} in `domain`. */
9
+ export type Chunks = ChunksData;
27
10
  export declare const Chunks: (merged: MergedChunks, ctx: ParseContext) => Chunks | undefined;
@@ -1,24 +1,9 @@
1
1
  import { Branded } from '@salsita-ai/common/utils';
2
- import type { DataCellValue, DataSchema } from '#package/domain';
2
+ import type { CustomDataSpecEntry } from '#package/domain';
3
3
  import { type ParseContext } from '../../../../core/index.js';
4
4
  import type { MergedDataSpec } from '../../../merge/index.js';
5
5
  import { type ChunkDefinition, ChunkName } from './chunks.js';
6
6
  import { DataEntryKey } from './data-entry-key.js';
7
- /** Parsed `$data.custom` entry with validated definition and normalized row values. */
8
- export interface CustomDataSpecEntry {
9
- /** Column/property schema for a custom data row, used by admin pages and published-data schemas. */
10
- readonly definition: DataSchema;
11
- /** Optional published-data chunk that receives this entry as an array property. */
12
- readonly chunk?: string;
13
- /** Ownership mode deciding whether data is manual, externally connected, or admin-generated. */
14
- readonly kind: 'manual' | 'connected' | 'generated';
15
- /** Optional human-readable label used by inferred admin pages and connected-data UI. */
16
- readonly title?: string;
17
- /** Optional icon name used in inferred admin navigation. */
18
- readonly icon?: string;
19
- /** Default rows normalized to the same column order as `definition`. */
20
- readonly values?: ReadonlyArray<readonly DataCellValue[]>;
21
- }
22
7
  /**
23
8
  * Validated `$data.custom` section.
24
9
  * Every key is a validated data entry key, every definition field has a valid
@@ -1,13 +1,7 @@
1
- import { Branded } from '@salsita-ai/common/utils';
1
+ import type { DataEntryKey as DataEntryKeyData } from '#package/domain';
2
2
  import type { ParseContext } from '../../../../core/index.js';
3
3
  /** `$data` subsection that owns a data entry key and determines its raw entry shape. */
4
4
  export type DataEntrySection = 'custom' | 'swatchOptions';
5
- /**
6
- * Validated `$data` entry key.
7
- * This is the stable identifier for a data collection declared under `$data.custom`
8
- * or `$data.swatchOptions`. The same key is used when extending published data,
9
- * wiring connected/generated admin pages, and linking explicit admin pages through
10
- * `connectedDataEntry`.
11
- */
12
- export type DataEntryKey = Branded<'DataEntryKey', string>;
5
+ /** A validated `$data` entry key; see {@link DataEntryKeyData | DataEntryKey} in `domain`. */
6
+ export type DataEntryKey = DataEntryKeyData;
13
7
  export declare const DataEntryKey: (section: DataEntrySection, key: string, ctx: ParseContext) => DataEntryKey | undefined;
@@ -1,18 +1,9 @@
1
1
  import { Branded } from '@salsita-ai/common/utils';
2
- import type { DataCellValue, DataSchema } from '#package/domain';
2
+ import { type DataCellValue, type DataSchema, type ParsedDataSpecEntries } from '#package/domain';
3
3
  import { type ParseContext } from '../../../../core/index.js';
4
4
  import type { MergedChunks, MergedDataSpec } from '../../../merge/index.js';
5
5
  import { Chunks } from './chunks.js';
6
- import { type CustomDataSpecEntry } from './custom-data-spec.js';
7
6
  import type { DataEntryKey } from './data-entry-key.js';
8
- import { type SwatchDataSpecEntry } from './swatch-data-spec.js';
9
- /** Validated `$data` entries grouped by their source section. */
10
- export interface ParsedDataSpecEntries {
11
- /** Custom data entries with user-declared schemas. */
12
- readonly custom: Readonly<Record<DataEntryKey, CustomDataSpecEntry>>;
13
- /** Swatch data entries with the built-in swatch schema. */
14
- readonly swatchOptions: Readonly<Record<DataEntryKey, SwatchDataSpecEntry>>;
15
- }
16
7
  export interface DataSpecDataEntry {
17
8
  /** Data entry identifier used as published-data property and admin page navigation state. */
18
9
  readonly key: DataEntryKey;
@@ -1,22 +1,9 @@
1
1
  import { Branded } from '@salsita-ai/common/utils';
2
- import type { CellValue } from '@salsita-ai/contracts/webhook';
2
+ import type { SwatchDataSpecEntry } from '#package/domain';
3
3
  import { type ParseContext } from '../../../../core/index.js';
4
4
  import type { MergedDataSpec } from '../../../merge/index.js';
5
5
  import { type ChunkDefinition, ChunkName } from './chunks.js';
6
6
  import { DataEntryKey } from './data-entry-key.js';
7
- /** Parsed `$data.swatchOptions` entry using the fixed swatch data shape. */
8
- export interface SwatchDataSpecEntry {
9
- /** Optional published-data chunk that receives this swatch entry as an array property. */
10
- readonly chunk?: string;
11
- /** Ownership mode deciding whether swatches are manual, externally connected, or admin-generated. */
12
- readonly kind: 'manual' | 'connected' | 'generated';
13
- /** Optional human-readable label used by inferred admin pages and connected-data UI. */
14
- readonly title?: string;
15
- /** Optional icon name used in inferred admin navigation. */
16
- readonly icon?: string;
17
- /** Default swatch rows normalized to `SWATCH_DEFINITION` column order. */
18
- readonly values?: ReadonlyArray<readonly CellValue[]>;
19
- }
20
7
  /**
21
8
  * Validated `$data.swatchOptions` section.
22
9
  * Every key is a validated data entry key and default swatch values are
@@ -1,9 +1,5 @@
1
- import { Branded } from '@salsita-ai/common/utils';
1
+ import type { StateValue as StateValueData } from '#package/domain';
2
2
  import type { ParseContext } from '../../../core/index.js';
3
- /**
4
- * Branded state value — a valid identifier used as a state enum entry
5
- * (e.g. "Default", "overview", "detailView").
6
- * Used across navigation, view, tool, and export state dimensions.
7
- */
8
- export type StateValue = Branded<'StateValue', string>;
3
+ /** A branded state value; see {@link StateValueData | StateValue} in `domain`. */
4
+ export type StateValue = StateValueData;
9
5
  export declare const StateValue: (value: string, field: string, ctx: ParseContext) => StateValue | undefined;
@@ -1,12 +1,5 @@
1
- import { Branded } from '@salsita-ai/common/utils';
1
+ import type { Theme as ThemeData } from '#package/domain';
2
2
  import type { MergedTheme } from '../../merge/index.js';
3
- /**
4
- * Validated theme configuration for the configurator UI.
5
- * Preset identifies a built-in theme from getPhoenixThemes(),
6
- * options provides partial overrides passed to the theme factory.
7
- */
8
- export type Theme = Branded<'Theme', {
9
- readonly preset: string;
10
- readonly options: Readonly<Record<string, unknown>>;
11
- }>;
3
+ /** The validated theme configuration; see {@link ThemeData | Theme} in `domain`. */
4
+ export type Theme = ThemeData;
12
5
  export declare const Theme: (merged: MergedTheme) => Theme;
@@ -1,13 +1,6 @@
1
- import { Branded } from '@salsita-ai/common/utils';
1
+ import type { SpecTransformers } from '#package/domain';
2
2
  import type { ParseContext } from '../../../core/index.js';
3
- import type { MergedTransformers, TransformerEntry } from '../../merge/index.js';
4
- /**
5
- * Validated transformer declarations. Each transformer is applied during
6
- * domain state transitions to enforce business rules (e.g. "fixLegsForCircleTop").
7
- * Every entry's name must match a file basename in `src/transformers/`
8
- * (modulo case + dashes — kebab-case files and camelCase YAML names are
9
- * treated as equivalent since runtime matching happens on the `.build('name')`
10
- * label, not the filename).
11
- */
12
- export type Transformers = Branded<'Transformers', readonly TransformerEntry[]>;
3
+ import type { MergedTransformers } from '../../merge/index.js';
4
+ /** The validated transformer declarations; see {@link SpecTransformers} in `domain`. */
5
+ export type Transformers = SpecTransformers;
13
6
  export declare const Transformers: (merged: MergedTransformers, transformerFiles: readonly string[], ctx: ParseContext) => Transformers;
@@ -1,14 +1,5 @@
1
- import { Branded } from '@salsita-ai/common/utils';
1
+ import type { Ui as UiData } from '#package/domain';
2
2
  import type { MergedUi } from '../../merge/index.js';
3
- /**
4
- * Validated UI configuration for the configurator.
5
- * Controls preview behavior, expansion mode, and locale settings.
6
- */
7
- export type Ui = Branded<'Ui', {
8
- readonly preview?: 'always' | 'never' | 'auto' | 'hide';
9
- readonly alwaysExpand?: boolean;
10
- readonly appLoader?: 'legacy' | 'universal';
11
- readonly availableLocales: readonly string[];
12
- readonly textLanguages?: readonly string[];
13
- }>;
3
+ /** The validated user interface configuration; see {@link UiData | Ui} in `domain`. */
4
+ export type Ui = UiData;
14
5
  export declare const Ui: (merged: MergedUi) => Ui;
@@ -1,6 +1,6 @@
1
1
  import type { AccessLevel } from '@salsita-ai/contracts/api';
2
2
  import { type ChatStreamChunk } from '@salsita-ai/contracts/chat';
3
- import { type AssistantChatConnection, type AssistantEarlierThread, type AssistantThreadCompaction, type AuthorizedPhoenixApiClient, type ChatToolCall, type ChatToolCallResult, type ConfigurationPayload, type ConfigurationSchema, type waitForFinalizationResultSettings } from './contract.js';
3
+ import { type AssistantChatConnection, type AssistantEarlierThread, type AssistantImageUpload, type AssistantThreadCompaction, type AuthorizedPhoenixApiClient, type ChatToolCall, type ChatToolCallResult, type ConfigurationPayload, type ConfigurationSchema, type waitForFinalizationResultSettings } from './contract.js';
4
4
  import type { components } from './phoenix-api.js';
5
5
  export declare class AuthorizedClient<FINALIZE_DATA extends Record<string, unknown>, FINALIZE_RESULT extends Record<string, unknown>, FRONTEND_DATA extends Record<string, unknown>> implements AuthorizedPhoenixApiClient<FINALIZE_DATA, FINALIZE_RESULT, FRONTEND_DATA> {
6
6
  private readonly _baseUrl;
@@ -27,7 +27,9 @@ export declare class AuthorizedClient<FINALIZE_DATA extends Record<string, unkno
27
27
  getTextToSpeech: (configurationId: string, content: string) => Promise<Blob>;
28
28
  getAssistantChatConnection: (configurationId: string) => AssistantChatConnection;
29
29
  compactAssistantThread: (configurationId: string) => Promise<AssistantThreadCompaction>;
30
- getAssistantEarlierThread: (configurationId: string, threadId: string, limit: number) => Promise<AssistantEarlierThread>;
30
+ getAssistantEarlierThread: (configurationId: string, threadId: string, limit?: number) => Promise<AssistantEarlierThread>;
31
+ uploadAssistantImage: (configurationId: string, image: Blob) => Promise<AssistantImageUpload>;
32
+ getAssistantImage: (configurationId: string, imageId: string) => Promise<Blob>;
31
33
  sendMessage: (configurationId: string, content: string, context?: Record<string, string>) => Promise<ReadableStream<ChatStreamChunk>>;
32
34
  sendToolCallResults: (configurationId: string, calls: ChatToolCall[], results: ChatToolCallResult[], agent?: string) => Promise<ReadableStream<ChatStreamChunk>>;
33
35
  generateShareLink: (configurationId: string, revisionId: string, expiration: number, access: AccessLevel, baseUrl: string | undefined) => Promise<{
@@ -1 +1 @@
1
- import{match as t}from"ts-pattern";import{InfoError as a}from"@salsita-ai/common/utils";import{isChatError as e}from"@salsita-ai/contracts/chat";import{createApiBaseClient as r}from"./base-client.js";import{AssistantRequestError as i,InvalidAccessKeyError as o}from"./contract.js";let n=()=>new TransformStream({transform(t,a){a.enqueue(t)}}),s=async(t,a)=>{for(;;){let{done:r,value:i}=await t.read();if(r){await a.close();break}for(let t of i.split("\n").filter(t=>""!==t.trim()).map(t=>JSON.parse(t))){if(e(t))return void await a.abort(Error(t.error));await a.write(t)}}},h=(e,r)=>{let i=`${r} API request failed: ${JSON.stringify(e)}`;return t(e).with({statusCode:403,invalidAccessKey:!0},()=>new o).with({statusCode:403},()=>new a(i)).otherwise(()=>Error(i))};export class AuthorizedClient{_baseUrl;_getAccessToken;_getSessionToken;_client;constructor(t,a,e){this._baseUrl=t,this._getAccessToken=a,this._getSessionToken=e,this._client=r(this._baseUrl)}_authHeaders=async()=>{let t=this._getAccessToken(),a=await this._getSessionToken();return{"X-Access-Key":t,Authorization:`Bearer ${a}`}};getConfiguration=async t=>{let a=await this._authHeaders(),e=await this._client.GET("/configurations/{configurationId}",{params:{path:{configurationId:t}},headers:a});if(e.error)throw h(e.error,"getConfiguration");return e.data};updateConfiguration=async(t,a)=>{let e=await this._authHeaders(),r=await this._client.PUT("/configurations/{configurationId}",{params:{path:{configurationId:t}},body:a,headers:e});if(r.error)throw h(r.error,"updateConfiguration");return r.data};finalize=async(t,a,e,r,i)=>{let o=await this._authHeaders(),n=await this._client.POST("/configurations/{configurationId}/{finalizationUuid}/finalize",{params:{path:{configurationId:t,finalizationUuid:a},query:{locale:r}},body:{finalizeData:e,frontendData:i},headers:o});if(n.error)throw h(n.error,"finalize")};waitForFinalizationToComplete=async(t,a,e)=>{let r=e?.pollingFrequency??500,i=Math.ceil((e?.pollingTimeout??3e4)/r);for(let e=0;e<i;e++){let e=await this._authHeaders(),i=await this._client.GET("/configurations/{configurationId}/{finalizationUuid}/state",{params:{path:{configurationId:t,finalizationUuid:a}},headers:e});if(i.error)throw h(i.error,"getFinalizeJobState");let o=i.data;if("completed"===o.state)return o.result[0];if("failed"===o.state)throw Error("finalization failed");if("unknown"===o.state)throw Error("finalization state is unknown");await new Promise(t=>setTimeout(t,r))}throw Error("finalization did not complete within the specified timeout")};getConfigurationRevision=async(t,a)=>{let e=await this._authHeaders(),r=await this._client.GET("/configurations/{configurationId}/revisions/{revisionId}",{params:{path:{configurationId:t,revisionId:a}},headers:e});if(r.error)throw h(r.error,"getConfigurationRevision");return r.data};getChatConversation=async t=>{let a=await this._authHeaders(),e=await this._client.GET("/configurations/{configurationId}/chat",{params:{path:{configurationId:t}},headers:a});if(e.error)throw h(e.error,"getChatConversation");return e.data};getSpeechToText=async(t,a)=>{let e=await this._authHeaders(),r=new FormData;r.append("voiceFile",a,"voice.wav");let i=await this._client.POST("/configurations/{configurationId}/chat/stt",{params:{path:{configurationId:t}},headers:e,body:r,bodySerializer:()=>r});if(i.error)throw h(i.error,"getSpeechToText");return i.data.text};getTextToSpeech=async(t,a)=>{let e=await this._authHeaders(),r=await this._client.POST("/configurations/{configurationId}/chat/tts",{params:{path:{configurationId:t}},body:{content:a},headers:e,parseAs:"arrayBuffer"});if(r.error)throw h(r.error,"getTextToSpeech");return new Blob([r.data],{type:"audio/mp3"})};getAssistantChatConnection=t=>({url:new URL(`configurations/${encodeURIComponent(t)}/assistant/chat`,`${this._baseUrl}/`).toString(),headers:this._authHeaders});compactAssistantThread=async t=>{let a=await this._authHeaders(),e=await this._client.POST("/configurations/{configurationId}/assistant/chat/compact",{params:{path:{configurationId:t}},headers:{...a,"Content-Type":null}});if(e.error)throw new i(`compactAssistantThread API request failed: ${JSON.stringify(e.error)}`,e.response.status);return e.data};getAssistantEarlierThread=async(t,a,e)=>{let r=await this._authHeaders(),o=await this._client.GET("/configurations/{configurationId}/assistant/chat/threads/{threadId}",{params:{path:{configurationId:t,threadId:a},query:{limit:e}},headers:r});if(o.error)throw new i(`getAssistantEarlierThread API request failed: ${JSON.stringify(o.error)}`,o.response.status);let{messages:n}=o.data;return{threadId:a,messages:Array.isArray(n)?n:[],previousThreadId:o.response.headers.get("x-assistant-previous-thread")}};sendMessage=async(t,a,e)=>{let r=await this._authHeaders(),i=await this._client.POST("/configurations/{configurationId}/chat/message",{params:{path:{configurationId:t}},body:{content:a,context:e},headers:r,parseAs:"stream"});if(i.error)throw h(i.error,"sendMessage");let o=i.data?.pipeThrough(new TextDecoderStream).getReader();if(!o)throw Error("sendMessage API response did not contain a readable stream");let c=n();return s(o,c.writable.getWriter()),c.readable};sendToolCallResults=async(t,a,e,r)=>{let i=await this._authHeaders(),o=await this._client.POST("/configurations/{configurationId}/chat/tool-calls",{params:{path:{configurationId:t}},body:{agent:r,calls:a,results:e},headers:i,parseAs:"stream"});if(o.error)throw h(o.error,"sendToolCallResults");let c=o.data?.pipeThrough(new TextDecoderStream).getReader();if(!c)throw Error("sendMessage API response did not contain a readable stream");let u=n();return s(c,u.writable.getWriter()),u.readable};generateShareLink=async(t,a,e,r,i)=>{let o=await this._authHeaders(),n=await this._client.POST("/configurations/{configurationId}/share-link",{params:{path:{configurationId:t}},body:{revisionId:a,expiration:e,access:r,baseUrl:i},headers:o});if(n.error)throw h(n.error,"generateShareLink");return n.data};generateUploadLinks=async(t,a,e)=>{let r=await this._authHeaders(),i=await this._client.POST("/configurations/{configurationId}/{finalizationUuid}/image-upload-links",{params:{path:{configurationId:t,finalizationUuid:a}},body:{names:e},headers:r});if(i.error)throw h(i.error,"generateUploadLinks");return i.data.links};getConfigurationPublicUploadLink=async(t,a)=>{let e=await this._authHeaders(),r=await this._client.GET("/configurations/{configurationId}/resources/{key}/public/upload",{params:{path:{configurationId:t,key:a}},headers:e});if(r.error)throw h(r.error,"getConfigurationPublicUploadLink");return r.data};getConfigurationPrivateUploadLink=async(t,a)=>{let e=await this._authHeaders(),r=await this._client.GET("/configurations/{configurationId}/resources/{key}/private/upload",{params:{path:{configurationId:t,key:a}},headers:e});if(r.error)throw h(r.error,"getConfigurationPrivateUploadLink");return r.data};getConfigurationPrivateResourceLink=async(t,a)=>{let e=await this._authHeaders(),r=await this._client.GET("/configurations/{configurationId}/resources/{key}/private",{params:{path:{configurationId:t,key:a}},headers:e});if(r.error)throw h(r.error,"getConfigurationPrivateUploadLink");return r.data};cloneConfiguration=async(t,a)=>{let e=await this._authHeaders(),r=await this._client.POST("/configurations/{configurationId}/revisions/{revisionId}/clone",{params:{path:{configurationId:t,revisionId:a}},headers:{...e,"Content-Type":null}});if(r.error)throw h(r.error,"cloneConfiguration");return r.data}}
1
+ import{match as t}from"ts-pattern";import{InfoError as a}from"@salsita-ai/common/utils";import{isChatError as e}from"@salsita-ai/contracts/chat";import{createApiBaseClient as r}from"./base-client.js";import{AssistantRequestError as i,InvalidAccessKeyError as s}from"./contract.js";let o=()=>new TransformStream({transform(t,a){a.enqueue(t)}}),n=async(t,a)=>{for(;;){let{done:r,value:i}=await t.read();if(r){await a.close();break}for(let t of i.split("\n").filter(t=>""!==t.trim()).map(t=>JSON.parse(t))){if(e(t))return void await a.abort(Error(t.error));await a.write(t)}}},h=(e,r)=>{let i=`${r} API request failed: ${JSON.stringify(e)}`;return t(e).with({statusCode:403,invalidAccessKey:!0},()=>new s).with({statusCode:403},()=>new a(i)).otherwise(()=>Error(i))};export class AuthorizedClient{_baseUrl;_getAccessToken;_getSessionToken;_client;constructor(t,a,e){this._baseUrl=t,this._getAccessToken=a,this._getSessionToken=e,this._client=r(this._baseUrl)}_authHeaders=async()=>{let t=this._getAccessToken(),a=await this._getSessionToken();return{"X-Access-Key":t,Authorization:`Bearer ${a}`}};getConfiguration=async t=>{let a=await this._authHeaders(),e=await this._client.GET("/configurations/{configurationId}",{params:{path:{configurationId:t}},headers:a});if(e.error)throw h(e.error,"getConfiguration");return e.data};updateConfiguration=async(t,a)=>{let e=await this._authHeaders(),r=await this._client.PUT("/configurations/{configurationId}",{params:{path:{configurationId:t}},body:a,headers:e});if(r.error)throw h(r.error,"updateConfiguration");return r.data};finalize=async(t,a,e,r,i)=>{let s=await this._authHeaders(),o=await this._client.POST("/configurations/{configurationId}/{finalizationUuid}/finalize",{params:{path:{configurationId:t,finalizationUuid:a},query:{locale:r}},body:{finalizeData:e,frontendData:i},headers:s});if(o.error)throw h(o.error,"finalize")};waitForFinalizationToComplete=async(t,a,e)=>{let r=e?.pollingFrequency??500,i=Math.ceil((e?.pollingTimeout??3e4)/r);for(let e=0;e<i;e++){let e=await this._authHeaders(),i=await this._client.GET("/configurations/{configurationId}/{finalizationUuid}/state",{params:{path:{configurationId:t,finalizationUuid:a}},headers:e});if(i.error)throw h(i.error,"getFinalizeJobState");let s=i.data;if("completed"===s.state)return s.result[0];if("failed"===s.state)throw Error("finalization failed");if("unknown"===s.state)throw Error("finalization state is unknown");await new Promise(t=>setTimeout(t,r))}throw Error("finalization did not complete within the specified timeout")};getConfigurationRevision=async(t,a)=>{let e=await this._authHeaders(),r=await this._client.GET("/configurations/{configurationId}/revisions/{revisionId}",{params:{path:{configurationId:t,revisionId:a}},headers:e});if(r.error)throw h(r.error,"getConfigurationRevision");return r.data};getChatConversation=async t=>{let a=await this._authHeaders(),e=await this._client.GET("/configurations/{configurationId}/chat",{params:{path:{configurationId:t}},headers:a});if(e.error)throw h(e.error,"getChatConversation");return e.data};getSpeechToText=async(t,a)=>{let e=await this._authHeaders(),r=new FormData;r.append("voiceFile",a,"voice.wav");let i=await this._client.POST("/configurations/{configurationId}/chat/stt",{params:{path:{configurationId:t}},headers:e,body:r,bodySerializer:()=>r});if(i.error)throw h(i.error,"getSpeechToText");return i.data.text};getTextToSpeech=async(t,a)=>{let e=await this._authHeaders(),r=await this._client.POST("/configurations/{configurationId}/chat/tts",{params:{path:{configurationId:t}},body:{content:a},headers:e,parseAs:"arrayBuffer"});if(r.error)throw h(r.error,"getTextToSpeech");return new Blob([r.data],{type:"audio/mp3"})};getAssistantChatConnection=t=>({url:new URL(`configurations/${encodeURIComponent(t)}/assistant/chat`,`${this._baseUrl}/`).toString(),headers:this._authHeaders});compactAssistantThread=async t=>{let a=await this._authHeaders(),e=await this._client.POST("/configurations/{configurationId}/assistant/chat/compact",{params:{path:{configurationId:t}},headers:{...a,"Content-Type":null}});if(e.error)throw new i(`compactAssistantThread API request failed: ${JSON.stringify(e.error)}`,e.response.status);return e.data};getAssistantEarlierThread=async(t,a,e)=>{let r=await this._authHeaders(),s=await this._client.GET("/configurations/{configurationId}/assistant/chat/threads/{threadId}",{params:{path:{configurationId:t,threadId:a},query:{limit:e}},headers:r});if(s.error)throw new i(`getAssistantEarlierThread API request failed: ${JSON.stringify(s.error)}`,s.response.status);let{messages:o}=s.data;return{threadId:a,messages:Array.isArray(o)?o:[],previousThreadId:s.response.headers.get("x-assistant-previous-thread")}};uploadAssistantImage=async(t,a)=>{let e=await this._authHeaders(),r=await this._client.POST("/configurations/{configurationId}/assistant/images",{params:{path:{configurationId:t}},headers:{...e,"Content-Type":a.type},body:a.type,bodySerializer:()=>a});if(r.error)throw new i(`uploadAssistantImage API request failed: ${JSON.stringify(r.error)}`,r.response.status,"false"===r.response.headers.get("x-assistant-thread-continuable"));return{imageId:r.data.imageId}};getAssistantImage=async(t,a)=>{let e=await this._authHeaders(),r=await this._client.GET("/configurations/{configurationId}/assistant/images/{imageId}",{params:{path:{configurationId:t,imageId:a}},headers:e,parseAs:"blob"});if(r.error)throw new i(`getAssistantImage API request failed: ${JSON.stringify(r.error)}`,r.response.status);return r.data};sendMessage=async(t,a,e)=>{let r=await this._authHeaders(),i=await this._client.POST("/configurations/{configurationId}/chat/message",{params:{path:{configurationId:t}},body:{content:a,context:e},headers:r,parseAs:"stream"});if(i.error)throw h(i.error,"sendMessage");let s=i.data?.pipeThrough(new TextDecoderStream).getReader();if(!s)throw Error("sendMessage API response did not contain a readable stream");let u=o();return n(s,u.writable.getWriter()),u.readable};sendToolCallResults=async(t,a,e,r)=>{let i=await this._authHeaders(),s=await this._client.POST("/configurations/{configurationId}/chat/tool-calls",{params:{path:{configurationId:t}},body:{agent:r,calls:a,results:e},headers:i,parseAs:"stream"});if(s.error)throw h(s.error,"sendToolCallResults");let u=s.data?.pipeThrough(new TextDecoderStream).getReader();if(!u)throw Error("sendMessage API response did not contain a readable stream");let c=o();return n(u,c.writable.getWriter()),c.readable};generateShareLink=async(t,a,e,r,i)=>{let s=await this._authHeaders(),o=await this._client.POST("/configurations/{configurationId}/share-link",{params:{path:{configurationId:t}},body:{revisionId:a,expiration:e,access:r,baseUrl:i},headers:s});if(o.error)throw h(o.error,"generateShareLink");return o.data};generateUploadLinks=async(t,a,e)=>{let r=await this._authHeaders(),i=await this._client.POST("/configurations/{configurationId}/{finalizationUuid}/image-upload-links",{params:{path:{configurationId:t,finalizationUuid:a}},body:{names:e},headers:r});if(i.error)throw h(i.error,"generateUploadLinks");return i.data.links};getConfigurationPublicUploadLink=async(t,a)=>{let e=await this._authHeaders(),r=await this._client.GET("/configurations/{configurationId}/resources/{key}/public/upload",{params:{path:{configurationId:t,key:a}},headers:e});if(r.error)throw h(r.error,"getConfigurationPublicUploadLink");return r.data};getConfigurationPrivateUploadLink=async(t,a)=>{let e=await this._authHeaders(),r=await this._client.GET("/configurations/{configurationId}/resources/{key}/private/upload",{params:{path:{configurationId:t,key:a}},headers:e});if(r.error)throw h(r.error,"getConfigurationPrivateUploadLink");return r.data};getConfigurationPrivateResourceLink=async(t,a)=>{let e=await this._authHeaders(),r=await this._client.GET("/configurations/{configurationId}/resources/{key}/private",{params:{path:{configurationId:t,key:a}},headers:e});if(r.error)throw h(r.error,"getConfigurationPrivateUploadLink");return r.data};cloneConfiguration=async(t,a)=>{let e=await this._authHeaders(),r=await this._client.POST("/configurations/{configurationId}/revisions/{revisionId}/clone",{params:{path:{configurationId:t,revisionId:a}},headers:{...e,"Content-Type":null}});if(r.error)throw h(r.error,"cloneConfiguration");return r.data}}
@@ -96,10 +96,25 @@ export interface AuthorizedPhoenixApiClient<FINALIZE_DATA extends Record<string,
96
96
  */
97
97
  compactAssistantThread: (configurationId: string) => Promise<AssistantThreadCompaction>;
98
98
  /**
99
- * Reads a closed assistant thread of the configuration that a later thread continues, at most
100
- * `limit` of its newest messages. Rejects with an {@link AssistantRequestError} when the server refuses.
99
+ * Reads a closed assistant thread of the configuration that a later thread continues: at most
100
+ * `limit` of its newest messages, or all of them without a limit. Rejects with an
101
+ * {@link AssistantRequestError} when the server refuses.
102
+ */
103
+ getAssistantEarlierThread: (configurationId: string, threadId: string, limit?: number) => Promise<AssistantEarlierThread>;
104
+ /**
105
+ * Stores an image in the assistant thread of the configuration, creating the thread when there is
106
+ * none yet: a screenshot the assistant took while a reply runs there, or an image the user attaches
107
+ * to their next message. Resolves with the id a tool result or a message references it by. The
108
+ * image is a JPEG or PNG blob of at most 2 MB, sent with its own type. Rejects with an
109
+ * {@link AssistantRequestError} when the server refuses, marked `threadNotContinuable` when the
110
+ * thread can take no new message until it is compacted.
111
+ */
112
+ uploadAssistantImage: (configurationId: string, image: Blob) => Promise<AssistantImageUpload>;
113
+ /**
114
+ * Reads a screenshot of an assistant thread of the configuration by the id its tool result
115
+ * references it by. Rejects with an {@link AssistantRequestError} when the server refuses.
101
116
  */
102
- getAssistantEarlierThread: (configurationId: string, threadId: string, limit: number) => Promise<AssistantEarlierThread>;
117
+ getAssistantImage: (configurationId: string, imageId: string) => Promise<Blob>;
103
118
  getSpeechToText: (configurationId: string, blob: Blob) => Promise<string>;
104
119
  getTextToSpeech: (configurationId: string, text: string) => Promise<Blob>;
105
120
  sendMessage: (configurationId: string, message: string, state?: Record<string, string>) => Promise<ReadableStream<ChatStreamChunk>>;
@@ -137,6 +152,11 @@ export interface AssistantThreadCompaction {
137
152
  /** The closed thread the new one continues. */
138
153
  readonly previousThreadId: string;
139
154
  }
155
+ /** A screenshot stored in an assistant thread. */
156
+ export interface AssistantImageUpload {
157
+ /** The id a tool result references the image by, as `assistant-image:<imageId>`. */
158
+ readonly imageId: string;
159
+ }
140
160
  /** A closed assistant thread, as the panel paints it above the thread that continues it. */
141
161
  export interface AssistantEarlierThread {
142
162
  readonly threadId: string;
@@ -148,9 +168,19 @@ export interface AssistantEarlierThread {
148
168
  export declare class AssistantRequestError extends Error {
149
169
  /** The HTTP status of the answer, which tells a refusal from an outage. */
150
170
  readonly status: number;
171
+ /**
172
+ * True when the server refused because the thread cannot be continued until it is compacted, as
173
+ * its `x-assistant-thread-continuable: false` response header says.
174
+ */
175
+ readonly threadNotContinuable: boolean;
151
176
  constructor(message: string,
152
177
  /** The HTTP status of the answer, which tells a refusal from an outage. */
153
- status: number);
178
+ status: number,
179
+ /**
180
+ * True when the server refused because the thread cannot be continued until it is compacted, as
181
+ * its `x-assistant-thread-continuable: false` response header says.
182
+ */
183
+ threadNotContinuable?: boolean);
154
184
  }
155
185
  export declare class InvalidDeploymentError extends Error {
156
186
  constructor();
@@ -1 +1 @@
1
- export class AssistantRequestError extends Error{status;constructor(e,r){super(e),this.status=r,this.name="AssistantRequestError"}}export class InvalidDeploymentError extends Error{constructor(){super(),this.name="InvalidDeployment",this.message="The referenced deployment is invalid."}}export class InvalidAccessKeyError extends Error{constructor(){super("The access token is no longer valid because it expired or the server rejected it. Open the configuration from a fresh link."),this.name="InvalidAccessKey"}}export class ChunkNotFoundError extends Error{chunkKey;constructor(e){super(`Published chunk "${e}" not found`),this.chunkKey=e,this.name="ChunkNotFound"}}export class OAuthStaleConnectionError extends Error{constructor(){super("OAuth connection is stale"),this.name="OAuthStaleConnectionError"}}export class ConfigurationSchemaMismatchError extends Error{details;constructor(e){super("Preset data does not match the configuration schema registered on the server. Why: the preset/demo entity data was changed without re-registering the schema, or the schema drifted. Fix: re-register/redeploy the domain schema, or update the preset data to match the current schema."),this.details=e,this.name="ConfigurationSchemaMismatchError"}}export const isConfigurationSchemaMismatchError=e=>e instanceof ConfigurationSchemaMismatchError;
1
+ export class AssistantRequestError extends Error{status;threadNotContinuable;constructor(e,t,r=!1){super(e),this.status=t,this.threadNotContinuable=r,this.name="AssistantRequestError"}}export class InvalidDeploymentError extends Error{constructor(){super(),this.name="InvalidDeployment",this.message="The referenced deployment is invalid."}}export class InvalidAccessKeyError extends Error{constructor(){super("The access token is no longer valid because it expired or the server rejected it. Open the configuration from a fresh link."),this.name="InvalidAccessKey"}}export class ChunkNotFoundError extends Error{chunkKey;constructor(e){super(`Published chunk "${e}" not found`),this.chunkKey=e,this.name="ChunkNotFound"}}export class OAuthStaleConnectionError extends Error{constructor(){super("OAuth connection is stale"),this.name="OAuthStaleConnectionError"}}export class ConfigurationSchemaMismatchError extends Error{details;constructor(e){super("Preset data does not match the configuration schema registered on the server. Why: the preset/demo entity data was changed without re-registering the schema, or the schema drifted. Fix: re-register/redeploy the domain schema, or update the preset data to match the current schema."),this.details=e,this.name="ConfigurationSchemaMismatchError"}}export const isConfigurationSchemaMismatchError=e=>e instanceof ConfigurationSchemaMismatchError;
@@ -9,5 +9,5 @@ export { MemoryAuthorizedPhoenixApiClient } from './memory-authorized-client.js'
9
9
  export { MemoryAuthenticatedClientPhoenixApiClient, memoryStorage } from './memory-authenticated-client.js';
10
10
  export { createUnsignedJWT } from './unsigned-jwt.js';
11
11
  export type { components as ApiTypes } from './phoenix-api.js';
12
- export type { ConfigurationPayload, ConfigurationSchema, ChatConfiguration, ChatConversation, ChatEmbedding, ChatMessageParam, ChatToolCallResult, Entity, UnauthenticatedPhoenixApiClient, AuthenticatedClientPhoenixApiClient, AuthorizedPhoenixApiClient, AssistantChatConnection, AssistantEarlierThread, AssistantThreadCompaction, OAuthProvider, OAuthAccessTokenResult, GoogleOAuthConfig, ReleaseToProductionResult, SharePointSiteConfig, } from './contract.js';
12
+ export type { ConfigurationPayload, ConfigurationSchema, ChatConfiguration, ChatConversation, ChatEmbedding, ChatMessageParam, ChatToolCallResult, Entity, UnauthenticatedPhoenixApiClient, AuthenticatedClientPhoenixApiClient, AuthorizedPhoenixApiClient, AssistantChatConnection, AssistantEarlierThread, AssistantImageUpload, AssistantThreadCompaction, OAuthProvider, OAuthAccessTokenResult, GoogleOAuthConfig, ReleaseToProductionResult, SharePointSiteConfig, } from './contract.js';
13
13
  export { AssistantRequestError, InvalidAccessKeyError, InvalidDeploymentError, ChunkNotFoundError, OAuthStaleConnectionError, ConfigurationSchemaMismatchError, isConfigurationSchemaMismatchError, } from './contract.js';
@@ -1,5 +1,5 @@
1
1
  import type { ChatMessageContentChunk, ChatToolCalls } from '@salsita-ai/contracts/chat';
2
- import type { AssistantChatConnection, AssistantEarlierThread, AssistantThreadCompaction, AuthorizedPhoenixApiClient, ConfigurationPayload, ConfigurationSchema } from './contract.js';
2
+ import type { AssistantChatConnection, AssistantEarlierThread, AssistantImageUpload, AssistantThreadCompaction, AuthorizedPhoenixApiClient, ConfigurationPayload, ConfigurationSchema } from './contract.js';
3
3
  import { LocalStorageAuthenticatedClientPhoenixApiClient } from './local-authenticated-client.js';
4
4
  /**
5
5
  * Local storage implementation for local dev, it does not check for schema changes, so you may need to create new configuration if the schema changes and
@@ -17,6 +17,8 @@ export declare class LocalStorageAuthorizedPhoenixApiClient<FINALIZE_DATA extend
17
17
  getAssistantChatConnection: () => AssistantChatConnection;
18
18
  compactAssistantThread: () => Promise<AssistantThreadCompaction>;
19
19
  getAssistantEarlierThread: () => Promise<AssistantEarlierThread>;
20
+ uploadAssistantImage: () => Promise<AssistantImageUpload>;
21
+ getAssistantImage: () => Promise<Blob>;
20
22
  getChatConversation: (configurationId: string) => Promise<readonly {
21
23
  readonly augmentation?: import("./phoenix-api.js").components['schemas']['ChatMessageAugmentation'];
22
24
  readonly content?: string;
@@ -1 +1 @@
1
- import*as t from"uuid";import{ChunkType as e}from"@salsita-ai/contracts/chat";import{LocalStorageAuthenticatedClientPhoenixApiClient as o}from"./local-authenticated-client.js";let r=(t,o)=>{let r={role:"assistant",content:["I see","Yes","Definitely"][Math.round(2*Math.random())]};return localStorage.setItem(`${o}-chat`,JSON.stringify([...t,r])),Promise.resolve(new ReadableStream({start(t){t.enqueue({type:e.content,content:r.content??""}),t.close()}}))};export class LocalStorageAuthorizedPhoenixApiClient extends o{getConfigurationData=t=>{let e=JSON.parse(localStorage.getItem(t)??"[]");if(!e||0===e.length)throw Error("Configuration not found!");return e};getConfiguration=t=>{let e=this.getConfigurationData(t);return Promise.resolve(e[e.length-1])};updateConfiguration=(e,o)=>{let r=this.getConfigurationData(e),n=t.v4(),a={...o,configurationId:e,revisionId:n,modelVersion:this._modelVersion};return localStorage.setItem(e,JSON.stringify([...r,a])),Promise.resolve({revisionId:n})};finalize=()=>{throw Error("Not implemented!")};waitForFinalizationToComplete=()=>{throw Error("Not implemented!")};getConfigurationRevision=(t,e)=>{let o=this.getConfigurationData(t).find(t=>t.revisionId===e);if(!o)throw Error("Revision not found!");return Promise.resolve(o)};getAssistantChatConnection=()=>{throw Error("The assistant chat needs the Phoenix server. Run the configurator against a server deployment.")};compactAssistantThread=async()=>{throw Error("The assistant chat needs the Phoenix server. Run the configurator against a server deployment.")};getAssistantEarlierThread=async()=>{throw Error("The assistant chat needs the Phoenix server. Run the configurator against a server deployment.")};getChatConversation=async t=>JSON.parse(localStorage.getItem(`${t}-chat`)??"[]");sendMessage=async(t,e)=>{let o=await this.getChatConversation(t);return localStorage.setItem(`${t}-chat`,JSON.stringify([...o,e])),r(o,t)};getSpeechToText=async()=>{throw Error("Not implemented!")};getTextToSpeech=async()=>{throw Error("Not implemented!")};sendToolCallResults=async t=>r(await this.getChatConversation(t),t);generateShareLink=async()=>({link:"https://yourcompany.com/configurator/link-will-not-work-it-is-dummy-link"});generateUploadLinks=async()=>{throw Error("Not implemented!")};getConfigurationPublicUploadLink=async()=>{throw Error("Not implemented!")};getConfigurationPrivateUploadLink=async()=>{throw Error("Not implemented!")};getConfigurationPrivateResourceLink=async()=>{throw Error("Not implemented!")};cloneConfiguration=async(t,e)=>{let o=localStorage.getItem(t);if(!o)throw Error("Configuration not found");let r=JSON.parse(o).find(t=>t.revisionId===e);if(!r)throw Error("Revision not found");return this.createConfiguration(r)}}
1
+ import*as t from"uuid";import{ChunkType as e}from"@salsita-ai/contracts/chat";import{LocalStorageAuthenticatedClientPhoenixApiClient as r}from"./local-authenticated-client.js";let o=(t,r)=>{let o={role:"assistant",content:["I see","Yes","Definitely"][Math.round(2*Math.random())]};return localStorage.setItem(`${r}-chat`,JSON.stringify([...t,o])),Promise.resolve(new ReadableStream({start(t){t.enqueue({type:e.content,content:o.content??""}),t.close()}}))};export class LocalStorageAuthorizedPhoenixApiClient extends r{getConfigurationData=t=>{let e=JSON.parse(localStorage.getItem(t)??"[]");if(!e||0===e.length)throw Error("Configuration not found!");return e};getConfiguration=t=>{let e=this.getConfigurationData(t);return Promise.resolve(e[e.length-1])};updateConfiguration=(e,r)=>{let o=this.getConfigurationData(e),n=t.v4(),a={...r,configurationId:e,revisionId:n,modelVersion:this._modelVersion};return localStorage.setItem(e,JSON.stringify([...o,a])),Promise.resolve({revisionId:n})};finalize=()=>{throw Error("Not implemented!")};waitForFinalizationToComplete=()=>{throw Error("Not implemented!")};getConfigurationRevision=(t,e)=>{let r=this.getConfigurationData(t).find(t=>t.revisionId===e);if(!r)throw Error("Revision not found!");return Promise.resolve(r)};getAssistantChatConnection=()=>{throw Error("The assistant chat needs the Phoenix server. Run the configurator against a server deployment.")};compactAssistantThread=async()=>{throw Error("The assistant chat needs the Phoenix server. Run the configurator against a server deployment.")};getAssistantEarlierThread=async()=>{throw Error("The assistant chat needs the Phoenix server. Run the configurator against a server deployment.")};uploadAssistantImage=async()=>{throw Error("The assistant chat needs the Phoenix server. Run the configurator against a server deployment.")};getAssistantImage=async()=>{throw Error("The assistant chat needs the Phoenix server. Run the configurator against a server deployment.")};getChatConversation=async t=>JSON.parse(localStorage.getItem(`${t}-chat`)??"[]");sendMessage=async(t,e)=>{let r=await this.getChatConversation(t);return localStorage.setItem(`${t}-chat`,JSON.stringify([...r,e])),o(r,t)};getSpeechToText=async()=>{throw Error("Not implemented!")};getTextToSpeech=async()=>{throw Error("Not implemented!")};sendToolCallResults=async t=>o(await this.getChatConversation(t),t);generateShareLink=async()=>({link:"https://yourcompany.com/configurator/link-will-not-work-it-is-dummy-link"});generateUploadLinks=async()=>{throw Error("Not implemented!")};getConfigurationPublicUploadLink=async()=>{throw Error("Not implemented!")};getConfigurationPrivateUploadLink=async()=>{throw Error("Not implemented!")};getConfigurationPrivateResourceLink=async()=>{throw Error("Not implemented!")};cloneConfiguration=async(t,e)=>{let r=localStorage.getItem(t);if(!r)throw Error("Configuration not found");let o=JSON.parse(r).find(t=>t.revisionId===e);if(!o)throw Error("Revision not found");return this.createConfiguration(o)}}