@salsita-ai/sdk 0.50.0-develop.ca72986c39 → 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 (361) hide show
  1. package/README.md +8 -4
  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/project-scaffolding.d.ts +10 -14
  21. package/dist/application-spec/generate-application/code/project-scaffolding.js +2 -2
  22. package/dist/application-spec/generate-application/code/templates/admin-config.js +3 -0
  23. package/dist/application-spec/generate-application/code/templates/common/format-property-key.d.ts +7 -0
  24. package/dist/application-spec/generate-application/code/templates/common/format-property-key.js +1 -0
  25. package/dist/application-spec/generate-application/code/templates/common/schema-to-type-string.js +3 -3
  26. package/dist/application-spec/generate-application/code/templates/eslint-config.d.ts +5 -0
  27. package/dist/application-spec/generate-application/code/templates/eslint-config.js +4 -5
  28. package/dist/application-spec/generate-application/code/templates/gitignore.js +1 -3
  29. package/dist/application-spec/generate-application/code/templates/globals.js +7 -4
  30. package/dist/application-spec/generate-application/code/templates/index.d.ts +2 -2
  31. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  32. package/dist/application-spec/generate-application/code/templates/lingui-rc.d.ts +5 -0
  33. package/dist/application-spec/generate-application/code/templates/lingui-rc.js +4 -4
  34. package/dist/application-spec/generate-application/code/templates/prettier-config.d.ts +5 -0
  35. package/dist/application-spec/generate-application/code/templates/prettier-config.js +4 -5
  36. package/dist/application-spec/generate-application/code/templates/skills/phoenix-cli-skill.js +1 -1
  37. package/dist/application-spec/generate-application/code/templates/skills/phoenix-create-configurator-skill.js +1 -1
  38. package/dist/application-spec/generate-application/code/templates/skills/phoenix-feedback-skill.js +5 -5
  39. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +3 -3
  40. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +1 -1
  41. package/dist/application-spec/generate-application/code/templates/skills/phoenix-variants-skill.js +2 -2
  42. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +13 -2
  43. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +2 -2
  44. package/dist/application-spec/generate-application/code/templates/spec-code/collect-spec-code.d.ts +58 -0
  45. package/dist/application-spec/generate-application/code/templates/spec-code/collect-spec-code.js +1 -0
  46. package/dist/application-spec/generate-application/code/templates/spec-code/index.d.ts +2 -0
  47. package/dist/application-spec/generate-application/code/templates/spec-code/index.js +1 -0
  48. package/dist/application-spec/generate-application/code/templates/spec-code/spec-code.d.ts +18 -0
  49. package/dist/application-spec/generate-application/code/templates/spec-code/spec-code.js +41 -0
  50. package/dist/application-spec/generate-application/code/templates/spec-messages/index.d.ts +1 -0
  51. package/dist/application-spec/generate-application/code/templates/spec-messages/index.js +1 -0
  52. package/dist/application-spec/generate-application/code/templates/spec-messages/spec-messages.d.ts +20 -0
  53. package/dist/application-spec/generate-application/code/templates/spec-messages/spec-messages.js +6 -0
  54. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-model-runtime.d.ts +4 -3
  55. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.d.ts +2 -2
  56. package/dist/application-spec/generate-application/runtime/admin-runtime/states-runtime.d.ts +2 -2
  57. package/dist/application-spec/generate-application/runtime/application-runtime.d.ts +6 -5
  58. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-model-runtime.d.ts +4 -3
  59. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.d.ts +2 -2
  60. package/dist/application-spec/generate-application/runtime/configurator-runtime/states-runtime.d.ts +2 -2
  61. package/dist/application-spec/generate-application/runtime/migrations/migration-runtime.d.ts +2 -2
  62. package/dist/application-spec/generate-application/runtime/sections/assistant-runtime.d.ts +2 -2
  63. package/dist/application-spec/generate-application/runtime/sections/data-runtime.d.ts +4 -4
  64. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.d.ts +3 -2
  65. package/dist/application-spec/generate-application/runtime/sections/theme-runtime.d.ts +2 -2
  66. package/dist/application-spec/generate-application/runtime/sections/transformers-runtime.d.ts +3 -3
  67. package/dist/application-spec/generate-application/runtime-spec/decode-runtime-spec.d.ts +9 -0
  68. package/dist/application-spec/generate-application/runtime-spec/decode-runtime-spec.js +1 -0
  69. package/dist/application-spec/generate-application/runtime-spec/encode-runtime-spec.d.ts +8 -0
  70. package/dist/application-spec/generate-application/runtime-spec/encode-runtime-spec.js +1 -0
  71. package/dist/application-spec/generate-application/runtime-spec/encoded-runtime-spec.d.ts +27 -0
  72. package/dist/application-spec/generate-application/runtime-spec/encoded-runtime-spec.js +1 -0
  73. package/dist/application-spec/generate-application/runtime-spec/index.d.ts +5 -0
  74. package/dist/application-spec/generate-application/runtime-spec/index.js +1 -0
  75. package/dist/application-spec/generate-application/runtime-spec/runtime-spec.d.ts +68 -0
  76. package/dist/application-spec/generate-application/runtime-spec/runtime-spec.js +1 -0
  77. package/dist/application-spec/generate-application/runtime-spec/spec-code-id.d.ts +40 -0
  78. package/dist/application-spec/generate-application/runtime-spec/spec-code-id.js +1 -0
  79. package/dist/application-spec/parse-application-files/categorize/categorize-files.d.ts +18 -0
  80. package/dist/application-spec/parse-application-files/categorize/categorize-files.js +1 -1
  81. package/dist/application-spec/parse-application-files/categorize/earlier-generated-editor-configs.d.ts +16 -0
  82. package/dist/application-spec/parse-application-files/categorize/earlier-generated-editor-configs.js +9 -0
  83. package/dist/application-spec/parse-application-files/raw-spec/parse-yaml-spec-file.js +1 -1
  84. package/dist/application-spec/parse-application-files/spec/application/admin-spec/admin-spec.js +1 -1
  85. package/dist/application-spec/parse-application-files/spec/application/configurator-spec/configurator-spec.js +1 -1
  86. package/dist/application-spec/parse-application-files/spec/common/index.d.ts +1 -0
  87. package/dist/application-spec/parse-application-files/spec/common/index.js +1 -1
  88. package/dist/application-spec/parse-application-files/spec/common/value-type/format-value-type.d.ts +3 -0
  89. package/dist/application-spec/parse-application-files/spec/common/value-type/format-value-type.js +1 -0
  90. package/dist/application-spec/parse-application-files/spec/common/value-type/index.d.ts +5 -0
  91. package/dist/application-spec/parse-application-files/spec/common/value-type/index.js +1 -0
  92. package/dist/application-spec/parse-application-files/spec/common/value-type/intersect-value-types.d.ts +6 -0
  93. package/dist/application-spec/parse-application-files/spec/common/value-type/intersect-value-types.js +1 -0
  94. package/dist/application-spec/parse-application-files/spec/common/value-type/is-assignable-value-type.d.ts +8 -0
  95. package/dist/application-spec/parse-application-files/spec/common/value-type/is-assignable-value-type.js +1 -0
  96. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type-at.d.ts +10 -0
  97. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type-at.js +1 -0
  98. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type.d.ts +98 -0
  99. package/dist/application-spec/parse-application-files/spec/common/value-type/value-type.js +1 -0
  100. package/dist/application-spec/parse-application-files/spec/components/bindings/component-path.d.ts +13 -0
  101. package/dist/application-spec/parse-application-files/spec/components/bindings/component-path.js +1 -0
  102. package/dist/application-spec/parse-application-files/spec/components/bindings/index.d.ts +2 -0
  103. package/dist/application-spec/parse-application-files/spec/components/bindings/index.js +1 -1
  104. package/dist/application-spec/parse-application-files/spec/components/bindings/read-binding-type.d.ts +24 -0
  105. package/dist/application-spec/parse-application-files/spec/components/bindings/read-binding-type.js +1 -0
  106. package/dist/application-spec/parse-application-files/spec/components/component-state-type.d.ts +8 -0
  107. package/dist/application-spec/parse-application-files/spec/components/component-state-type.js +1 -0
  108. package/dist/application-spec/parse-application-files/spec/components/filter-criterion-types.d.ts +13 -0
  109. package/dist/application-spec/parse-application-files/spec/components/filter-criterion-types.js +1 -0
  110. package/dist/application-spec/parse-application-files/spec/components/static-entity-id.d.ts +14 -0
  111. package/dist/application-spec/parse-application-files/spec/components/static-entity-id.js +1 -0
  112. package/dist/application-spec/parse-application-files/spec/components/user-component-entry.d.ts +6 -0
  113. package/dist/application-spec/parse-application-files/spec/components/user-component-entry.js +1 -1
  114. package/dist/application-spec/parse-application-files/spec/components/user-components.d.ts +7 -4
  115. package/dist/application-spec/parse-application-files/spec/components/user-components.js +1 -1
  116. package/dist/application-spec/parse-application-files/spec/expressions/expression-read-types.d.ts +24 -0
  117. package/dist/application-spec/parse-application-files/spec/expressions/expression-read-types.js +1 -0
  118. package/dist/application-spec/parse-application-files/spec/expressions/expression-read.d.ts +13 -0
  119. package/dist/application-spec/parse-application-files/spec/expressions/expression-read.js +1 -0
  120. package/dist/application-spec/parse-application-files/spec/expressions/expression-value-type.d.ts +9 -0
  121. package/dist/application-spec/parse-application-files/spec/expressions/expression-value-type.js +1 -0
  122. package/dist/application-spec/parse-application-files/spec/expressions/expressions.d.ts +6 -2
  123. package/dist/application-spec/parse-application-files/spec/expressions/expressions.js +1 -1
  124. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.d.ts +3 -1
  125. package/dist/application-spec/parse-application-files/spec/expressions/user-expressions.js +1 -1
  126. package/dist/application-spec/parse-application-files/spec/invariants/invariants.d.ts +2 -2
  127. package/dist/application-spec/parse-application-files/spec/invariants/invariants.js +1 -1
  128. package/dist/application-spec/parse-application-files/spec/model/index.d.ts +1 -0
  129. package/dist/application-spec/parse-application-files/spec/model/index.js +1 -1
  130. package/dist/application-spec/parse-application-files/spec/model/model-type-resolution.d.ts +10 -0
  131. package/dist/application-spec/parse-application-files/spec/model/model-type-resolution.js +1 -0
  132. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +7 -1
  133. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  134. package/dist/configurator/pages/DefaultConfiguratorLayout.d.ts +3 -2
  135. package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
  136. package/dist/configurator/pages/default-configurator-elements.d.ts +2 -1
  137. package/dist/configurator/pages/default-configurator-elements.js +1 -1
  138. package/dist/configurator/pages/default-elements/built-in-entity-element.d.ts +10 -0
  139. package/dist/configurator/pages/default-elements/built-in-entity-element.js +1 -0
  140. package/dist/configurator/pages/default-elements/built-in-layout-element.d.ts +10 -0
  141. package/dist/configurator/pages/default-elements/built-in-layout-element.js +1 -0
  142. package/dist/configurator/pages/default-elements/domain-control-elements.d.ts +6 -0
  143. package/dist/configurator/pages/default-elements/domain-control-elements.js +1 -0
  144. package/dist/configurator/pages/default-elements/index.d.ts +4 -0
  145. package/dist/configurator/pages/default-elements/index.js +1 -0
  146. package/dist/configurator/pages/default-elements/recipe-panel-elements.d.ts +3 -0
  147. package/dist/configurator/pages/default-elements/recipe-panel-elements.js +1 -0
  148. package/dist/configurator/pages/default-elements/sidebar-footer-elements.d.ts +7 -0
  149. package/dist/configurator/pages/default-elements/sidebar-footer-elements.js +1 -0
  150. package/dist/configurator/pages/default-elements/toolbar-elements.d.ts +7 -0
  151. package/dist/configurator/pages/default-elements/toolbar-elements.js +1 -0
  152. package/dist/configurator/ui/SaveMessageSnackbars.d.ts +10 -0
  153. package/dist/configurator/ui/SaveMessageSnackbars.js +1 -0
  154. package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +7 -2
  155. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
  156. package/dist/configurator/ui/assistant/AssistantPanel.js +1 -1
  157. package/dist/configurator/ui/assistant/AssistantThread.js +1 -1
  158. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.d.ts +1 -1
  159. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.js +1 -1
  160. package/dist/configurator/ui/assistant/entity-link/entity-link-state.d.ts +1 -1
  161. package/dist/configurator/ui/assistant/entity-link/index.d.ts +0 -1
  162. package/dist/configurator/ui/assistant/entity-link/index.js +1 -1
  163. package/dist/configurator/ui/assistant/form/AssistantForm.d.ts +19 -0
  164. package/dist/configurator/ui/assistant/form/AssistantForm.js +1 -0
  165. package/dist/configurator/ui/assistant/form/built-in-form-registry.d.ts +10 -0
  166. package/dist/configurator/ui/assistant/form/built-in-form-registry.js +1 -0
  167. package/dist/configurator/ui/assistant/form/compose-answer.d.ts +11 -0
  168. package/dist/configurator/ui/assistant/form/compose-answer.js +1 -0
  169. package/dist/configurator/ui/assistant/form/describe-build-errors.d.ts +6 -0
  170. package/dist/configurator/ui/assistant/form/describe-build-errors.js +1 -0
  171. package/dist/configurator/ui/assistant/form/form-element-definition.d.ts +14 -0
  172. package/dist/configurator/ui/assistant/form/form-element-definition.js +1 -0
  173. package/dist/configurator/ui/assistant/form/form-model.d.ts +38 -0
  174. package/dist/configurator/ui/assistant/form/form-model.js +1 -0
  175. package/dist/configurator/ui/assistant/form/form-registry.d.ts +31 -0
  176. package/dist/configurator/ui/assistant/form/form-registry.js +8 -0
  177. package/dist/configurator/ui/assistant/form/form-state.d.ts +4 -0
  178. package/dist/configurator/ui/assistant/form/form-state.js +1 -0
  179. package/dist/configurator/ui/assistant/form/index.d.ts +2 -0
  180. package/dist/configurator/ui/assistant/form/index.js +1 -0
  181. package/dist/configurator/ui/assistant/form/parse-form-block.d.ts +9 -0
  182. package/dist/configurator/ui/assistant/form/parse-form-block.js +1 -0
  183. package/dist/configurator/ui/assistant/form/read-form-attributes.d.ts +13 -0
  184. package/dist/configurator/ui/assistant/form/read-form-attributes.js +1 -0
  185. package/dist/configurator/ui/assistant/form-elements/FormGroup.d.ts +3 -0
  186. package/dist/configurator/ui/assistant/form-elements/FormGroup.js +1 -0
  187. package/dist/configurator/ui/assistant/form-elements/FormOptions.d.ts +3 -0
  188. package/dist/configurator/ui/assistant/form-elements/FormOptions.js +1 -0
  189. package/dist/configurator/ui/assistant/form-elements/FormReply.d.ts +3 -0
  190. package/dist/configurator/ui/assistant/form-elements/FormReply.js +1 -0
  191. package/dist/configurator/ui/assistant/form-elements/FormText.d.ts +3 -0
  192. package/dist/configurator/ui/assistant/form-elements/FormText.js +1 -0
  193. package/dist/configurator/ui/assistant/form-elements/form-element-props.d.ts +34 -0
  194. package/dist/configurator/ui/assistant/form-elements/form-element-props.js +1 -0
  195. package/dist/configurator/ui/assistant/form-elements/index.d.ts +5 -0
  196. package/dist/configurator/ui/assistant/form-elements/index.js +1 -0
  197. package/dist/configurator/ui/assistant/reference-link/AssistantReferenceLink.d.ts +16 -0
  198. package/dist/configurator/ui/assistant/reference-link/AssistantReferenceLink.js +1 -0
  199. package/dist/configurator/ui/assistant/reference-link/assistant-link-target.d.ts +34 -0
  200. package/dist/configurator/ui/assistant/reference-link/assistant-link-target.js +1 -0
  201. package/dist/configurator/ui/assistant/reference-link/assistant-reference-details.d.ts +25 -0
  202. package/dist/configurator/ui/assistant/reference-link/assistant-reference-details.js +1 -0
  203. package/dist/configurator/ui/assistant/reference-link/index.d.ts +3 -0
  204. package/dist/configurator/ui/assistant/reference-link/index.js +1 -0
  205. package/dist/configurator/ui/assistant/reference-link/reference-styles.d.ts +12 -0
  206. package/dist/configurator/ui/assistant/reference-link/reference-styles.js +1 -0
  207. package/dist/configurator/ui/assistant/reference-link/use-assistant-reference-details.d.ts +8 -0
  208. package/dist/configurator/ui/assistant/reference-link/use-assistant-reference-details.js +1 -0
  209. package/dist/configurator/ui/assistant/resource-image/AssistantImage.d.ts +9 -0
  210. package/dist/configurator/ui/assistant/resource-image/AssistantImage.js +1 -0
  211. package/dist/configurator/ui/assistant/resource-image/index.d.ts +3 -0
  212. package/dist/configurator/ui/assistant/resource-image/index.js +1 -0
  213. package/dist/configurator/ui/assistant/resource-image/resource-path.d.ts +11 -0
  214. package/dist/configurator/ui/assistant/resource-image/resource-path.js +1 -0
  215. package/dist/configurator/ui/assistant/resource-image/use-resource-image-url.d.ts +5 -0
  216. package/dist/configurator/ui/assistant/resource-image/use-resource-image-url.js +1 -0
  217. package/dist/configurator/ui/assistant/streamed-markdown.d.ts +2 -0
  218. package/dist/configurator/ui/assistant/streamed-markdown.js +2 -2
  219. package/dist/configurator/ui/assistant/thread-items.d.ts +8 -1
  220. package/dist/configurator/ui/assistant/thread-items.js +1 -1
  221. package/dist/configurator/ui/assistant/use-follow-stream.js +1 -1
  222. package/dist/configurator/ui/configurator-layout/slots/services/InvariantViolations.js +1 -1
  223. package/dist/configurator/ui/configurator-layout/slots/services/Services.js +1 -1
  224. package/dist/configurator/ui/legacy/layout/common/SummaryReadLayout.js +1 -1
  225. package/dist/configurator/ui/legacy/layout/simple/SimpleOwnerLayout.js +1 -1
  226. package/dist/configurator/ui/legacy/layout/steps/StepsOwnerLayout.js +1 -1
  227. package/dist/configurator/ui/legacy/layout/tabs/TabsOwnerLayout.js +1 -1
  228. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomOwnerUi.d.ts +1 -0
  229. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomOwnerUi.js +1 -1
  230. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomReadUi.d.ts +1 -0
  231. package/dist/configurator/ui/phoenix-layout-elements/LayoutCustomReadUi.js +1 -1
  232. package/dist/docs/controls/select-child-entity/cardselect.mdx +1 -0
  233. package/dist/docs/fabs/basic.mdx +2 -2
  234. package/dist/docs/index.json +1 -1
  235. package/dist/docs/layouts/custom-layout.mdx +324 -15
  236. package/dist/docs/phoenix/clerk-sign-in.mdx +1 -1
  237. package/dist/docs/phoenix/components.mdx +6 -0
  238. package/dist/docs/phoenix/configurator-interface.mdx +10 -10
  239. package/dist/docs/phoenix/domain-model.mdx +2 -0
  240. package/dist/docs/phoenix/getting-started.mdx +5 -3
  241. package/dist/docs/phoenix/layout-slots.mdx +9 -9
  242. package/dist/docs/phoenix/localization.mdx +6 -2
  243. package/dist/docs/phoenix/migration-guide.mdx +12 -10
  244. package/dist/docs/phoenix/phoenix-cli.mdx +31 -16
  245. package/dist/docs/phoenix/project-structure.mdx +52 -30
  246. package/dist/docs/phoenix/quickstart.mdx +7 -7
  247. package/dist/docs/phoenix/sdk-builder-workflow.mdx +6 -6
  248. package/dist/docs/phoenix/testing.mdx +8 -0
  249. package/dist/domain/application/assistant/assistant-form-elements.d.ts +28 -0
  250. package/dist/domain/application/assistant/assistant-form-elements.js +1 -0
  251. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
  252. package/dist/domain/application/assistant/index.d.ts +2 -0
  253. package/dist/domain/application/assistant/index.js +1 -1
  254. package/dist/domain/application/assistant-recipe-groups.d.ts +3 -1
  255. package/dist/domain/core/schema/extended-schema-validator.js +1 -1
  256. package/dist/domain/domain-runtime/spec/module-checks/element-registration.d.ts +12 -11
  257. package/dist/domain/domain-runtime/spec/module-checks/element-registration.js +1 -1
  258. package/dist/domain/domain-runtime/spec/module-checks/index.d.ts +1 -1
  259. package/dist/domain/domain-runtime/spec/module-checks/index.js +1 -1
  260. package/dist/domain/domain-runtime/spec/selectors.js +1 -1
  261. package/dist/domain/system-components/child-entity-selection.js +1 -1
  262. package/dist/domain/system-components/common/scene-entity-control-schema.d.ts +3 -0
  263. package/dist/domain/system-components/common/scene-entity-control-schema.js +1 -1
  264. package/dist/i18n/locales/cs/messages.js +1 -1
  265. package/dist/i18n/locales/da/messages.js +1 -1
  266. package/dist/i18n/locales/de/messages.js +1 -1
  267. package/dist/i18n/locales/de-AT/messages.js +1 -1
  268. package/dist/i18n/locales/en/messages.js +1 -1
  269. package/dist/i18n/locales/en-AU/messages.js +1 -1
  270. package/dist/i18n/locales/en-GB/messages.js +1 -1
  271. package/dist/i18n/locales/es/messages.js +1 -1
  272. package/dist/i18n/locales/fr/messages.js +1 -1
  273. package/dist/i18n/locales/hu/messages.js +1 -1
  274. package/dist/i18n/locales/it/messages.js +1 -1
  275. package/dist/i18n/locales/nl/messages.js +1 -1
  276. package/dist/i18n/locales/pl/messages.js +1 -1
  277. package/dist/i18n/locales/pt/messages.js +1 -1
  278. package/dist/i18n/locales/ro/messages.js +1 -1
  279. package/dist/i18n/locales/sk/messages.js +1 -1
  280. package/dist/i18n/locales/tr/messages.js +1 -1
  281. package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
  282. package/dist/legacy/domain-cli/utils/cache.js +1 -1
  283. package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +79 -80
  284. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-admin.js +10 -11
  285. package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/frontend-embedded-admin.js +9 -10
  286. package/dist/phoenix/application-spec/application-spec-builder.d.ts +0 -2
  287. package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
  288. package/dist/phoenix/application-spec/generate-application-spec-project.d.ts +0 -2
  289. package/dist/phoenix/application-spec/generate-application-spec-project.js +2 -2
  290. package/dist/phoenix/application-spec/generate-application-spec-story.js +2 -2
  291. package/dist/phoenix/application-spec/generate-project-files.d.ts +0 -2
  292. package/dist/phoenix/application-spec/project-files.js +1 -1
  293. package/dist/phoenix/bin.d.ts +2 -0
  294. package/dist/phoenix/bin.js +2 -0
  295. package/dist/phoenix/check-configs/built-in-eslint-config.d.ts +9 -0
  296. package/dist/phoenix/check-configs/built-in-eslint-config.js +1 -0
  297. package/dist/phoenix/check-configs/eslint-config.d.ts +10 -0
  298. package/dist/phoenix/check-configs/eslint-config.js +1 -0
  299. package/dist/phoenix/check-configs/index.d.ts +8 -0
  300. package/dist/phoenix/check-configs/index.js +1 -0
  301. package/dist/phoenix/check-configs/typescript-project.d.ts +5 -0
  302. package/dist/phoenix/check-configs/typescript-project.js +1 -0
  303. package/dist/phoenix/cli.d.ts +0 -1
  304. package/dist/phoenix/cli.js +1 -2
  305. package/dist/phoenix/commands/build.js +1 -1
  306. package/dist/phoenix/commands/check.js +1 -1
  307. package/dist/phoenix/commands/clean.js +1 -1
  308. package/dist/phoenix/commands/deploy.js +2 -2
  309. package/dist/phoenix/commands/deps/deps.d.ts +22 -1
  310. package/dist/phoenix/commands/deps/deps.js +2 -2
  311. package/dist/phoenix/commands/deps/index.d.ts +1 -1
  312. package/dist/phoenix/commands/deps/index.js +1 -1
  313. package/dist/phoenix/commands/deps/sdk-manifest.js +1 -1
  314. package/dist/phoenix/commands/dev.js +4 -4
  315. package/dist/phoenix/commands/fix.js +1 -1
  316. package/dist/phoenix/commands/init.d.ts +17 -5
  317. package/dist/phoenix/commands/init.js +1 -1
  318. package/dist/phoenix/commands/link.js +1 -1
  319. package/dist/phoenix/commands/prettier.js +1 -1
  320. package/dist/phoenix/commands/sync.js +1 -1
  321. package/dist/phoenix/commands/unlink.js +1 -1
  322. package/dist/phoenix/services/application-spec-project-watcher.d.ts +0 -2
  323. package/dist/phoenix/services/application-spec-project-watcher.js +2 -2
  324. package/dist/phoenix/services/lingui.d.ts +8 -0
  325. package/dist/phoenix/services/lingui.js +1 -1
  326. package/dist/phoenix/services/swc.js +1 -1
  327. package/dist/phoenix/services/vite-config.js +1 -1
  328. package/dist/phoenix/utils/index.d.ts +3 -2
  329. package/dist/phoenix/utils/index.js +1 -1
  330. package/dist/phoenix/utils/node-version/index.d.ts +1 -0
  331. package/dist/phoenix/utils/node-version/index.js +1 -0
  332. package/dist/phoenix/utils/node-version/supported-node-version.d.ts +12 -0
  333. package/dist/phoenix/utils/node-version/supported-node-version.js +4 -0
  334. package/dist/phoenix/utils/package-info.d.ts +0 -9
  335. package/dist/phoenix/utils/package-info.js +1 -1
  336. package/dist/phoenix/utils/package-manager/index.d.ts +2 -0
  337. package/dist/phoenix/utils/package-manager/index.js +1 -0
  338. package/dist/phoenix/utils/package-manager/package-manager-commands.d.ts +19 -0
  339. package/dist/phoenix/utils/package-manager/package-manager-commands.js +1 -0
  340. package/dist/phoenix/utils/package-manager/pnpm-project.d.ts +9 -0
  341. package/dist/phoenix/utils/package-manager/pnpm-project.js +1 -0
  342. package/dist/phoenix/utils/run-command.d.ts +11 -0
  343. package/dist/phoenix/utils/run-command.js +1 -1
  344. package/dist/phoenix/utils/sdk-tool/index.d.ts +1 -0
  345. package/dist/phoenix/utils/sdk-tool/index.js +1 -0
  346. package/dist/phoenix/utils/sdk-tool/resolve-sdk-tool-bin.d.ts +15 -0
  347. package/dist/phoenix/utils/sdk-tool/resolve-sdk-tool-bin.js +1 -0
  348. package/dist/react-sdk/domain-application-context/DomainLifecycleBoundary.js +1 -1
  349. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.d.ts +15 -4
  350. package/dist/react-sdk/domain-context/common-hooks/use-configurator-messages.js +1 -1
  351. package/dist/ui-sdk/theme/types.d.ts +1 -1
  352. package/package.json +16 -9
  353. package/schema/domain-spec.json +86 -8
  354. package/dist/application-spec/generate-application/code/templates/nvmrc.d.ts +0 -1
  355. package/dist/application-spec/generate-application/code/templates/nvmrc.js +0 -2
  356. package/dist/application-spec/generate-application/code/templates/package-json.d.ts +0 -10
  357. package/dist/application-spec/generate-application/code/templates/package-json.js +0 -1
  358. package/dist/configurator/ui/assistant/entity-link/entity-link-target.d.ts +0 -5
  359. package/dist/configurator/ui/assistant/entity-link/entity-link-target.js +0 -1
  360. package/dist/phoenix/commands/generate-project-files.d.ts +0 -6
  361. package/dist/phoenix/commands/generate-project-files.js +0 -1
