@salsita-ai/sdk 0.50.0-develop.c28cfb7ded → 0.50.0-develop.d0eaeed131

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 (378) hide show
  1. package/README.md +19 -14
  2. package/dist/admin/default-admin-elements.d.ts +9 -0
  3. package/dist/admin/default-admin-elements.js +1 -0
  4. package/dist/admin/default-elements/built-in-entity-element.d.ts +10 -0
  5. package/dist/admin/default-elements/built-in-entity-element.js +1 -0
  6. package/dist/admin/default-elements/built-in-layout-element.d.ts +10 -0
  7. package/dist/admin/default-elements/built-in-layout-element.js +1 -0
  8. package/dist/admin/default-elements/index.d.ts +2 -0
  9. package/dist/admin/default-elements/index.js +1 -0
  10. package/dist/admin/index.d.ts +1 -0
  11. package/dist/admin/index.js +1 -1
  12. package/dist/application-spec/caching/content-diff.js +1 -1
  13. package/dist/application-spec/core/application-file.d.ts +0 -2
  14. package/dist/application-spec/core/application-file.js +1 -1
  15. package/dist/application-spec/errors/diagnostic-codes.d.ts +5 -0
  16. package/dist/application-spec/errors/diagnostic-codes.js +1 -1
  17. package/dist/application-spec/errors/diagnostic-messages.d.ts +5 -0
  18. package/dist/application-spec/errors/diagnostic-messages.js +1 -1
  19. package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
  20. package/dist/application-spec/generate-application/code/generate-application-code.d.ts +3 -2
  21. package/dist/application-spec/generate-application/code/generate-application-code.js +1 -1
  22. package/dist/application-spec/generate-application/code/project-scaffolding.d.ts +15 -14
  23. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  24. package/dist/application-spec/generate-application/code/templates/admin-config.js +3 -0
  25. package/dist/application-spec/generate-application/code/templates/common/format-property-key.d.ts +7 -0
  26. package/dist/application-spec/generate-application/code/templates/common/format-property-key.js +1 -0
  27. package/dist/application-spec/generate-application/code/templates/common/schema-to-type-string.js +3 -3
  28. package/dist/application-spec/generate-application/code/templates/eslint-config.d.ts +5 -0
  29. package/dist/application-spec/generate-application/code/templates/eslint-config.js +4 -5
  30. package/dist/application-spec/generate-application/code/templates/frontend-config.js +3 -5
  31. package/dist/application-spec/generate-application/code/templates/gitignore.js +0 -3
  32. package/dist/application-spec/generate-application/code/templates/globals.js +7 -5
  33. package/dist/application-spec/generate-application/code/templates/index.d.ts +3 -2
  34. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  35. package/dist/application-spec/generate-application/code/templates/lingui-rc.d.ts +5 -0
  36. package/dist/application-spec/generate-application/code/templates/lingui-rc.js +4 -4
  37. package/dist/application-spec/generate-application/code/templates/prettier-config.d.ts +5 -0
  38. package/dist/application-spec/generate-application/code/templates/prettier-config.js +4 -5
  39. package/dist/application-spec/generate-application/code/templates/root-tsconfig.d.ts +6 -0
  40. package/dist/application-spec/generate-application/code/templates/root-tsconfig.js +2 -0
  41. package/dist/application-spec/generate-application/code/templates/skills/phoenix-cli-skill.js +1 -1
  42. package/dist/application-spec/generate-application/code/templates/skills/phoenix-create-configurator-skill.js +1 -1
  43. package/dist/application-spec/generate-application/code/templates/skills/phoenix-feedback-skill.js +5 -5
  44. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +3 -3
  45. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +1 -1
  46. package/dist/application-spec/generate-application/code/templates/skills/phoenix-variants-skill.js +2 -2
  47. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +16 -4
  48. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +2 -2
  49. package/dist/application-spec/generate-application/code/templates/spec-code/collect-spec-code.d.ts +58 -0
  50. package/dist/application-spec/generate-application/code/templates/spec-code/collect-spec-code.js +1 -0
  51. package/dist/application-spec/generate-application/code/templates/spec-code/index.d.ts +2 -0
  52. package/dist/application-spec/generate-application/code/templates/spec-code/index.js +1 -0
  53. package/dist/application-spec/generate-application/code/templates/spec-code/spec-code.d.ts +18 -0
  54. package/dist/application-spec/generate-application/code/templates/spec-code/spec-code.js +41 -0
  55. package/dist/application-spec/generate-application/code/templates/spec-messages/index.d.ts +1 -0
  56. package/dist/application-spec/generate-application/code/templates/spec-messages/index.js +1 -0
  57. package/dist/application-spec/generate-application/code/templates/spec-messages/spec-messages.d.ts +20 -0
  58. package/dist/application-spec/generate-application/code/templates/spec-messages/spec-messages.js +6 -0
  59. package/dist/application-spec/generate-application/code/templates/tsconfig.d.ts +5 -0
  60. package/dist/application-spec/generate-application/code/templates/tsconfig.js +1 -1
  61. package/dist/application-spec/generate-application/code/templates/webhooks-config.js +2 -3
  62. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-model-runtime.d.ts +4 -3
  63. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.d.ts +2 -2
  64. package/dist/application-spec/generate-application/runtime/admin-runtime/states-runtime.d.ts +2 -2
  65. package/dist/application-spec/generate-application/runtime/application-runtime.d.ts +6 -5
  66. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-model-runtime.d.ts +4 -3
  67. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +2 -2
  68. package/dist/application-spec/generate-application/runtime/configurator-runtime/states-runtime.d.ts +2 -2
  69. package/dist/application-spec/generate-application/runtime/migrations/migration-runtime.d.ts +2 -2
  70. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.d.ts +2 -2
  71. package/dist/application-spec/generate-application/runtime/sections/data-runtime.d.ts +4 -4
  72. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.d.ts +3 -2
  73. package/dist/application-spec/generate-application/runtime/sections/theme-runtime.d.ts +2 -2
  74. package/dist/application-spec/generate-application/runtime/sections/transformers-runtime.d.ts +3 -3
  75. package/dist/application-spec/generate-application/runtime-spec/decode-runtime-spec.d.ts +9 -0
  76. package/dist/application-spec/generate-application/runtime-spec/decode-runtime-spec.js +1 -0
  77. package/dist/application-spec/generate-application/runtime-spec/encode-runtime-spec.d.ts +8 -0
  78. package/dist/application-spec/generate-application/runtime-spec/encode-runtime-spec.js +1 -0
  79. package/dist/application-spec/generate-application/runtime-spec/encoded-runtime-spec.d.ts +27 -0
  80. package/dist/application-spec/generate-application/runtime-spec/encoded-runtime-spec.js +1 -0
  81. package/dist/application-spec/generate-application/runtime-spec/index.d.ts +5 -0
  82. package/dist/application-spec/generate-application/runtime-spec/index.js +1 -0
  83. package/dist/application-spec/generate-application/runtime-spec/runtime-spec.d.ts +68 -0
  84. package/dist/application-spec/generate-application/runtime-spec/runtime-spec.js +1 -0
  85. package/dist/application-spec/generate-application/runtime-spec/spec-code-id.d.ts +40 -0
  86. package/dist/application-spec/generate-application/runtime-spec/spec-code-id.js +1 -0
  87. package/dist/application-spec/parse-application-files/categorize/categorize-files.d.ts +28 -0
  88. package/dist/application-spec/parse-application-files/categorize/categorize-files.js +1 -1
  89. package/dist/application-spec/parse-application-files/categorize/earlier-generated-editor-configs.d.ts +16 -0
  90. package/dist/application-spec/parse-application-files/categorize/earlier-generated-editor-configs.js +9 -0
  91. package/dist/application-spec/parse-application-files/categorize/earlier-generated-tsconfig.d.ts +9 -0
  92. package/dist/application-spec/parse-application-files/categorize/earlier-generated-tsconfig.js +1 -0
  93. package/dist/application-spec/parse-application-files/raw-spec/parse-yaml-spec-file.js +1 -1
  94. package/dist/application-spec/parse-application-files/spec/application/admin-spec/admin-spec.js +1 -1
  95. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/configurator-spec.js +1 -1
  96. package/dist/application-spec/parse-application-files/spec/common/index.d.ts +1 -0
  97. package/dist/application-spec/parse-application-files/spec/common/index.js +1 -1
  98. package/dist/application-spec/parse-application-files/spec/common/value-type/format-value-type.d.ts +3 -0
  99. package/dist/application-spec/parse-application-files/spec/common/value-type/format-value-type.js +1 -0
  100. package/dist/application-spec/parse-application-files/spec/common/value-type/index.d.ts +5 -0
  101. package/dist/application-spec/parse-application-files/spec/common/value-type/index.js +1 -0
  102. package/dist/application-spec/parse-application-files/spec/common/value-type/intersect-value-types.d.ts +6 -0
  103. package/dist/application-spec/parse-application-files/spec/common/value-type/intersect-value-types.js +1 -0
  104. package/dist/application-spec/parse-application-files/spec/common/value-type/is-assignable-value-type.d.ts +8 -0
  105. package/dist/application-spec/parse-application-files/spec/common/value-type/is-assignable-value-type.js +1 -0
  106. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type-at.d.ts +10 -0
  107. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type-at.js +1 -0
  108. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type.d.ts +98 -0
  109. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type.js +1 -0
  110. package/dist/application-spec/parse-application-files/spec/components/bindings/component-path.d.ts +13 -0
  111. package/dist/application-spec/parse-application-files/spec/components/bindings/component-path.js +1 -0
  112. package/dist/application-spec/parse-application-files/spec/components/bindings/index.d.ts +2 -0
  113. package/dist/application-spec/parse-application-files/spec/components/bindings/index.js +1 -1
  114. package/dist/application-spec/parse-application-files/spec/components/bindings/read-binding-type.d.ts +24 -0
  115. package/dist/application-spec/parse-application-files/spec/components/bindings/read-binding-type.js +1 -0
  116. package/dist/application-spec/parse-application-files/spec/components/component-state-type.d.ts +8 -0
  117. package/dist/application-spec/parse-application-files/spec/components/component-state-type.js +1 -0
  118. package/dist/application-spec/parse-application-files/spec/components/filter-criterion-types.d.ts +13 -0
  119. package/dist/application-spec/parse-application-files/spec/components/filter-criterion-types.js +1 -0
  120. package/dist/application-spec/parse-application-files/spec/components/static-entity-id.d.ts +14 -0
  121. package/dist/application-spec/parse-application-files/spec/components/static-entity-id.js +1 -0
  122. package/dist/application-spec/parse-application-files/spec/components/user-component-entry.d.ts +6 -0
  123. package/dist/application-spec/parse-application-files/spec/components/user-component-entry.js +1 -1
  124. package/dist/application-spec/parse-application-files/spec/components/user-components.d.ts +7 -4
  125. package/dist/application-spec/parse-application-files/spec/components/user-components.js +1 -1
  126. package/dist/application-spec/parse-application-files/spec/expressions/expression-read-types.d.ts +24 -0
  127. package/dist/application-spec/parse-application-files/spec/expressions/expression-read-types.js +1 -0
  128. package/dist/application-spec/parse-application-files/spec/expressions/expression-read.d.ts +13 -0
  129. package/dist/application-spec/parse-application-files/spec/expressions/expression-read.js +1 -0
  130. package/dist/application-spec/parse-application-files/spec/expressions/expression-value-type.d.ts +9 -0
  131. package/dist/application-spec/parse-application-files/spec/expressions/expression-value-type.js +1 -0
  132. package/dist/application-spec/parse-application-files/spec/expressions/expressions.d.ts +6 -2
  133. package/dist/application-spec/parse-application-files/spec/expressions/expressions.js +1 -1
  134. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.d.ts +3 -1
  135. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.js +1 -1
  136. package/dist/application-spec/parse-application-files/spec/invariants/invariants.d.ts +2 -2
  137. package/dist/application-spec/parse-application-files/spec/invariants/invariants.js +1 -1
  138. package/dist/application-spec/parse-application-files/spec/model/index.d.ts +1 -0
  139. package/dist/application-spec/parse-application-files/spec/model/index.js +1 -1
  140. package/dist/application-spec/parse-application-files/spec/model/model-type-resolution.d.ts +10 -0
  141. package/dist/application-spec/parse-application-files/spec/model/model-type-resolution.js +1 -0
  142. package/dist/client/phoenix-api.d.ts +367 -0
  143. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +7 -1
  144. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  145. package/dist/configurator/pages/DefaultConfiguratorLayout.d.ts +3 -2
  146. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  147. package/dist/configurator/pages/default-configurator-elements.d.ts +2 -1
  148. package/dist/configurator/pages/default-configurator-elements.js +1 -1
  149. package/dist/configurator/pages/default-elements/built-in-entity-element.d.ts +10 -0
  150. package/dist/configurator/pages/default-elements/built-in-entity-element.js +1 -0
  151. package/dist/configurator/pages/default-elements/built-in-layout-element.d.ts +10 -0
  152. package/dist/configurator/pages/default-elements/built-in-layout-element.js +1 -0
  153. package/dist/configurator/pages/default-elements/domain-control-elements.d.ts +6 -0
  154. package/dist/configurator/pages/default-elements/domain-control-elements.js +1 -0
  155. package/dist/configurator/pages/default-elements/index.d.ts +4 -0
  156. package/dist/configurator/pages/default-elements/index.js +1 -0
  157. package/dist/configurator/pages/default-elements/recipe-panel-elements.d.ts +3 -0
  158. package/dist/configurator/pages/default-elements/recipe-panel-elements.js +1 -0
  159. package/dist/configurator/pages/default-elements/sidebar-footer-elements.d.ts +7 -0
  160. package/dist/configurator/pages/default-elements/sidebar-footer-elements.js +1 -0
  161. package/dist/configurator/pages/default-elements/toolbar-elements.d.ts +7 -0
  162. package/dist/configurator/pages/default-elements/toolbar-elements.js +1 -0
  163. package/dist/configurator/ui/SaveMessageSnackbars.d.ts +10 -0
  164. package/dist/configurator/ui/SaveMessageSnackbars.js +1 -0
  165. package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +7 -2
  166. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
  167. package/dist/configurator/ui/assistant/AssistantPanel.js +1 -1
  168. package/dist/configurator/ui/assistant/AssistantThread.js +1 -1
  169. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.d.ts +1 -1
  170. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.js +1 -1
  171. package/dist/configurator/ui/assistant/entity-link/entity-link-state.d.ts +1 -1
  172. package/dist/configurator/ui/assistant/entity-link/index.d.ts +0 -1
  173. package/dist/configurator/ui/assistant/entity-link/index.js +1 -1
  174. package/dist/configurator/ui/assistant/form/AssistantForm.d.ts +19 -0
  175. package/dist/configurator/ui/assistant/form/AssistantForm.js +1 -0
  176. package/dist/configurator/ui/assistant/form/built-in-form-registry.d.ts +10 -0
  177. package/dist/configurator/ui/assistant/form/built-in-form-registry.js +1 -0
  178. package/dist/configurator/ui/assistant/form/compose-answer.d.ts +11 -0
  179. package/dist/configurator/ui/assistant/form/compose-answer.js +1 -0
  180. package/dist/configurator/ui/assistant/form/describe-build-errors.d.ts +6 -0
  181. package/dist/configurator/ui/assistant/form/describe-build-errors.js +1 -0
  182. package/dist/configurator/ui/assistant/form/form-element-definition.d.ts +14 -0
  183. package/dist/configurator/ui/assistant/form/form-element-definition.js +1 -0
  184. package/dist/configurator/ui/assistant/form/form-model.d.ts +38 -0
  185. package/dist/configurator/ui/assistant/form/form-model.js +1 -0
  186. package/dist/configurator/ui/assistant/form/form-registry.d.ts +31 -0
  187. package/dist/configurator/ui/assistant/form/form-registry.js +8 -0
  188. package/dist/configurator/ui/assistant/form/form-state.d.ts +4 -0
  189. package/dist/configurator/ui/assistant/form/form-state.js +1 -0
  190. package/dist/configurator/ui/assistant/form/index.d.ts +2 -0
  191. package/dist/configurator/ui/assistant/form/index.js +1 -0
  192. package/dist/configurator/ui/assistant/form/parse-form-block.d.ts +9 -0
  193. package/dist/configurator/ui/assistant/form/parse-form-block.js +1 -0
  194. package/dist/configurator/ui/assistant/form/read-form-attributes.d.ts +13 -0
  195. package/dist/configurator/ui/assistant/form/read-form-attributes.js +1 -0
  196. package/dist/configurator/ui/assistant/form-elements/FormGroup.d.ts +3 -0
  197. package/dist/configurator/ui/assistant/form-elements/FormGroup.js +1 -0
  198. package/dist/configurator/ui/assistant/form-elements/FormOptions.d.ts +3 -0
  199. package/dist/configurator/ui/assistant/form-elements/FormOptions.js +1 -0
  200. package/dist/configurator/ui/assistant/form-elements/FormReply.d.ts +3 -0
  201. package/dist/configurator/ui/assistant/form-elements/FormReply.js +1 -0
  202. package/dist/configurator/ui/assistant/form-elements/FormText.d.ts +3 -0
  203. package/dist/configurator/ui/assistant/form-elements/FormText.js +1 -0
  204. package/dist/configurator/ui/assistant/form-elements/form-element-props.d.ts +34 -0
  205. package/dist/configurator/ui/assistant/form-elements/form-element-props.js +1 -0
  206. package/dist/configurator/ui/assistant/form-elements/index.d.ts +5 -0
  207. package/dist/configurator/ui/assistant/form-elements/index.js +1 -0
  208. package/dist/configurator/ui/assistant/reference-link/AssistantReferenceLink.d.ts +16 -0
  209. package/dist/configurator/ui/assistant/reference-link/AssistantReferenceLink.js +1 -0
  210. package/dist/configurator/ui/assistant/reference-link/assistant-link-target.d.ts +34 -0
  211. package/dist/configurator/ui/assistant/reference-link/assistant-link-target.js +1 -0
  212. package/dist/configurator/ui/assistant/reference-link/assistant-reference-details.d.ts +25 -0
  213. package/dist/configurator/ui/assistant/reference-link/assistant-reference-details.js +1 -0
  214. package/dist/configurator/ui/assistant/reference-link/index.d.ts +3 -0
  215. package/dist/configurator/ui/assistant/reference-link/index.js +1 -0
  216. package/dist/configurator/ui/assistant/reference-link/reference-styles.d.ts +12 -0
  217. package/dist/configurator/ui/assistant/reference-link/reference-styles.js +1 -0
  218. package/dist/configurator/ui/assistant/reference-link/use-assistant-reference-details.d.ts +8 -0
  219. package/dist/configurator/ui/assistant/reference-link/use-assistant-reference-details.js +1 -0
  220. package/dist/configurator/ui/assistant/resource-image/AssistantImage.d.ts +9 -0
  221. package/dist/configurator/ui/assistant/resource-image/AssistantImage.js +1 -0
  222. package/dist/configurator/ui/assistant/resource-image/index.d.ts +3 -0
  223. package/dist/configurator/ui/assistant/resource-image/index.js +1 -0
  224. package/dist/configurator/ui/assistant/resource-image/resource-path.d.ts +11 -0
  225. package/dist/configurator/ui/assistant/resource-image/resource-path.js +1 -0
  226. package/dist/configurator/ui/assistant/resource-image/use-resource-image-url.d.ts +5 -0
  227. package/dist/configurator/ui/assistant/resource-image/use-resource-image-url.js +1 -0
  228. package/dist/configurator/ui/assistant/streamed-markdown.d.ts +2 -0
  229. package/dist/configurator/ui/assistant/streamed-markdown.js +2 -2
  230. package/dist/configurator/ui/assistant/thread-items.d.ts +8 -1
  231. package/dist/configurator/ui/assistant/thread-items.js +1 -1
  232. package/dist/configurator/ui/assistant/use-follow-stream.js +1 -1
  233. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.js +1 -1
  234. package/dist/configurator/ui/configurator-layout/slots/services/Services.js +1 -1
  235. package/dist/configurator/ui/legacy/layout/common/SummaryReadLayout.js +1 -1
  236. package/dist/configurator/ui/legacy/layout/simple/SimpleOwnerLayout.js +1 -1
  237. package/dist/configurator/ui/legacy/layout/steps/StepsOwnerLayout.js +1 -1
  238. package/dist/configurator/ui/legacy/layout/tabs/TabsOwnerLayout.js +1 -1
  239. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomOwnerUi.d.ts +1 -0
  240. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomOwnerUi.js +1 -1
  241. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomReadUi.d.ts +1 -0
  242. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomReadUi.js +1 -1
  243. package/dist/docs/controls/select-child-entity/cardselect.mdx +1 -0
  244. package/dist/docs/fabs/basic.mdx +2 -2
  245. package/dist/docs/index.json +1 -1
  246. package/dist/docs/layouts/custom-layout.mdx +324 -15
  247. package/dist/docs/phoenix/clerk-sign-in.mdx +1 -1
  248. package/dist/docs/phoenix/components.mdx +6 -0
  249. package/dist/docs/phoenix/configurator-interface.mdx +10 -10
  250. package/dist/docs/phoenix/deployments.mdx +2 -6
  251. package/dist/docs/phoenix/domain-model.mdx +2 -0
  252. package/dist/docs/phoenix/getting-started.mdx +6 -3
  253. package/dist/docs/phoenix/layout-slots.mdx +9 -9
  254. package/dist/docs/phoenix/localization.mdx +10 -6
  255. package/dist/docs/phoenix/migration-guide.mdx +24 -11
  256. package/dist/docs/phoenix/phoenix-cli.mdx +65 -20
  257. package/dist/docs/phoenix/project-structure.mdx +66 -32
  258. package/dist/docs/phoenix/quickstart.mdx +7 -7
  259. package/dist/docs/phoenix/sdk-builder-workflow.mdx +7 -7
  260. package/dist/docs/phoenix/testing.mdx +8 -0
  261. package/dist/docs/phoenix/webhooks.mdx +4 -4
  262. package/dist/domain/application/assistant/assistant-form-elements.d.ts +28 -0
  263. package/dist/domain/application/assistant/assistant-form-elements.js +1 -0
  264. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
  265. package/dist/domain/application/assistant/index.d.ts +2 -0
  266. package/dist/domain/application/assistant/index.js +1 -1
  267. package/dist/domain/application/assistant-recipe-groups.d.ts +3 -1
  268. package/dist/domain/core/schema/extended-schema-validator.js +1 -1
  269. package/dist/domain/domain-runtime/spec/module-checks/element-registration.d.ts +12 -11
  270. package/dist/domain/domain-runtime/spec/module-checks/element-registration.js +1 -1
  271. package/dist/domain/domain-runtime/spec/module-checks/index.d.ts +1 -1
  272. package/dist/domain/domain-runtime/spec/module-checks/index.js +1 -1
  273. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  274. package/dist/domain/system-components/child-entity-selection.js +1 -1
  275. package/dist/domain/system-components/common/scene-entity-control-schema.d.ts +3 -0
  276. package/dist/domain/system-components/common/scene-entity-control-schema.js +1 -1
  277. package/dist/globals/index.d.ts +2 -0
  278. package/dist/i18n/locales/cs/messages.js +1 -1
  279. package/dist/i18n/locales/da/messages.js +1 -1
  280. package/dist/i18n/locales/de/messages.js +1 -1
  281. package/dist/i18n/locales/de-AT/messages.js +1 -1
  282. package/dist/i18n/locales/en/messages.js +1 -1
  283. package/dist/i18n/locales/en-AU/messages.js +1 -1
  284. package/dist/i18n/locales/en-GB/messages.js +1 -1
  285. package/dist/i18n/locales/es/messages.js +1 -1
  286. package/dist/i18n/locales/fr/messages.js +1 -1
  287. package/dist/i18n/locales/hu/messages.js +1 -1
  288. package/dist/i18n/locales/it/messages.js +1 -1
  289. package/dist/i18n/locales/nl/messages.js +1 -1
  290. package/dist/i18n/locales/pl/messages.js +1 -1
  291. package/dist/i18n/locales/pt/messages.js +1 -1
  292. package/dist/i18n/locales/ro/messages.js +1 -1
  293. package/dist/i18n/locales/sk/messages.js +1 -1
  294. package/dist/i18n/locales/tr/messages.js +1 -1
  295. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  296. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  297. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +79 -80
  298. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-admin.js +10 -11
  299. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-admin.js +9 -10
  300. package/dist/phoenix/application-spec/application-spec-builder.d.ts +0 -2
  301. package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
  302. package/dist/phoenix/application-spec/generate-application-spec-project.d.ts +0 -2
  303. package/dist/phoenix/application-spec/generate-application-spec-project.js +2 -2
  304. package/dist/phoenix/application-spec/generate-application-spec-story.js +2 -2
  305. package/dist/phoenix/application-spec/generate-project-files.d.ts +0 -2
  306. package/dist/phoenix/application-spec/project-files.js +1 -1
  307. package/dist/phoenix/bin.d.ts +2 -0
  308. package/dist/phoenix/bin.js +2 -0
  309. package/dist/phoenix/check-configs/built-in-eslint-config.d.ts +9 -0
  310. package/dist/phoenix/check-configs/built-in-eslint-config.js +1 -0
  311. package/dist/phoenix/check-configs/eslint-config.d.ts +10 -0
  312. package/dist/phoenix/check-configs/eslint-config.js +1 -0
  313. package/dist/phoenix/check-configs/index.d.ts +8 -0
  314. package/dist/phoenix/check-configs/index.js +1 -0
  315. package/dist/phoenix/check-configs/typescript-project.d.ts +5 -0
  316. package/dist/phoenix/check-configs/typescript-project.js +1 -0
  317. package/dist/phoenix/cli.d.ts +0 -1
  318. package/dist/phoenix/cli.js +1 -2
  319. package/dist/phoenix/commands/build.js +1 -1
  320. package/dist/phoenix/commands/check.js +1 -1
  321. package/dist/phoenix/commands/clean.js +1 -1
  322. package/dist/phoenix/commands/deploy.js +2 -2
  323. package/dist/phoenix/commands/deps/deps.d.ts +73 -0
  324. package/dist/phoenix/commands/deps/deps.js +3 -0
  325. package/dist/phoenix/commands/deps/index.d.ts +1 -0
  326. package/dist/phoenix/commands/deps/index.js +1 -0
  327. package/dist/phoenix/commands/deps/sdk-manifest.d.ts +12 -0
  328. package/dist/phoenix/commands/deps/sdk-manifest.js +1 -0
  329. package/dist/phoenix/commands/dev.js +5 -5
  330. package/dist/phoenix/commands/fix.js +1 -1
  331. package/dist/phoenix/commands/index.d.ts +1 -0
  332. package/dist/phoenix/commands/index.js +1 -1
  333. package/dist/phoenix/commands/init.d.ts +17 -5
  334. package/dist/phoenix/commands/init.js +1 -1
  335. package/dist/phoenix/commands/link.js +1 -1
  336. package/dist/phoenix/commands/prettier.js +1 -1
  337. package/dist/phoenix/commands/sync.js +1 -1
  338. package/dist/phoenix/commands/unlink.js +1 -1
  339. package/dist/phoenix/services/application-spec-project-watcher.d.ts +2 -2
  340. package/dist/phoenix/services/application-spec-project-watcher.js +2 -2
  341. package/dist/phoenix/services/lingui.d.ts +8 -0
  342. package/dist/phoenix/services/lingui.js +1 -1
  343. package/dist/phoenix/services/swc.js +1 -1
  344. package/dist/phoenix/services/vite-config.js +1 -1
  345. package/dist/phoenix/utils/index.d.ts +4 -2
  346. package/dist/phoenix/utils/index.js +1 -1
  347. package/dist/phoenix/utils/node-version/index.d.ts +1 -0
  348. package/dist/phoenix/utils/node-version/index.js +1 -0
  349. package/dist/phoenix/utils/node-version/supported-node-version.d.ts +12 -0
  350. package/dist/phoenix/utils/node-version/supported-node-version.js +4 -0
  351. package/dist/phoenix/utils/package-info.d.ts +0 -9
  352. package/dist/phoenix/utils/package-info.js +1 -1
  353. package/dist/phoenix/utils/package-manager/index.d.ts +2 -0
  354. package/dist/phoenix/utils/package-manager/index.js +1 -0
  355. package/dist/phoenix/utils/package-manager/package-manager-commands.d.ts +19 -0
  356. package/dist/phoenix/utils/package-manager/package-manager-commands.js +1 -0
  357. package/dist/phoenix/utils/package-manager/pnpm-project.d.ts +9 -0
  358. package/dist/phoenix/utils/package-manager/pnpm-project.js +1 -0
  359. package/dist/phoenix/utils/run-command.d.ts +11 -0
  360. package/dist/phoenix/utils/run-command.js +1 -1
  361. package/dist/phoenix/utils/sdk-tool/index.d.ts +1 -0
  362. package/dist/phoenix/utils/sdk-tool/index.js +1 -0
  363. package/dist/phoenix/utils/sdk-tool/resolve-sdk-tool-bin.d.ts +15 -0
  364. package/dist/phoenix/utils/sdk-tool/resolve-sdk-tool-bin.js +1 -0
  365. package/dist/react-sdk/domain-application-context/DomainLifecycleBoundary.js +1 -1
  366. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.d.ts +15 -4
  367. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.js +1 -1
  368. package/dist/ui-sdk/theme/types.d.ts +1 -1
  369. package/package.json +16 -12
  370. package/schema/domain-spec.json +86 -8
  371. package/dist/application-spec/generate-application/code/templates/nvmrc.d.ts +0 -1
  372. package/dist/application-spec/generate-application/code/templates/nvmrc.js +0 -2
  373. package/dist/application-spec/generate-application/code/templates/package-json.d.ts +0 -10
  374. package/dist/application-spec/generate-application/code/templates/package-json.js +0 -1
  375. package/dist/configurator/ui/assistant/entity-link/entity-link-target.d.ts +0 -5
  376. package/dist/configurator/ui/assistant/entity-link/entity-link-target.js +0 -1
  377. package/dist/phoenix/commands/generate-project-files.d.ts +0 -6
  378. package/dist/phoenix/commands/generate-project-files.js +0 -1
