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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/README.md +4 -2
  2. package/dist/application-spec/caching/index.d.ts +6 -1
  3. package/dist/application-spec/caching/index.js +1 -1
  4. package/dist/application-spec/generate-application/code/domain-runtime-files.d.ts +0 -19
  5. package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
  6. package/dist/application-spec/generate-application/code/templates/gitignore.js +2 -1
  7. package/dist/application-spec/generate-application/code/templates/index.d.ts +1 -1
  8. package/dist/application-spec/generate-application/code/templates/index.js +1 -1
  9. package/dist/application-spec/generate-application/code/templates/lingui-rc.js +5 -4
  10. package/dist/application-spec/generate-application/code/templates/skills/core/cli.d.ts +2 -0
  11. package/dist/application-spec/generate-application/code/templates/skills/core/cli.js +1 -0
  12. package/dist/application-spec/generate-application/code/templates/skills/core/index.d.ts +3 -0
  13. package/dist/application-spec/generate-application/code/templates/skills/core/index.js +1 -0
  14. package/dist/application-spec/generate-application/code/templates/skills/core/sdk.d.ts +2 -0
  15. package/dist/application-spec/generate-application/code/templates/skills/core/sdk.js +150 -0
  16. package/dist/application-spec/generate-application/code/templates/skills/core/workflow.d.ts +2 -0
  17. package/dist/application-spec/generate-application/code/templates/skills/core/workflow.js +40 -0
  18. package/dist/application-spec/generate-application/code/templates/skills/features/custom-layout.d.ts +2 -0
  19. package/dist/application-spec/generate-application/code/templates/skills/features/custom-layout.js +1 -0
  20. package/dist/application-spec/generate-application/code/templates/skills/features/features.d.ts +3 -0
  21. package/dist/application-spec/generate-application/code/templates/skills/features/features.js +1 -0
  22. package/dist/application-spec/generate-application/code/templates/skills/features/index.d.ts +1 -0
  23. package/dist/application-spec/generate-application/code/templates/skills/features/index.js +1 -0
  24. package/dist/application-spec/generate-application/code/templates/skills/features/inspection.d.ts +2 -0
  25. package/dist/application-spec/generate-application/code/templates/skills/features/inspection.js +1 -0
  26. package/dist/application-spec/generate-application/code/templates/skills/features/variants.d.ts +2 -0
  27. package/dist/application-spec/generate-application/code/templates/skills/features/variants.js +1 -0
  28. package/dist/application-spec/generate-application/code/templates/skills/features/webhooks.d.ts +2 -0
  29. package/dist/application-spec/generate-application/code/templates/skills/features/webhooks.js +1 -0
  30. package/dist/application-spec/generate-application/code/templates/skills/guide.d.ts +54 -0
  31. package/dist/application-spec/generate-application/code/templates/skills/guide.js +18 -0
  32. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill-bundle.d.ts +2 -2
  33. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill-bundle.js +12 -5
  34. package/dist/application-spec/generate-application/code/templates/skills/processes/asset-conversion.d.ts +2 -0
  35. package/dist/application-spec/generate-application/code/templates/skills/processes/asset-conversion.js +23 -0
  36. package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/evaluate.d.ts +2 -0
  37. package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/evaluate.js +39 -0
  38. package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/feedback.d.ts +3 -0
  39. package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/feedback.js +1 -0
  40. package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/index.d.ts +1 -0
  41. package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/index.js +1 -0
  42. package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/report.d.ts +2 -0
  43. package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/report.js +7 -0
  44. package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/send.d.ts +2 -0
  45. package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/send.js +2 -0
  46. package/dist/application-spec/generate-application/code/templates/skills/processes/finalization.d.ts +2 -0
  47. package/dist/application-spec/generate-application/code/templates/skills/processes/finalization.js +2 -0
  48. package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/build.d.ts +2 -0
  49. package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/build.js +23 -0
  50. package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/direction.d.ts +2 -0
  51. package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/direction.js +26 -0
  52. package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/first-draft.d.ts +3 -0
  53. package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/first-draft.js +3 -0
  54. package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/handoff.d.ts +2 -0
  55. package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/handoff.js +7 -0
  56. package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/index.d.ts +1 -0
  57. package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/index.js +1 -0
  58. package/dist/application-spec/generate-application/code/templates/skills/processes/index.d.ts +9 -0
  59. package/dist/application-spec/generate-application/code/templates/skills/processes/index.js +1 -0
  60. package/dist/application-spec/generate-application/code/templates/skills/processes/model-migration.d.ts +2 -0
  61. package/dist/application-spec/generate-application/code/templates/skills/processes/model-migration.js +1 -0
  62. package/dist/application-spec/generate-application/code/templates/skills/{phoenix-skill.d.ts → processes/operations.d.ts} +2 -1
  63. package/dist/application-spec/generate-application/code/templates/skills/processes/operations.js +2 -0
  64. package/dist/application-spec/generate-application/code/templates/skills/processes/planning.d.ts +2 -0
  65. package/dist/application-spec/generate-application/code/templates/skills/processes/planning.js +5 -0
  66. package/dist/application-spec/generate-application/code/templates/skills/processes/review/appearance.d.ts +2 -0
  67. package/dist/application-spec/generate-application/code/templates/skills/processes/review/appearance.js +46 -0
  68. package/dist/application-spec/generate-application/code/templates/skills/processes/review/code.d.ts +2 -0
  69. package/dist/application-spec/generate-application/code/templates/skills/processes/review/code.js +2 -0
  70. package/dist/application-spec/generate-application/code/templates/skills/processes/review/hand-over.d.ts +2 -0
  71. package/dist/application-spec/generate-application/code/templates/skills/processes/review/hand-over.js +6 -0
  72. package/dist/application-spec/generate-application/code/templates/skills/processes/review/index.d.ts +1 -0
  73. package/dist/application-spec/generate-application/code/templates/skills/processes/review/index.js +1 -0
  74. package/dist/application-spec/generate-application/code/templates/skills/processes/review/review.d.ts +3 -0
  75. package/dist/application-spec/generate-application/code/templates/skills/processes/review/review.js +1 -0
  76. package/dist/application-spec/generate-application/code/templates/skills/processes/review/visual-inspection.d.ts +2 -0
  77. package/dist/application-spec/generate-application/code/templates/skills/processes/review/visual-inspection.js +13 -0
  78. package/dist/application-spec/generate-application/code/templates/skills/processes/specification/branding.d.ts +2 -0
  79. package/dist/application-spec/generate-application/code/templates/skills/processes/specification/branding.js +20 -0
  80. package/dist/application-spec/generate-application/code/templates/skills/processes/specification/catalog.d.ts +2 -0
  81. package/dist/application-spec/generate-application/code/templates/skills/processes/specification/catalog.js +1 -0
  82. package/dist/application-spec/generate-application/code/templates/skills/processes/specification/index.d.ts +1 -0
  83. package/dist/application-spec/generate-application/code/templates/skills/processes/specification/index.js +1 -0
  84. package/dist/application-spec/generate-application/code/templates/skills/processes/specification/product-definition.d.ts +2 -0
  85. package/dist/application-spec/generate-application/code/templates/skills/processes/specification/product-definition.js +22 -0
  86. package/dist/application-spec/generate-application/code/templates/skills/processes/specification/specification.d.ts +3 -0
  87. package/dist/application-spec/generate-application/code/templates/skills/processes/specification/specification.js +1 -0
  88. package/dist/application-spec/generate-application/code/templates/skills/processes/specification/ux-guidelines.d.ts +2 -0
  89. package/dist/application-spec/generate-application/code/templates/skills/processes/specification/ux-guidelines.js +25 -0
  90. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +63 -249
  91. package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +3 -58
  92. package/dist/application-spec/generate-application/code/templates/spec-code/collect-spec-code.d.ts +1 -1
  93. package/dist/application-spec/generate-application/code/templates/spec-code/collect-spec-code.js +1 -1
  94. package/dist/application-spec/generate-application/code/templates/tsconfig.js +2 -1
  95. package/dist/application-spec/generate-application/index.d.ts +1 -8
  96. package/dist/application-spec/generate-application/index.js +1 -1
  97. package/dist/client/authorized-client.d.ts +1 -1
  98. package/dist/client/contract.d.ts +4 -3
  99. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +28 -18
  100. package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
  101. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +8 -2
  102. package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
  103. package/dist/configurator/application-runtime/extensions/systems/index.d.ts +1 -1
  104. package/dist/configurator/application-runtime/extensions/systems/index.js +1 -1
  105. package/dist/configurator/ui/assistant/AssistantChips.d.ts +10 -0
  106. package/dist/configurator/ui/assistant/AssistantChips.js +1 -1
  107. package/dist/configurator/ui/assistant/AssistantComposer.js +2 -2
  108. package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
  109. package/dist/configurator/ui/assistant/AssistantThread.d.ts +4 -3
  110. package/dist/configurator/ui/assistant/AssistantThread.js +1 -1
  111. package/dist/configurator/ui/assistant/alert/AssistantAlert.d.ts +4 -1
  112. package/dist/configurator/ui/assistant/alert/AssistantAlert.js +1 -1
  113. package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.js +1 -1
  114. package/dist/configurator/ui/assistant/form/AssistantForm.js +1 -1
  115. package/dist/configurator/ui/assistant/form/registry/built-in-form-elements.d.ts +26 -0
  116. package/dist/configurator/ui/assistant/form-elements/FormNumber.js +1 -1
  117. package/dist/configurator/ui/assistant/popover/AssistantPopover.d.ts +24 -0
  118. package/dist/configurator/ui/assistant/popover/AssistantPopover.js +1 -0
  119. package/dist/configurator/ui/assistant/popover/index.d.ts +1 -0
  120. package/dist/configurator/ui/assistant/popover/index.js +1 -0
  121. package/dist/configurator/ui/assistant/reference-link/AssistantReferenceLink.js +1 -1
  122. package/dist/configurator/ui/assistant/reference-link/reference-styles.js +1 -1
  123. package/dist/configurator/ui/assistant/streamed-markdown.d.ts +11 -0
  124. package/dist/configurator/ui/assistant/streamed-markdown.js +2 -2
  125. package/dist/configurator/ui/assistant/tool-chip.js +1 -1
  126. package/dist/configurator/ui/assistant/use-load-older-on-top.d.ts +22 -0
  127. package/dist/configurator/ui/assistant/use-load-older-on-top.js +1 -0
  128. package/dist/configurator/ui/configurator-layout/universal/Layout.js +1 -1
  129. package/dist/docs/index.json +1 -1
  130. package/dist/docs/phoenix/getting-started.mdx +0 -2
  131. package/dist/docs/phoenix/migration-guide.mdx +7 -8
  132. package/dist/docs/phoenix/phoenix-cli.mdx +21 -12
  133. package/dist/docs/phoenix/project-structure.mdx +30 -35
  134. package/dist/docs/phoenix/sdk-builder-workflow.mdx +3 -9
  135. package/dist/domain/application/GetApplicationWrapperHandler.d.ts +1 -1
  136. package/dist/domain/application/GetThemeHandler.d.ts +1 -1
  137. package/dist/domain/application/GetWebComponentOptions.d.ts +1 -1
  138. package/dist/domain/application/application-config.d.ts +1 -3
  139. package/dist/domain/application/assistant/assistant-fields.d.ts +1 -1
  140. package/dist/domain/application/assistant/assistant-value-type.d.ts +1 -1
  141. package/dist/domain/application/assistant/build-assistant-lenses.d.ts +1 -2
  142. package/dist/domain/application/assistant/build-assistant-manifest.d.ts +1 -2
  143. package/dist/domain/application/assistant/generate-assistant-prompt.d.ts +1 -2
  144. package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
  145. package/dist/domain/application/assistant/index.d.ts +0 -4
  146. package/dist/domain/application/assistant/index.js +1 -1
  147. package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.d.ts +1 -1
  148. package/dist/domain/application/assistant/session-setup/apply-assistant-setup.d.ts +1 -1
  149. package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +1 -1
  150. package/dist/domain/application/assistant/session-setup/create-session-assistant.d.ts +1 -2
  151. package/dist/domain/application/assistant-field-options.d.ts +1 -1
  152. package/dist/domain/application/assistant-mutations.d.ts +1 -1
  153. package/dist/domain/application/assistant-recipe-groups.d.ts +1 -1
  154. package/dist/domain/application/configurator-builder.d.ts +1 -2
  155. package/dist/domain/application/create-initial-published-data.d.ts +2 -1
  156. package/dist/domain/application/published-data/DataRowValidatorHandler.d.ts +1 -1
  157. package/dist/domain/application/published-data/FilterPublishedChunksHandler.d.ts +1 -1
  158. package/dist/domain/application/published-data/MapPublishedChunkedDataHandler.d.ts +1 -1
  159. package/dist/domain/application/published-data/MapPublishedRevisionDataHandler.d.ts +1 -1
  160. package/dist/domain/application/published-data/SheetValidatorHandler.d.ts +1 -1
  161. package/dist/domain/domain-builder/domain-builder.d.ts +1 -1
  162. package/dist/domain/domain-builder/domain-builder.js +1 -1
  163. package/dist/domain/domain-runtime/domain-runtime.d.ts +24 -24
  164. package/dist/domain/domain-runtime/index.d.ts +0 -1
  165. package/dist/domain/domain-runtime/index.js +1 -1
  166. package/dist/domain/domain-runtime/spec/create-violation-expressions.d.ts +1 -1
  167. package/dist/domain/domain-runtime/spec/create-violation-expressions.js +1 -1
  168. package/dist/domain/domain-runtime/spec/index.d.ts +1 -1
  169. package/dist/domain/domain-runtime/spec/index.js +1 -1
  170. package/dist/domain/domain-runtime/spec/initialize.js +1 -1
  171. package/dist/domain/domain-runtime/spec/{module-checks/resolve-imported-transformers.d.ts → resolve-imported-transformers.d.ts} +3 -3
  172. package/dist/domain/domain-runtime/spec/resolve-imported-transformers.js +1 -0
  173. package/dist/domain/domain-runtime/spec/selectors.d.ts +5 -5
  174. package/dist/domain/domain-runtime/spec/types.d.ts +2 -2
  175. package/dist/domain/index.d.ts +13 -1
  176. package/dist/domain/index.js +1 -1
  177. package/dist/domain/mocks/create-test-application-config.d.ts +1 -1
  178. package/dist/domain/spec/index.d.ts +3 -8
  179. package/dist/domain/spec/index.js +1 -1
  180. package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/element-registration.d.ts +1 -1
  181. package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/find-assistant-form-element-errors.d.ts +1 -1
  182. package/dist/domain/spec/modules/find-assistant-form-element-errors.js +1 -0
  183. package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/index.d.ts +2 -3
  184. package/dist/domain/spec/modules/index.js +1 -0
  185. package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/merge-expression-modules.d.ts +2 -2
  186. package/dist/domain/spec/modules/merge-expression-modules.js +1 -0
  187. package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/project-modules.d.ts +1 -1
  188. package/dist/domain/spec/modules/project-modules.js +1 -0
  189. package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/resolve-action-modules.d.ts +1 -1
  190. package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/resolve-component-optic-modules.d.ts +1 -1
  191. package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/resolve-expression-modules.d.ts +1 -1
  192. package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/resolve-invariant-modules.d.ts +1 -1
  193. package/dist/domain/spec/phx/index.d.ts +1 -0
  194. package/dist/domain/spec/phx/index.js +1 -0
  195. package/dist/{application-spec/generate-application/implementations → domain/spec/phx}/phx-application-types.d.ts +1 -1
  196. package/dist/domain/spec/phx/phx-application-types.js +1 -0
  197. package/dist/domain/spec/phx/phx-domain.js +1 -0
  198. package/dist/{application-spec/generate-application/implementations → domain/spec/phx}/phx-model.d.ts +2 -2
  199. package/dist/domain/spec/phx/phx-model.js +1 -0
  200. package/dist/{application-spec/generate-application/implementations → domain/spec/phx}/phx.d.ts +1 -2
  201. package/dist/{application-spec/generate-application → domain/spec}/runtime/admin-runtime/admin-runtime.d.ts +7 -6
  202. package/dist/domain/spec/runtime/admin-runtime/admin-runtime.js +1 -0
  203. package/dist/{application-spec/generate-application → domain/spec}/runtime/admin-runtime/admin-spec-runtime.d.ts +2 -2
  204. package/dist/domain/spec/runtime/admin-runtime/admin-spec-runtime.js +1 -0
  205. package/dist/domain/spec/runtime/admin-runtime/index.d.ts +2 -0
  206. package/dist/domain/spec/runtime/admin-runtime/index.js +1 -0
  207. package/dist/{application-spec/generate-application → domain/spec}/runtime/admin-runtime/states-runtime.d.ts +1 -1
  208. package/dist/{application-spec/generate-application → domain/spec}/runtime/application-runtime.d.ts +8 -6
  209. package/dist/domain/spec/runtime/application-runtime.js +1 -0
  210. package/dist/{application-spec/generate-application → domain/spec}/runtime/application-spec-slice.d.ts +3 -1
  211. package/dist/domain/spec/runtime/application-spec-slice.js +1 -0
  212. package/dist/{application-spec/generate-application → domain/spec}/runtime/configurator-runtime/configurator-runtime.d.ts +8 -10
  213. package/dist/domain/spec/runtime/configurator-runtime/configurator-runtime.js +1 -0
  214. package/dist/{application-spec/generate-application → domain/spec}/runtime/configurator-runtime/configurator-spec-runtime.d.ts +2 -2
  215. package/dist/domain/spec/runtime/configurator-runtime/configurator-spec-runtime.js +1 -0
  216. package/dist/domain/spec/runtime/configurator-runtime/index.d.ts +2 -0
  217. package/dist/domain/spec/runtime/configurator-runtime/index.js +1 -0
  218. package/dist/{application-spec/generate-application → domain/spec}/runtime/configurator-runtime/states-runtime.d.ts +1 -1
  219. package/dist/{application-spec/generate-application → domain/spec}/runtime/create-application.d.ts +3 -2
  220. package/dist/domain/spec/runtime/create-application.js +1 -0
  221. package/dist/{application-spec/generate-application/runtime/sections → domain/spec/runtime/expressions}/expression-runtime.d.ts +5 -2
  222. package/dist/domain/spec/runtime/expressions/expression-runtime.js +1 -0
  223. package/dist/{application-spec/generate-application/runtime/sections → domain/spec/runtime/expressions}/generate-memo-eval-plan-runtime.d.ts +2 -1
  224. package/dist/domain/spec/runtime/expressions/generate-memo-eval-plan-runtime.js +1 -0
  225. package/dist/domain/spec/runtime/expressions/index.d.ts +3 -0
  226. package/dist/domain/spec/runtime/expressions/index.js +1 -0
  227. package/dist/{application-spec/generate-application/runtime/sections → domain/spec/runtime/expressions}/reflection-constants-runtime.d.ts +2 -1
  228. package/dist/{application-spec/generate-application → domain/spec}/runtime/factory-data/factory-data-runtime.d.ts +4 -2
  229. package/dist/{application-spec/generate-application → domain/spec}/runtime/factory-data/recipe-defaults.d.ts +1 -1
  230. package/dist/domain/spec/runtime/factory-data/recipe-defaults.js +1 -0
  231. package/dist/{application-spec/generate-application → domain/spec}/runtime/factory-data/static-violations.d.ts +2 -1
  232. package/dist/domain/spec/runtime/factory-data/static-violations.js +1 -0
  233. package/dist/{application-spec/generate-application → domain/spec}/runtime/generate-runtime-instance.d.ts +1 -1
  234. package/dist/domain/spec/runtime/generate-runtime-instance.js +1 -0
  235. package/dist/domain/spec/runtime/index.d.ts +13 -0
  236. package/dist/domain/spec/runtime/index.js +1 -0
  237. package/dist/{application-spec/generate-application → domain/spec}/runtime/migrations/migration-runtime.d.ts +2 -2
  238. package/dist/domain/spec/runtime/migrations/migration-runtime.js +1 -0
  239. package/dist/{application-spec/generate-application/runtime/admin-runtime → domain/spec/runtime/model}/admin-model-runtime.d.ts +4 -2
  240. package/dist/domain/spec/runtime/model/admin-model-runtime.js +1 -0
  241. package/dist/{application-spec/generate-application/runtime/configurator-runtime → domain/spec/runtime/model}/configurator-model-runtime.d.ts +4 -2
  242. package/dist/domain/spec/runtime/model/configurator-model-runtime.js +1 -0
  243. package/dist/domain/spec/runtime/model/index.d.ts +2 -0
  244. package/dist/domain/spec/runtime/model/index.js +1 -0
  245. package/dist/{application-spec/generate-application/runtime/sections → domain/spec/runtime/optics}/build-sdk-optic.d.ts +3 -4
  246. package/dist/domain/spec/runtime/optics/build-sdk-optic.js +1 -0
  247. package/dist/domain/spec/runtime/optics/build-user-bound-optic.d.ts +7 -0
  248. package/dist/domain/spec/runtime/optics/build-user-bound-optic.js +1 -0
  249. package/dist/domain/spec/runtime/optics/built-component-optic.d.ts +11 -0
  250. package/dist/{application-spec/generate-application/runtime/sections → domain/spec/runtime/optics}/component-optic.d.ts +4 -13
  251. package/dist/domain/spec/runtime/optics/index.d.ts +2 -0
  252. package/dist/domain/spec/runtime/optics/index.js +1 -0
  253. package/dist/{application-spec/caching → domain/spec/runtime}/runtime-reference-store.d.ts +1 -5
  254. package/dist/domain/spec/runtime/runtime-reference-store.js +1 -0
  255. package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/actions-runtime.d.ts +3 -2
  256. package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/assistant-runtime.d.ts +2 -2
  257. package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/data-runtime.d.ts +1 -1
  258. package/dist/domain/spec/runtime/sections/index.d.ts +6 -0
  259. package/dist/domain/spec/runtime/sections/index.js +1 -0
  260. package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/preset-runtime.d.ts +3 -2
  261. package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/theme-runtime.d.ts +1 -1
  262. package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/transformers-runtime.d.ts +2 -2
  263. package/dist/{application-spec/generate-application → domain/spec}/runtime/spec-code/resolve-spec-code.d.ts +1 -1
  264. package/dist/{application-spec/generate-application → domain/spec}/runtime/spec-runtime.d.ts +3 -3
  265. package/dist/domain/spec/runtime/spec-runtime.js +1 -0
  266. package/dist/domain/spec/runtime-spec/index.d.ts +4 -0
  267. package/dist/domain/spec/runtime-spec/index.js +1 -0
  268. package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/runtime-spec.d.ts +7 -1
  269. package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/spec-code-id.d.ts +1 -1
  270. package/dist/domain/spec/sections/assistant/assistant-resolved-manifest.js +1 -0
  271. package/dist/domain/spec/sections/assistant/index.d.ts +4 -0
  272. package/dist/domain/spec/sections/assistant/index.js +1 -0
  273. package/dist/domain/spec/sections/index.d.ts +1 -0
  274. package/dist/domain/spec/sections/index.js +1 -1
  275. package/dist/i18n/locales/cs/messages.js +1 -1
  276. package/dist/i18n/locales/da/messages.js +1 -1
  277. package/dist/i18n/locales/de/messages.js +1 -1
  278. package/dist/i18n/locales/de-AT/messages.js +1 -1
  279. package/dist/i18n/locales/en/messages.js +1 -1
  280. package/dist/i18n/locales/en-AU/messages.js +1 -1
  281. package/dist/i18n/locales/en-GB/messages.js +1 -1
  282. package/dist/i18n/locales/es/messages.js +1 -1
  283. package/dist/i18n/locales/fr/messages.js +1 -1
  284. package/dist/i18n/locales/hu/messages.js +1 -1
  285. package/dist/i18n/locales/it/messages.js +1 -1
  286. package/dist/i18n/locales/nl/messages.js +1 -1
  287. package/dist/i18n/locales/pl/messages.js +1 -1
  288. package/dist/i18n/locales/pt/messages.js +1 -1
  289. package/dist/i18n/locales/ro/messages.js +1 -1
  290. package/dist/i18n/locales/sk/messages.js +1 -1
  291. package/dist/i18n/locales/tr/messages.js +1 -1
  292. package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
  293. package/dist/phoenix/application-spec/generate-application-spec-project.js +2 -2
  294. package/dist/phoenix/application-spec/index.d.ts +1 -0
  295. package/dist/phoenix/application-spec/index.js +1 -1
  296. package/dist/phoenix/application-spec/project-files.d.ts +8 -2
  297. package/dist/phoenix/application-spec/project-files.js +1 -1
  298. package/dist/phoenix/commands/clean.js +1 -1
  299. package/dist/phoenix/commands/deploy.js +1 -1
  300. package/dist/phoenix/services/source-archive.d.ts +2 -0
  301. package/dist/phoenix/services/source-archive.js +1 -1
  302. package/dist/phoenix/services/swc.d.ts +5 -4
  303. package/dist/phoenix/services/swc.js +2 -2
  304. package/dist/ui-sdk/components/numerical-input/InputField.d.ts +2 -0
  305. package/dist/ui-sdk/components/numerical-input/InputField.js +1 -1
  306. package/dist/ui-sdk/components/numerical-input/NumericalInput.d.ts +2 -2
  307. package/dist/ui-sdk/components/numerical-input/Slider.d.ts +3 -1
  308. package/dist/ui-sdk/components/numerical-input/Slider.js +1 -1
  309. package/package.json +3 -3
  310. package/dist/application-spec/caching/runtime-reference-store.js +0 -1
  311. package/dist/application-spec/generate-application/code/templates/skills/phoenix-cli-skill.d.ts +0 -1
  312. package/dist/application-spec/generate-application/code/templates/skills/phoenix-cli-skill.js +0 -1
  313. package/dist/application-spec/generate-application/code/templates/skills/phoenix-create-configurator-skill.d.ts +0 -3
  314. package/dist/application-spec/generate-application/code/templates/skills/phoenix-create-configurator-skill.js +0 -166
  315. package/dist/application-spec/generate-application/code/templates/skills/phoenix-feedback-skill.d.ts +0 -1
  316. package/dist/application-spec/generate-application/code/templates/skills/phoenix-feedback-skill.js +0 -54
  317. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.d.ts +0 -1
  318. package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +0 -115
  319. package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +0 -1
  320. package/dist/application-spec/generate-application/code/templates/skills/phoenix-variants-skill.d.ts +0 -1
  321. package/dist/application-spec/generate-application/code/templates/skills/phoenix-variants-skill.js +0 -6
  322. package/dist/application-spec/generate-application/implementations/phx-application-types.js +0 -1
  323. package/dist/application-spec/generate-application/implementations/phx-domain.js +0 -1
  324. package/dist/application-spec/generate-application/implementations/phx-model.js +0 -1
  325. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-model-runtime.js +0 -1
  326. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.js +0 -1
  327. package/dist/application-spec/generate-application/runtime/admin-runtime/admin-spec-runtime.js +0 -1
  328. package/dist/application-spec/generate-application/runtime/application-runtime.js +0 -1
  329. package/dist/application-spec/generate-application/runtime/application-spec-slice.js +0 -1
  330. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-model-runtime.js +0 -1
  331. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.js +0 -1
  332. package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-spec-runtime.js +0 -1
  333. package/dist/application-spec/generate-application/runtime/create-application.js +0 -1
  334. package/dist/application-spec/generate-application/runtime/factory-data/recipe-defaults.js +0 -1
  335. package/dist/application-spec/generate-application/runtime/factory-data/static-violations.js +0 -1
  336. package/dist/application-spec/generate-application/runtime/generate-runtime-instance.js +0 -1
  337. package/dist/application-spec/generate-application/runtime/index.d.ts +0 -8
  338. package/dist/application-spec/generate-application/runtime/index.js +0 -1
  339. package/dist/application-spec/generate-application/runtime/migrations/migration-runtime.js +0 -1
  340. package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.js +0 -1
  341. package/dist/application-spec/generate-application/runtime/sections/build-user-bound-optic.d.ts +0 -8
  342. package/dist/application-spec/generate-application/runtime/sections/build-user-bound-optic.js +0 -1
  343. package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +0 -1
  344. package/dist/application-spec/generate-application/runtime/sections/generate-memo-eval-plan-runtime.js +0 -1
  345. package/dist/application-spec/generate-application/runtime/sections/index.d.ts +0 -10
  346. package/dist/application-spec/generate-application/runtime/sections/index.js +0 -1
  347. package/dist/application-spec/generate-application/runtime/spec-runtime.js +0 -1
  348. package/dist/application-spec/generate-application/runtime-spec/index.d.ts +0 -5
  349. package/dist/application-spec/generate-application/runtime-spec/index.js +0 -1
  350. package/dist/configurator/application-runtime/extensions/systems/assistant-system/browser-details.d.ts +0 -17
  351. package/dist/configurator/application-runtime/extensions/systems/assistant-system/browser-details.js +0 -1
  352. package/dist/domain/domain-runtime/spec/module-checks/find-assistant-form-element-errors.js +0 -1
  353. package/dist/domain/domain-runtime/spec/module-checks/index.js +0 -1
  354. package/dist/domain/domain-runtime/spec/module-checks/merge-expression-modules.js +0 -1
  355. package/dist/domain/domain-runtime/spec/module-checks/project-modules.js +0 -1
  356. package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.js +0 -1
  357. /package/dist/domain/{domain-runtime → spec}/errors/implementation-error-collector.d.ts +0 -0
  358. /package/dist/domain/{domain-runtime → spec}/errors/implementation-error-collector.js +0 -0
  359. /package/dist/domain/{domain-runtime → spec}/errors/implementation-error.d.ts +0 -0
  360. /package/dist/domain/{domain-runtime → spec}/errors/implementation-error.js +0 -0
  361. /package/dist/domain/{domain-runtime → spec}/errors/implementation-errors.d.ts +0 -0
  362. /package/dist/domain/{domain-runtime → spec}/errors/implementation-errors.js +0 -0
  363. /package/dist/domain/{domain-runtime → spec}/errors/index.d.ts +0 -0
  364. /package/dist/domain/{domain-runtime → spec}/errors/index.js +0 -0
  365. /package/dist/domain/{domain-runtime → spec}/errors/to-implementation-errors.d.ts +0 -0
  366. /package/dist/domain/{domain-runtime → spec}/errors/to-implementation-errors.js +0 -0
  367. /package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/element-registration.js +0 -0
  368. /package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/handler-registration.d.ts +0 -0
  369. /package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/handler-registration.js +0 -0
  370. /package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/resolve-action-modules.js +0 -0
  371. /package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/resolve-component-optic-modules.js +0 -0
  372. /package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/resolve-expression-modules.js +0 -0
  373. /package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/resolve-invariant-modules.js +0 -0
  374. /package/dist/{application-spec/generate-application/implementations → domain/spec/phx}/phx-domain.d.ts +0 -0
  375. /package/dist/{application-spec/generate-application/implementations → domain/spec/phx}/phx.js +0 -0
  376. /package/dist/{application-spec/generate-application → domain/spec}/runtime/admin-runtime/states-runtime.js +0 -0
  377. /package/dist/{application-spec/generate-application → domain/spec}/runtime/configurator-runtime/states-runtime.js +0 -0
  378. /package/dist/{application-spec/generate-application/runtime/sections → domain/spec/runtime/expressions}/reflection-constants-runtime.js +0 -0
  379. /package/dist/{application-spec/generate-application → domain/spec}/runtime/factory-data/factory-data-runtime.js +0 -0
  380. /package/dist/{application-spec/generate-application → domain/spec}/runtime/factory-data/index.d.ts +0 -0
  381. /package/dist/{application-spec/generate-application → domain/spec}/runtime/factory-data/index.js +0 -0
  382. /package/dist/{application-spec/generate-application → domain/spec}/runtime/migrations/index.d.ts +0 -0
  383. /package/dist/{application-spec/generate-application → domain/spec}/runtime/migrations/index.js +0 -0
  384. /package/dist/{application-spec/generate-application/runtime/spec-code/spec-code-module.js → domain/spec/runtime/optics/built-component-optic.js} +0 -0
  385. /package/dist/{application-spec/generate-application/runtime/sections → domain/spec/runtime/optics}/component-optic.js +0 -0
  386. /package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/actions-runtime.js +0 -0
  387. /package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/assistant-runtime.js +0 -0
  388. /package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/data-runtime.js +0 -0
  389. /package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/preset-runtime.js +0 -0
  390. /package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/theme-runtime.js +0 -0
  391. /package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/transformers-runtime.js +0 -0
  392. /package/dist/{application-spec/generate-application → domain/spec}/runtime/spec-code/index.d.ts +0 -0
  393. /package/dist/{application-spec/generate-application → domain/spec}/runtime/spec-code/index.js +0 -0
  394. /package/dist/{application-spec/generate-application → domain/spec}/runtime/spec-code/resolve-spec-code.js +0 -0
  395. /package/dist/{application-spec/generate-application → domain/spec}/runtime/spec-code/spec-code-module.d.ts +0 -0
  396. /package/dist/domain/{application/assistant/assistant-resolved-manifest.js → spec/runtime/spec-code/spec-code-module.js} +0 -0
  397. /package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/decode-runtime-spec.d.ts +0 -0
  398. /package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/decode-runtime-spec.js +0 -0
  399. /package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/encode-runtime-spec.d.ts +0 -0
  400. /package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/encode-runtime-spec.js +0 -0
  401. /package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/encoded-runtime-spec.d.ts +0 -0
  402. /package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/encoded-runtime-spec.js +0 -0
  403. /package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/runtime-spec.js +0 -0
  404. /package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/spec-code-id.js +0 -0
  405. /package/dist/domain/{application → spec/sections}/assistant/assistant-manifest.d.ts +0 -0
  406. /package/dist/domain/{application → spec/sections}/assistant/assistant-manifest.js +0 -0
  407. /package/dist/domain/{application → spec/sections}/assistant/assistant-resolved-manifest.d.ts +0 -0
  408. /package/dist/domain/{application → spec/sections}/assistant/form/assistant-form-element-name.d.ts +0 -0
  409. /package/dist/domain/{application → spec/sections}/assistant/form/assistant-form-element-name.js +0 -0
  410. /package/dist/domain/{application → spec/sections}/assistant/form/assistant-form-elements.d.ts +0 -0
  411. /package/dist/domain/{application → spec/sections}/assistant/form/assistant-form-elements.js +0 -0
  412. /package/dist/domain/{application → spec/sections}/assistant/form/assistant-resource-path.d.ts +0 -0
  413. /package/dist/domain/{application → spec/sections}/assistant/form/assistant-resource-path.js +0 -0
  414. /package/dist/domain/{application → spec/sections}/assistant/form/index.d.ts +0 -0
  415. /package/dist/domain/{application → spec/sections}/assistant/form/index.js +0 -0