@@ -0,0 +1,18 @@
1
+ import type { ApplicationTypeImportRegistrar } from '../../common/index.js';
2
+ import { type SpecCodeDomain } from './collect-spec-code.js';
3
+ /** The two domains of a parsed spec whose YAML code the generated module holds. */
4
+ export interface SpecCodeSpec {
5
+ readonly configurator: SpecCodeDomain;
6
+ readonly admin: SpecCodeDomain;
7
+ }
8
+ /**
9
+ * Generates `.phoenix/spec-code.ts`: every piece of code written in YAML (`$eval` in value
10
+ * expressions, component props and filter criteria) as a closure, keyed by its spec code id, one
11
+ * map per domain. Each closure is typed by what it produces (the expression's type, the component
12
+ * prop's type, the filter criterion's type) and by the entity it runs on, so `phoenix check
13
+ * --types` checks the code as it checks generated domain code.
14
+ *
15
+ * Nothing imports the file yet; the runtime will look code up in it by id instead of compiling the
16
+ * text.
17
+ */
18
+ export declare const generateApplicationSpecCodeFile: (spec: SpecCodeSpec, registerApplicationTypeImports?: ApplicationTypeImportRegistrar) => string;
@@ -0,0 +1,41 @@
1
+ import{CodeImports as e,autoHeader as t,skipApplicationTypeImports as n}from"../../common/index.js";import{collectSpecCode as r}from"./collect-spec-code.js";let o="@salsita-ai/sdk/domain",s=`/**
2
+ * The type at one key of TYPE, or the item type of an array for a numeric key, taken from every
3
+ * member of a union that has it. \`unknown\` when no member has it, so that a type the path cannot
4
+ * follow loses the check instead of rejecting valid code.
5
+ */
6
+ type SpecCodeMember<TYPE, KEY> = TYPE extends readonly (infer ITEM)[]
7
+ ? KEY extends number
8
+ ? ITEM
9
+ : never
10
+ : TYPE extends object
11
+ ? KEY extends keyof TYPE
12
+ ? TYPE[KEY]
13
+ : never
14
+ : never
15
+ type SpecCodeAt<TYPE, KEY> = [SpecCodeMember<TYPE, KEY>] extends [never] ? unknown : SpecCodeMember<TYPE, KEY>`,i=`/** The value a component filter criterion yields, as \`withGradualFilter\` takes it: arrays read-only. */
16
+ type SpecCodeFilterCriterion<KEY extends keyof ComponentSystemFilterProps> =
17
+ | ([Required<ComponentSystemFilterProps>[KEY]] extends [ReadonlyArray<infer ITEM>]
18
+ ? readonly ITEM[]
19
+ : Required<ComponentSystemFilterProps>[KEY])
20
+ | undefined`,p=`/**
21
+ * Types one closure: \`self\` is the entity it runs on, and what it returns must fit TARGET. The
22
+ * result is inferred as a constant and then checked against TARGET, as the dependencies of
23
+ * \`memoEval\` are in generated domain code.
24
+ */
25
+ const code =
26
+ <SELF, TARGET>() =>
27
+ <const RESULT extends TARGET>(closure: (self: SELF) => RESULT): ((self: SELF) => RESULT) =>
28
+ closure`,a=(e,t,n)=>{if(0===t.length)return"unknown";let r=t.map(t=>(t.length>0&&(n.usesAt=!0),t.reduce((e,t)=>`SpecCodeAt<${e}, ${"number"==typeof t?"number":JSON.stringify(t)}>`,e)));return 1===r.length?r[0]:r.map(e=>`(${e})`).join(" & ")},d=(e,t,n)=>0===e.length?"{}":`{
29
+ ${e.map(e=>{let r,s,i;return t.registerOwnerTypes([`$${e.owner}`]),r=`${t.typePrefix}$${e.owner}`,s=((e,t,n,r)=>{if("filter"===e.kind)return r.usesFilter=!0,r.imports.addTypeImport(o,"ComponentSystemFilterProps"),`SpecCodeFilterCriterion<'${e.criterion}'>`;if("component"===e.kind){let t=`${e.componentName}Component`;return r.imports.addTypeImport(o,"StateOfComponent"),r.imports.addTypeImport(o,t),a(`StateOfComponent<typeof ${t}>`,e.paths,r)}return n.registerOwnerTypes([`${t}Expressions`]),a(`${n.typePrefix}${t}Expressions['${e.name}']`,e.paths,r)})(e.target,e.owner,t,n),i=e.usesSelf?`self => (${e.code}
30
+ )`:`() => (${e.code}
31
+ )`,` ${JSON.stringify(e.id)}: code<${r}, ${s}>()(${i}),`}).join("\n")}
32
+ }`;export const generateApplicationSpecCodeFile=(o,a=n)=>{let m=new e,c={imports:m,usesAt:!1,usesFilter:!1},l=r(o.configurator),y=r(o.admin),f=d(l,{typePrefix:"",registerOwnerTypes:e=>a(m,e)},c),u=d(y,{typePrefix:"Admin.",registerOwnerTypes:()=>a(m,["Admin"])},c),E=[...c.usesAt?[s]:[],...c.usesFilter?[i]:[],...l.length+y.length>0?[p]:[]];return`${t("spec-code.ts","Code written in YAML ($eval in expressions, component props and filters) as typed closures, keyed by spec code id.")}
33
+ ${m.toString()}
34
+
35
+ ${E.map(e=>`${e}
36
+
37
+ `).join("")}export const specCode = {
38
+ configurator: ${f},
39
+ admin: ${u},
40
+ }
41
+ `};
@@ -0,0 +1 @@
1
+ export { generateApplicationSpecMessagesFile } from './spec-messages.js';
@@ -0,0 +1 @@
1
+ export{generateApplicationSpecMessagesFile}from"./spec-messages.js";
@@ -0,0 +1,20 @@
1
+ import type { ComponentEntry, Defaults, Expressions, Invariants } from '../../../../parse-application-files/index.js';
2
+ /** The sections of one domain whose `$msg` texts generated domain code turns into `msg` calls. */
3
+ export interface SpecMessagesDomain {
4
+ readonly expressions: Expressions;
5
+ readonly components: readonly ComponentEntry[];
6
+ readonly invariants: Invariants;
7
+ readonly defaults: Defaults;
8
+ }
9
+ /** The two domains of a parsed spec whose texts the generated messages file holds. */
10
+ export interface SpecMessagesSpec {
11
+ readonly configurator: SpecMessagesDomain;
12
+ readonly admin: SpecMessagesDomain;
13
+ }
14
+ /**
15
+ * Generates `.phoenix/spec-messages.ts`: one `msg` call for each distinct `$msg` text of the spec
16
+ * that generated domain code turns into a `msg` call, with the same message id (`$msgId`, or the id
17
+ * Lingui generates from the text). Lingui extracts the project's catalogues from `.phoenix`, so the
18
+ * YAML texts reach them through this file. Nothing imports it.
19
+ */
20
+ export declare const generateApplicationSpecMessagesFile: (spec: SpecMessagesSpec) => string;
@@ -0,0 +1,6 @@
1
+ import{isMsgMarker as e,stringifyMsgMacroCode as t}from"../../../../core/index.js";import{CodeImports as s,autoHeader as o}from"../../common/index.js";let n=(e,t)=>{"msg"===e.kind?t.push(e.marker):"array"===e.kind?e.items.forEach(e=>n(e,t)):"object"===e.kind&&e.entries.forEach(([,e])=>n(e,t))},a=(t,s)=>{e(t)?s.push(t):Array.isArray(t)?t.forEach(e=>a(e,s)):"object"==typeof t&&null!==t&&Object.values(t).forEach(e=>a(e,s))},r=(e,t)=>{for(let s of e.expressions.expressions.values())for(let e of s.values())"value"===e.implementation.kind&&n(e.implementation.plan.template,t);for(let s of e.components)"userBound"===s.implementation.kind&&n(s.implementation.plan.template,t);for(let s of Object.values(e.invariants.entries))for(let e of Object.values(s))"static"===e.kind&&"string"!=typeof e.message&&t.push(e.message);a(e.defaults.entries,t)};export const generateApplicationSpecMessagesFile=e=>{let n=[];r(e.configurator,n),r(e.admin,n);let a=[...new Set(n.map(t))],i=new s;return a.length>0&&i.addImport("@lingui/core/macro","msg"),`${o("spec-messages.ts","The texts of the spec as msg calls, for Lingui extraction.")}
2
+ ${i.toString()}
3
+
4
+ export const specMessages = [${a.map(e=>`
5
+ ${e},`).join("")}${a.length>0?"\n":""}]
6
+ `};
@@ -1,7 +1,8 @@
1
1
  import { Branded } from '@salsita-ai/common/utils';