@@ -55,6 +55,38 @@ export interface paths {
55
55
  readonly patch?: never
56
56
  readonly trace?: never
57
57
  }
58
+ readonly '/auth/callback': {
59
+ readonly parameters: {
60
+ readonly query?: never
61
+ readonly header?: never
62
+ readonly path?: never
63
+ readonly cookie?: never
64
+ }
65
+ readonly get: operations['completeBrowserLogin']
66
+ readonly put?: never
67
+ readonly post?: never
68
+ readonly delete?: never
69
+ readonly options?: never
70
+ readonly head?: never
71
+ readonly patch?: never
72
+ readonly trace?: never
73
+ }
74
+ readonly '/auth/config': {
75
+ readonly parameters: {
76
+ readonly query?: never
77
+ readonly header?: never
78
+ readonly path?: never
79
+ readonly cookie?: never
80
+ }
81
+ readonly get: operations['getBrowserAuthConfig']
82
+ readonly put?: never
83
+ readonly post?: never
84
+ readonly delete?: never
85
+ readonly options?: never
86
+ readonly head?: never
87
+ readonly patch?: never
88
+ readonly trace?: never
89
+ }
58
90
  readonly '/auth/identity': {
59
91
  readonly parameters: {
60
92
  readonly query?: never
@@ -72,6 +104,39 @@ export interface paths {
72
104
  readonly patch?: never
73
105
  readonly trace?: never
74
106
  }
107
+ readonly '/auth/login': {
108
+ readonly parameters: {
109
+ readonly query?: never
110
+ readonly header?: never
111
+ readonly path?: never
112
+ readonly cookie?: never
113
+ }
114
+ readonly get: operations['startBrowserLogin']
115
+ readonly put?: never
116
+ readonly post?: never
117
+ readonly delete?: never
118
+ readonly options?: never
119
+ readonly head?: never
120
+ readonly patch?: never
121
+ readonly trace?: never
122
+ }
123
+ readonly '/auth/logout': {
124
+ readonly parameters: {
125
+ readonly query?: never
126
+ readonly header?: never
127
+ readonly path?: never
128
+ readonly cookie?: never
129
+ }
130
+ readonly get?: never
131
+ readonly put?: never
132
+ /** @description Destroy the local session and return the fixed Cognito hosted logout URL. Requires the exact shared Studio Origin. */
133
+ readonly post: operations['endBrowserSession']
134
+ readonly delete?: never
135
+ readonly options?: never
136
+ readonly head?: never
137
+ readonly patch?: never
138
+ readonly trace?: never
139
+ }
75
140
  readonly '/auth/me': {
76
141
  readonly parameters: {
77
142
  readonly query?: never
@@ -89,6 +154,23 @@ export interface paths {
89
154
  readonly patch?: never
90
155
  readonly trace?: never
91
156
  }
157
+ readonly '/auth/session': {
158
+ readonly parameters: {
159
+ readonly query?: never
160
+ readonly header?: never
161
+ readonly path?: never
162
+ readonly cookie?: never
163
+ }
164
+ /** @description Read the opaque browser session and current account status/memberships. Requires the exact shared Studio Origin. */
165
+ readonly get: operations['getBrowserSession']
166
+ readonly put?: never
167
+ readonly post?: never
168
+ readonly delete?: never
169
+ readonly options?: never
170
+ readonly head?: never
171
+ readonly patch?: never
172
+ readonly trace?: never
173
+ }
92
174
  readonly '/auth/token': {
93
175
  readonly parameters: {
94
176
  readonly query?: never
@@ -1620,6 +1702,114 @@ export interface operations {
1620
1702
  }
1621
1703
  }
1622
1704
  }
1705
+ readonly completeBrowserLogin: {
1706
+ readonly parameters: {
1707
+ readonly query: {
1708
+ readonly code: string
1709
+ readonly state: string
1710
+ }
1711
+ readonly header?: never
1712
+ readonly path?: never
1713
+ readonly cookie?: never
1714
+ }
1715
+ readonly requestBody?: never
1716
+ readonly responses: {
1717
+ /** @description Redirect to the configured sign-in or Studio destination. */
1718
+ readonly 302: {
1719
+ headers: {
1720
+ readonly [name: string]: unknown
1721
+ }
1722
+ content: {
1723
+ readonly 'application/json': Record<string, unknown>
1724
+ }
1725
+ }
1726
+ /** @description Bad Request! */
1727
+ readonly 400: {
1728
+ headers: {
1729
+ readonly [name: string]: unknown
1730
+ }
1731
+ content: {
1732
+ readonly 'application/json': components['schemas']['BadRequestError']
1733
+ }
1734
+ }
1735
+ /** @description Unauthorized! */
1736
+ readonly 401: {
1737
+ headers: {
1738
+ readonly [name: string]: unknown
1739
+ }
1740
+ content: {
1741
+ readonly 'application/json': components['schemas']['UnauthorizedError']
1742
+ }
1743
+ }
1744
+ /** @description Forbidden! */
1745
+ readonly 403: {
1746
+ headers: {
1747
+ readonly [name: string]: unknown
1748
+ }
1749
+ content: {
1750
+ readonly 'application/json': components['schemas']['ForbiddenError']
1751
+ }
1752
+ }
1753
+ /** @description Not Found! */
1754
+ readonly 404: {
1755
+ headers: {
1756
+ readonly [name: string]: unknown
1757
+ }
1758
+ content: {
1759
+ readonly 'application/json': components['schemas']['NotFoundError']
1760
+ }
1761
+ }
1762
+ /** @description Service Unavailable! */
1763
+ readonly 503: {
1764
+ headers: {
1765
+ readonly [name: string]: unknown
1766
+ }
1767
+ content: {
1768
+ readonly 'application/json': components['schemas']['ServiceUnavailableError']
1769
+ }
1770
+ }
1771
+ /** @description An unexpected error occurred! */
1772
+ readonly default: {
1773
+ headers: {
1774
+ readonly [name: string]: unknown
1775
+ }
1776
+ content: {
1777
+ readonly 'application/json': components['schemas']['DefaultResponse']
1778
+ }
1779
+ }
1780
+ }
1781
+ }
1782
+ readonly getBrowserAuthConfig: {
1783
+ readonly parameters: {
1784
+ readonly query?: never
1785
+ readonly header?: never
1786
+ readonly path?: never
1787
+ readonly cookie?: never
1788
+ }
1789
+ readonly requestBody?: never
1790
+ readonly responses: {
1791
+ /** @description Shared Studio origin when browser sign-in is configured; null otherwise. */
1792
+ readonly 200: {
1793
+ headers: {
1794
+ readonly [name: string]: unknown
1795
+ }
1796
+ content: {
1797
+ readonly 'application/json': {
1798
+ readonly studioOrigin: string | null
1799
+ }
1800
+ }
1801
+ }
1802
+ /** @description An unexpected error occurred! */
1803
+ readonly default: {
1804
+ headers: {
1805
+ readonly [name: string]: unknown
1806
+ }
1807
+ content: {
1808
+ readonly 'application/json': components['schemas']['DefaultResponse']
1809
+ }
1810
+ }
1811
+ }
1812
+ }
1623
1813
  readonly resolveIdentity: {
1624
1814
  readonly parameters: {
1625
1815
  readonly query?: never
@@ -1699,6 +1889,112 @@ export interface operations {
1699
1889
  }
1700
1890
  }
1701
1891
  }
1892
+ readonly startBrowserLogin: {
1893
+ readonly parameters: {
1894
+ readonly query?: never
1895
+ readonly header?: never
1896
+ readonly path?: never
1897
+ readonly cookie?: never
1898
+ }
1899
+ readonly requestBody?: never
1900
+ readonly responses: {
1901
+ /** @description Redirect to the configured sign-in or Studio destination. */
1902
+ readonly 302: {
1903
+ headers: {
1904
+ readonly [name: string]: unknown
1905
+ }
1906
+ content: {
1907
+ readonly 'application/json': Record<string, unknown>
1908
+ }
1909
+ }
1910
+ /** @description Bad Request! */
1911
+ readonly 400: {
1912
+ headers: {
1913
+ readonly [name: string]: unknown
1914
+ }
1915
+ content: {
1916
+ readonly 'application/json': components['schemas']['BadRequestError']
1917
+ }
1918
+ }
1919
+ /** @description Not Found! */
1920
+ readonly 404: {
1921
+ headers: {
1922
+ readonly [name: string]: unknown
1923
+ }
1924
+ content: {
1925
+ readonly 'application/json': components['schemas']['NotFoundError']
1926
+ }
1927
+ }
1928
+ /** @description An unexpected error occurred! */
1929
+ readonly default: {
1930
+ headers: {
1931
+ readonly [name: string]: unknown
1932
+ }
1933
+ content: {
1934
+ readonly 'application/json': components['schemas']['DefaultResponse']
1935
+ }
1936
+ }
1937
+ }
1938
+ }
1939
+ readonly endBrowserSession: {
1940
+ readonly parameters: {
1941
+ readonly query?: never
1942
+ readonly header?: never
1943
+ readonly path?: never
1944
+ readonly cookie?: never
1945
+ }
1946
+ readonly requestBody?: never
1947
+ readonly responses: {
1948
+ /** @description Navigate to this URL to finish hosted logout. */
1949
+ readonly 200: {
1950
+ headers: {
1951
+ readonly [name: string]: unknown
1952
+ }
1953
+ content: {
1954
+ readonly 'application/json': {
1955
+ /** Format: uri */
1956
+ readonly logoutUrl: string
1957
+ }
1958
+ }
1959
+ }
1960
+ /** @description Bad Request! */
1961
+ readonly 400: {
1962
+ headers: {
1963
+ readonly [name: string]: unknown
1964
+ }
1965
+ content: {
1966
+ readonly 'application/json': components['schemas']['BadRequestError']
1967
+ }
1968
+ }
1969
+ /** @description Forbidden! */
1970
+ readonly 403: {
1971
+ headers: {
1972
+ readonly [name: string]: unknown
1973
+ }
1974
+ content: {
1975
+ readonly 'application/json': components['schemas']['ForbiddenError']
1976
+ }
1977
+ }
1978
+ /** @description Not Found! */
1979
+ readonly 404: {
1980
+ headers: {
1981
+ readonly [name: string]: unknown
1982
+ }
1983
+ content: {
1984
+ readonly 'application/json': components['schemas']['NotFoundError']
1985
+ }
1986
+ }
1987
+ /** @description An unexpected error occurred! */
1988
+ readonly default: {
1989
+ headers: {
1990
+ readonly [name: string]: unknown
1991
+ }
1992
+ content: {
1993
+ readonly 'application/json': components['schemas']['DefaultResponse']
1994
+ }
1995
+ }
1996
+ }
1997
+ }
1702
1998
  readonly getApiSession: {
1703
1999
  readonly parameters: {
1704
2000
  readonly query?: never
@@ -1748,6 +2044,77 @@ export interface operations {
1748
2044
  }
1749
2045
  }
1750
2046
  }
2047
+ readonly getBrowserSession: {
2048
+ readonly parameters: {
2049
+ readonly query?: never
2050
+ readonly header?: never
2051
+ readonly path?: never
2052
+ readonly cookie?: never
2053
+ }
2054
+ readonly requestBody?: never
2055
+ readonly responses: {
2056
+ /** @description Current account and fixed session expiry, in Unix milliseconds. */
2057
+ readonly 200: {
2058
+ headers: {
2059
+ readonly [name: string]: unknown
2060
+ }
2061
+ content: {
2062
+ readonly 'application/json': {
2063
+ readonly expiresAt: number
2064
+ /** Format: uuid */
2065
+ readonly userId: string
2066
+ readonly workspaces: readonly {
2067
+ /** Format: uuid */
2068
+ readonly customerId: string
2069
+ readonly name: string
2070
+ /** @enum {string} */
2071
+ readonly role: 'user' | 'admin' | 'superadmin'
2072
+ readonly slug: string
2073
+ readonly tags: readonly string[]
2074
+ /** @enum {string} */
2075
+ readonly type: 'standard' | 'sdk_builder'
2076
+ }[]
2077
+ }
2078
+ }
2079
+ }
2080
+ /** @description Unauthorized! */
2081
+ readonly 401: {
2082
+ headers: {
2083
+ readonly [name: string]: unknown
2084
+ }
2085
+ content: {
2086
+ readonly 'application/json': components['schemas']['UnauthorizedError']
2087
+ }
2088
+ }
2089
+ /** @description Forbidden! */
2090
+ readonly 403: {
2091
+ headers: {
2092
+ readonly [name: string]: unknown
2093
+ }
2094
+ content: {
2095
+ readonly 'application/json': components['schemas']['ForbiddenError']
2096
+ }
2097
+ }
2098
+ /** @description Not Found! */
2099
+ readonly 404: {
2100
+ headers: {
2101
+ readonly [name: string]: unknown
2102
+ }
2103
+ content: {
2104
+ readonly 'application/json': components['schemas']['NotFoundError']
2105
+ }
2106
+ }
2107
+ /** @description An unexpected error occurred! */
2108
+ readonly default: {
2109
+ headers: {
2110
+ readonly [name: string]: unknown
2111
+ }
2112
+ content: {
2113
+ readonly 'application/json': components['schemas']['DefaultResponse']
2114
+ }
2115
+ }
2116
+ }
2117
+ }
1751
2118
  readonly exchangeAuthCode: {
1752
2119
  readonly parameters: {
1753
2120
  readonly query?: never
@@ -2,7 +2,7 @@ import type { AnyClientTool } from '@tanstack/ai';
2
2
  import { type UIMessage } from '@tanstack/ai-client';
3
3
  import { type ObservableWithLastValue } from '@salsita-ai/common/utils';
4
4
  import { type AuthorizedPhoenixApiClient } from '#package/client';
5
- import type { DomainContextSelectors, DomainServicesSelectors, InitializableSystem, SessionAssistantSetup, SpecSelectors } from '#package/domain';
5
+ import type { AssistantManifest, DomainContextSelectors, DomainServicesSelectors, InitializableSystem, SessionAssistantSetup, SpecSelectors } from '#package/domain';
6
6
  import type { ConfiguratorExtensionSelectors } from '../../selectors.js';
7
7
  /** A tool of the assistant that the model calls and the browser runs, as the chat client accepts it. */
8
8
  export type AssistantClientTool = AnyClientTool;
@@ -146,6 +146,12 @@ export declare class AssistantSystem implements InitializableSystem {
146
146
  * at; nothing when that step is not a change of the assistant. It never completes.
147
147
  */
148
148
  readonly undoTipToolCallId$: ObservableWithLastValue<string | undefined>;
149
+ /**
150
+ * The manifest the initialized session runs, narrowed by the project's setup handler: what the
151
+ * agent can read, so the panel reads recipes and options the way the agent does. `null` while the
152
+ * assistant is off for the session or its setup failed.
153
+ */
154
+ getSessionManifest: () => AssistantManifest | null;
149
155
  /**
150
156
  * A new configuration load: the chat of the previous one is deactivated and both observables go
151
157
  * back to their empty values. An activation that is still held outlives it and gets the chat of
@@ -1 +1 @@
1
- import{ChatClient as e,fetchServerSentEvents as t}from"@tanstack/ai-client";import{BehaviorSubject as i}from"rxjs";import{skip as s}from"rxjs/operators";import{isShallowEqual as a}from"@salsita-ai/common/utils";import{AssistantRequestError as r}from"#package/client";import{createBrowserDetailsClientTool as n}from"./browser-details.js";import{ChangeRecorder as o}from"./change-recorder.js";import{createApplyClientTool as l,createQueryClientTool as h}from"./graphql-tools.js";let d=Object.freeze({messages:Object.freeze([]),isLoading:!1,error:void 0,failedStatus:void 0,isContinuable:!0,isLoaded:!1,isResuming:!1,earlierThreads:Object.freeze([]),hasEarlierThread:!1,isLoadingEarlierThread:!1}),c=Object.freeze({open:!1,hasUnreadReply:!1,isInputFocused:!1}),u=Object.freeze({}),_=Object.freeze({results:Object.freeze([]),committed:!1,sideEffects:Object.freeze([]),message:"Nothing was run, because the user closed the configurator while this reply was being written. Do not call any more tools in this reply and end it now. The tools work again as soon as the user writes the next message."}),g=e=>{if(e.getError())return!0;let t=e.getMessages().at(-1)?.parts.at(-1);return t?.type!=="tool-call"&&t?.type!=="tool-result"};export class AssistantSystem{_context;_tools;_chat=new i(d);_panel=new i(c);_activation=null;_current=null;_finishing=new Set;_olderThreadId=null;_resuming=null;_refused=null;_firstAttempt=null;_chain={};_loadingThreadId=null;_recorder;_recording=null;_applyToolCallIds=new WeakMap;_undoTipToolCallId=new i(void 0);constructor(e){this._context=e;let{configuratorExtensionSelectors:t,domainContextSelectors:i,domainServicesSelectors:s,getAssistantSetup:a}=e;this._recorder=new o({maxEntities:30},{readers:{selectedEntityId:e=>i.getNavigationSystem().getActiveSelectionState(e),navigationState:e=>i.getNavigationSystem().getActiveNavigationState(e),viewState:e=>i.getNavigationSystem().getActiveViewState(e),toolState:e=>i.getNavigationSystem().getActiveToolState(e)},getExposedFields:()=>a().manifest?.fields??u,resolveLocalizable:e=>s.getResolveLocalizable()(e)});let r={getGraphQLSystem:()=>t.getGraphQLSystem(),getStoreSystem:()=>i.getStoreSystem(),getActiveMode:()=>i.getActiveMode(),clearChanges:()=>this._recorder.clear(this._committedState()),rememberCommit:(e,t)=>{this._applyToolCallIds.set(t,e),this._refreshUndoTip()}};this._tools=[n(),h(r),l(r)],i.getUndoSystem().tip$.subscribe(this._refreshUndoTip)}chat$=this._chat;panel$=this._panel;undoTipToolCallId$=this._undoTipToolCallId;initialize=()=>{let{committed:e}=this._context.domainContextSelectors.getStoreSystem().stateSlices;this._recording??=e.pipe(s(1)).subscribe(this._recorder.record),this._recorder.reset(e.value.state),this._endChat(),this._patchPanel(c),this._activation&&this._startClient()};activate=()=>{this._endChat();let e={};return this._activation=e,this._startClient(),()=>{this._activation===e&&(this._activation=null,this._endChat())}};send=async e=>{if(!this._chat.value.isContinuable&&!await this.resume())return;let t=this._current;if(!t)return;let i={changes:this._recorder.take(this._committedState())};this._firstAttempt=t;try{await this._sendOn(t,e,i);let s=this._findRefusedMessageIndex(t);if(-1===s)return;this._refused={chat:t,index:s}}finally{this._firstAttempt===t&&(this._firstAttempt=null)}if(!await this.resume())return;let s=this._current;s&&await this._sendOn(s,e,i)};resume=async()=>{let e=this._current;if(!e)return!1;if(this._chat.value.isContinuable)return!0;if(this._resuming)return this._resuming;let t=this._resume(e).finally(()=>{this._resuming===t&&(this._resuming=null)});return this._resuming=t,t};loadEarlierThread=async()=>{let e=this._current,t=this._olderThreadId;if(!e||null===t||this._loadingThreadId===t)return;let i=this._chain;this._loadingThreadId=t,this._chat.next({...this._chat.value,isLoadingEarlierThread:!0});try{let s=await e.authorizedClient.getAssistantEarlierThread(e.configurationId,t,50);if(this._chain!==i||this._olderThreadId!==t)return;this._olderThreadId=s.previousThreadId,this._chat.next({...this._chat.value,earlierThreads:[{threadId:t,messages:s.messages},...this._chat.value.earlierThreads],hasEarlierThread:null!==s.previousThreadId})}catch(e){this._context.domainServicesSelectors.getLogger().warn("Could not load the earlier assistant conversation",{error:e})}finally{this._chain===i&&this._loadingThreadId===t&&(this._loadingThreadId=null,this._chat.next({...this._chat.value,isLoadingEarlierThread:!1}))}};stop=async()=>{let e=this._current;if(!e)return;let t=e.client.getCurrentRunId();if(e.client.stop(),null!=t)try{let i=e.getConnection();await fetch(`${i.url}/runs/${encodeURIComponent(t)}/cancel`,{method:"POST",headers:await i.headers()})}catch(e){this._context.domainServicesSelectors.getLogger().warn("Could not cancel the assistant run on the server",{error:e})}};reloadThread=()=>{if(!this._activation)return;let e=this._retireChat();e?.client.stop(),e?.dispose(),this._recorder.reset(this._committedState()),this._startClient()};undoToolCalls=e=>{let t=this._context.domainContextSelectors.getUndoSystem(),i=()=>{let t=this._findTipToolCallId();return void 0!==t&&e.has(t)};for(;i();)t.undo()};setOpen=e=>{this._patchPanel(e?{open:e,hasUnreadReply:!1}:{open:e,isInputFocused:!1})};setInputFocused=e=>{this._patchPanel({isInputFocused:e})};_findRefusedMessageIndex=e=>{var t;let i,{failedStatus:s,isContinuable:a}=this._chat.value;return this._firstAttempt===e&&e.generation.active&&409===s&&!a?(i=(t=e.client.getMessages()).map(e=>e.role).lastIndexOf("user"),t.slice(i+1).every(e=>0===e.parts.length)?i:-1):-1};_sendOn=async(e,t,i)=>{let{client:s}=e;s.getIsLoading()||null===s.getResumeState()||s.stop();try{await s.sendMessage({content:t,metadata:i})}catch(i){let t=i instanceof Error?i:Error(String(i));e.generation.active&&this._chat.next({...this._chat.value,error:t}),this._context.domainServicesSelectors.getLogger().error("The assistant message could not be sent",{},t)}};_resume=async e=>{this._chat.next({...this._chat.value,isResuming:!0,error:void 0,failedStatus:void 0});try{let{previousThreadId:t}=await e.authorizedClient.compactAssistantThread(e.configurationId);if(!e.generation.active)return!1;let{messages:i,earlierThreads:s,hasEarlierThread:a}=this._chat.value,r=this._refused?.chat===e?i.slice(0,this._refused.index):i;return e.generation.active=!1,this._current=null,e.client.stop(),e.dispose(),this._chat.next({...d,earlierThreads:[...s,{threadId:t,messages:r}],hasEarlierThread:a,isLoadingEarlierThread:null!==this._loadingThreadId}),this._startClient(),!0}catch(i){let t=i instanceof Error?i:Error(String(i));if(t instanceof r&&409===t.status)return e.generation.active&&this.reloadThread(),!1;return e.generation.active&&this._chat.next({...this._chat.value,isResuming:!1,error:t,failedStatus:t instanceof r?t.status:void 0}),this._context.domainServicesSelectors.getLogger().error("The assistant thread could not be resumed",{},t),!1}};_findTipToolCallId=()=>{let e=this._context.domainContextSelectors.getUndoSystem(),t=e.tip$.value?.committedState;return void 0!==t&&e.canUndo()?this._applyToolCallIds.get(t):void 0};_refreshUndoTip=()=>{let e=this._findTipToolCallId();e!==this._undoTipToolCallId.value&&this._undoTipToolCallId.next(e)};_committedState=()=>this._context.domainContextSelectors.getStoreSystem().stateSlices.committed.value.state;_patchPanel=e=>{let t={...this._panel.value,...e};a(t,this._panel.value)||this._panel.next(t)};_takeOverThread=e=>{for(let t of this._finishing)t.configurationId===e&&(t.client.stop(),t.dispose())};_startClient=()=>{let i={active:!0},s=this._context.getConfigurationId();this._takeOverThread(s);let r=this._context.getAuthorizedClient(),n=()=>{if(i.active){let{manifest:e,error:t}=this._context.getAssistantSetup();if(t)throw t;if(!e)throw Error("The assistant is disabled for this session.")}return r.getAssistantChatConnection(s)},o=e=>{if(!i.active)return;let t={...this._chat.value,...e};a(t,this._chat.value)||this._chat.next(t)},l=async(e,t)=>{let s=await fetch(e,t).finally(()=>o({isLoaded:!0})),a=s.headers.get("x-assistant-thread-continuable");return null!=a&&s.ok&&i.active&&0===this._chat.value.earlierThreads.length&&(this._olderThreadId=s.headers.get("x-assistant-previous-thread")),o({failedStatus:s.ok?void 0:s.status,...null!=a&&{isContinuable:"false"!==a,hasEarlierThread:null!==this._olderThreadId}}),s},h=async()=>({headers:await n().headers(),fetchClient:l}),d=t(()=>n().url,h),c=t(()=>`${n().url}/runs`,h),u=this._tools.map(e=>({...e,execute:(t,s)=>{if(!i.active)return _;let{manifest:a,error:r}=this._context.getAssistantSetup();return r||!a?{error:r?.message??"The assistant is disabled for this session."}:e.execute?.(t,s)}})),m=new e({threadId:`assistant:${s}`,connection:{...d,joinRun:c.joinRun},persistence:!0,history:{pageSize:50},tools:u,onMessagesChange:e=>o({messages:e}),onLoadingChange:e=>{let t=i.active&&this._chat.value.isLoading;o({isLoading:e}),!e&&g(m)&&(i.active?t&&!this._panel.value.open&&this._patchPanel({hasUnreadReply:!0}):p())},onErrorChange:e=>{i.active&&e!==this._chat.value.error&&(!e||-1===this._findRefusedMessageIndex(v))&&(o({error:e}),e&&this._context.domainServicesSelectors.getLogger().error("The assistant request failed",{status:this._chat.value.failedStatus},e))}}),f=!1,p=()=>{f||(f=!0,this._finishing.delete(v),m.dispose())},v={client:m,configurationId:s,generation:i,authorizedClient:r,getConnection:n,dispose:p};this._current=v,m.attach()};_retireChat=()=>{let e=this._current;return this._current=null,e&&(e.generation.active=!1),this._chain={},this._olderThreadId=null,this._resuming=null,this._refused=null,this._loadingThreadId=null,this._chat.value!==d&&this._chat.next(d),e};_endChat=()=>{let e=this._retireChat();if(e){if(!e.client.getIsLoading()&&g(e.client))return void e.dispose();this._finishing.add(e)}}}
1
+ import{ChatClient as e,fetchServerSentEvents as t}from"@tanstack/ai-client";import{BehaviorSubject as i}from"rxjs";import{skip as s}from"rxjs/operators";import{isShallowEqual as a}from"@salsita-ai/common/utils";import{AssistantRequestError as r}from"#package/client";import{createBrowserDetailsClientTool as n}from"./browser-details.js";import{ChangeRecorder as o}from"./change-recorder.js";import{createApplyClientTool as l,createQueryClientTool as h}from"./graphql-tools.js";let d=Object.freeze({messages:Object.freeze([]),isLoading:!1,error:void 0,failedStatus:void 0,isContinuable:!0,isLoaded:!1,isResuming:!1,earlierThreads:Object.freeze([]),hasEarlierThread:!1,isLoadingEarlierThread:!1}),c=Object.freeze({open:!1,hasUnreadReply:!1,isInputFocused:!1}),u=Object.freeze({}),_=Object.freeze({results:Object.freeze([]),committed:!1,sideEffects:Object.freeze([]),message:"Nothing was run, because the user closed the configurator while this reply was being written. Do not call any more tools in this reply and end it now. The tools work again as soon as the user writes the next message."}),g=e=>{if(e.getError())return!0;let t=e.getMessages().at(-1)?.parts.at(-1);return t?.type!=="tool-call"&&t?.type!=="tool-result"};export class AssistantSystem{_context;_tools;_chat=new i(d);_panel=new i(c);_activation=null;_current=null;_finishing=new Set;_olderThreadId=null;_resuming=null;_refused=null;_firstAttempt=null;_chain={};_loadingThreadId=null;_recorder;_recording=null;_applyToolCallIds=new WeakMap;_undoTipToolCallId=new i(void 0);constructor(e){this._context=e;let{configuratorExtensionSelectors:t,domainContextSelectors:i,domainServicesSelectors:s,getAssistantSetup:a}=e;this._recorder=new o({maxEntities:30},{readers:{selectedEntityId:e=>i.getNavigationSystem().getActiveSelectionState(e),navigationState:e=>i.getNavigationSystem().getActiveNavigationState(e),viewState:e=>i.getNavigationSystem().getActiveViewState(e),toolState:e=>i.getNavigationSystem().getActiveToolState(e)},getExposedFields:()=>a().manifest?.fields??u,resolveLocalizable:e=>s.getResolveLocalizable()(e)});let r={getGraphQLSystem:()=>t.getGraphQLSystem(),getStoreSystem:()=>i.getStoreSystem(),getActiveMode:()=>i.getActiveMode(),clearChanges:()=>this._recorder.clear(this._committedState()),rememberCommit:(e,t)=>{this._applyToolCallIds.set(t,e),this._refreshUndoTip()}};this._tools=[n(),h(r),l(r)],i.getUndoSystem().tip$.subscribe(this._refreshUndoTip)}chat$=this._chat;panel$=this._panel;undoTipToolCallId$=this._undoTipToolCallId;getSessionManifest=()=>this._context.getAssistantSetup().manifest;initialize=()=>{let{committed:e}=this._context.domainContextSelectors.getStoreSystem().stateSlices;this._recording??=e.pipe(s(1)).subscribe(this._recorder.record),this._recorder.reset(e.value.state),this._endChat(),this._patchPanel(c),this._activation&&this._startClient()};activate=()=>{this._endChat();let e={};return this._activation=e,this._startClient(),()=>{this._activation===e&&(this._activation=null,this._endChat())}};send=async e=>{if(!this._chat.value.isContinuable&&!await this.resume())return;let t=this._current;if(!t)return;let i={changes:this._recorder.take(this._committedState())};this._firstAttempt=t;try{await this._sendOn(t,e,i);let s=this._findRefusedMessageIndex(t);if(-1===s)return;this._refused={chat:t,index:s}}finally{this._firstAttempt===t&&(this._firstAttempt=null)}if(!await this.resume())return;let s=this._current;s&&await this._sendOn(s,e,i)};resume=async()=>{let e=this._current;if(!e)return!1;if(this._chat.value.isContinuable)return!0;if(this._resuming)return this._resuming;let t=this._resume(e).finally(()=>{this._resuming===t&&(this._resuming=null)});return this._resuming=t,t};loadEarlierThread=async()=>{let e=this._current,t=this._olderThreadId;if(!e||null===t||this._loadingThreadId===t)return;let i=this._chain;this._loadingThreadId=t,this._chat.next({...this._chat.value,isLoadingEarlierThread:!0});try{let s=await e.authorizedClient.getAssistantEarlierThread(e.configurationId,t,50);if(this._chain!==i||this._olderThreadId!==t)return;this._olderThreadId=s.previousThreadId,this._chat.next({...this._chat.value,earlierThreads:[{threadId:t,messages:s.messages},...this._chat.value.earlierThreads],hasEarlierThread:null!==s.previousThreadId})}catch(e){this._context.domainServicesSelectors.getLogger().warn("Could not load the earlier assistant conversation",{error:e})}finally{this._chain===i&&this._loadingThreadId===t&&(this._loadingThreadId=null,this._chat.next({...this._chat.value,isLoadingEarlierThread:!1}))}};stop=async()=>{let e=this._current;if(!e)return;let t=e.client.getCurrentRunId();if(e.client.stop(),null!=t)try{let i=e.getConnection();await fetch(`${i.url}/runs/${encodeURIComponent(t)}/cancel`,{method:"POST",headers:await i.headers()})}catch(e){this._context.domainServicesSelectors.getLogger().warn("Could not cancel the assistant run on the server",{error:e})}};reloadThread=()=>{if(!this._activation)return;let e=this._retireChat();e?.client.stop(),e?.dispose(),this._recorder.reset(this._committedState()),this._startClient()};undoToolCalls=e=>{let t=this._context.domainContextSelectors.getUndoSystem(),i=()=>{let t=this._findTipToolCallId();return void 0!==t&&e.has(t)};for(;i();)t.undo()};setOpen=e=>{this._patchPanel(e?{open:e,hasUnreadReply:!1}:{open:e,isInputFocused:!1})};setInputFocused=e=>{this._patchPanel({isInputFocused:e})};_findRefusedMessageIndex=e=>{var t;let i,{failedStatus:s,isContinuable:a}=this._chat.value;return this._firstAttempt===e&&e.generation.active&&409===s&&!a?(i=(t=e.client.getMessages()).map(e=>e.role).lastIndexOf("user"),t.slice(i+1).every(e=>0===e.parts.length)?i:-1):-1};_sendOn=async(e,t,i)=>{let{client:s}=e;s.getIsLoading()||null===s.getResumeState()||s.stop();try{await s.sendMessage({content:t,metadata:i})}catch(i){let t=i instanceof Error?i:Error(String(i));e.generation.active&&this._chat.next({...this._chat.value,error:t}),this._context.domainServicesSelectors.getLogger().error("The assistant message could not be sent",{},t)}};_resume=async e=>{this._chat.next({...this._chat.value,isResuming:!0,error:void 0,failedStatus:void 0});try{let{previousThreadId:t}=await e.authorizedClient.compactAssistantThread(e.configurationId);if(!e.generation.active)return!1;let{messages:i,earlierThreads:s,hasEarlierThread:a}=this._chat.value,r=this._refused?.chat===e?i.slice(0,this._refused.index):i;return e.generation.active=!1,this._current=null,e.client.stop(),e.dispose(),this._chat.next({...d,earlierThreads:[...s,{threadId:t,messages:r}],hasEarlierThread:a,isLoadingEarlierThread:null!==this._loadingThreadId}),this._startClient(),!0}catch(i){let t=i instanceof Error?i:Error(String(i));if(t instanceof r&&409===t.status)return e.generation.active&&this.reloadThread(),!1;return e.generation.active&&this._chat.next({...this._chat.value,isResuming:!1,error:t,failedStatus:t instanceof r?t.status:void 0}),this._context.domainServicesSelectors.getLogger().error("The assistant thread could not be resumed",{},t),!1}};_findTipToolCallId=()=>{let e=this._context.domainContextSelectors.getUndoSystem(),t=e.tip$.value?.committedState;return void 0!==t&&e.canUndo()?this._applyToolCallIds.get(t):void 0};_refreshUndoTip=()=>{let e=this._findTipToolCallId();e!==this._undoTipToolCallId.value&&this._undoTipToolCallId.next(e)};_committedState=()=>this._context.domainContextSelectors.getStoreSystem().stateSlices.committed.value.state;_patchPanel=e=>{let t={...this._panel.value,...e};a(t,this._panel.value)||this._panel.next(t)};_takeOverThread=e=>{for(let t of this._finishing)t.configurationId===e&&(t.client.stop(),t.dispose())};_startClient=()=>{let i={active:!0},s=this._context.getConfigurationId();this._takeOverThread(s);let r=this._context.getAuthorizedClient(),n=()=>{if(i.active){let{manifest:e,error:t}=this._context.getAssistantSetup();if(t)throw t;if(!e)throw Error("The assistant is disabled for this session.")}return r.getAssistantChatConnection(s)},o=e=>{if(!i.active)return;let t={...this._chat.value,...e};a(t,this._chat.value)||this._chat.next(t)},l=async(e,t)=>{let s=await fetch(e,t).finally(()=>o({isLoaded:!0})),a=s.headers.get("x-assistant-thread-continuable");return null!=a&&s.ok&&i.active&&0===this._chat.value.earlierThreads.length&&(this._olderThreadId=s.headers.get("x-assistant-previous-thread")),o({failedStatus:s.ok?void 0:s.status,...null!=a&&{isContinuable:"false"!==a,hasEarlierThread:null!==this._olderThreadId}}),s},h=async()=>({headers:await n().headers(),fetchClient:l}),d=t(()=>n().url,h),c=t(()=>`${n().url}/runs`,h),u=this._tools.map(e=>({...e,execute:(t,s)=>{if(!i.active)return _;let{manifest:a,error:r}=this._context.getAssistantSetup();return r||!a?{error:r?.message??"The assistant is disabled for this session."}:e.execute?.(t,s)}})),f=new e({threadId:`assistant:${s}`,connection:{...d,joinRun:c.joinRun},persistence:!0,history:{pageSize:50},tools:u,onMessagesChange:e=>o({messages:e}),onLoadingChange:e=>{let t=i.active&&this._chat.value.isLoading;o({isLoading:e}),!e&&g(f)&&(i.active?t&&!this._panel.value.open&&this._patchPanel({hasUnreadReply:!0}):p())},onErrorChange:e=>{i.active&&e!==this._chat.value.error&&(!e||-1===this._findRefusedMessageIndex(v))&&(o({error:e}),e&&this._context.domainServicesSelectors.getLogger().error("The assistant request failed",{status:this._chat.value.failedStatus},e))}}),m=!1,p=()=>{m||(m=!0,this._finishing.delete(v),f.dispose())},v={client:f,configurationId:s,generation:i,authorizedClient:r,getConnection:n,dispose:p};this._current=v,f.attach()};_retireChat=()=>{let e=this._current;return this._current=null,e&&(e.generation.active=!1),this._chain={},this._olderThreadId=null,this._resuming=null,this._refused=null,this._loadingThreadId=null,this._chat.value!==d&&this._chat.next(d),e};_endChat=()=>{let e=this._retireChat();if(e){if(!e.client.getIsLoading()&&g(e.client))return void e.dispose();this._finishing.add(e)}}}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * The built-in UI of a loaded configuration: the layout the spec's `layout` selects, in owner or
3
- * read mode. `defaultConfiguratorElements` registers it as `ConfiguratorLayout`, and
4
- * `LoadedConfiguratorDetailPage` renders it when no layout element has that name.
3
+ * read mode. It is registered as the default `ConfiguratorLayout` in `defaultConfiguratorElements`,
4
+ * so `LoadedConfiguratorDetailPage` renders it unless the project registers a layout element of that
5
+ * name.
5
6
  */
6
7
  export declare const DefaultConfiguratorLayout: () => import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- import{jsx as o,jsxs as r}from"react/jsx-runtime";import e from"mui-modal-provider";import{memo as i,useCallback as n,useEffect as t}from"react";import{InvalidAccessKeyError as a}from"#package/client";import{BuiltInLoadingPhase as d,CommonAnalyticsFactory as s,DomainLifecycleBoundary as l,LoadedDataProvider as c,PhoenixLayoutElement as u,useAccessService as f,useAnalyticsService as m,useAuthorizedClient as g,useConfiguratorDomainFactory as p,useConfiguratorLoadStatus as v,useConfiguratorRawLoadedData as I,useExpectPhase as h,useLoadedDataActions as j,useLoadingError as C,useLoadingPhase as k,useLogger as w,useRoutingService as y,useSpecAssistant as b}from"#package/react-sdk";import{useConfigurator as x}from"../application-runtime/index.js";import{IntegrationSubscription as E,OnConfiguratorReadyProvider as D,ViewportStateSync as L}from"../configurator-context/index.js";import{ConfiguratorNotFoundPage as M}from"./ConfiguratorNotFoundPage.js";import{DefaultConfiguratorLayout as F}from"./DefaultConfiguratorLayout.js";import{ConfiguratorLayoutName as S}from"./configurator-layout-name.js";import{DevContextFallback as T}from"./error-boundaries/DevContextFallback.js";import{DevLoadingFallback as A}from"./error-boundaries/DevLoadingFallback.js";import{LoadingErrorBoundary as P}from"./error-boundaries/LoadingErrorBoundary.js";import{useLoad as R}from"./use-load.js";let V=i(()=>((()=>{let{assistantSystem:o}=x(),r=null!=b();t(()=>{if(r)return o.activate()},[o,r])})(),o(e,{children:o(D,{children:o(u,{name:S,defaultSlot:F})})})));export const LoadedConfiguratorDetailPage=()=>{h(d.SceneAssets);let{configurationId:e,accessInfo:i}=f(),t=g(),u=y(),b=w(),x=m(),{startConfiguratorLoad:D,completeConfiguratorLoad:F,failConfiguratorLoad:S,resetConfiguratorLoad:q}=j(),{isLoading:B,isError:G}=v(),N=I(),z=p(),H=n(()=>i.viewMode&&void 0!==i.revisionId?t.getConfigurationRevision(e,i.revisionId):t.getConfiguration(e),[i.revisionId,i.viewMode,t,e]),J=n(()=>{D()},[D]),K=n(o=>{F({initialRevisionId:o.revisionId,initialEntities:o.data,modelVersion:o.modelVersion,rootEntityType:o.rootEntityType,schemaIdentity:z}),x.push(s.ConfigurationLoaded(o.configurationId,o.revisionId,i.viewMode?"read":"owner")),b.appendToGlobalContext({configurationId:o.configurationId,revisionId:o.revisionId,mode:i.viewMode}),b.info("Configuration loaded.")},[i.viewMode,x,F,z,b]),O=n(o=>{if(S(o),o instanceof a)return void u.rejectAccessToken(e,i.raw);let r=o instanceof Error?o:Error("Configuration loading failed with an unknown error.",{cause:o});b.error("Configuration loading failed because the API request did not succeed. Verify the configuration ID and access token.",{configurationId:e},r)},[i.raw,e,S,b,u]),Q=n(()=>{q()},[q]);return(R({key:[t,e,i.revisionId,i.viewMode],load:H,onStart:J,onSuccess:K,onError:O,onCleanup:Q}),k({id:d.DataFetch,label:"Loading configuration…"},B),C(G),G)?o(M,{}):null===N?null:o(c,{value:N,children:o(P,{fallbackRender:r=>o(A,{...r}),children:o(l,{type:"configurator",children:o(P,{FallbackComponent:T,children:r(E,{children:[o(L,{}),o(V,{})]})})})})})};
1
+ import{jsx as o,jsxs as r}from"react/jsx-runtime";import e from"mui-modal-provider";import{memo as i,useCallback as n,useEffect as t}from"react";import{InvalidAccessKeyError as a}from"#package/client";import{BuiltInLoadingPhase as d,CommonAnalyticsFactory as s,DomainLifecycleBoundary as l,LoadedDataProvider as c,PhoenixLayoutElement as u,useAccessService as f,useAnalyticsService as m,useAuthorizedClient as g,useConfiguratorDomainFactory as p,useConfiguratorLoadStatus as v,useConfiguratorRawLoadedData as I,useExpectPhase as h,useLoadedDataActions as j,useLoadingError as C,useLoadingPhase as k,useLogger as w,useRoutingService as b,useSpecAssistant as y}from"#package/react-sdk";import{useConfigurator as x}from"../application-runtime/index.js";import{IntegrationSubscription as E,OnConfiguratorReadyProvider as M,ViewportStateSync as D}from"../configurator-context/index.js";import{ConfiguratorNotFoundPage as F}from"./ConfiguratorNotFoundPage.js";import{ConfiguratorLayoutName as L}from"./configurator-layout-name.js";import{DevContextFallback as T}from"./error-boundaries/DevContextFallback.js";import{DevLoadingFallback as A}from"./error-boundaries/DevLoadingFallback.js";import{LoadingErrorBoundary as P}from"./error-boundaries/LoadingErrorBoundary.js";import{useLoad as R}from"./use-load.js";let S=i(()=>((()=>{let{assistantSystem:o}=x(),r=null!=y();t(()=>{if(r)return o.activate()},[o,r])})(),o(e,{children:o(M,{children:o(u,{name:L})})})));export const LoadedConfiguratorDetailPage=()=>{h(d.SceneAssets);let{configurationId:e,accessInfo:i}=f(),t=g(),u=b(),y=w(),x=m(),{startConfiguratorLoad:M,completeConfiguratorLoad:L,failConfiguratorLoad:V,resetConfiguratorLoad:q}=j(),{isLoading:B,isError:G}=v(),N=I(),z=p(),H=n(()=>i.viewMode&&void 0!==i.revisionId?t.getConfigurationRevision(e,i.revisionId):t.getConfiguration(e),[i.revisionId,i.viewMode,t,e]),J=n(()=>{M()},[M]),K=n(o=>{L({initialRevisionId:o.revisionId,initialEntities:o.data,modelVersion:o.modelVersion,rootEntityType:o.rootEntityType,schemaIdentity:z}),x.push(s.ConfigurationLoaded(o.configurationId,o.revisionId,i.viewMode?"read":"owner")),y.appendToGlobalContext({configurationId:o.configurationId,revisionId:o.revisionId,mode:i.viewMode}),y.info("Configuration loaded.")},[i.viewMode,x,L,z,y]),O=n(o=>{if(V(o),o instanceof a)return void u.rejectAccessToken(e,i.raw);let r=o instanceof Error?o:Error("Configuration loading failed with an unknown error.",{cause:o});y.error("Configuration loading failed because the API request did not succeed. Verify the configuration ID and access token.",{configurationId:e},r)},[i.raw,e,V,y,u]),Q=n(()=>{q()},[q]);return(R({key:[t,e,i.revisionId,i.viewMode],load:H,onStart:J,onSuccess:K,onError:O,onCleanup:Q}),k({id:d.DataFetch,label:"Loading configuration…"},B),C(G),G)?o(F,{}):null===N?null:o(c,{value:N,children:o(P,{fallbackRender:r=>o(A,{...r}),children:o(l,{type:"configurator",children:o(P,{FallbackComponent:T,children:r(E,{children:[o(D,{}),o(S,{})]})})})})})};
@@ -2,6 +2,7 @@ import { type ElementRegistration } from '#package/domain';
2
2
  /**
3
3
  * The configurator's default element registrations, passed to `withDefaultElements`. A project
4
4
  * element registered under the same name replaces one: `ConfiguratorLayout` is the built-in UI of a
5
- * loaded configuration.
5
+ * loaded configuration, and the others are the built-in controls, toolbar buttons, menu actions and
6
+ * sidebar-footer pieces under the spec kinds that YAML names.
6
7
  */
7
8
  export declare const defaultConfiguratorElements: readonly ElementRegistration[];
@@ -1 +1 @@
1
- import{createCustomPhoenixLayoutElement as o}from"#package/domain";import{DefaultConfiguratorLayout as r}from"./DefaultConfiguratorLayout.js";import{ConfiguratorLayoutName as t}from"./configurator-layout-name.js";export const defaultConfiguratorElements=[o(t,r)];
1
+ import{createCustomPhoenixLayoutElement as o}from"#package/domain";import{DefaultConfiguratorLayout as t}from"./DefaultConfiguratorLayout.js";import{ConfiguratorLayoutName as r}from"./configurator-layout-name.js";import{domainControlElements as a,recipePanelElements as e,sidebarFooterElements as m,toolbarElements as f}from"./default-elements/index.js";export const defaultConfiguratorElements=[o(r,t),...a,...e,...f,...m];
@@ -0,0 +1,10 @@
1
+ import { type PhoenixEntityElementDefinition, type PhoenixEntityElementRegistration } from '#package/domain';
2
+ /**
3
+ * Registers a built-in entity element under the `kind` of its schema, with the component that the
4
+ * element's module exports. The schema type argument ties the schema and the
5
+ * component's props together, as in `createPhoenixEntityElement`.
6
+ */
7
+ export declare const builtInEntityElement: <SCHEMA extends {
8
+ kind: string;
9
+ props?: Record<string, unknown>;
10
+ } = never>(schema: PhoenixEntityElementDefinition<SCHEMA>['schema'], component: PhoenixEntityElementDefinition<SCHEMA>['component']) => PhoenixEntityElementRegistration;
@@ -0,0 +1 @@
1
+ import{createCustomPhoenixEntityElement as t}from"#package/domain";export const builtInEntityElement=(e,n)=>t(e.properties.kind.enum[0],n);
@@ -0,0 +1,10 @@
1
+ import { type PhoenixLayoutElementDefinition, type PhoenixLayoutElementRegistration } from '#package/domain';
2
+ /**
3
+ * Registers a built-in layout element under the `kind` of its schema, with the component that the
4
+ * element's module exports. The schema type argument ties the schema and the
5
+ * component's props together, as in `createPhoenixLayoutElement`.
6
+ */
7
+ export declare const builtInLayoutElement: <SCHEMA extends {
8
+ kind: string;
9
+ props?: Record<string, unknown>;
10
+ } = never>(schema: PhoenixLayoutElementDefinition<SCHEMA>['schema'], component: PhoenixLayoutElementDefinition<SCHEMA>['component']) => PhoenixLayoutElementRegistration;
@@ -0,0 +1 @@
1
+ import{createCustomPhoenixLayoutElement as e}from"#package/domain";export const builtInLayoutElement=(o,t)=>e(o.properties.kind.enum[0],t);
@@ -0,0 +1,6 @@
1
+ import { type ElementRegistration } from '#package/domain';
2
+ /**
3
+ * The property-page controls of `react-sdk` and the two adapters that forward to a project element,
4
+ * registered under their spec kinds.
5
+ */
6
+ export declare const domainControlElements: readonly ElementRegistration[];
@@ -0,0 +1 @@
1
+ import{attributeCardSelectorSchema as t,attributeListSelectorSchema as o,attributeSelectSchema as e,attributeSwitchSelectorSchema as m,attributeToggleSelectorSchema as i,childEntityCardSelectorSchema as r,childEntityListSelectorSchema as n,childEntityToggleSelectorSchema as a,colorPickerInputSchema as l,customElementSchema as p,customLayoutElementSchema as s,deleteEntityButtonSchema as c,dimensionListSelectorSchema as f,dimensionToggleSelectorSchema as d,distanceDimensionInputSchema as k,distanceDimensionSliderSchema as u,entityChildActionDeleteSchema as b,entityChildActionSelectSchema as g,entityChildrenListSchema as j,genericDimensionInputSchema as y,genericDimensionSliderSchema as x,horizontalGroupRecipePanelSchema as C,materialSwatchSelectorSchema as E,propertyContainerGroupSchema as h,propertyContainerItemSchema as q,replaceEntityDropdownSchema as v,simpleRecipePanelSchema as w,verticalGroupRecipePanelSchema as z}from"#package/domain";import{AttributeCardSelector as A,AttributeListSelector as B,AttributeSelect as D,AttributeSwitchSelector as F,AttributeToggleSelector as G,ChildEntityCardSelector as H,ChildEntityListSelector as I,ChildEntityToggleSelector as J,ColorPickerInput as K,CustomElement as L,CustomLayoutElement as M,DeleteEntityButton as N,DimensionListSelector as O,DimensionToggleSelector as P,DistanceDimensionInput as Q,DistanceDimensionSlider as R,EntityChildActionDelete as S,EntityChildActionSelect as T,GenericDimensionInput as U,GenericDimensionSlider as V,HorizontalGroupRecipePanel as W,MaterialSwatchSelector as X,PropertyContainerGroup as Y,PropertyContainerItem as Z,PropertyPageEntityChildrenList as $,ReplaceEntityDropdown as _,SimpleRecipePanel as tt,VerticalGroupRecipePanel as to}from"#package/react-sdk";import{builtInEntityElement as te}from"./built-in-entity-element.js";import{builtInLayoutElement as tm}from"./built-in-layout-element.js";export const domainControlElements=[te(t,A),te(o,B),te(e,D),te(m,F),te(i,G),te(r,H),te(n,I),te(a,J),te(l,K),te(p,L),tm(s,M),te(c,N),te(f,O),te(d,P),te(k,Q),te(u,R),te(b,S),te(g,T),te(j,$),te(y,U),te(x,V),te(C,W),te(E,X),te(h,Y),te(q,Z),te(v,_),te(w,tt),te(z,to)];
@@ -0,0 +1,4 @@
1
+ export { domainControlElements } from './domain-control-elements.js';
2
+ export { recipePanelElements } from './recipe-panel-elements.js';
3
+ export { sidebarFooterElements } from './sidebar-footer-elements.js';
4
+ export { toolbarElements } from './toolbar-elements.js';
@@ -0,0 +1 @@
1
+ export{domainControlElements}from"./domain-control-elements.js";export{recipePanelElements}from"./recipe-panel-elements.js";export{sidebarFooterElements}from"./sidebar-footer-elements.js";export{toolbarElements}from"./toolbar-elements.js";
@@ -0,0 +1,3 @@
1
+ import { type ElementRegistration } from '#package/domain';
2
+ /** The configurator's recipe panels and the buttons that open them, registered under their spec kinds. */
3
+ export declare const recipePanelElements: readonly ElementRegistration[];
@@ -0,0 +1 @@
1
+ import{groupedRecipeButtonSchema as e,groupedRecipePanelSchema as i,replaceEntityPanelButtonSchema as t,replaceEntityPanelSchema as m}from"#package/domain";import{GroupedRecipeButton as o,GroupedRecipePanel as n,ReplaceEntityPanel as r,ReplaceEntityPanelButton as p}from"../../ui/index.js";import{builtInEntityElement as a}from"./built-in-entity-element.js";export const recipePanelElements=[a(e,o),a(i,n),a(m,r),a(t,p)];
@@ -0,0 +1,7 @@
1
+ import { type ElementRegistration } from '#package/domain';
2
+ /**
3
+ * The pieces of the configurator's sidebar footer, registered under their spec kinds. The built-in
4
+ * footers render these components directly, so a project element of the same name reaches only a
5
+ * `customSidebarFooter`.
6
+ */
7
+ export declare const sidebarFooterElements: readonly ElementRegistration[];
@@ -0,0 +1 @@
1
+ import{enterSummaryButtonSchema as o,footerPriceSchema as e,mainFooterActionsSchema as t,nextStepButtonSchema as i,otherActionsSchema as m,previousStepButtonSchema as r,saveTemplateButtonSchema as n,stepLabelSchema as a,stepProgressSchema as p}from"#package/domain";import{EnterSummaryButton as s,FooterPrice as l,MainFooterActions as d,NextStepButton as f,OtherActions as u,PreviousStepButton as b,SaveTemplateButton as c,StepLabel as j,StepProgress as x}from"../../ui/index.js";import{builtInLayoutElement as g}from"./built-in-layout-element.js";export const sidebarFooterElements=[g(o,s),g(e,l),g(t,d),g(i,f),g(m,u),g(r,b),g(n,c),g(a,j),g(p,x)];
@@ -0,0 +1,7 @@
1
+ import { type ElementRegistration } from '#package/domain';
2
+ /**
3
+ * The configurator's toolbar buttons and mobile menu actions, registered under their spec kinds.
4
+ * `ToolbarHelp` is not among them: the toolbar shows its help button only when a project registers
5
+ * that name.
6
+ */
7
+ export declare const toolbarElements: readonly ElementRegistration[];
@@ -0,0 +1 @@
1
+ import{assistantToolbarButtonSchema as o,enterFullscreenToolbarButtonSchema as t,exitFullscreenToolbarButtonSchema as m,helpMenuActionSchema as e,helpToolbarButtonSchema as i,languageMenuActionSchema as r,languageToolbarButtonSchema as n,measurementsMenuActionSchema as a,measurementsToolbarButtonSchema as l,redoToolbarButtonSchema as p,resetCameraToolbarButtonSchema as s,shareMenuActionSchema as f,shareToolbarButtonSchema as u,toolbarButtonGroupSchema as b,undoToolbarButtonSchema as c}from"#package/domain";import{AssistantToolbarButton as d,EnterFullscreenToolbarButton as j,ExitFullscreenToolbarButton as x,HelpMenuAction as g,HelpToolbarButton as k,LanguageMenuAction as y,LanguageToolbarButton as E,MeasurementsMenuAction as h,MeasurementsToolbarButton as q,RedoToolbarButton as v,ResetCameraToolbarButton as w,ShareMenuAction as z,ShareToolbarButton as A,ToolbarButtonGroup as B,UndoToolbarButton as C}from"../../ui/index.js";import{builtInLayoutElement as D}from"./built-in-layout-element.js";export const toolbarElements=[D(o,d),D(t,j),D(m,x),D(e,g),D(i,k),D(r,y),D(n,E),D(a,h),D(l,q),D(p,v),D(s,w),D(f,z),D(u,A),D(b,B),D(c,C)];
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Shows the save messages of `useConfiguratorMessages` as snackbars: a `saveError` as an error snackbar that stays
3
+ * until it is dismissed or a later save succeeds, and a `saveRecovery` as an informational one. Mounted wherever a
4
+ * layout mounts its message services: `LayoutSlots.Services`, the legacy layouts' overlays and the `custom` owner UI.
5
+ * In read mode, from the access or the web component's `readonly`, nothing is saved: an error snackbar left from
6
+ * owner mode is closed and no message is shown. The read UIs that replace an owner UI in read mode
7
+ * (`SummaryReadLayout`, the `custom` read UI) mount it too, since the owner UI's instance unmounts before it can close
8
+ * the snackbar.
9
+ */
10
+ export declare const SaveMessageSnackbars: () => null;
@@ -0,0 +1 @@
1
+ import{jsx as r}from"react/jsx-runtime";import{Trans as e}from"@lingui/react";import{Button as s}from"@mui/material";import{useSnackbar as i}from"notistack";import{useEffect as t}from"react";import{useApplicationRuntime as o,useApplicationRuntimeSelector as a,useConfiguratorMessages as n}from"#package/react-sdk";let m="phx-configuration-persist-system-failure";export const SaveMessageSnackbars=()=>{let c=a(o().selectors.domainContext.configurator.getInitializationState).isViewMode,{enqueueSnackbar:d,closeSnackbar:p}=i();return t(()=>{c&&p(m)},[c,p]),n(i=>{c||("saveError"===i.kind&&d(r(e,{id:"sdk.persist.system.error.message",message:"An error occured when trying to update a configuration"}),{variant:"error",key:m,persist:!0,preventDuplicate:!0,action:i=>r(s,{color:"inherit",size:"small",onClick:()=>{p(i)},children:r(e,{id:"sdk.persist.system.error.dismiss",message:"Dismiss"})})}),"saveRecovery"===i.kind&&(p(m),d(r(e,{id:"sdk.persist.system.error.recovered",message:"Configuration updated"}),{variant:"info"})))}),null};
@@ -1,7 +1,12 @@
1
+ import type { AssistantFormsVisibility } from './thread-items.js';
1
2
  export interface AssistantMarkdownProps {
2
3
  readonly markdown: string;
3
4
  /** True while the text is still arriving, so markup the model has not finished is completed. */
4
5
  readonly isStreaming: boolean;
6
+ readonly forms: AssistantFormsVisibility;
5
7
  }
6
- /** Assistant text of the thread: Markdown with lists, tables, links, entity links and code, without a bubble. */
7
- export declare const AssistantMarkdown: import("react").MemoExoticComponent<({ markdown, isStreaming }: AssistantMarkdownProps) => import("react/jsx-runtime").JSX.Element>;
8
+ /**
9
+ * Assistant text of the thread: Markdown with lists, tables, links, entity links, references, images, code and forms,
10
+ * without a bubble. A form fence the model is still writing shows a placeholder.
11
+ */
12
+ export declare const AssistantMarkdown: import("react").MemoExoticComponent<({ markdown, isStreaming, forms }: AssistantMarkdownProps) => import("react/jsx-runtime").JSX.Element>;