package/README.md CHANGED
@@ -37,7 +37,9 @@ src/invariants/ validation rules
37
37
  src/elements/ custom React elements for the configurator and admin UI
38
38
  src/handlers/ actions, themes and other handlers
39
39
  src/webhooks/ server-side finalization and integration handlers
40
- .phoenix/ generated code, rebuilt by `phoenix sync`; never edit by hand
40
+ .phoenix/ generated code, rebuilt by `phoenix sync`; never edit generated files
41
+ .phoenix/workspace/ project-owned records in application-spec projects; safe to edit and commit
42
+ docs/ client documents, such as rendered specification PDFs; deployed with the private sources
41
43
  ```
42
44
 
43
45
  Generated code exposes the `phx` global in project files: `phx.domain` for the model and expressions, `phx.frontend` for elements and handlers, `phx.webhooks` for webhook builders, and the `Phx` type namespace for the generated types.
@@ -107,7 +109,7 @@ The `package.json` `exports` map is the machine-readable list, and the TypeScrip
107
109
  ## Documentation and support
108
110
 
109
111
  - `pnpm phoenix docs -s "<topic>"` searches the bundled documentation; `phoenix docs -r <path>` reads a page.
110
- - `phoenix sync` generates one `phoenix` skill under `.claude/skills/` and `.agents/skills/`, with task-specific project, CLI, workflow, review, variants and feedback guides linked from its entry point.
112
+ - `phoenix sync` generates one `phoenix` skill under `.claude/skills/` and `.agents/skills/`, and rewrites these SDK-owned files on every sync. Keep custom skills in folders whose names do not start with `phoenix`.
111
113
  - The builder docs at [docs.salsita.ai](https://docs.salsita.ai) have the guides for getting started and the CLI reference; Studio is where you sign in and manage projects.
112
114
  - `pnpm phoenix feedback "<message>"` reaches the team directly.
113
115
 
@@ -1,4 +1,9 @@
1
+ export { RuntimeReferenceStore, type ScopedBuilder } from '#package/domain';
2
+ /**
3
+ * @deprecated Use {@link RuntimeReferenceStore}. This compatibility alias will be removed in a
4
+ * future breaking project-sdk release.
5
+ */
6
+ export { RuntimeReferenceStore as ApplicationSpecCache } from '#package/domain';
1
7
  export * from './file-hash.js';
2
8
  export * from './content-diff.js';
3
- export * from './runtime-reference-store.js';
4
9
  export * from './file-dep-hash.js';
@@ -1 +1 @@
1
- export*from"./file-hash.js";export*from"./content-diff.js";export*from"./runtime-reference-store.js";export*from"./file-dep-hash.js";
1
+ export{RuntimeReferenceStore,RuntimeReferenceStore as ApplicationSpecCache}from"#package/domain";export*from"./file-hash.js";export*from"./content-diff.js";export*from"./file-dep-hash.js";
@@ -1,22 +1,3 @@
1
- /**
2
- * Generates the application files that a running configurator imports.
3
- *
4
- * Membership criterion: a file belongs to this group when the configurator or admin runtime imports
5
- * it in order to execute the parsed application domain — the domain model, its globals, and the
6
- * code that binds authored project files into runtime sections. A file that only exists so a
7
- * standalone application can boot, render, or deploy belongs to the standalone-application group,
8
- * and a file that configures the generated project itself belongs to the project-scaffolding group.
9
- *
10
- * This is the group a host embedding an already-built runtime needs on its own, which is why it is
11
- * callable without also generating a complete standalone application.
12
- *
13
- * How the generated files reach the `phx` API is this group's own decision, expressed as a
14
- * `PhxBindingStrategy` the caller selects. The strategy is chosen once, here at the group boundary,
15
- * rather than threaded as a mode flag through the individual templates: every template stays
16
- * unaware of which binding is in effect and simply renders the blocks the strategy supplies.
17
- *
18
- * @module
19
- */
20
1
  import { GeneratedApplicationFile } from '../../core/index.js';
21
2
  import type { PhoenixDefinitions } from '../../core/index.js';
22
3
  import type { ApplicationSpec, CategorizedFiles } from '../../parse-application-files/index.js';
@@ -1 +1 @@
1
- import{GeneratedApplicationFile as n}from"../../core/index.js";import{encodeRuntimeSpec as e,toRuntimeSpec as i}from"../runtime-spec/index.js";import{createApplicationTypeImportRegistrar as o}from"./common/index.js";import{generateAdminGlobalBindingBlock as t,generateApplicationSpecAdminCode as a,generateApplicationSpecAdminFrontendCode as r,generateApplicationSpecAdminGlobals as s,generateApplicationSpecCodeFile as d,generateApplicationSpecConfiguratorCode as c,generateApplicationSpecConfiguratorConfig as p,generateApplicationSpecConfiguratorFrontendCode as m,generateApplicationSpecConfiguratorGlobals as g,generateApplicationSpecDomainFile as l,generateApplicationSpecDomainSpecFile as f,generateApplicationSpecGlobals as u,generateApplicationSpecMessagesFile as B,generateApplicationSpecTypesModule as x,generateConfiguratorGlobalBindingBlock as h,generateImportedStateConstants as k,generatePhxExportsBlock as y,generatePhxGlobalsBlock as C,generateStateConstants as b}from"./templates/index.js";import{splitWebhookMembership as D}from"./webhook-safe-files.js";let j=()=>"";export const globalPhxBindingStrategy={generateApplicationTypesFile:(e,i)=>n("globals.d.ts",u(e,i)),generateDomainBindingBlock:C,generateStateConstants:b,generateConfiguratorBindingBlock:h,configuratorBindingDescription:"Creates the configurator interface and sets phx.frontend — must run before any user code imports.",generateAdminBindingBlock:t,adminBindingDescription:"Creates the admin interface and sets phx.frontend.admin — must run before admin user code imports."};export const modulePhxBindingStrategy={applicationTypeImportSource:"./application-types.js",generateApplicationTypesFile:(e,i)=>n("application-types.ts",x(e,i)),generateDomainBindingBlock:y,generateStateConstants:k,generateConfiguratorBindingBlock:j,configuratorBindingDescription:"Creates and exports the configurator interface for a module-scoped phx binding.",generateAdminBindingBlock:j,adminBindingDescription:"Creates and exports the admin interface for a module-scoped phx binding."};let S=n=>n.map(n=>n.file.name);export const generateDomainRuntimeFiles=(t,u)=>{let{applicationSpec:x,categorizedFiles:h,phxDefinitions:k,includeDefaultEnvs:y}=t,C=o(u.applicationTypeImportSource),b=S(h.expressions),j=S(h.actions),A=S(h.handlers),F=S(h.elements),I=S(h.transformers),T=S(h.invariants),w=S(h.adminInvariants),v=S(h.adminExpressions),E=S(h.adminElements),O=D(h.components),P=S(O.webhookIncluded),R=S(O.frontendOnly),q=D(h.adminComponents),z=S(q.webhookIncluded),G=S(q.frontendOnly);return[n("domain-spec.ts",f(x,{generateBindingBlock:u.generateDomainBindingBlock,generateStateConstants:u.generateStateConstants,registerApplicationTypeImports:C})),n("configurator-globals.ts",g(u.generateConfiguratorBindingBlock,u.configuratorBindingDescription,C)),n("configurator-domain-code.ts",c({expressionFiles:b,actionFiles:j,invariantFiles:T,componentFiles:P})),n("configurator-frontend-code.ts",m({transformerFiles:I,handlerFiles:A,elementFiles:F,componentFiles:R})),n("admin-domain-code.ts",a({adminExpressionFiles:v,adminInvariantFiles:w,adminComponentFiles:z})),n("admin-frontend-code.ts",r({adminElementFiles:E,adminComponentFiles:G})),n("spec-code.ts",d(x,C)),n("spec-messages.ts",B(x)),n("domain.ts",l(x)),n("configurator-config.ts",p(x,{includeDefaultEnvs:y})),u.generateApplicationTypesFile(x,k),n("admin-globals.ts",s(u.generateAdminBindingBlock,u.adminBindingDescription)),n("application-spec.json",e(i(x)),{format:!1})]};
1
+ import{encodeRuntimeSpec as n,toRuntimeSpec as e}from"#package/domain";import{GeneratedApplicationFile as i}from"../../core/index.js";import{createApplicationTypeImportRegistrar as o}from"./common/index.js";import{generateAdminGlobalBindingBlock as t,generateApplicationSpecAdminCode as a,generateApplicationSpecAdminFrontendCode as r,generateApplicationSpecAdminGlobals as s,generateApplicationSpecCodeFile as d,generateApplicationSpecConfiguratorCode as c,generateApplicationSpecConfiguratorConfig as p,generateApplicationSpecConfiguratorFrontendCode as m,generateApplicationSpecConfiguratorGlobals as g,generateApplicationSpecDomainFile as l,generateApplicationSpecDomainSpecFile as f,generateApplicationSpecGlobals as B,generateApplicationSpecMessagesFile as u,generateApplicationSpecTypesModule as x,generateConfiguratorGlobalBindingBlock as h,generateImportedStateConstants as k,generatePhxExportsBlock as y,generatePhxGlobalsBlock as C,generateStateConstants as b}from"./templates/index.js";import{splitWebhookMembership as D}from"./webhook-safe-files.js";let S=()=>"";export const globalPhxBindingStrategy={generateApplicationTypesFile:(n,e)=>i("globals.d.ts",B(n,e)),generateDomainBindingBlock:C,generateStateConstants:b,generateConfiguratorBindingBlock:h,configuratorBindingDescription:"Creates the configurator interface and sets phx.frontend — must run before any user code imports.",generateAdminBindingBlock:t,adminBindingDescription:"Creates the admin interface and sets phx.frontend.admin — must run before admin user code imports."};export const modulePhxBindingStrategy={applicationTypeImportSource:"./application-types.js",generateApplicationTypesFile:(n,e)=>i("application-types.ts",x(n,e)),generateDomainBindingBlock:y,generateStateConstants:k,generateConfiguratorBindingBlock:S,configuratorBindingDescription:"Creates and exports the configurator interface for a module-scoped phx binding.",generateAdminBindingBlock:S,adminBindingDescription:"Creates and exports the admin interface for a module-scoped phx binding."};let j=n=>n.map(n=>n.file.name);export const generateDomainRuntimeFiles=(t,B)=>{let{applicationSpec:x,categorizedFiles:h,phxDefinitions:k,includeDefaultEnvs:y}=t,C=o(B.applicationTypeImportSource),b=j(h.expressions),S=j(h.actions),A=j(h.handlers),F=j(h.elements),I=j(h.transformers),T=j(h.invariants),w=j(h.adminInvariants),v=j(h.adminExpressions),E=j(h.adminElements),O=D(h.components),P=j(O.webhookIncluded),R=j(O.frontendOnly),q=D(h.adminComponents),z=j(q.webhookIncluded),G=j(q.frontendOnly);return[i("domain-spec.ts",f(x,{generateBindingBlock:B.generateDomainBindingBlock,generateStateConstants:B.generateStateConstants,registerApplicationTypeImports:C})),i("configurator-globals.ts",g(B.generateConfiguratorBindingBlock,B.configuratorBindingDescription,C)),i("configurator-domain-code.ts",c({expressionFiles:b,actionFiles:S,invariantFiles:T,componentFiles:P})),i("configurator-frontend-code.ts",m({transformerFiles:I,handlerFiles:A,elementFiles:F,componentFiles:R})),i("admin-domain-code.ts",a({adminExpressionFiles:v,adminInvariantFiles:w,adminComponentFiles:z})),i("admin-frontend-code.ts",r({adminElementFiles:E,adminComponentFiles:G})),i("spec-code.ts",d(x,C)),i("spec-messages.ts",u(x)),i("domain.ts",l(x)),i("configurator-config.ts",p(x,{includeDefaultEnvs:y})),B.generateApplicationTypesFile(x,k),i("admin-globals.ts",s(B.generateAdminBindingBlock,B.adminBindingDescription)),i("application-spec.json",n(e(x)),{format:!1})]};
@@ -48,7 +48,8 @@ phoenix-api.yaml
48
48
  *.blend1
49
49
 
50
50
  # Auto-generated files
51
- .phoenix
51
+ **/.phoenix/*
52
+ !**/.phoenix/workspace/
52
53
  **/locales/*/*.ts
53
54
  phoenix.config.ts
54
55
  .prettierignore
@@ -38,7 +38,7 @@ export { generateApplicationSpecHtmlAdminIndex } from './html-admin-index.js';
38
38
  export { generateApplicationSpecHtmlIndex } from './html-index.js';
39
39
  export { generateLinguiRcFile } from './lingui-rc.js';
40
40
  export { generatePhoenixSkillBundle } from './skills/phoenix-skill-bundle.js';
41
- export { type PhoenixSkillOptions, followsCanaryBuilds } from './skills/phoenix-skill.js';
41
+ export { type PhoenixSkillOptions, followsCanaryBuilds } from './skills/processes/index.js';
42
42
  export { generateApplicationSpecPrettierConfig } from './prettier-config.js';
43
43
  export { generateApplicationSpecRobotsTxt } from './robots-txt.js';
44
44
  export { generateApplicationSpecRootTsconfig } from './root-tsconfig.js';
@@ -1 +1 @@
1
- export{stripSdkMarkerContent}from"./common/strip-sdk-marker-content.js";export{generateApplicationSpecAdminConfig}from"./admin-config.js";export{generateApplicationSpecAdminCode}from"./admin-domain-code.js";export{generateApplicationSpecAdminFrontendCode}from"./admin-frontend-code.js";export{generateAdminGlobalBindingBlock,generateApplicationSpecAdminGlobals}from"./admin-globals.js";export{generateApplicationSpecTypesModule}from"./application-types.js";export{generateApplicationSpecAdminFile}from"./admin.js";export{generateApplicationSpecConfiguratorConfig}from"./configurator-config.js";export{generateApplicationSpecConfiguratorCode}from"./configurator-domain-code.js";export{generateApplicationSpecConfiguratorFrontendCode}from"./configurator-frontend-code.js";export{generateApplicationSpecConfiguratorGlobals,generateConfiguratorGlobalBindingBlock}from"./configurator-globals.js";export{generateApplicationSpecConfiguratorFile}from"./configurator.js";export{generateApplicationSpecDomainSpecFile}from"./domain-spec.js";export{generateImportedStateConstants,generatePhxExportsBlock,generatePhxGlobalsBlock,generateStateConstants}from"./domain-spec/index.js";export{generateApplicationSpecDomainFile}from"./domain.js";export{generateApplicationSpecEditorFile}from"./editor.js";export{generateApplicationSpecEmbeddedAdmin}from"./embedded-admin.js";export{generateApplicationSpecEmbeddedConfigurator}from"./embedded-configurator.js";export{generateApplicationSpecEslintConfig}from"./eslint-config.js";export{generateApplicationSpecFavicon}from"./favicon.js";export{generateApplicationSpecFrontendConfig}from"./frontend-config.js";export{generateApplicationSpecGitignore}from"./gitignore.js";export{generateApplicationSpecGlobals}from"./globals.js";export{generateApplicationSpecHtmlAdminIndex}from"./html-admin-index.js";export{generateApplicationSpecHtmlIndex}from"./html-index.js";export{generateLinguiRcFile}from"./lingui-rc.js";export{generatePhoenixSkillBundle}from"./skills/phoenix-skill-bundle.js";export{followsCanaryBuilds}from"./skills/phoenix-skill.js";export{generateApplicationSpecPrettierConfig}from"./prettier-config.js";export{generateApplicationSpecRobotsTxt}from"./robots-txt.js";export{generateApplicationSpecRootTsconfig}from"./root-tsconfig.js";export{generateApplicationSpecStoryDevDeclaration,generateApplicationSpecStoryPhxModule,generateApplicationSpecStoryRawProjectFiles,generateApplicationSpecStoryWrapper}from"./story/index.js";export{generateApplicationSpecCodeFile}from"./spec-code/index.js";export{generateApplicationSpecMessagesFile}from"./spec-messages/index.js";export{generateApplicationSpecTsconfig}from"./tsconfig.js";export{generateApplicationSpecWebhookBuilders}from"./webhook-builders.js";export{generateApplicationSpecWebhookIndex}from"./webhook-index.js";export{generateApplicationSpecWebhooksConfig}from"./webhooks-config.js";
1
+ export{stripSdkMarkerContent}from"./common/strip-sdk-marker-content.js";export{generateApplicationSpecAdminConfig}from"./admin-config.js";export{generateApplicationSpecAdminCode}from"./admin-domain-code.js";export{generateApplicationSpecAdminFrontendCode}from"./admin-frontend-code.js";export{generateAdminGlobalBindingBlock,generateApplicationSpecAdminGlobals}from"./admin-globals.js";export{generateApplicationSpecTypesModule}from"./application-types.js";export{generateApplicationSpecAdminFile}from"./admin.js";export{generateApplicationSpecConfiguratorConfig}from"./configurator-config.js";export{generateApplicationSpecConfiguratorCode}from"./configurator-domain-code.js";export{generateApplicationSpecConfiguratorFrontendCode}from"./configurator-frontend-code.js";export{generateApplicationSpecConfiguratorGlobals,generateConfiguratorGlobalBindingBlock}from"./configurator-globals.js";export{generateApplicationSpecConfiguratorFile}from"./configurator.js";export{generateApplicationSpecDomainSpecFile}from"./domain-spec.js";export{generateImportedStateConstants,generatePhxExportsBlock,generatePhxGlobalsBlock,generateStateConstants}from"./domain-spec/index.js";export{generateApplicationSpecDomainFile}from"./domain.js";export{generateApplicationSpecEditorFile}from"./editor.js";export{generateApplicationSpecEmbeddedAdmin}from"./embedded-admin.js";export{generateApplicationSpecEmbeddedConfigurator}from"./embedded-configurator.js";export{generateApplicationSpecEslintConfig}from"./eslint-config.js";export{generateApplicationSpecFavicon}from"./favicon.js";export{generateApplicationSpecFrontendConfig}from"./frontend-config.js";export{generateApplicationSpecGitignore}from"./gitignore.js";export{generateApplicationSpecGlobals}from"./globals.js";export{generateApplicationSpecHtmlAdminIndex}from"./html-admin-index.js";export{generateApplicationSpecHtmlIndex}from"./html-index.js";export{generateLinguiRcFile}from"./lingui-rc.js";export{generatePhoenixSkillBundle}from"./skills/phoenix-skill-bundle.js";export{followsCanaryBuilds}from"./skills/processes/index.js";export{generateApplicationSpecPrettierConfig}from"./prettier-config.js";export{generateApplicationSpecRobotsTxt}from"./robots-txt.js";export{generateApplicationSpecRootTsconfig}from"./root-tsconfig.js";export{generateApplicationSpecStoryDevDeclaration,generateApplicationSpecStoryPhxModule,generateApplicationSpecStoryRawProjectFiles,generateApplicationSpecStoryWrapper}from"./story/index.js";export{generateApplicationSpecCodeFile}from"./spec-code/index.js";export{generateApplicationSpecMessagesFile}from"./spec-messages/index.js";export{generateApplicationSpecTsconfig}from"./tsconfig.js";export{generateApplicationSpecWebhookBuilders}from"./webhook-builders.js";export{generateApplicationSpecWebhookIndex}from"./webhook-index.js";export{generateApplicationSpecWebhooksConfig}from"./webhooks-config.js";
@@ -1,8 +1,8 @@
1
- import{DEFAULT_FALLBACK_LOCALE as e,LOCALE_FALLBACK_MAP as a}from"#package/i18n";export const generateLinguiRcFile=s=>{let o;return`{
1
+ import{DEFAULT_FALLBACK_LOCALE as e,LOCALE_FALLBACK_MAP as a}from"#package/i18n";export const generateLinguiRcFile=o=>{let s;return`{
2
2
  "sourceLocale": "en",
3
- "locales": [${s.map(e=>`"${e}"`).join(", ")}],
3
+ "locales": [${o.map(e=>`"${e}"`).join(", ")}],
4
4
  "fallbackLocales": {
5
- ${(o=Object.entries(a).map(([e,a])=>{let s=Array.isArray(a)?`[${a.map(e=>`"${e}"`).join(", ")}]`:`"${a}"`;return` "${e}": ${s}`})).push(` "default": "${e}"`),o.join(",\n")}
5
+ ${(s=Object.entries(a).map(([e,a])=>{let o=Array.isArray(a)?`[${a.map(e=>`"${e}"`).join(", ")}]`:`"${a}"`;return` "${e}": ${o}`})).push(` "default": "${e}"`),s.join(",\n")}
6
6
  },
7
7
  "catalogs": [
8
8
  {
@@ -13,7 +13,8 @@ ${(o=Object.entries(a).map(([e,a])=>{let s=Array.isArray(a)?`[${a.map(e=>`"${e}"
13
13
  ],
14
14
  "exclude": [
15
15
  "**/node_modules/**",
16
- "**/dist/**"
16
+ "**/dist/**",
17
+ "**/.phoenix/workspace/**"
17
18
  ]
18
19
  }
19
20
  ],
@@ -0,0 +1,2 @@
1
+ import { type PhoenixGuide } from '../guide.js';
2
+ export declare const generatePhoenixCliCore: () => PhoenixGuide;
@@ -0,0 +1 @@
1
+ import{createPhoenixTopicGuide as e}from"../guide.js";export const generatePhoenixCliCore=()=>e({path:"core/cli.md",title:"CLI",summary:"tooling, identity, project structure and ownership, local development and deployment",sections:["## Tooling and dependencies\n\nCommands use pnpm notation; use the project's package manager identified by its lockfile or `packageManager` in `package.json`, and ask when neither identifies it. Keep the SDK on its intended release channel: stable, PR beta and workspace-linked projects must not be moved to canary. For a canary project, follow the canary section of [Project operations](../processes/operations.md) when it has one.\n\n`phoenix deps` aligns missing or out-of-range peer dependencies in `package.json` but installs nothing. Install with the project's package manager, then `phoenix sync` regenerates project files and guidance. Refresh changed guidance after sync. [CLI and setup documentation](../features/index.md#cli-and-project-identity) owns flags and installation details.\n\n## Identity and authentication\n\nA workspace contains projects, and a project has target environments and deployments. Confirm ambiguous identity before mutations or deploys. `phoenix login <workspace>` authorizes the CLI; local dev and deploy use that identity. Consult [project and authentication documentation](../features/index.md#cli-and-project-identity) for local versus remote setup.\n\n## Project structure\n\n- `spec/` — domain, relations, expressions, invariants, components and application YAML.\n- `src/expressions/`, `actions/`, `invariants/`, `transformers/` — typed implementations of domain behavior and consistency rules.\n- `src/components/`, `elements/`, `handlers/` — runtime components, custom UI and layout elements, event and lifecycle handlers. See the [custom layout contract](../features/custom-layout.md).\n- `src/webhooks/` — server handlers. A project entry is the default export of `index.ts`; without it the SDK supplies anonymous auth only. Enabling custom or Clerk auth without the entry reports `AUTH_WITHOUT_PROJECT_WEBHOOK`; add the required auth handlers or disable unintended auth settings.\n- `src/migrations/` — versioned model migrations; `src/admin/` mirrors the main source structure for Admin.\n- `src/locales/` — authored PO catalogs and generated TS catalogs.\n- `src/_shared/`, `src/_utils/` and other `_`-prefixed folders — helpers and supporting modules. Phoenix skips these folders during auto-import; import their modules explicitly.\n- `public/` — static models, textures, images and fonts; `assets/` — uploadable resources such as templates and email assets.\n- `docs/` — rendered specification PDFs for the client.\n- `.phoenix/` — generated files, with the project-owned exceptions below. The root `tsconfig.json` belongs to the project and extends `.phoenix/tsconfig.json`.\n\nDo not edit generated output or compiled locale TS. `.phoenix/workspace/` holds the specification sources and project records; application-spec sync, build and clean preserve it, and the generated Git ignore rules leave it available for version control. Deploy includes `.phoenix/workspace/` and `docs/` in the private deployment sources, outside application inputs and public assets. `.phoenix/variants/` option files survive rebuilds. Legacy tooling has a separate lifecycle.\n\nSync rewrites and prunes Phoenix's `phoenix` and `phoenix-*` skill folders under `.claude/skills/` and `.agents/skills/`; keep custom skills under another name. Root `AGENTS.md` and client source documents are client-owned. Components use PascalCase TSX, utilities kebab-case TS, expressions entity-name TS, migrations sequential `v*.ts` and specs kebab-case YAML. See `docs/phoenix/project-structure.mdx` through the [capability index](../features/index.md#project-and-customization).\n\n### Source conventions\n\n- Auto-imported expressions, actions, invariants, transformers, components, handlers, elements and webhooks must default-export their folder's phx factory result, as one item or an array. Named exports are ignored.\n- Keep plain helpers in underscore folders and import them explicitly.\n- Use relative imports: dev, build and webhook bundling do not resolve tsconfig `paths` aliases.\n\n## Local development\n\n`phoenix dev` runs the live preview, `sync` regenerates without bundling, `build` produces the production build, and `check` checks project quality. Start and keep the preview with [Project operations](../processes/operations.md); a model change needs a dev restart and a new preview address.\n\nLogs in `.phoenix/phoenix-dev.log` contain spec, build and runtime errors and watcher events; check them after changes. [Inspection tools](../features/inspection.md) cover assets, state, data, scene and screenshots. Runtime inspection needs dev running and the preview open in a browser; a screenshot of the canvas does not verify the surrounding interface.\n\n## Deployment\n\n`phoenix deploy` sends project sources for a server build and waits for the target environment to go live. Use [Project operations](../processes/operations.md) for preparation, transcript consent, Studio progress and completion. A successful local preview does not establish deployed model compatibility; use [Model migration](../processes/model-migration.md) when needed. [Deployment documentation](../features/index.md#deployment) covers status and environment details.\n\n## Interactive and support tools\n\n[Variants](../features/variants.md) compares frontend alternatives over the live preview and applies the choice. [Feedback](../processes/feedback/index.md) submits an approved issue or evaluation. The [workflow](workflow.md) owns when either is useful and how much client interaction fits the task."]});
@@ -0,0 +1,3 @@
1
+ export * from './workflow.js';
2
+ export * from './sdk.js';
3
+ export * from './cli.js';
@@ -0,0 +1 @@
1
+ export*from"./workflow.js";export*from"./sdk.js";export*from"./cli.js";
@@ -0,0 +1,2 @@
1
+ import { type PhoenixGuide } from '../guide.js';
2
+ export declare const generatePhoenixSdkCore: () => PhoenixGuide;
@@ -0,0 +1,150 @@
1
+ import{createPhoenixTopicGuide as e}from"../guide.js";let t=`## Project and customization
2
+
3
+ Phoenix turns YAML in \`spec/\` into a typed domain, configured components and a running configurator.
4
+
5
+ - Define domain and component behavior in YAML first.
6
+ - Compose the UI through a custom project layout, using Phoenix elements, slots and hooks.
7
+ - For other custom implementations, verify an SDK capability gap and explain the proposed approach. Missing documentation does not establish a missing capability.
8
+
9
+ ### Entity-component-system model
10
+
11
+ - **Entities** store product state, such as a cabinet and its width.
12
+ - **Components** attach configurable data or behavior definitions, such as a scene object or width control, to entities or aliases.
13
+ - **Systems** consume those components to apply domain or UI behavior, such as rendering the scene.
14
+
15
+ Stable references drive change detection. Use memoEval to reuse result objects and arrays while inputs are unchanged; return new references for changed outputs. Mutating results in place can hide changes; recreating equivalent results causes unnecessary updates.
16
+
17
+ [Capability index](../features/index.md#project-and-customization) \xb7 [Project structure](cli.md#project-structure)
18
+
19
+ ## Model
20
+
21
+ | Concept | Responsibility | Example |
22
+ | --- | --- | --- |
23
+ | Entity / attribute | Saved product state and choices | Cabinet width, finish |
24
+ | Alias | Shared view over entity types | Furniture covering Chair and Table |
25
+ | Relation | Connections and ownership | Cabinet containing shelves |
26
+ | Expression | Pure derived value, \`$\` prefix | \`$price\`, \`$area\` |
27
+ | Action | Prepared named domain operation | Add a shelf |
28
+ | Invariant | Validation and violations | Unsupported width/finish combination |
29
+ | Transformer | Automatic consistency repair | Adjust dependent state after a change |
30
+
31
+ - Keep a deployed model unchanged under its version. When it changes, retain the old version and migrate saved configurations.
32
+ - Bindings connect component state to the domain: \`$read\` reads, \`$write\` writes, and \`$bind\` does both.
33
+ - Use filters for the relevant navigation, view or selection context.
34
+
35
+ [Model documentation](../features/index.md#model) \xb7 [Model migration](../processes/model-migration.md)
36
+
37
+ ## Frontend runtime
38
+
39
+ Build the interface from elements and handlers, connected through \`phx.frontend\`.
40
+
41
+ | Surface | Use for |
42
+ | --- | --- |
43
+ | Elements | React UI, custom project layout, loading/error pages, assistant forms |
44
+ | Handlers | Event/lifecycle behavior and registered finalization actions |
45
+ | Configurator interface | Typed \`phx.frontend\` hooks for state, navigation, selection, messages, access, finalization |
46
+ | Layout slots | Reusable Phoenix canvas, panels, actions and services within your layout |
47
+ | Components / transformers | Domain-bound runtime behavior and consistency, separate from UI composition |
48
+
49
+ Prefer a custom \`ConfiguratorLayout\` composed from Phoenix controls, slots and hooks.
50
+
51
+ - The layout owns canvas and safe-area wiring, messages, read mode, fullscreen and finalization.
52
+ - After defining the React component \`ConfiguratorLayout\`, register it with the supported factory:
53
+
54
+ \`\`\`tsx
55
+ export default phx.frontend.createCustomPhoenixLayoutElement('ConfiguratorLayout', ConfiguratorLayout)
56
+ \`\`\`
57
+
58
+ [Custom layout contract and complete examples](../features/custom-layout.md) \xb7 [Configurator interface and frontend docs](../features/index.md#frontend-runtime)
59
+
60
+ ## Webhooks and finalization
61
+
62
+ Webhooks run server-side integrations. Keep credentials there and browser-only imports out. Frontend components and handlers stay excluded unless explicitly included or automatically required.
63
+
64
+ ### Hooks and stages
65
+
66
+ | Hook / stage | Purpose / registration |
67
+ | --- | --- |
68
+ | Authentication | \`withAuthHook\`; code, refresh, anonymous flows and Clerk code/session/refresh handlers |
69
+ | Backend data | \`withFetchBackendData\`; server-fetched data for the configuration |
70
+ | Configurator finalization | \`withConfiguratorFinalize\`; validate/prepare the agreed completion journey |
71
+ | Prefetch | Finalization's \`withPrefetch\`; data preparation before tasks |
72
+ | Callback | Finalization's \`withCallback\`; consume task resources and return the final result |
73
+ | Admin finalization | Generated Admin publishing handler; map and publish content |
74
+ | Assistant setup | Generated from assistant settings; optional \`createAssistantSetupHandler\` narrows session capabilities |
75
+
76
+ ### Tasks
77
+
78
+ | Task types | Purpose |
79
+ | --- | --- |
80
+ | \`GenerateConfigurationLink\` | Shareable configuration link |
81
+ | \`GenerateImages\` | Server-rendered images |
82
+ | \`GenerateCsv\` | CSV export |
83
+ | \`GeneratePdf\`, \`GenerateStaticPdf\` | Template-based or prepared HTML/React PDF |
84
+ | \`SendEmail\`, \`SendStaticEmail\` | Template-based or prepared HTML/React email |
85
+ | \`SendHttpRequest\` | External HTTP integration |
86
+ | \`WooCommerceAddToCart\` | WooCommerce cart integration |
87
+ | \`EditGoogleSpreadsheet\` | Spreadsheet updates |
88
+ | \`PublishRevision\` | Admin content revision |
89
+ | \`PublishRevisionChunks\`, \`PublishRevisionChunksStaged\` | Chunked publication, including staged uploads |
90
+ | \`CallLambdaBack\` | Callback with generated resources |
91
+
92
+ - Use \`phx.webhooks\` builders and task factories. Named resources connect the tasks that produce them to their consumers.
93
+ - Execution proceeds from backend data and prefetch through ordered tasks to the callback/result. Resource dependencies must follow the platform task order.
94
+ - For a quote, generate a configuration link and render, include them in a PDF, then send the email and return the callback result. Test without real messages or orders until authorized.
95
+
96
+ [Webhooks](../features/webhooks.md) \xb7 [Hooks/tasks, complete examples and order](../features/index.md#webhooks-and-finalization) \xb7 [Finalization process](../processes/finalization.md)
97
+
98
+ ## Data sources
99
+
100
+ Choose data by ownership and lifetime.
101
+
102
+ | Source | Ownership / lifetime |
103
+ | --- | --- |
104
+ | Entity state | Saved configuration choices |
105
+ | Published data | Released catalogue/content revision |
106
+ | Frontend data | Values from the embedding frontend |
107
+ | Session data | Authentication/session context |
108
+ | Backend data | Values fetched through the webhook |
109
+
110
+
111
+ ### Example: a memoized expression
112
+
113
+ Assume YAML declares \`Cabinet.finish\`, its \`$summary\` object, and required published/frontend/session fields below. The result has availability, currency, customer group and nullable delivery days.
114
+
115
+ \`\`\`ts
116
+ // src/expressions/cabinet.ts
117
+ import { memoEval } from '@salsita-ai/sdk/domain'
118
+
119
+ export default phx.domain.implementCustomExpressions({
120
+ Cabinet: {
121
+ $summary: memoEval(
122
+ (self, _state, ctx) => [
123
+ self.finish,
124
+ ctx.publishedData.finishes,
125
+ ctx.frontendData.currency,
126
+ ctx.sessionData.customerGroup,
127
+ ctx.backendData?.['deliveryDays'],
128
+ ],
129
+ (finish, finishes, currency, customerGroup, deliveryDays) => ({
130
+ available: finishes.includes(finish),
131
+ currency,
132
+ customerGroup,
133
+ deliveryDays: typeof deliveryDays === 'number' ? deliveryDays : null,
134
+ })
135
+ ),
136
+ },
137
+ })
138
+ \`\`\`
139
+
140
+ Use string \`finish\`/\`currency\`/\`customerGroup\` fields and a string-array \`finishes\`. The selector lists every dependency; memoEval reuses the same result object while they stay unchanged. Backend data is optional and untyped here, so narrow its value before using it.
141
+
142
+ [Data sources and connected data](../features/index.md#data-sources)
143
+
144
+ ## Admin and Studio
145
+
146
+ - Use **Project Admin** to manage domain content and publish it for configurators.
147
+ - Use **Studio** to manage platform workspaces, projects, environments and deployments.
148
+
149
+ [Admin and Studio documentation](../features/index.md#admin-and-studio)
150
+ `;export const generatePhoenixSdkCore=()=>e({path:"core/sdk.md",title:"SDK",summary:"the SDK mental model, capabilities, invariants and supported customization",sections:[t]});
@@ -0,0 +1,2 @@
1
+ import { type PhoenixGuide } from '../guide.js';
2
+ export declare const generatePhoenixWorkflowCore: () => PhoenixGuide;
@@ -0,0 +1,40 @@
1
+ import{createPhoenixTopicGuide as e}from"../guide.js";let t=`The client creates the configurator; its users may be buyers, salespeople or designers. The aim is a useful, polished product that fits the client's purpose, preferences and agreed effort.
2
+
3
+ These practices usually lead there; adapt them to the client, the product and the task rather than following a script.`,n=`## Where to start
4
+
5
+ - **A new project** — nothing in \`.phoenix/workspace/specification/\` and still the starter spec, or a first draft the project record shows in progress — usually starts with a [First draft](../processes/first-draft/index.md): a convincing first version, quickly.
6
+ - **Normal mode** — everything after that, and every existing project — builds on the specification and the plan. A small fix goes straight to the affected behavior.
7
+
8
+ The client can always redirect; follow their lead without nagging or repeated approval requests.`,a=`## Working with the client
9
+
10
+ Be a warm, direct expert who listens, recommends an approach and takes responsibility for SDK and tooling choices. Look at supplied materials before asking, and keep the conversation about the product rather than setup questionnaires or jargon. When uncertainty affects the next result, such as a blocking ambiguity, a business decision needed now or a departure from accepted design, ask with a recommendation; otherwise state reversible defaults and keep going. Keep facts, explicit preferences and provisional assumptions distinct.
11
+
12
+ Talk about the client's product: what they can try, see or decide. Modes, processes, stages, records and guide names are internal and never come up with the client. Say "next, I'll add the desk range", not "switching to normal mode and running Planning".`,r=`## Preferences
13
+
14
+ Preferences shape how much effort and autonomy fit the work; note them in the project record as they emerge:
15
+
16
+ - **Cost** — token and money sensitivity: subagent reviews, parallel agents, heavy rendering.
17
+ - **Time** — fast feedback in small steps, or thorough and slower increments.
18
+ - **Autonomy** — decide and report, or check in before choices; how large an autonomous batch may be.
19
+ - **Quality bar** — demo grade or ready for real users; it sets review depth.
20
+ - **Communication** — detail, technical depth and update frequency.
21
+
22
+ A first draft runs no reviews or parallel agents, so it needs none of these answers. Ask once, briefly and with a recommendation, at its handoff or when work on an existing project starts without them. With a cost- or time-sensitive client, offer an expensive action with what it would add and wait for a yes rather than starting it.`,i=`## Keeping the client oriented
23
+
24
+ Clients do best when they know what is happening, what comes next and whether anything is blocked. Share the plan before longer work, update briefly during long builds, and when stuck, name the dependency and what can continue. Records do not replace these updates.
25
+
26
+ A good handoff separates what is done, what is unverified and what remains. After the first draft, end every handoff with a recommended next step and one or two alternatives, often a [Phoenix capability](../features/index.md) the client may not know about. Note declined suggestions so they do not come back.`,s=`## Building in increments
27
+
28
+ After the first draft, [Planning](../processes/planning.md) establishes the full specification and an ordered plan. Work then goes best in small, useful increments: choose an outcome with observable checks; build it within the [branding and UX guidelines](../processes/specification/index.md), where they exist, using the [SDK guidance](sdk.md); exercise the changed interaction and what it affects, such as control targets, selection context and global versus per-part behavior; review it as the [review strategy](#review-strategy) suggests; then show the client what to try and fold their feedback into the specification and plan.
29
+
30
+ Habits that help: wait for feedback before expanding an increment unless the client asked for a larger batch; settle core interactions before multiplying options; keep agreed scope visible until it is built or deferred; preserve selections and accepted behavior; and when rules change, keep model, scene, controls, dimensions, pricing and checks consistent.`,o=`## Visual choices
31
+
32
+ When taste, branding or interaction has several reasonable answers that the client's materials do not settle, alternatives usually help: explain the tradeoffs and recommend one. Accepted choices stay settled, facts are not the client's to pick, and routine reversible details need no approval. [Variants](../features/variants.md) shows alternatives in the live preview.`,c=`## Review strategy
33
+
34
+ The first draft skips review processes; a quick look at the running preview before showing each result keeps broken work away from the client.
35
+
36
+ Later, review changed work before committing or handing it over with the [review processes](../processes/review/index.md), scaled to impact, uncertainty, the quality bar and the cost preference. A self-review is usually enough; an independent subagent adds a fresh view of visual fidelity, complex rules or broad interactions when the preferences allow it. Note whether review was independent and what remains unverified; a passing build does not prove product quality.`,d=`## Feedback and completion
37
+
38
+ Client feedback shapes the direction and the records; confirm material departures. Phoenix feedback is a separate, external report: [Feedback](../processes/feedback/index.md) covers SDK problems and the end-of-run evaluation, and only approved content is sent.
39
+
40
+ Some lines stay firm: publishing, real orders, real messages and connecting live systems need the client's authorization against the concrete result, and deploys go through [Project operations](../processes/operations.md), including its transcript consent.`;export const generatePhoenixWorkflowCore=()=>e({path:"core/workflow.md",title:"Workflow",summary:"where to start, working with the client, preferences, increments, records and review strategy",sections:[t,n,a,r,i,s,o,"## Records\n\n- **Specification** — client-facing documents: branding, UX guidelines, product definition and catalogs, with sources in `.phoenix/workspace/specification/` and rendered PDFs in `docs/`. [Specification](../processes/specification/index.md) describes them; later work follows them, and changing an accepted rule is the client's call.\n- **Project record** — `.phoenix/workspace/project.md` is the current snapshot: preferences, approach, decisions with rationale, declined suggestions, progress and open questions, rewritten as they change. `.phoenix/workspace/changelog/` keeps the history: append a dated entry for each meaningful change, decision, verification or piece of client feedback, and continue in a new numbered file when the current one gets long. Normal mode adds `.phoenix/workspace/plan.md`.\n\nReuse records when resuming; they are never a client task or an approval gate. Leave out secrets, unrelated personal information and raw transcripts; [project structure](cli.md#project-structure) describes how records are kept and deployed.",c,d]});
@@ -0,0 +1,2 @@
1
+ import { type PhoenixGuide } from '../guide.js';
2
+ export declare const generatePhoenixCustomLayoutFeature: () => PhoenixGuide;
@@ -0,0 +1 @@
1
+ import{createPhoenixFeatureGuide as o}from"../guide.js";import{sdkGuidanceSections as e}from"../sdk-content.js";export const generatePhoenixCustomLayoutFeature=()=>o({path:"features/custom-layout.md",title:"Custom project layout",summary:"Supported UI composition, slots, hooks, preset screen, app loader and page responsibilities; read when creating or changing a project layout or custom element.",whenToUse:"Read when composing a project layout or replacing a supported page element, such as the preset screen or the app loader.\n\nCompose project UI through a default-exported `phx.frontend.createCustomPhoenixLayoutElement()` in `src/elements/`. Reuse Phoenix layout slots, controls and typed hooks; YAML remains the owner of domain and component behavior.",capabilities:e.customLayout,example:"For a relocated sidebar with the usual configured controls, use the complete layout in `docs/layouts/sidebar/in-a-custom-layout.mdx`. For a custom panel and responsive shell, use `docs/layouts/custom-layout.mdx`; both show the required canvas and safe-area wiring. The layout gallery in `docs/layouts/gallery/` shows complete, distinct layouts for real products.",documentation:"Canonical examples and APIs: `docs/layouts/custom-layout.mdx`, `docs/layouts/sidebar/in-a-custom-layout.mdx`, `docs/layouts/presets/custom.mdx`, `docs/phoenix/configurator-interface.mdx` and `docs/phoenix/layout-slots.mdx`, read with `pnpm phoenix docs -r <path>`."});
@@ -0,0 +1,3 @@
1
+ import { type PhoenixGuide } from '../guide.js';
2
+ /** The capability index followed by the feature guides it lists. */
3
+ export declare const generatePhoenixFeatureGuides: () => readonly PhoenixGuide[];
@@ -0,0 +1 @@
1
+ import{createPhoenixIndexGuide as e}from"../guide.js";import{generatePhoenixCustomLayoutFeature as n}from"./custom-layout.js";import{generatePhoenixInspectionFeature as o}from"./inspection.js";import{generatePhoenixVariantsFeature as i}from"./variants.js";import{generatePhoenixWebhooksFeature as t}from"./webhooks.js";export const generatePhoenixFeatureGuides=()=>{let s=[n(),t(),o(),i()];return[e({path:"features/index.md",title:"Features",summary:"What Phoenix capabilities support, their constraints and the canonical SDK documentation.",intro:"Use only the topic the task needs. Paths below are documents shipped with the installed SDK: read one with `pnpm phoenix docs -r <path>`; `pnpm phoenix docs -s '<topic>'` finds more examples. These links do not make their destinations required reading.",guides:s,notes:["## Topic map\n\nThese topics point directly to canonical SDK docs when no extra agent-facing explanation is needed.\n\n### Project and customization\n\n- `docs/phoenix/getting-started.mdx`, `docs/phoenix/quickstart.mdx` — setup and a complete worked configurator.\n- `docs/phoenix/best-practices.mdx` — supported composition and extension patterns.\n- [Project structure](../core/cli.md#project-structure) — authored folders and generated boundaries; canonical reference: `docs/phoenix/project-structure.mdx`.\n\n### Model\n\n- `docs/phoenix/domain-model.mdx` — entities, attributes, relations, expressions, actions and invariants.\n- `docs/phoenix/expression-context.mdx` — computed values and data available to expressions.\n- [Model migration](../processes/model-migration.md) — preserve a deployed model and migrate saved configurations; `docs/phoenix/migrations.mdx` has the full examples.\n\n### Frontend runtime\n\n- `docs/phoenix/components.mdx` — configured versus custom components and bindings.\n- `docs/phoenix/state-management.mdx`, `docs/phoenix/application-states.mdx` — state flow, transformers and application context.\n- `docs/phoenix/configurator-interface.mdx`, `docs/phoenix/layout-slots.mdx` — custom elements, layouts and supported hooks.\n- `docs/phoenix/theming.mdx`, `docs/ux-guidelines/overview.mdx` — branding and interaction principles.\n- `docs/layouts/gallery/` — complete custom layouts for real products.\n\n### Webhooks and finalization\n\n- `docs/phoenix/webhooks.mdx`, `docs/phoenix/webhook-membership.mdx` — execution and registration.\n- `docs/phoenix/finalization.mdx`, `docs/phoenix/blender-rendering.mdx` — finalization tasks, PDF, email and CSV, and generated images.\n- `docs/other-features/client-side-rendering/declarative.mdx` — configurator-rendered images in PDFs and emails.\n- [Finalization](../processes/finalization.md) — agree and implement the completion journey.\n\n### Data sources\n\n- `docs/phoenix/data-sources.mdx` — published, frontend, session and backend data and their lifetimes.\n- `docs/phoenix/connected-data-sources.mdx` — connected sheets and external data.\n- [Data inspection](inspection.md#inspect-data) — examine the data the preview actually received.\n\n### Admin and Studio\n\n- `docs/phoenix/admin.mdx`, `docs/phoenix/publishing.mdx` — project content administration and published revisions.\n- `docs/phoenix/sdk-builder-workflow.mdx` — Studio workspaces, projects, environments and builds.\n\n### CLI and project identity\n\n- `docs/phoenix/phoenix-cli.mdx` — login, project selection, dependencies, sync, dev, build and check, flags and troubleshooting.\n- `docs/phoenix/sessions-and-access.mdx`, `docs/phoenix/clerk-sign-in.mdx` — configurator access and project authentication.\n- [Project operations](../processes/operations.md) — preview, SDK updates when applicable, and deployment.\n\n### Deployment\n\n- `docs/phoenix/deployments.mdx`, `docs/phoenix/sdk-builder-workflow.mdx` — environments and server builds.\n- [Project operations](../processes/operations.md) — transcript handling and following the build.\n- [Feedback](../processes/feedback/index.md) — approved platform reports and run evaluations."]}),...s]};
@@ -0,0 +1,2 @@
1
+ import { type PhoenixGuide } from '../guide.js';
2
+ export declare const generatePhoenixInspectionFeature: () => PhoenixGuide;
@@ -0,0 +1 @@
1
+ import{createPhoenixFeatureGuide as e}from"../guide.js";import{sdkGuidanceSections as n}from"../sdk-content.js";export const generatePhoenixInspectionFeature=()=>e({path:"features/inspection.md",title:"Inspection",summary:"Asset and live runtime inspection commands; read when checking models, scene, state, data or rendered output.",whenToUse:"Read when checking imported assets or investigating the running configurator. Runtime inspection needs dev running and the preview open in a browser.",capabilities:[n.assetInspection,n.screenshotCli,n.inspectState,n.inspectData,n.inspectScene,n.playwrightMcpSetup].join("\n\n"),example:"After changing a material, run `pnpm phoenix inspect:scene` to inspect the assigned material, then `pnpm phoenix screenshot -o ./render.png` to compare the rendered result. A canvas screenshot does not cover the surrounding interface.",documentation:"Read `docs/phoenix/phoenix-cli.mdx` with `pnpm phoenix docs -r docs/phoenix/phoenix-cli.mdx` for command flags and output contracts. Use the [review index](../processes/review/index.md) when deciding which evidence the change needs."});
@@ -0,0 +1,2 @@
1
+ import { type PhoenixGuide } from '../guide.js';
2
+ export declare const generatePhoenixVariantsFeature: () => PhoenixGuide;
@@ -0,0 +1 @@
1
+ import{createPhoenixFeatureGuide as e}from"../guide.js";export const generatePhoenixVariantsFeature=()=>e({path:"features/variants.md",title:"Variants",summary:"Supported alternative types, preview constraints and usage; read when preparing a comparison in the live preview and applying the choice.",whenToUse:"Read when preparing a visual or interaction comparison in the running preview. The [workflow](../core/workflow.md#visual-choices) owns whether alternatives would help; this guide covers the supported options and how to collect and apply a choice.",capabilities:'### Option types\n\n- Use `<id>.variant.js` to edit real frontend project files on top of one captured baseline. Use `<id>.html` for a standalone branding, layout or flow proposal rendered in an iframe.\n- Use the same mechanism for controls, layout, brand, lights, visuals, materials, positions, components, elements and transformers.\n- Keep the model, schemas, data, assistant server settings, webhooks and code shared with them, dependencies, environment and uploaded assets unchanged. The preview rejects changes needing server preparation.\n- Options reuse the already loaded configurator, one at a time. Variant transactions bypass the file-watcher debounce; hot reload still takes time to apply, without a special wait for rendering to settle.\n\n### Design the comparison\n\n- One decision per set, one set open at a time. Vary the decision being compared and keep unrelated details identical.\n- Make the difference visible in the UI or the scene; similar materials in flat light may not distinguish the alternatives.\n- Choose the number of options that clarifies the decision; no fixed count is required.\n- Name options in the client\'s product language and explain what changes in one line.\n\n### Write the options\n\n- One folder per set: `.phoenix/variants/<name>/`, one script or HTML file per option. HTML and scripts can share a set, but option ids must be unique. Keep HTML self-contained. This folder survives rebuilds and is never committed.\n- For HTML, set `<title>` and `<meta name="description" content="...">`; choosing a page changes no source files.\n- For scripts, export `title` and `description` as plain string literals, and a default function `({ read, write, remove }) => {}`; it may be async.\n- `read(path)` returns the original baseline file contents. `write(path, contents)` replaces or creates a file; `remove(path)` deletes it. Paths are relative to the project root.\n- Scripts run once per selection in the browser and collect edits. Phoenix validates and writes the whole batch locally and owns backups and undo. Do not perform your own filesystem or network operations.\n- Supported edits are YAML in `spec/` outside `spec/admin/`, and TypeScript under `src/components`, `transformers`, `handlers`, `elements` and `_`-prefixed shared folders. Expressions, actions and invariants run on the server too, so they cannot be edited.\n- Every option starts from the same baseline. Original restores it; switching restores the files only the previous option changed.\n- Keep the working tree untouched while comparing. Phoenix never overwrites an edit made outside the preview: it refuses to switch options over one, and when the comparison ends it leaves that file as it is and warns in the dev log.\n\n### Run it and wait\n\n```bash\npnpm phoenix variants .phoenix/variants/<name> --title \'<the question>\' --description \'<what differs between the options>\'\n```\n\n- `pnpm phoenix dev` must be running with the preview open in a browser. Tell the client the options are open there.\n- Put the title and the description in single quotes, so the shell passes backticks, `$` and double quotes through unchanged. In bash or zsh, write a single quote inside them as `\'\\\'\'`; in PowerShell, double it instead.\n- The command waits for the answer, 540 seconds unless `--timeout <seconds>` says otherwise, so give it a command timeout longer than that. It prints JSON:\n - `"status": "chosen"` with `choice` (the option id, or `null` for Original) and `label`;\n - `"status": "waiting"` when the wait ran out. The options stay open: run the same command again, or end the turn and run it when the client is back. An answer given in between is returned by the next run;\n - `"status": "closed"` when the preview was closed without an answer.\n- `pnpm phoenix variants --close` closes the open set when the comparison is abandoned.\n- `--port <port>` names the editor WebSocket port when `phoenix dev` does not use 3020.\n- The live configurator keeps its current configuration. Interactions still change it; restoring source files does not undo configuration changes.\n\n### Use the answer\n\n- **Chosen** — a script\'s exact file edits remain in the project. For an HTML choice, implement the selected proposal using the SDK and compare the result with the page. With `choice: null`, the client chose Original and the baseline remains. Verify the result with `pnpm phoenix inspect:scene` and `pnpm phoenix screenshot`, and tell the client anything that came out differently.\n- Record the decision and its reason in the [project record](../core/workflow.md#records).\n- The client confirms Original or another option; Escape and the backdrop do not close the comparison. `--close` restores the baseline source files without an answer. The folder is removed once the client answers; pass `--keep` while its files are still needed to build from, and remove the folder afterwards.',example:"Compare warm and neutral lighting with two variant scripts while keeping the product and camera unchanged. Use HTML proposals instead when comparing standalone pages, such as branding sheets, then implement the selected proposal in the project. Original remains available as the captured baseline.",documentation:"Read `docs/phoenix/phoenix-cli.mdx` with `pnpm phoenix docs -r docs/phoenix/phoenix-cli.mdx` for the CLI contract. Use the [review index](../processes/review/index.md) to select evidence for the applied result."});
@@ -0,0 +1,2 @@
1
+ import { type PhoenixGuide } from '../guide.js';
2
+ export declare const generatePhoenixWebhooksFeature: () => PhoenixGuide;
@@ -0,0 +1 @@
1
+ import{createPhoenixFeatureGuide as e}from"../guide.js";import{sdkGuidanceSections as o}from"../sdk-content.js";export const generatePhoenixWebhooksFeature=()=>e({path:"features/webhooks.md",title:"Webhooks",summary:"Frontend and server inclusion and import boundaries; read when adding handlers, assistant setup or shared webhook code.",whenToUse:"Read when deciding which handlers and shared modules belong in the webhook, including authentication, publication and assistant setup.",capabilities:o.webhookMembership,example:"When a pricing helper is shared by the browser and a quote webhook, keep its module server-safe. A handler that also imports a React layout cannot be included; split the shared calculation from the browser presentation.",documentation:"Read `docs/phoenix/webhook-membership.mdx` for inclusion rules and `docs/phoenix/webhooks.mdx` for worked handler and task examples, using `pnpm phoenix docs -r <path>`. The [SDK core](../core/sdk.md#webhooks-and-finalization) maps the available hooks and tasks."});
@@ -0,0 +1,54 @@
1
+ /**
2
+ * A Markdown document of the Phoenix skill, shipped beside its `SKILL.md`.
3
+ *
4
+ * Every document opens with its title as the only H1, and its parent index lists it by `title` and `summary`, so an
5
+ * agent decides from the index alone whether to read it. The factories below render the shared document shapes, so
6
+ * a guide follows the structure the skills architecture prescribes by construction rather than by review.
7
+ */
8
+ export interface PhoenixGuide {
9
+ /** Path inside the skill folder, `/`-separated, such as `processes/review/code.md`. */
10
+ readonly path: string;
11
+ /** The document's name: its H1 and its entry in the parent index. */
12
+ readonly title: string;
13
+ /** What the document covers and when to read it, as one cell of the parent index. */
14
+ readonly summary: string;
15
+ readonly content: string;
16
+ }
17
+ interface PhoenixGuideHeader {
18
+ readonly path: string;
19
+ readonly title: string;
20
+ readonly summary: string;
21
+ }
22
+ /** A document organized by topic, such as a required core guide. */
23
+ export interface PhoenixTopicGuideProps extends PhoenixGuideHeader {
24
+ /** Markdown sections after the H1, each usually opening with an H2. */
25
+ readonly sections: readonly string[];
26
+ }
27
+ /** A reusable procedure: its trigger, its steps, its completion boundary and one focused example. */
28
+ export interface PhoenixProcessGuideProps extends PhoenixGuideHeader {
29
+ readonly whenToUse: string;
30
+ /** The procedure itself; topic subsections use H3. */
31
+ readonly steps: string;
32
+ readonly doneWhen: string;
33
+ readonly example: string;
34
+ }
35
+ /** What a Phoenix capability supports, when it fits, one focused example and its canonical documentation. */
36
+ export interface PhoenixFeatureGuideProps extends PhoenixGuideHeader {
37
+ readonly whenToUse: string;
38
+ /** Supported usage and limits; topic subsections use H3. */
39
+ readonly capabilities: string;
40
+ readonly example: string;
41
+ readonly documentation: string;
42
+ }
43
+ /** A routing document: a short introduction and a table of its children with their summaries. */
44
+ export interface PhoenixIndexGuideProps extends PhoenixGuideHeader {
45
+ readonly intro: string;
46
+ readonly guides: readonly PhoenixGuide[];
47
+ /** Markdown after the table, such as rules shared by every child or a topic map; empty when there is none. */
48
+ readonly notes: readonly string[];
49
+ }
50
+ export declare const createPhoenixTopicGuide: (props: PhoenixTopicGuideProps) => PhoenixGuide;
51
+ export declare const createPhoenixProcessGuide: (props: PhoenixProcessGuideProps) => PhoenixGuide;
52
+ export declare const createPhoenixFeatureGuide: (props: PhoenixFeatureGuideProps) => PhoenixGuide;
53
+ export declare const createPhoenixIndexGuide: (props: PhoenixIndexGuideProps) => PhoenixGuide;
54
+ export {};
@@ -0,0 +1,18 @@
1
+ let t=(t,e)=>`${[`# ${t}`,...e.map(t=>t.trim())].join("\n\n")}
2
+ `;export const createPhoenixTopicGuide=e=>{let{path:n,title:r,summary:i,sections:o}=e;return{path:n,title:r,summary:i,content:t(r,o)}};export const createPhoenixProcessGuide=e=>{let{path:n,title:r,summary:i,whenToUse:o,steps:a,doneWhen:c,example:s}=e;return{path:n,title:r,summary:i,content:t(r,[`## When to use
3
+
4
+ ${o.trim()}`,`## Steps
5
+
6
+ ${a.trim()}`,`## Done when
7
+
8
+ ${c.trim()}`,`## Example
9
+
10
+ ${s.trim()}`])}};export const createPhoenixFeatureGuide=e=>{let{path:n,title:r,summary:i,whenToUse:o,capabilities:a,example:c,documentation:s}=e;return{path:n,title:r,summary:i,content:t(r,[`## When to use
11
+
12
+ ${o.trim()}`,`## Capabilities and constraints
13
+
14
+ ${a.trim()}`,`## Example
15
+
16
+ ${c.trim()}`,`## Documentation
17
+
18
+ ${s.trim()}`])}};export const createPhoenixIndexGuide=e=>{let{path:n,title:r,summary:i,intro:o,guides:a,notes:c}=e,s=a.map(t=>`| [${t.title}](${((t,e)=>{let n=t.split("/").slice(0,-1),r=e.split("/"),i=0;for(;i<n.length&&i<r.length-1&&n[i]===r[i];)i+=1;return`${"../".repeat(n.length-i)}${r.slice(i).join("/")}`})(n,t.path)}) | ${t.summary} |`);return{path:n,title:r,summary:i,content:t(r,[o,["| Document | What it covers and when to read it |","| --- | --- |",...s].join("\n"),...c])}};
@@ -1,10 +1,10 @@
1
1
  import { type AgentSkillReference } from './agent-skill.js';
2
- import { type PhoenixSkillOptions } from './phoenix-skill.js';
2
+ import { type PhoenixSkillOptions } from './processes/index.js';
3
3
  /** The discoverable entry point and the documents it ships beside it. */
4
4
  interface PhoenixSkillBundle {
5
5
  readonly content: string;
6
6
  readonly references: readonly AgentSkillReference[];
7
7
  }
8
- /** Keeps the existing generators as content owners while changing only discovery and relative routing. */
8
+ /** Composes the required core, the processes and the feature guides into one discoverable Phoenix skill. */
9
9
  export declare const generatePhoenixSkillBundle: (options: PhoenixSkillOptions) => PhoenixSkillBundle;
10
10
  export {};
@@ -1,7 +1,14 @@
1
- import{renderAgentSkill as e}from"./agent-skill.js";import{generatePhoenixCliSkill as t}from"./phoenix-cli-skill.js";import{generatePhoenixCreateConfiguratorSkill as n,generatePhoenixCreateConfiguratorSkillReferences as r}from"./phoenix-create-configurator-skill.js";import{generatePhoenixFeedbackSkill as i}from"./phoenix-feedback-skill.js";import{generatePhoenixReviewSkill as o}from"./phoenix-review-skill.js";import{generatePhoenixSkill as a}from"./phoenix-skill.js";import{generatePhoenixVariantsSkill as s}from"./phoenix-variants-skill.js";let l=(e,t,n)=>n.reduce((e,n)=>{let r="../".repeat(t.split("/").length-2),i=`[${n.title}](${r}${n.path.slice(11)})`;return e.replaceAll(`\`${n.name}\` skill`,i).replaceAll(`${n.name} skill`,i)},e),c=e=>{let t="\n---\n\n",n=e.content.indexOf(t),r=e.content.slice(0,n).split("\n").find(e=>e.startsWith("description: "));if(-1===n||void 0===r)throw Error(`Cannot emit the ${e.name} guide: its skill frontmatter is missing. Render it with renderAgentSkill.`);return{description:r.slice(13),body:e.content.slice(n+t.length)}};export const generatePhoenixSkillBundle=h=>{let p=[{name:"phoenix",title:"Project guidance",path:"references/project.md",content:a(h),references:[]},{name:"phoenix-create-configurator",title:"Configurator workflow",path:"references/create-configurator/guide.md",content:n(),references:r()},{name:"phoenix-cli",title:"CLI guide",path:"references/cli.md",content:t(),references:[]},{name:"phoenix-review",title:"Code review guide",path:"references/review.md",content:o(),references:[]},{name:"phoenix-variants",title:"Variants guide",path:"references/variants.md",content:s(),references:[]},{name:"phoenix-feedback",title:"Feedback guide",path:"references/feedback.md",content:i(),references:[]}];return{content:e({name:"phoenix",description:"Build, change, inspect, deploy or review a Phoenix configurator project. Use for Phoenix project work, visual alternatives, and platform feedback.",sections:[`# Phoenix
1
+ import{renderAgentSkill as e}from"./agent-skill.js";import{generatePhoenixCliCore as o,generatePhoenixSdkCore as t,generatePhoenixWorkflowCore as r}from"./core/index.js";import{generatePhoenixFeatureGuides as n}from"./features/index.js";import{createPhoenixIndexGuide as s}from"./guide.js";import{generatePhoenixAssetConversion as i,generatePhoenixFeedbackGuides as a,generatePhoenixFinalization as d,generatePhoenixFirstDraftGuides as c,generatePhoenixModelMigration as h,generatePhoenixOperations as l,generatePhoenixPlanning as u,generatePhoenixReviewGuides as p,generatePhoenixSpecificationGuides as m}from"./processes/index.js";export const generatePhoenixSkillBundle=f=>{let w=[r(),t(),o()],g=[c(),m(),[u()],[l(f)],[d()],[i()],[h()],p(),a()],x=s({path:"processes/index.md",title:"Processes",summary:"Procedures summarized by outcome and when to use them.",intro:"Read the procedure or section whose outcome the task needs. The [workflow](../core/workflow.md) owns strategy, preferences and effort; processes supply the execution.",guides:g.flatMap(e=>e.slice(0,1)),notes:[]}),k=n();return{content:e({name:"phoenix",description:"Build, change, inspect, deploy or review a Phoenix configurator project. Use for all Phoenix project work, including a first draft of a new project, visual alternatives and platform feedback.",sections:[`# Phoenix
2
2
 
3
- Load the guides for the work in hand before doing that work. Several may apply. Follow their existing instructions; this entry point only routes to them. Reuse guidance already read in the conversation unless sync or an SDK update changed it.`,`## Choose the relevant guidance
3
+ Use the required core to choose how to work, then load task details only when they apply.`,`## Required reading
4
4
 
5
- | When | Read |
6
- | --- | --- |
7
- ${p.map(e=>`| ${c(e).description} | [${e.title}](${e.path}) |`).join("\n")}`,"The workflow guide links to product discovery, asset conversion, UX guidance and appearance review at the stages that use them. An isolated code fix needs project guidance and the applicable CLI/review guides; it does not restart the configurator workflow.\n\nEarlier Phoenix skill names refer to these guides: ask for the same task through `phoenix`. Read linked documents when their task applies, not the whole reference tree."]}),references:p.flatMap(e=>[{path:e.path,content:l(c(e).body,e.path,p)},...e.references.map(t=>{let n=`${e.path.slice(0,e.path.lastIndexOf("/")+1)}${t.path}`;return{path:n,content:l(t.content,n,p)}})])}};
5
+ Before Phoenix work, read these three core guides in order:
6
+
7
+ ${w.map((e,o)=>`${o+1}. [${e.title}](${e.path}) — ${e.summary}.`).join("\n")}
8
+
9
+ The core governs every task; reading the workflow does not mean executing every stage. Reuse the core while it remains in context and unchanged, and read it again when context is lost or sync or an SDK update changes it.`,`## Optional guidance
10
+
11
+ - [Processes](processes/index.md) — procedures summarized by outcome and when to use them.
12
+ - [Features](features/index.md) — what Phoenix capabilities support, their constraints and canonical SDK documentation.
13
+
14
+ Follow only the destinations the task needs; a link does not require reading its whole subtree.`]}),references:[...w,x,...g.flat(),...k].map(({path:e,content:o})=>({path:e,content:o}))}};
@@ -0,0 +1,2 @@
1
+ import { type PhoenixGuide } from '../guide.js';
2
+ export declare const generatePhoenixAssetConversion: () => PhoenixGuide;