2
2
  import { type $DomainEntity, $DomainEntityReflection, DomainBuilder, type DomainEntity, DomainEntityReflection, RawAliasReflection, SchemaReflection } from '#package/domain';
3
3
  import type { RuntimeReferenceStore } from '../../../caching/index.js';
4
- import type { DataSchemas, Expressions, ModelVersion, ResolvedVersions } from '../../../parse-application-files/index.js';
4
+ import type { DataSchemas, Expressions } from '../../../parse-application-files/index.js';
5
+ import type { RuntimeModelVersion, RuntimeResolvedVersions } from '../../runtime-spec/index.js';
5
6
  type AnyEntity = DomainEntity<string>;
6
7
  type AnyAliases = Record<string, AnyEntity>;
7
8
  type AnyData = Record<string, unknown>;
@@ -9,8 +10,8 @@ type Any$Map = Record<AnyEntity['type'], $DomainEntity<AnyEntity>>;
9
10
  type AnyDomainBuilder = DomainBuilder<AnyEntity, AnyEntity, AnyAliases, Any$Map, AnyData, AnyData, AnyData>;
10
11
  interface AdminModelRuntimeSpec {
11
12
  readonly expressions: Expressions;
12
- readonly latestModel: ModelVersion;
13
- readonly resolvedVersions: ResolvedVersions;
13
+ readonly latestModel: RuntimeModelVersion;
14
+ readonly resolvedVersions: RuntimeResolvedVersions;
14
15
  }
15
16
  interface AdminModelRuntimeFields {
16
17
  readonly entities: Record<string, DomainEntityReflection<AnyEntity>>;
@@ -1,6 +1,6 @@
1
1
  import { Branded } from '@salsita-ai/common/utils';
2
2
  import type { RuntimeReferenceStore } from '../../../caching/index.js';
3
- import type { ApplicationSpec } from '../../../parse-application-files/index.js';
3
+ import type { RuntimeSpec } from '../../runtime-spec/index.js';
4
4
  import { FactoryDataRuntime } from '../factory-data/index.js';
5
5
  import { type MigrationModules, MigrationRuntime } from '../migrations/index.js';
6
6
  import { ComponentOptics } from '../sections/component-optic.js';
@@ -24,4 +24,4 @@ export type AdminRuntimeResult = {
24
24
  readonly ok: false;
25
25
  readonly missingExpressions: readonly MissingExpression[];
26
26
  };
27
- export declare const AdminRuntime: (spec: ApplicationSpec, referenceStore: RuntimeReferenceStore, implementations: ExpressionImplementations, invariantImplementations: InvariantImplementations, migrationModules: MigrationModules) => AdminRuntimeResult;
27
+ export declare const AdminRuntime: (spec: RuntimeSpec, referenceStore: RuntimeReferenceStore, implementations: ExpressionImplementations, invariantImplementations: InvariantImplementations, migrationModules: MigrationModules) => AdminRuntimeResult;
@@ -1,8 +1,8 @@
1
1
  import { Branded } from '@salsita-ai/common/utils';
2
2
  import type { RuntimeReferenceStore } from '../../../caching/index.js';
3
- import type { ApplicationSpec } from '../../../parse-application-files/index.js';
3
+ import type { RuntimeSpec } from '../../runtime-spec/index.js';
4
4
  export type AdminStatesRuntime = Branded<'AdminStatesRuntime', {
5
5
  readonly navigationStates: readonly string[];
6
6
  readonly changed: boolean;
7
7
  }>;
8
- export declare const AdminStatesRuntime: (spec: ApplicationSpec, referenceStore: RuntimeReferenceStore) => AdminStatesRuntime;
8
+ export declare const AdminStatesRuntime: (spec: RuntimeSpec, referenceStore: RuntimeReferenceStore) => AdminStatesRuntime;
@@ -1,15 +1,15 @@
1
1
  import { Branded } from '@salsita-ai/common/utils';
2
2
  import type { ImportedTransformer } from '#package/domain';
3
3
  import type { RuntimeReferenceStore } from '../../caching/index.js';
4
- import type { ApplicationSpec } from '../../parse-application-files/index.js';
4
+ import type { RuntimeSpec } from '../runtime-spec/index.js';
5
5
  import { AdminRuntime } from './admin-runtime/admin-runtime.js';
6
6
  import { ConfiguratorRuntime } from './configurator-runtime/configurator-runtime.js';
7
7
  import type { MigrationModules } from './migrations/index.js';
8
8
  import { DataRuntime } from './sections/data-runtime.js';
9
9
  import type { ExpressionImplementations, InvariantImplementations, MissingExpression } from './sections/expression-runtime.js';
10
10
  /**
11
- * Runtime objects built from ApplicationSpec.
12
- * Domain-specific fields mirror ApplicationSpec configurator/admin nesting.
11
+ * Runtime objects built from a RuntimeSpec.
12
+ * Domain-specific fields mirror the spec's configurator/admin nesting.
13
13
  */
14
14
  export type ApplicationRuntime = Branded<'ApplicationRuntime', {
15
15
  readonly configurator: ConfiguratorRuntime;
@@ -24,7 +24,8 @@ export type ApplicationRuntimeResult = {
24
24
  readonly missingExpressions: readonly MissingExpression[];
25
25
  };
26
26
  /**
27
- * Builds an ApplicationRuntime from an ApplicationSpec.
27
+ * Builds an ApplicationRuntime from a RuntimeSpec: the part of the parsed spec the runtime reads, which a
28
+ * parsed ApplicationSpec also is.
28
29
  * A persistent RuntimeReferenceStore preserves per-item references and reports
29
30
  * section-level changes across rebuilds.
30
31
  * Each field on the result carries its own `changed` flag.
@@ -37,4 +38,4 @@ export type ApplicationRuntimeResult = {
37
38
  *
38
39
  * Returns an error result when declared expressions are missing implementations.
39
40
  */
40
- export declare const ApplicationRuntime: (spec: ApplicationSpec, referenceStore: RuntimeReferenceStore, implementations: ExpressionImplementations, importedTransformers: readonly ImportedTransformer[], invariantImplementations?: InvariantImplementations, adminImplementations?: ExpressionImplementations, adminInvariantImplementations?: InvariantImplementations, migrationModules?: MigrationModules) => ApplicationRuntimeResult;
41
+ export declare const ApplicationRuntime: (spec: RuntimeSpec, referenceStore: RuntimeReferenceStore, implementations: ExpressionImplementations, importedTransformers: readonly ImportedTransformer[], invariantImplementations?: InvariantImplementations, adminImplementations?: ExpressionImplementations, adminInvariantImplementations?: InvariantImplementations, migrationModules?: MigrationModules) => ApplicationRuntimeResult;
@@ -1,7 +1,8 @@
1
1
  import { Branded } from '@salsita-ai/common/utils';
2
2
  import { type $DomainEntity, $DomainEntityReflection, DomainBuilder, type DomainEntity, DomainEntityReflection, RawAliasReflection, SchemaReflection } from '#package/domain';
3
3
  import type { RuntimeReferenceStore } from '../../../caching/index.js';
4
- import type { DataSchemas, Expressions, ModelVersion, ResolvedVersions } from '../../../parse-application-files/index.js';
4
+ import type { DataSchemas, Expressions } from '../../../parse-application-files/index.js';
5
+ import type { RuntimeModelVersion, RuntimeResolvedVersions } from '../../runtime-spec/index.js';
5
6
  type AnyEntity = DomainEntity<string>;
6
7
  type AnyAliases = Record<string, AnyEntity>;
7
8
  type AnyData = Record<string, unknown>;
@@ -10,8 +11,8 @@ type AnyDomainBuilder = DomainBuilder<AnyEntity, AnyEntity, AnyAliases, Any$Map,
10
11
  interface ConfiguratorModelRuntimeSpec {
11
12
  readonly dataSchemas: DataSchemas;
12
13
  readonly expressions: Expressions;
13
- readonly latestModel: ModelVersion;
14
- readonly resolvedVersions: ResolvedVersions;
14
+ readonly latestModel: RuntimeModelVersion;
15
+ readonly resolvedVersions: RuntimeResolvedVersions;
15
16
  }
16
17
  interface ConfiguratorModelRuntimeFields {
17
18
  readonly entities: Record<string, DomainEntityReflection<AnyEntity>>;
@@ -1,7 +1,7 @@
1
1
  import { Branded } from '@salsita-ai/common/utils';
2
2
  import type { ImportedTransformer } from '#package/domain';
3
3
  import type { RuntimeReferenceStore } from '../../../caching/index.js';
4
- import type { ApplicationSpec } from '../../../parse-application-files/index.js';
4
+ import type { RuntimeSpec } from '../../runtime-spec/index.js';
5
5
  import { FactoryDataRuntime } from '../factory-data/index.js';
6
6
  import { type MigrationModules, MigrationRuntime } from '../migrations/index.js';
7
7
  import { ActionsRuntime } from '../sections/actions-runtime.js';
@@ -33,4 +33,4 @@ export type ConfiguratorRuntimeResult = {
33
33
  readonly ok: false;
34
34
  readonly missingExpressions: readonly MissingExpression[];
35
35
  };
36
- export declare const ConfiguratorRuntime: (spec: ApplicationSpec, referenceStore: RuntimeReferenceStore, implementations: ExpressionImplementations, importedTransformers: readonly ImportedTransformer[], invariantImplementations: InvariantImplementations | undefined, migrationModules: MigrationModules) => ConfiguratorRuntimeResult;
36
+ export declare const ConfiguratorRuntime: (spec: RuntimeSpec, referenceStore: RuntimeReferenceStore, implementations: ExpressionImplementations, importedTransformers: readonly ImportedTransformer[], invariantImplementations: InvariantImplementations | undefined, migrationModules: MigrationModules) => ConfiguratorRuntimeResult;
@@ -1,6 +1,6 @@
1
1
  import { Branded } from '@salsita-ai/common/utils';
2
2
  import type { RuntimeReferenceStore } from '../../../caching/index.js';
3
- import type { ApplicationSpec } from '../../../parse-application-files/index.js';
3
+ import type { RuntimeSpec } from '../../runtime-spec/index.js';
4
4
  export type ConfiguratorStatesRuntime = Branded<'ConfiguratorStatesRuntime', {
5
5
  readonly navigationStates: readonly string[];
6
6
  readonly viewStates: readonly string[];
@@ -8,4 +8,4 @@ export type ConfiguratorStatesRuntime = Branded<'ConfiguratorStatesRuntime', {
8
8
  readonly exportStates: readonly string[];
9
9
  readonly changed: boolean;
10
10
  }>;
11
- export declare const ConfiguratorStatesRuntime: (spec: ApplicationSpec, referenceStore: RuntimeReferenceStore) => ConfiguratorStatesRuntime;
11
+ export declare const ConfiguratorStatesRuntime: (spec: RuntimeSpec, referenceStore: RuntimeReferenceStore) => ConfiguratorStatesRuntime;
@@ -1,7 +1,7 @@
1
1
  import { Branded } from '@salsita-ai/common/utils';
2
2
  import { type AnyEntityReflections, type DomainEntity, type MigrateFunction, type Migration } from '#package/domain';
3
3
  import type { RuntimeReferenceStore } from '../../../caching/index.js';
4
- import type { ResolvedVersions } from '../../../parse-application-files/index.js';
4
+ import type { RuntimeResolvedVersions } from '../../runtime-spec/index.js';
5
5
  type AnyEntity = DomainEntity<string>;
6
6
  type AnyMigration = Migration<AnyEntity, AnyEntity>;
7
7
  /**
@@ -35,7 +35,7 @@ interface MigrationRuntimeFields {
35
35
  */
36
36
  export type MigrationRuntime = Branded<'MigrationRuntime', MigrationRuntimeFields>;
37
37
  interface MigrationRuntimeInput {
38
- readonly resolvedVersions: ResolvedVersions;
38
+ readonly resolvedVersions: RuntimeResolvedVersions;
39
39
  readonly latestEntities: AnyEntityReflections;
40
40
  readonly migrationModules: MigrationModules;
41
41
  }
@@ -1,10 +1,10 @@
1
1
  import { Branded } from '@salsita-ai/common/utils';
2
2
  import type { AssistantResolvedManifest } from '#package/domain';
3
3
  import type { RuntimeReferenceStore } from '../../../caching/index.js';
4
- import type { ApplicationSpec } from '../../../parse-application-files/index.js';
4
+ import type { RuntimeSpec } from '../../runtime-spec/index.js';
5
5
  /** Resolved assistant manifest with change tracking, carried to the runtime spec on hot reload. */
6
6
  export type AssistantRuntime = Branded<'AssistantRuntime', {
7
7
  readonly assistant: AssistantResolvedManifest | null;
8
8
  readonly changed: boolean;
9
9
  }>;
10
- export declare const AssistantRuntime: (spec: ApplicationSpec, referenceStore: RuntimeReferenceStore) => AssistantRuntime;
10
+ export declare const AssistantRuntime: (spec: RuntimeSpec, referenceStore: RuntimeReferenceStore) => AssistantRuntime;
@@ -1,13 +1,13 @@
1
1
  import { Branded } from '@salsita-ai/common/utils';
2
2
  import type { RuntimeReferenceStore } from '../../../caching/index.js';
3
- import type { ApplicationSpec } from '../../../parse-application-files/index.js';
4
- type ParsedDataSpecEntries = ApplicationSpec['dataSpec']['entries'];
5
- type ParsedChunks = ApplicationSpec['dataSpec']['chunks'];
3
+ import type { RuntimeSpec } from '../../runtime-spec/index.js';
4
+ type ParsedDataSpecEntries = RuntimeSpec['dataSpec']['entries'];
5
+ type ParsedChunks = RuntimeSpec['dataSpec']['chunks'];
6
6
  export type DataRuntime = Branded<'DataRuntime', {
7
7
  readonly dataSpec: ParsedDataSpecEntries;
8
8
  readonly chunks: ParsedChunks;
9
9
  readonly publishedDataHash: string;
10
10
  readonly changed: boolean;
11
11
  }>;
12
- export declare const DataRuntime: (spec: ApplicationSpec, referenceStore: RuntimeReferenceStore) => DataRuntime;
12
+ export declare const DataRuntime: (spec: RuntimeSpec, referenceStore: RuntimeReferenceStore) => DataRuntime;
13
13
  export {};
@@ -1,7 +1,8 @@
1
1
  import { Branded } from '@salsita-ai/common/utils';
2
2
  import type { DomainEntity, Expression as DomainExpression, Invariant as DomainInvariant } from '#package/domain';
3
3
  import type { RuntimeReferenceStore } from '../../../caching/index.js';
4
- import type { Expressions, ModelVersion } from '../../../parse-application-files/index.js';
4
+ import type { Expressions } from '../../../parse-application-files/index.js';
5
+ import type { RuntimeModelVersion } from '../../runtime-spec/index.js';
5
6
  type RuntimeData = Record<string, unknown>;
6
7
  type RuntimeEntity = DomainEntity<string>;
7
8
  type AnyExpression = DomainExpression<RuntimeEntity, RuntimeEntity, RuntimeData, RuntimeData, RuntimeData, RuntimeEntity, unknown>;
@@ -30,7 +31,7 @@ export type ExpressionRuntimeResult = {
30
31
  };
31
32
  interface ExpressionRuntimeSpec {
32
33
  readonly expressions: Expressions;
33
- readonly latestModel: ModelVersion;
34
+ readonly latestModel: RuntimeModelVersion;
34
35
  }
35
36
  /**
36
37
  * Runtime section that produces the single merged expression map for the registry.
@@ -1,10 +1,10 @@
1
1
  import { Branded } from '@salsita-ai/common/utils';
2
2
  import type { RuntimeReferenceStore } from '../../../caching/index.js';
3
- import type { ApplicationSpec } from '../../../parse-application-files/index.js';
3
+ import type { RuntimeSpec } from '../../runtime-spec/index.js';
4
4
  /** Resolved theme spec with change tracking — no UI deps, just preset + options. */
5
5
  export type ThemeRuntime = Branded<'ThemeRuntime', {
6
6
  readonly preset: string;
7
7
  readonly options: Readonly<Record<string, unknown>>;
8
8
  readonly changed: boolean;
9
9
  }>;
10
- export declare const ThemeRuntime: (spec: ApplicationSpec, referenceStore: RuntimeReferenceStore) => ThemeRuntime;
10
+ export declare const ThemeRuntime: (spec: RuntimeSpec, referenceStore: RuntimeReferenceStore) => ThemeRuntime;
@@ -1,7 +1,7 @@
1
1
  import { Branded } from '@salsita-ai/common/utils';
2
2
  import type { ImportedTransformer } from '#package/domain';
3
3
  import type { RuntimeReferenceStore } from '../../../caching/index.js';
4
- import type { ApplicationSpec } from '../../../parse-application-files/index.js';
4
+ import type { RuntimeSpec } from '../../runtime-spec/index.js';
5
5
  /**
6
6
  * Runtime section for transformers. Combines two sources of truth:
7
7
  * - `importedTransformers` — factory functions from src/transformers/*.ts
@@ -13,7 +13,7 @@ import type { ApplicationSpec } from '../../../parse-application-files/index.js'
13
13
  */
14
14
  export type TransformersRuntime = Branded<'TransformersRuntime', {
15
15
  readonly importedTransformers: readonly ImportedTransformer[];
16
- readonly specTransformers: ApplicationSpec['configurator']['transformers'];
16
+ readonly specTransformers: RuntimeSpec['configurator']['transformers'];
17
17
  readonly changed: boolean;
18
18
  }>;
19
- export declare const TransformersRuntime: (spec: ApplicationSpec, referenceStore: RuntimeReferenceStore, importedTransformers: readonly ImportedTransformer[]) => TransformersRuntime;
19
+ export declare const TransformersRuntime: (spec: RuntimeSpec, referenceStore: RuntimeReferenceStore, importedTransformers: readonly ImportedTransformer[]) => TransformersRuntime;
@@ -0,0 +1,9 @@
1
+ import type { RuntimeSpec } from './runtime-spec.js';
2
+ /**
3
+ * Reads the JSON text of `.phoenix/application-spec.json` back into the runtime spec that
4
+ * `encodeRuntimeSpec` wrote: one `JSON.parse`, then each listed array back into its Map or Set.
5
+ *
6
+ * Throws when the text is not a runtime spec artifact, or when it was written in another format
7
+ * version than this SDK reads; `phoenix sync` writes the artifact again in the right one.
8
+ */
9
+ export declare const decodeRuntimeSpec: (text: string) => RuntimeSpec;
@@ -0,0 +1 @@
1
+ import{RUNTIME_SPEC_FORMAT_VERSION as e}from"./encoded-runtime-spec.js";let t="Run `phoenix sync` to write it again with the SDK the project uses.",r=e=>"object"==typeof e&&null!==e,i=e=>Error(`Cannot read .phoenix/application-spec.json: its ${e.kind} at ${JSON.stringify(e.path)} is not where the file says it is, so the file was changed after it was written. ${t}`),o=(e,t)=>{let o=e,n="spec";for(let e of t.path)o=r(o)?o[n]:void 0,n=e;let s=r(o)?o[n]:void 0;if(!r(o)||!Array.isArray(s))throw i(t);o[n]="Map"===t.kind?new Map(s.map(e=>{if(!Array.isArray(e)||2!==e.length)throw i(t);return[e[0],e[1]]})):new Set(s)};export const decodeRuntimeSpec=i=>{let n=JSON.parse(i);if(!(r(n)&&"number"==typeof n.format&&Array.isArray(n.collections)&&"spec"in n))throw Error(`Cannot read .phoenix/application-spec.json: it is not a runtime spec written by \`phoenix sync\` or \`phoenix build\`. ${t}`);if(n.format!==e)throw Error(`Cannot read .phoenix/application-spec.json: it is written in format version ${n.format}, and this SDK reads format version ${e}, so it was written by another version of the SDK. ${t}`);let s={spec:n.spec};for(let e of n.collections)o(s,e);return s.spec};
@@ -0,0 +1,8 @@
1
+ import type { RuntimeSpec } from './runtime-spec.js';
2
+ /**
3
+ * Writes a runtime spec as the JSON text of `.phoenix/application-spec.json`, which
4
+ * `decodeRuntimeSpec` reads back. Maps and Sets become arrays listed in `collections`, properties
5
+ * whose value is `undefined` are left out, and the document carries the format version. The text
6
+ * is the same for the same spec, so an unchanged spec leaves the file unchanged.
7
+ */
8
+ export declare const encodeRuntimeSpec: (spec: RuntimeSpec) => string;
@@ -0,0 +1 @@
1
+ import{RUNTIME_SPEC_FORMAT_VERSION as t}from"./encoded-runtime-spec.js";let e=(t,e)=>Error(`Cannot write .phoenix/application-spec.json: the parsed spec holds ${e} at ${JSON.stringify(t.path)}, which the runtime spec cannot hold. The runtime spec holds only plain data, Maps and Sets, so the parser produced a value it should not have. Report this to the Phoenix team with the YAML that declares this value.`),o=(t,e,o)=>{t.path.push(e);let n=r(t,o);return t.path.pop(),n},r=(t,r)=>{let n;if(null===r||"string"==typeof r||"boolean"==typeof r)return r;if("number"==typeof r){if(!Number.isFinite(r))throw e(t,`the number ${r}`);return r}if("object"!=typeof r)throw e(t,`a value of type ${typeof r}`);if(r instanceof Map){let e=[...r].map(([e,r],n)=>{t.path.push(n);let p=[o(t,0,e),o(t,1,r)];return t.path.pop(),p});return t.collections.push({kind:"Map",path:[...t.path]}),e}if(r instanceof Set){let e=[...r].map((e,r)=>o(t,r,e));return t.collections.push({kind:"Set",path:[...t.path]}),e}if(Array.isArray(r))return r.map((r,n)=>{if(void 0===r)throw e(t,`undefined as item ${n} of an array`);return o(t,n,r)});if((n=Object.getPrototypeOf(r))!==Object.prototype&&null!==n)throw e(t,`an instance of ${r.constructor.name}`);let p={};for(let[e,n]of Object.entries(r))void 0!==n&&(p[e]=o(t,e,n));return p};export const encodeRuntimeSpec=e=>{let o={path:[],collections:[]},n=r(o,e);return JSON.stringify({format:t,collections:o.collections,spec:n})};
@@ -0,0 +1,27 @@
1
+ /**
2
+ * The version of the JSON format `encodeRuntimeSpec` writes. Raise it with every change to the
3
+ * format or to the shape of `RuntimeSpec`, so that `decodeRuntimeSpec` refuses an artifact an older
4
+ * or newer SDK wrote instead of building a runtime from data it does not understand.
5
+ */
6
+ export declare const RUNTIME_SPEC_FORMAT_VERSION = 1;
7
+ /** One step from a value into a part of it: an object key or an array index. */
8
+ export type RuntimeSpecPathSegment = string | number;
9
+ /**
10
+ * A Map or Set of the runtime spec, which JSON cannot hold: it is written as an array (a Map as its
11
+ * `[key, value]` entries), and `path` leads from the spec to that array. Paths into a Map run
12
+ * through its entries, so `[..., 2, 1]` is the value of its third entry.
13
+ */
14
+ export interface EncodedCollection {
15
+ readonly kind: 'Map' | 'Set';
16
+ readonly path: readonly RuntimeSpecPathSegment[];
17
+ }
18
+ /**
19
+ * The JSON document of `.phoenix/application-spec.json`. `spec` is the runtime spec with every Map
20
+ * and Set written as an array, and `collections` lists those arrays, inner ones before the ones
21
+ * that hold them, so a decoder turns them back in that order without walking the whole spec.
22
+ */
23
+ export interface EncodedRuntimeSpec {
24
+ readonly format: number;
25
+ readonly collections: readonly EncodedCollection[];
26
+ readonly spec: unknown;
27
+ }
@@ -0,0 +1 @@
1
+ export const RUNTIME_SPEC_FORMAT_VERSION=1;
@@ -0,0 +1,5 @@
1
+ export * from './runtime-spec.js';
2
+ export * from './encoded-runtime-spec.js';
3
+ export * from './encode-runtime-spec.js';
4
+ export * from './decode-runtime-spec.js';
5
+ export * from './spec-code-id.js';
@@ -0,0 +1 @@
1
+ export*from"./runtime-spec.js";export*from"./encoded-runtime-spec.js";export*from"./encode-runtime-spec.js";export*from"./decode-runtime-spec.js";export*from"./spec-code-id.js";
@@ -0,0 +1,68 @@
1
+ import type { AdminSpec, ApplicationSpec, ConfiguratorSpec, EntitySchema, Infra, ModelVersion, ResolvedModelVersion, ResolvedVersions } from '../../parse-application-files/index.js';
2
+ /**
3
+ * The part of a parsed entity schema the runtime reads: the entity type and the schema of its
4
+ * shape, from which it builds the entity's reflection. The full schema with `id` and `type` is
5
+ * only registered with a deployment, and the compiled shape validators only check presets and
6
+ * defaults while parsing.
7
+ */
8
+ export type RuntimeEntitySchema = Pick<EntitySchema, 'entityType' | 'shapeSchema'>;
9
+ /**
10
+ * The part of a parsed model version the runtime reads: the entity types, the aliases, the common
11
+ * types and the schema of every entity's shape. The raw shapes and resolved shapes only serve the
12
+ * parser and the type generator.
13
+ */
14
+ export type RuntimeModelVersion = Pick<ModelVersion, 'versionKey' | 'entityTypes' | 'rootEntityTypes' | 'aliases' | 'commonTypes'> & {
15
+ readonly entitySchemas: readonly RuntimeEntitySchema[];
16
+ };
17
+ /** One model version of a domain as the runtime reads it, with the migration file that leads to it. */
18
+ export type RuntimeResolvedModelVersion = Omit<ResolvedModelVersion, 'modelVersion'> & {
19
+ readonly modelVersion: RuntimeModelVersion;
20
+ };
21
+ /** Every model version of a domain as the runtime reads it; it builds the domain's migrations from them. */
22
+ export type RuntimeResolvedVersions = Pick<ResolvedVersions, 'latestVersion'> & {
23
+ readonly versionedModels: readonly RuntimeResolvedModelVersion[];
24
+ };
25
+ /** The model of a domain as the runtime reads it: the latest version and every earlier one. */
26
+ interface RuntimeDomainModel {
27
+ readonly latestModel: RuntimeModelVersion;
28
+ readonly resolvedVersions: RuntimeResolvedVersions;
29
+ }
30
+ /**
31
+ * The configurator part of the runtime spec. It leaves out the configuration schema and its
32
+ * version, which only a deployment registers, and the assistant's server settings (instructions
33
+ * and AI settings), which must never reach the browser of a customer.
34
+ */
35
+ export type RuntimeConfiguratorSpec = Pick<ConfiguratorSpec, 'components' | 'presets' | 'expressions' | 'actions' | 'invariants' | 'dataSchemas' | 'defaults' | 'states' | 'theme' | 'ui' | 'transformers' | 'assistant'> & RuntimeDomainModel;
36
+ /**
37
+ * The admin part of the runtime spec. It leaves out the configuration schema and its version, which
38
+ * only a deployment registers.
39
+ */
40
+ export type RuntimeAdminSpec = Pick<AdminSpec, 'components' | 'presets' | 'expressions' | 'invariants' | 'defaults' | 'states' | 'adminPages'> & RuntimeDomainModel;
41
+ /**
42
+ * The infrastructure settings the runtime reads: access control and resources. The environment
43
+ * variable declarations only drive the generated environment readers.
44
+ */
45
+ export type RuntimeInfra = Pick<Infra, 'acl' | 'resources' | 'resourcesConfig'>;
46
+ /**
47
+ * The parsed application spec as the runtime reads it: what `ApplicationRuntime` builds the
48
+ * configurator and admin runtimes from, and the sections an application needs besides its domains
49
+ * (data spec, app metadata, resources, access control, user interface settings, webhook data
50
+ * schemas, admin pages). `phoenix sync` and `phoenix build` write it to
51
+ * `.phoenix/application-spec.json` with `encodeRuntimeSpec`.
52
+ *
53
+ * It is derived from the parsed types, so a section the runtime reads keeps the parser's type. It
54
+ * leaves out what only the parser, the type generator or a deployment use, and holds plain data,
55
+ * Maps and Sets only, so it can be encoded as JSON.
56
+ */
57
+ export interface RuntimeSpec extends Pick<ApplicationSpec, 'appMetadata' | 'dataSpec'> {
58
+ readonly configurator: RuntimeConfiguratorSpec;
59
+ readonly admin: RuntimeAdminSpec;
60
+ readonly infra: RuntimeInfra;
61
+ }
62
+ /**
63
+ * Takes from a parsed application spec the part the runtime reads. The sections it keeps are the
64
+ * parsed values themselves, not copies; only the model versions are rebuilt without what the
65
+ * runtime does not read.
66
+ */
67
+ export declare const toRuntimeSpec: (spec: ApplicationSpec) => RuntimeSpec;
68
+ export {};
@@ -0,0 +1 @@
1
+ let e=e=>({versionKey:e.versionKey,entityTypes:e.entityTypes,rootEntityTypes:e.rootEntityTypes,aliases:e.aliases,commonTypes:e.commonTypes,entitySchemas:e.entitySchemas.map(e=>({entityType:e.entityType,shapeSchema:e.shapeSchema}))}),s=s=>({latestModel:e(s.latestModel),resolvedVersions:{latestVersion:s.resolvedVersions.latestVersion,versionedModels:s.resolvedVersions.versionedModels.map(s=>({version:s.version,key:s.key,isLatest:s.isLatest,migrationFile:s.migrationFile,modelVersion:e(s.modelVersion)}))}});export const toRuntimeSpec=e=>{let{configurator:t,admin:a,infra:n}=e;return{configurator:{components:t.components,presets:t.presets,expressions:t.expressions,actions:t.actions,invariants:t.invariants,dataSchemas:t.dataSchemas,defaults:t.defaults,states:t.states,theme:t.theme,ui:t.ui,transformers:t.transformers,assistant:t.assistant,...s(t)},admin:{components:a.components,presets:a.presets,expressions:a.expressions,invariants:a.invariants,defaults:a.defaults,states:a.states,adminPages:a.adminPages,...s(a)},appMetadata:e.appMetadata,infra:{acl:n.acl,resources:n.resources,resourcesConfig:n.resourcesConfig},dataSpec:e.dataSpec}};
@@ -0,0 +1,40 @@
1
+ import type { MemoEvalPlan } from '../../parse-application-files/index.js';
2
+ /**
3
+ * The id under which the generated `.phoenix/spec-code.ts` holds one piece of code written in YAML,
4
+ * and under which the runtime looks it up. Ids are unique within one domain; the configurator and
5
+ * the admin domain each have their own map.
6
+ *
7
+ * An id is computed from what the runtime spec already carries, by the functions of this file, on
8
+ * both sides: the generator that writes the closures and the runtime that reads them. It names the
9
+ * entity or alias that owns the code, the expression or the component instance, the position of the
10
+ * code inside that one value, and a hash of the code's text. So it stays the same when anything
11
+ * else in the spec changes, and it changes whenever the code itself changes: a module generated from
12
+ * another version of the spec does not hold it, and the runtime compiles the text instead of running
13
+ * the wrong closure.
14
+ */
15
+ export type SpecCodeId = string;
16
+ /**
17
+ * The part of an id that names a value expression: `KitchenRange.$maxWidth`. Its constant, when it
18
+ * is one, shares the plan and so the ids.
19
+ */
20
+ export declare const specCodeExpressionKey: (typeOrAlias: string, expressionName: string) => string;
21
+ /**
22
+ * The part of an id that names a component instance: `KitchenRange.main:detail`. The component
23
+ * belongs to it because an instance name is unique per component, not per entity: one entity can
24
+ * attach `main` of several components.
25
+ */
26
+ export declare const specCodeComponentKey: (typeOrAlias: string, instanceName: string, componentName: string) => string;
27
+ /**
28
+ * The id of each dependency of a plan, by dependency index: `<key>#<n>@<hash>` for the `n`-th
29
+ * `$eval` dependency, `undefined` for a read. `key` is the expression or component key of the value
30
+ * the plan builds. The ordinal counts the plan's `$eval` dependencies only, so a `$read` added to
31
+ * the same value does not renumber them.
32
+ */
33
+ export declare const specCodeEvalIds: (plan: MemoEvalPlan, key: string) => ReadonlyArray<SpecCodeId | undefined>;
34
+ /**
35
+ * Id of the `$eval` of one filter criterion of a component instance:
36
+ * `KitchenRange.label:textValue#filter0.active@<hash>`. `componentKey` comes from
37
+ * {@link specCodeComponentKey}; `branch` is the index of the filter among the `$or` alternatives,
38
+ * 0 when the filter has none; `code` is the criterion's code.
39
+ */
40
+ export declare const specCodeFilterId: (componentKey: string, branch: number, criterion: string, code: string) => SpecCodeId;
@@ -0,0 +1 @@
1
+ let e=e=>{let t=e.trim(),o=0x811c9dc5;for(let e=0;e<t.length;e++)o^=t.charCodeAt(e),o=Math.imul(o,0x1000193)>>>0;return o.toString(16).padStart(8,"0")};export const specCodeExpressionKey=(e,t)=>`${e}.${t}`;export const specCodeComponentKey=(e,t,o)=>`${e}.${t}:${o}`;export const specCodeEvalIds=(t,o)=>{let r=0;return t.deps.map(t=>"eval"===t.kind?`${o}#${r++}@${e(t.code)}`:void 0)};export const specCodeFilterId=(t,o,r,d)=>`${t}#filter${o}.${r}@${e(d)}`;
@@ -80,6 +80,24 @@ export type CategorizedFiles = Branded<'CategorizedFiles', {
80
80
  * any other root `tsconfig.json` is the project's own and is left as it is.
81
81
  */
82
82
  readonly hasEarlierGeneratedTsconfig: boolean;
83
+ /**
84
+ * One-time migration: true only on a checkout's first sync with an SDK that contains this field;
85
+ * delete it once projects have synced with such an SDK.
86
+ *
87
+ * Whether the project's root `eslint.config.js` is the file earlier SDK versions generated on
88
+ * every sync, before it became the project's. Generation reads it to replace that file once with
89
+ * the current one; any other root `eslint.config.js` is the project's own and is left as it is.
90
+ */
91
+ readonly hasEarlierGeneratedEslintConfig: boolean;
92
+ /**
93
+ * One-time migration: true only on a checkout's first sync with an SDK that contains this field;
94
+ * delete it once projects have synced with such an SDK.
95
+ *
96
+ * Whether the project's root `prettier.config.js` is the file earlier SDK versions generated on
97
+ * every sync, before it became the project's. Generation reads it to replace that file once with
98
+ * the current one; any other root `prettier.config.js` is the project's own and is left as it is.
99
+ */
100
+ readonly hasEarlierGeneratedPrettierConfig: boolean;
83
101
  readonly customCode: readonly CategorizedFile[];
84
102
  readonly customCodeChanged: boolean;
85
103
  readonly envs: Record<string, unknown>;