@salsita-ai/sdk 0.50.0-develop.bb71259564 → 0.50.0-develop.bc204720a8
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.
- package/README.md +13 -4
- package/dist/admin/AdminShell.js +1 -1
- package/dist/admin/common/admin-interface.d.ts +3 -3
- package/dist/admin/legacy-admin/Application.js +1 -1
- package/dist/application-spec/caching/index.d.ts +6 -1
- package/dist/application-spec/caching/index.js +1 -1
- package/dist/application-spec/errors/diagnostic-codes.d.ts +5 -0
- package/dist/application-spec/errors/diagnostic-codes.js +1 -1
- package/dist/application-spec/errors/diagnostic-messages.d.ts +9 -0
- package/dist/application-spec/errors/diagnostic-messages.js +1 -1
- package/dist/application-spec/generate-application/code/domain-runtime-files.d.ts +0 -19
- package/dist/application-spec/generate-application/code/domain-runtime-files.js +1 -1
- package/dist/application-spec/generate-application/code/index.d.ts +1 -0
- package/dist/application-spec/generate-application/code/standalone-app-files.d.ts +4 -3
- package/dist/application-spec/generate-application/code/standalone-app-files.js +1 -1
- package/dist/application-spec/generate-application/code/templates/admin-config.d.ts +1 -1
- package/dist/application-spec/generate-application/code/templates/admin-config.js +3 -2
- package/dist/application-spec/generate-application/code/templates/configurator-config.js +2 -1
- package/dist/application-spec/generate-application/code/templates/domain-spec/factory-types/domain-factory-types.d.ts +9 -8
- package/dist/application-spec/generate-application/code/templates/domain-spec/factory-types/domain-factory-types.js +3 -3
- package/dist/application-spec/generate-application/code/templates/domain-spec/generate-base-configurator-builder.js +2 -1
- package/dist/application-spec/generate-application/code/templates/domain-spec/generate-domain-block.js +31 -31
- package/dist/application-spec/generate-application/code/templates/domain-spec/generate-locale.js +1 -1
- package/dist/application-spec/generate-application/code/templates/editor.d.ts +1 -1
- package/dist/application-spec/generate-application/code/templates/editor.js +16 -3
- package/dist/application-spec/generate-application/code/templates/gitignore.js +2 -1
- package/dist/application-spec/generate-application/code/templates/global-definition/generate-phx-types.js +15 -15
- package/dist/application-spec/generate-application/code/templates/html-index.d.ts +12 -1
- package/dist/application-spec/generate-application/code/templates/html-index.js +9 -10
- package/dist/application-spec/generate-application/code/templates/index.d.ts +2 -2
- package/dist/application-spec/generate-application/code/templates/index.js +1 -1
- package/dist/application-spec/generate-application/code/templates/lingui-rc.js +5 -4
- package/dist/application-spec/generate-application/code/templates/skills/core/cli.d.ts +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/core/cli.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/core/index.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/core/index.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/core/sdk.d.ts +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/core/sdk.js +89 -0
- package/dist/application-spec/generate-application/code/templates/skills/core/workflow.d.ts +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/core/workflow.js +46 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/application-states/application-states.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/application-states/application-states.js +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/application-states/index.d.ts +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/application-states/index.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/application-states/navigation.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/application-states/navigation.js +48 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/application-states/presets.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/application-states/presets.js +38 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/application-states/selection.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/application-states/selection.js +35 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/application-states/views-and-tools.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/application-states/views-and-tools.js +61 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/custom-layout/custom-layout.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/custom-layout/custom-layout.js +7 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/custom-layout/finalization-actions.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/custom-layout/finalization-actions.js +79 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/custom-layout/index.d.ts +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/custom-layout/index.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/custom-layout/messages.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/custom-layout/messages.js +52 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/custom-layout/pages.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/custom-layout/pages.js +49 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/custom-layout/scene-and-safe-area.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/custom-layout/scene-and-safe-area.js +62 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/custom-layout/slots.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/custom-layout/slots.js +40 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/custom-layout/tabs-and-steps.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/custom-layout/tabs-and-steps.js +65 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/custom-layout/toolbar-actions.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/custom-layout/toolbar-actions.js +58 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/custom-layout/view-mode.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/custom-layout/view-mode.js +41 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-controls/control-components.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-controls/control-components.js +24 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-controls/control-hooks.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-controls/control-hooks.js +44 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-controls/custom-controls.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-controls/custom-controls.js +74 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-controls/domain-controls.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-controls/domain-controls.js +8 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-controls/index.d.ts +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-controls/index.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-controls/scene-controls.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-controls/scene-controls.js +48 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-model/actions.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-model/actions.js +64 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-model/components.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-model/components.js +62 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-model/domain-model.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-model/domain-model.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-model/entities-and-relations.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-model/entities-and-relations.js +59 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-model/expressions.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-model/expressions.js +46 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-model/index.d.ts +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-model/index.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-model/transformers.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-model/transformers.js +43 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-model/validation-and-repair.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/domain-model/validation-and-repair.js +30 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/features.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/features.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/index.d.ts +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/index.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/inspection.d.ts +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/inspection.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/localization.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/localization.js +87 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/scene-objects.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/scene-objects.js +43 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/state/index.d.ts +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/state/index.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/state/slices.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/state/slices.js +48 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/state/state.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/state/state.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/state/updates.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/state/updates.js +39 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/state/violations.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/state/violations.js +36 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/variants.d.ts +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/variants.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/assistant-setup.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/assistant-setup.js +32 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/authentication.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/authentication.js +42 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/backend-data.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/backend-data.js +45 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/entry-and-environment.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/entry-and-environment.js +38 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/finalization.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/finalization.js +92 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/index.d.ts +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/index.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/publishing.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/publishing.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/tasks/callback.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/tasks/callback.js +26 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/tasks/documents.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/tasks/documents.js +51 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/tasks/email.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/tasks/email.js +38 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/tasks/index.d.ts +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/tasks/index.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/tasks/integrations.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/tasks/integrations.js +88 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/tasks/links-and-images.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/tasks/links-and-images.js +68 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/tasks/tasks.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/tasks/tasks.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/webhooks.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/features/webhooks/webhooks.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/guide.d.ts +68 -0
- package/dist/application-spec/generate-application/code/templates/skills/guide.js +18 -0
- package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill-bundle.d.ts +2 -2
- package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill-bundle.js +12 -5
- package/dist/application-spec/generate-application/code/templates/skills/phx-members-without-guide.d.ts +9 -0
- package/dist/application-spec/generate-application/code/templates/skills/phx-members-without-guide.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/asset-conversion.d.ts +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/asset-conversion.js +23 -0
- package/dist/application-spec/generate-application/code/templates/skills/{phoenix-skill.d.ts → processes/beta.d.ts} +2 -1
- package/dist/application-spec/generate-application/code/templates/skills/processes/beta.js +4 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/evaluate.d.ts +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/evaluate.js +38 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/feedback.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/feedback.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/index.d.ts +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/index.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/report.d.ts +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/report.js +35 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/send.d.ts +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/feedback/send.js +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/finalization.d.ts +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/finalization.js +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/build.d.ts +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/build.js +25 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/direction.d.ts +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/direction.js +35 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/first-draft.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/first-draft.js +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/handoff.d.ts +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/handoff.js +9 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/index.d.ts +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/first-draft/index.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/index.d.ts +8 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/index.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/model-migration.d.ts +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/model-migration.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/review/appearance.d.ts +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/review/appearance.js +46 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/review/code.d.ts +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/review/code.js +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/review/hand-over.d.ts +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/review/hand-over.js +6 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/review/index.d.ts +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/review/index.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/review/review.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/review/review.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/review/visual-inspection.d.ts +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/review/visual-inspection.js +13 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/specification/branding.d.ts +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/specification/branding.js +20 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/specification/catalog.d.ts +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/specification/catalog.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/specification/index.d.ts +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/specification/index.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/specification/product-definition.d.ts +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/specification/product-definition.js +22 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/specification/specification.d.ts +3 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/specification/specification.js +1 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/specification/ux-guidelines.d.ts +2 -0
- package/dist/application-spec/generate-application/code/templates/skills/processes/specification/ux-guidelines.js +25 -0
- package/dist/application-spec/generate-application/code/templates/skills/sdk-content.d.ts +49 -263
- package/dist/application-spec/generate-application/code/templates/skills/sdk-content.js +3 -58
- package/dist/application-spec/generate-application/code/templates/skills/sdk-subpath-imports.d.ts +9 -0
- package/dist/application-spec/generate-application/code/templates/skills/sdk-subpath-imports.js +1 -0
- package/dist/application-spec/generate-application/code/templates/spec-code/collect-spec-code.d.ts +1 -1
- package/dist/application-spec/generate-application/code/templates/spec-code/collect-spec-code.js +1 -1
- package/dist/application-spec/generate-application/code/templates/story/wrapper.js +2 -4
- package/dist/application-spec/generate-application/code/templates/tsconfig.js +2 -1
- package/dist/application-spec/generate-application/code/templates/webhook-builders.js +4 -3
- package/dist/application-spec/generate-application/code/templates/webhook-index.d.ts +2 -1
- package/dist/application-spec/generate-application/code/templates/webhook-index.js +2 -2
- package/dist/application-spec/generate-application/index.d.ts +1 -8
- package/dist/application-spec/generate-application/index.js +1 -1
- package/dist/application-spec/parse-application-files/merge/merged-app-metadata.d.ts +1 -0
- package/dist/application-spec/parse-application-files/merge/merged-app-metadata.js +1 -1
- package/dist/application-spec/parse-application-files/merge/merged-assistant.d.ts +1 -1
- package/dist/application-spec/parse-application-files/merge/merged-assistant.js +1 -1
- package/dist/application-spec/parse-application-files/parse-application-files.js +1 -1
- package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.d.ts +10 -13
- package/dist/application-spec/parse-application-files/raw-spec/raw-assistant.js +1 -1
- package/dist/application-spec/parse-application-files/raw-spec/raw-spec-file.d.ts +1 -0
- package/dist/application-spec/parse-application-files/raw-spec/raw-spec-file.js +1 -1
- package/dist/application-spec/parse-application-files/spec/model/session-data-schema.js +1 -1
- package/dist/application-spec/parse-application-files/spec/sections/app-metadata.js +1 -1
- package/dist/application-spec/parse-application-files/spec/sections/assistant/assistant-schema.js +1 -1
- package/dist/application-spec/webhook-boundary.js +1 -1
- package/dist/client/authorized-client.d.ts +2 -1
- package/dist/client/authorized-client.js +1 -1
- package/dist/client/contract.d.ts +43 -9
- package/dist/client/contract.js +1 -1
- package/dist/client/local-authorized-client.d.ts +1 -0
- package/dist/client/local-authorized-client.js +1 -1
- package/dist/client/memory-authorized-client.d.ts +1 -0
- package/dist/client/memory-authorized-client.js +1 -1
- package/dist/client/phoenix-api.d.ts +744 -63
- package/dist/configurator/ConfiguratorApp.js +1 -1
- package/dist/configurator/agent-at-work/AgentAtWorkFallback.d.ts +7 -0
- package/dist/configurator/agent-at-work/AgentAtWorkFallback.js +1 -0
- package/dist/configurator/agent-at-work/AgentAtWorkPage.d.ts +20 -0
- package/dist/configurator/agent-at-work/AgentAtWorkPage.js +1 -0
- package/dist/configurator/agent-at-work/AgentModeBadge.d.ts +11 -0
- package/dist/configurator/agent-at-work/AgentModeBadge.js +1 -0
- package/dist/configurator/agent-at-work/StudioMark.d.ts +8 -0
- package/dist/configurator/agent-at-work/StudioMark.js +1 -0
- package/dist/configurator/agent-at-work/agent-at-work-copy.d.ts +17 -0
- package/dist/configurator/agent-at-work/agent-at-work-copy.js +1 -0
- package/dist/configurator/agent-at-work/agent-at-work-styles.d.ts +23 -0
- package/dist/configurator/agent-at-work/agent-at-work-styles.js +374 -0
- package/dist/configurator/agent-at-work/index.d.ts +3 -0
- package/dist/configurator/agent-at-work/index.js +1 -0
- package/dist/configurator/application-runtime/extensions/selectors.js +1 -1
- package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-annotation.d.ts +34 -0
- package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-image-view.d.ts +18 -0
- package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-speech-player.d.ts +69 -0
- package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-speech-player.js +1 -0
- package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.d.ts +289 -24
- package/dist/configurator/application-runtime/extensions/systems/assistant-system/assistant-system.js +1 -1
- package/dist/configurator/application-runtime/extensions/systems/assistant-system/composer-attachments.d.ts +68 -0
- package/dist/configurator/application-runtime/extensions/systems/assistant-system/composer-attachments.js +1 -0
- package/dist/configurator/application-runtime/extensions/systems/assistant-system/rasterize-image.d.ts +13 -0
- package/dist/configurator/application-runtime/extensions/systems/assistant-system/rasterize-image.js +1 -0
- package/dist/configurator/application-runtime/extensions/systems/assistant-system/speakable-reply.d.ts +7 -0
- package/dist/configurator/application-runtime/extensions/systems/assistant-system/speakable-reply.js +1 -0
- package/dist/configurator/application-runtime/extensions/systems/camera-control-system/camera-control-system.d.ts +43 -0
- package/dist/configurator/application-runtime/extensions/systems/camera-control-system/camera-control-system.js +1 -1
- package/dist/configurator/application-runtime/extensions/systems/export-system/export-system.d.ts +4 -1
- package/dist/configurator/application-runtime/extensions/systems/export-system/export-system.js +1 -1
- package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.d.ts +61 -52
- package/dist/configurator/application-runtime/extensions/systems/graphql-system/entity-meta.js +1 -1
- package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.d.ts +8 -2
- package/dist/configurator/application-runtime/extensions/systems/graphql-system/graphql-system.js +1 -1
- package/dist/configurator/application-runtime/extensions/systems/image-rendering-system/capture-next-frame.d.ts +10 -0
- package/dist/configurator/application-runtime/extensions/systems/image-rendering-system/capture-next-frame.js +1 -0
- package/dist/configurator/application-runtime/extensions/systems/image-rendering-system/image-rendering-system.d.ts +8 -0
- package/dist/configurator/application-runtime/extensions/systems/image-rendering-system/image-rendering-system.js +1 -1
- package/dist/configurator/application-runtime/extensions/systems/index.d.ts +7 -2
- package/dist/configurator/application-runtime/extensions/systems/index.js +1 -1
- package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.d.ts +11 -0
- package/dist/configurator/application-runtime/extensions/systems/layout-system/layout-system.js +1 -1
- package/dist/configurator/application-runtime/extensions/systems/sketching-system/sketching-system.d.ts +5 -5
- package/dist/configurator/common/configurator-interface.d.ts +18 -8
- package/dist/configurator/common/configurator-interface.js +1 -1
- package/dist/configurator/configurator-context/configurator-hooks/layout-hooks.js +1 -1
- package/dist/configurator/configurator-context/index.d.ts +0 -1
- package/dist/configurator/configurator-context/index.js +1 -1
- package/dist/configurator/index.d.ts +1 -0
- package/dist/configurator/index.js +1 -1
- package/dist/configurator/{ui/configurator-layout/universal → pages}/ExportingOverlay.d.ts +3 -2
- package/dist/configurator/pages/ExportingOverlay.js +1 -0
- package/dist/configurator/pages/InertRoot.d.ts +10 -0
- package/dist/configurator/pages/InertRoot.js +1 -0
- package/dist/configurator/pages/LoadedConfiguratorDetailPage.js +1 -1
- package/dist/configurator/pages/NewConfiguratorPage.js +1 -1
- package/dist/configurator/pages/PresetCreationErrorPage.d.ts +1 -1
- package/dist/configurator/pages/PresetCreationErrorPage.js +1 -1
- package/dist/configurator/pages/default-configurator-elements.d.ts +6 -2
- package/dist/configurator/pages/default-configurator-elements.js +1 -1
- package/dist/configurator/pages/error-boundaries/AgentModeErrorFallback.d.ts +8 -0
- package/dist/configurator/pages/error-boundaries/AgentModeErrorFallback.js +1 -0
- package/dist/configurator/pages/error-boundaries/BuiltInGeneralErrorFallback.d.ts +5 -0
- package/dist/configurator/pages/error-boundaries/BuiltInGeneralErrorFallback.js +1 -0
- package/dist/configurator/pages/error-boundaries/DevContextFallback.d.ts +4 -2
- package/dist/configurator/pages/error-boundaries/DevContextFallback.js +1 -1
- package/dist/configurator/pages/error-boundaries/DevLoadingFallback.d.ts +6 -4
- package/dist/configurator/pages/error-boundaries/DevLoadingFallback.js +1 -1
- package/dist/configurator/pages/error-boundaries/GeneralErrorBoundary.js +1 -1
- package/dist/configurator/pages/error-boundaries/index.d.ts +1 -0
- package/dist/configurator/pages/error-boundaries/index.js +1 -1
- package/dist/configurator/pages/provider-slots/ContainerSlotProvider.d.ts +3 -0
- package/dist/configurator/pages/provider-slots/ContainerSlotProvider.js +1 -0
- package/dist/configurator/pages/provider-slots/LoaderSlotProvider.d.ts +3 -0
- package/dist/configurator/pages/provider-slots/LoaderSlotProvider.js +1 -0
- package/dist/configurator/pages/provider-slots/MessageHostSlotProvider.d.ts +3 -0
- package/dist/configurator/pages/provider-slots/MessageHostSlotProvider.js +1 -0
- package/dist/configurator/pages/provider-slots/SceneResourcesSlotProvider.d.ts +3 -0
- package/dist/configurator/pages/provider-slots/SceneResourcesSlotProvider.js +1 -0
- package/dist/configurator/pages/provider-slots/ThemeSlotProvider.d.ts +3 -0
- package/dist/configurator/pages/provider-slots/ThemeSlotProvider.js +1 -0
- package/dist/configurator/pages/provider-slots/configurator-provider-slot-elements.d.ts +3 -0
- package/dist/configurator/pages/provider-slots/configurator-provider-slot-elements.js +1 -0
- package/dist/configurator/pages/provider-slots/index.d.ts +6 -0
- package/dist/configurator/pages/provider-slots/index.js +1 -0
- package/dist/configurator/pages/ui-elements/BuiltInInvalidDeploymentReload.d.ts +2 -0
- package/dist/configurator/pages/ui-elements/BuiltInInvalidDeploymentReload.js +1 -0
- package/dist/configurator/pages/ui-elements/configurator-ui-elements.d.ts +3 -0
- package/dist/configurator/pages/ui-elements/configurator-ui-elements.js +1 -0
- package/dist/configurator/pages/ui-elements/index.d.ts +2 -0
- package/dist/configurator/pages/ui-elements/index.js +1 -0
- package/dist/configurator/scene/cameras/CameraPadding.js +1 -1
- package/dist/configurator/ui/assistant/AssistantChips.d.ts +83 -1
- package/dist/configurator/ui/assistant/AssistantChips.js +1 -1
- package/dist/configurator/ui/assistant/AssistantComposer.d.ts +102 -1
- package/dist/configurator/ui/assistant/AssistantComposer.js +1 -1
- package/dist/configurator/ui/assistant/AssistantMarkdown.d.ts +37 -3
- package/dist/configurator/ui/assistant/AssistantMarkdown.js +1 -1
- package/dist/configurator/ui/assistant/AssistantPanel.d.ts +46 -1
- package/dist/configurator/ui/assistant/AssistantPanel.js +1 -1
- package/dist/configurator/ui/assistant/AssistantThread.d.ts +80 -4
- package/dist/configurator/ui/assistant/AssistantThread.js +1 -1
- package/dist/configurator/ui/assistant/AssistantThreadItemView.d.ts +104 -0
- package/dist/configurator/ui/assistant/AssistantThreadItemView.js +1 -0
- package/dist/configurator/ui/assistant/alert/AssistantAlert.d.ts +39 -2
- package/dist/configurator/ui/assistant/alert/AssistantAlert.js +1 -1
- package/dist/configurator/ui/assistant/alert/index.d.ts +1 -1
- package/dist/configurator/ui/assistant/annotation/AnnotationBadge.d.ts +43 -0
- package/dist/configurator/ui/assistant/annotation/AnnotationBadge.js +1 -0
- package/dist/configurator/ui/assistant/annotation/AnnotationOverlay.d.ts +5 -0
- package/dist/configurator/ui/assistant/annotation/AnnotationOverlay.js +1 -0
- package/dist/configurator/ui/assistant/annotation/AnnotationPin.d.ts +14 -0
- package/dist/configurator/ui/assistant/annotation/AnnotationPin.js +1 -0
- package/dist/configurator/ui/assistant/annotation/AnnotationViewer.d.ts +12 -0
- package/dist/configurator/ui/assistant/annotation/AnnotationViewer.js +1 -0
- package/dist/configurator/ui/assistant/annotation/MessageAnnotations.d.ts +11 -0
- package/dist/configurator/ui/assistant/annotation/MessageAnnotations.js +1 -0
- package/dist/configurator/ui/assistant/annotation/annotation-layout.d.ts +80 -0
- package/dist/configurator/ui/assistant/annotation/annotation-layout.js +1 -0
- package/dist/configurator/ui/assistant/annotation/editor/AnnotationComment.d.ts +49 -0
- package/dist/configurator/ui/assistant/annotation/editor/AnnotationComment.js +1 -0
- package/dist/configurator/ui/assistant/annotation/editor/AnnotationEditor.d.ts +18 -0
- package/dist/configurator/ui/assistant/annotation/editor/AnnotationEditor.js +1 -0
- package/dist/configurator/ui/assistant/annotation/editor/annotation-drawing.d.ts +22 -0
- package/dist/configurator/ui/assistant/annotation/editor/annotation-drawing.js +1 -0
- package/dist/configurator/ui/assistant/annotation/editor/annotation-pins.d.ts +22 -0
- package/dist/configurator/ui/assistant/annotation/editor/annotation-pins.js +1 -0
- package/dist/configurator/ui/assistant/annotation/editor/flatten-annotation.d.ts +17 -0
- package/dist/configurator/ui/assistant/annotation/editor/flatten-annotation.js +1 -0
- package/dist/configurator/ui/assistant/annotation/editor/index.d.ts +2 -0
- package/dist/configurator/ui/assistant/annotation/editor/index.js +1 -0
- package/dist/configurator/ui/assistant/annotation/index.d.ts +6 -0
- package/dist/configurator/ui/assistant/annotation/index.js +1 -0
- package/dist/configurator/ui/assistant/annotation/prefers-reduced-motion.d.ts +2 -0
- package/dist/configurator/ui/assistant/annotation/prefers-reduced-motion.js +1 -0
- package/dist/configurator/ui/assistant/annotation/use-end-on-unmount.d.ts +6 -0
- package/dist/configurator/ui/assistant/annotation/use-end-on-unmount.js +1 -0
- package/dist/configurator/ui/assistant/assistant-failure.d.ts +20 -7
- package/dist/configurator/ui/assistant/assistant-failure.js +1 -1
- package/dist/configurator/ui/assistant/attachments/MessageImages.d.ts +63 -0
- package/dist/configurator/ui/assistant/attachments/MessageImages.js +1 -0
- package/dist/configurator/ui/assistant/attachments/index.d.ts +2 -0
- package/dist/configurator/ui/assistant/attachments/index.js +1 -0
- package/dist/configurator/ui/assistant/attachments/prepare-image.d.ts +24 -0
- package/dist/configurator/ui/assistant/attachments/prepare-image.js +1 -0
- package/dist/configurator/ui/assistant/composer/composer-frame.d.ts +20 -0
- package/dist/configurator/ui/assistant/composer/composer-frame.js +1 -0
- package/dist/configurator/ui/assistant/composer/index.d.ts +1 -0
- package/dist/configurator/ui/assistant/composer/index.js +1 -0
- package/dist/configurator/ui/assistant/drawing/AssistantDrawing.d.ts +58 -0
- package/dist/configurator/ui/assistant/drawing/AssistantDrawing.js +1 -0
- package/dist/configurator/ui/assistant/drawing/index.d.ts +2 -0
- package/dist/configurator/ui/assistant/drawing/index.js +1 -0
- package/dist/configurator/ui/assistant/drawing/parse-drawing.d.ts +18 -0
- package/dist/configurator/ui/assistant/drawing/parse-drawing.js +1 -0
- package/dist/configurator/ui/assistant/drawing/use-drawing-url.d.ts +14 -0
- package/dist/configurator/ui/assistant/drawing/use-drawing-url.js +1 -0
- package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.d.ts +35 -1
- package/dist/configurator/ui/assistant/entity-link/AssistantEntityLink.js +1 -1
- package/dist/configurator/ui/assistant/entity-link/index.d.ts +2 -2
- package/dist/configurator/ui/assistant/form/AssistantForm.d.ts +59 -2
- package/dist/configurator/ui/assistant/form/AssistantForm.js +1 -1
- package/dist/configurator/ui/assistant/form/built-in-form-slots.d.ts +16 -0
- package/dist/configurator/ui/assistant/form/built-in-form-slots.js +1 -0
- package/dist/configurator/ui/assistant/form/index.d.ts +2 -1
- package/dist/configurator/ui/assistant/form/registry/built-in-form-elements.d.ts +26 -0
- package/dist/configurator/ui/assistant/form/registry/index.d.ts +1 -1
- package/dist/configurator/ui/assistant/form-elements/FormCard.d.ts +59 -0
- package/dist/configurator/ui/assistant/form-elements/FormCard.js +1 -1
- package/dist/configurator/ui/assistant/form-elements/FormConfirm.d.ts +51 -0
- package/dist/configurator/ui/assistant/form-elements/FormConfirm.js +1 -1
- package/dist/configurator/ui/assistant/form-elements/FormGroup.d.ts +47 -0
- package/dist/configurator/ui/assistant/form-elements/FormGroup.js +1 -1
- package/dist/configurator/ui/assistant/form-elements/FormNumber.d.ts +43 -0
- package/dist/configurator/ui/assistant/form-elements/FormNumber.js +1 -1
- package/dist/configurator/ui/assistant/form-elements/FormOptions.d.ts +51 -0
- package/dist/configurator/ui/assistant/form-elements/FormOptions.js +1 -1
- package/dist/configurator/ui/assistant/form-elements/FormReply.d.ts +43 -0
- package/dist/configurator/ui/assistant/form-elements/FormReply.js +1 -1
- package/dist/configurator/ui/assistant/form-elements/FormSwatch.d.ts +51 -0
- package/dist/configurator/ui/assistant/form-elements/FormSwatch.js +1 -1
- package/dist/configurator/ui/assistant/form-elements/FormText.d.ts +47 -0
- package/dist/configurator/ui/assistant/form-elements/FormText.js +1 -1
- package/dist/configurator/ui/assistant/form-elements/index.d.ts +8 -8
- package/dist/configurator/ui/assistant/image-view/ImageView.d.ts +66 -0
- package/dist/configurator/ui/assistant/image-view/ImageView.js +1 -0
- package/dist/configurator/ui/assistant/image-view/index.d.ts +1 -0
- package/dist/configurator/ui/assistant/image-view/index.js +1 -0
- package/dist/configurator/ui/assistant/image-view/use-image-blob.d.ts +7 -0
- package/dist/configurator/ui/assistant/image-view/use-image-blob.js +1 -0
- package/dist/configurator/ui/assistant/index.d.ts +24 -3
- package/dist/configurator/ui/assistant/index.js +1 -1
- package/dist/configurator/ui/assistant/panel/AssistantPanelHeader.d.ts +57 -0
- package/dist/configurator/ui/assistant/panel/AssistantPanelHeader.js +1 -0
- package/dist/configurator/ui/assistant/panel/index.d.ts +1 -0
- package/dist/configurator/ui/assistant/panel/index.js +1 -0
- package/dist/configurator/ui/assistant/popover/AssistantPopover.d.ts +24 -0
- package/dist/configurator/ui/assistant/popover/AssistantPopover.js +1 -0
- package/dist/configurator/ui/assistant/popover/index.d.ts +1 -0
- package/dist/configurator/ui/assistant/popover/index.js +1 -0
- package/dist/configurator/ui/assistant/reference-link/AssistantReferenceLink.d.ts +43 -1
- package/dist/configurator/ui/assistant/reference-link/AssistantReferenceLink.js +1 -1
- package/dist/configurator/ui/assistant/reference-link/index.d.ts +1 -1
- package/dist/configurator/ui/assistant/reference-link/reference-styles.js +1 -1
- package/dist/configurator/ui/assistant/resource-image/AssistantImage.d.ts +49 -2
- package/dist/configurator/ui/assistant/resource-image/AssistantImage.js +1 -1
- package/dist/configurator/ui/assistant/resource-image/index.d.ts +1 -1
- package/dist/configurator/ui/assistant/resource-image/index.js +1 -1
- package/dist/configurator/ui/assistant/screenshots/ScreenshotThumbnails.d.ts +34 -0
- package/dist/configurator/ui/assistant/screenshots/ScreenshotThumbnails.js +1 -1
- package/dist/configurator/ui/assistant/screenshots/index.d.ts +2 -1
- package/dist/configurator/ui/assistant/screenshots/index.js +1 -1
- package/dist/configurator/ui/assistant/screenshots/tool-screenshots.d.ts +3 -9
- package/dist/configurator/ui/assistant/screenshots/tool-screenshots.js +1 -1
- package/dist/configurator/ui/assistant/screenshots/use-screenshot-src.d.ts +4 -4
- package/dist/configurator/ui/assistant/screenshots/use-screenshot-src.js +1 -1
- package/dist/configurator/ui/assistant/streamed-markdown.d.ts +11 -0
- package/dist/configurator/ui/assistant/streamed-markdown.js +2 -2
- package/dist/configurator/ui/assistant/thread-items.d.ts +22 -3
- package/dist/configurator/ui/assistant/thread-items.js +1 -1
- package/dist/configurator/ui/assistant/tool-chip.js +1 -1
- package/dist/configurator/ui/assistant/use-assistant-composer.d.ts +88 -0
- package/dist/configurator/ui/assistant/use-assistant-composer.js +2 -0
- package/dist/configurator/ui/assistant/use-assistant-thread.d.ts +52 -0
- package/dist/configurator/ui/assistant/use-assistant-thread.js +1 -0
- package/dist/configurator/ui/assistant/use-load-older-on-top.d.ts +22 -0
- package/dist/configurator/ui/assistant/use-load-older-on-top.js +1 -0
- package/dist/configurator/ui/assistant/voice/RecordingBar.d.ts +21 -0
- package/dist/configurator/ui/assistant/voice/RecordingBar.js +1 -0
- package/dist/configurator/ui/assistant/voice/ReplyPlayButton.d.ts +43 -0
- package/dist/configurator/ui/assistant/voice/ReplyPlayButton.js +1 -0
- package/dist/configurator/ui/assistant/voice/index.d.ts +4 -0
- package/dist/configurator/ui/assistant/voice/index.js +1 -0
- package/dist/configurator/ui/assistant/voice/use-voice-recording.d.ts +39 -0
- package/dist/configurator/ui/assistant/voice/use-voice-recording.js +1 -0
- package/dist/configurator/ui/assistant/voice/voice-capture.d.ts +22 -0
- package/dist/configurator/ui/assistant/voice/voice-capture.js +1 -0
- package/dist/configurator/ui/configurator-layout/universal/DesktopPreview.js +1 -1
- package/dist/configurator/ui/configurator-layout/universal/Layout.js +1 -1
- package/dist/configurator/ui/configurator-layout/universal/MobilePreview.js +1 -1
- package/dist/configurator/ui/configurator-layout/universal/use-layout-scene-safe-area.js +1 -1
- package/dist/configurator/ui/index.d.ts +1 -1
- package/dist/configurator/ui/index.js +1 -1
- package/dist/configurator/ui/legacy/layout/common/CommonTopNavigation.js +1 -1
- package/dist/configurator/ui/legacy/layout/simple/SimpleTopNavigation.js +1 -1
- package/dist/configurator/ui/legacy/layout/steps/StepsNavigation.js +1 -1
- package/dist/configurator/ui/legacy/layout/steps/StepsOwnerLayout.js +1 -1
- package/dist/configurator/ui/phoenix-layout-elements/header/common/back-button/use-go-back-action.js +1 -1
- package/dist/configurator/ui/phoenix-layout-elements/header/common/step-navigation/StepsNavigation.js +1 -1
- package/dist/configurator/ui/phoenix-layout-elements/sidebar-footer/basic/use-basic-sidebar-footer.js +1 -1
- package/dist/configurator/ui/preset-layout/CategoryPresetUi.js +1 -1
- package/dist/docs/3d-scene/animations-basic.mdx +0 -4
- package/dist/docs/3d-scene/camera-based-hiding.mdx +0 -2
- package/dist/docs/3d-scene/cameras/custom.mdx +0 -2
- package/dist/docs/3d-scene/cameras/fit-during-drag.mdx +0 -4
- package/dist/docs/3d-scene/cameras/locks.mdx +0 -4
- package/dist/docs/3d-scene/cameras/transitions.mdx +0 -2
- package/dist/docs/3d-scene/engraving.mdx +0 -4
- package/dist/docs/3d-scene/materials/custom.mdx +1 -2
- package/dist/docs/3d-scene/materials/inherit.mdx +0 -4
- package/dist/docs/3d-scene/materials/multilevel.mdx +0 -47
- package/dist/docs/3d-scene/materials/override.mdx +0 -4
- package/dist/docs/3d-scene/materials/simple.mdx +0 -4
- package/dist/docs/3d-scene/materials/transformer.mdx +0 -4
- package/dist/docs/3d-scene/materials/transition.mdx +0 -4
- package/dist/docs/3d-scene/materials/transmissive.mdx +0 -4
- package/dist/docs/3d-scene/postprocessing.mdx +0 -2
- package/dist/docs/3d-scene/rendering/basic.mdx +5 -9
- package/dist/docs/3d-scene/rendering/custom-entity.mdx +0 -6
- package/dist/docs/3d-scene/rendering/lights/ambient-light.mdx +0 -2
- package/dist/docs/3d-scene/rendering/lights/directional-light.mdx +0 -2
- package/dist/docs/3d-scene/rendering/lights/point-light.mdx +0 -2
- package/dist/docs/3d-scene/rendering/lights/rect-area-light.mdx +0 -2
- package/dist/docs/3d-scene/rendering/lights/spot-light.mdx +0 -2
- package/dist/docs/3d-scene/rendering/object-groups.mdx +0 -2
- package/dist/docs/3d-scene/rendering/objects.mdx +0 -4
- package/dist/docs/3d-scene/rendering/scene-entity-object.mdx +0 -43
- package/dist/docs/3d-scene/rendering/smma.mdx +0 -2
- package/dist/docs/3d-scene/rendering/soft-shadows.mdx +0 -2
- package/dist/docs/3d-scene/rendering/transformer.mdx +1 -3
- package/dist/docs/complex-use-cases/custom-ui-on-root-level.mdx +0 -1
- package/dist/docs/complex-use-cases/filtered-controls-with-fix-dialog.mdx +19 -19
- package/dist/docs/complex-use-cases/navigation-guard.mdx +81 -19
- package/dist/docs/complex-use-cases/navigation-reset-selection.mdx +28 -65
- package/dist/docs/complex-use-cases/navigation-reset-undo.mdx +16 -20
- package/dist/docs/complex-use-cases/sketching.mdx +2 -10
- package/dist/docs/controls/custom.mdx +88 -87
- package/dist/docs/controls/manage-child-entities/entitychildrenlist.mdx +0 -4
- package/dist/docs/controls/nullable-attributes.mdx +0 -2
- package/dist/docs/controls/scene/custom-controls.mdx +7 -8
- package/dist/docs/controls/scene/html-hotspots.mdx +0 -4
- package/dist/docs/controls/scene/object-html-hotspots.mdx +0 -4
- package/dist/docs/controls/select-attribute/cardselect.mdx +0 -4
- package/dist/docs/controls/select-attribute/listselect.mdx +0 -4
- package/dist/docs/controls/select-attribute/select.mdx +0 -4
- package/dist/docs/controls/select-attribute/swatchselect.mdx +0 -4
- package/dist/docs/controls/select-attribute/switchselect.mdx +0 -4
- package/dist/docs/controls/select-attribute/toggleselect.mdx +0 -4
- package/dist/docs/controls/select-child-entity/cardselect.mdx +2 -6
- package/dist/docs/controls/select-child-entity/listselect.mdx +5 -11
- package/dist/docs/controls/select-child-entity/toggleselect.mdx +4 -10
- package/dist/docs/controls/text-input.mdx +90 -19
- package/dist/docs/demos/glass.mdx +0 -4
- package/dist/docs/demos/heater.mdx +0 -10
- package/dist/docs/demos/office-chair.mdx +0 -8
- package/dist/docs/demos/office-desk.mdx +0 -8
- package/dist/docs/demos/ring.mdx +0 -9
- package/dist/docs/dimensions/3d-scene-integration/angle-indicators.mdx +0 -2
- package/dist/docs/dimensions/3d-scene-integration/editable-angle-indicator.mdx +0 -2
- package/dist/docs/dimensions/3d-scene-integration/editable-distance-dimension-indicator.mdx +0 -14
- package/dist/docs/dimensions/3d-scene-integration/editable-offset-indicator.mdx +0 -6
- package/dist/docs/dimensions/3d-scene-integration/editable-size-indicator.mdx +0 -4
- package/dist/docs/dimensions/3d-scene-integration/list-selector-dimension-indicator.mdx +0 -16
- package/dist/docs/dimensions/3d-scene-integration/offset-indicator.mdx +0 -6
- package/dist/docs/dimensions/3d-scene-integration/overlap-offset-demo.mdx +0 -6
- package/dist/docs/dimensions/basic-concepts/dimension-data-unit.mdx +0 -12
- package/dist/docs/dimensions/basic-concepts/dimension-unit-config.mdx +0 -12
- package/dist/docs/dimensions/input-controls/distance-input.mdx +0 -12
- package/dist/docs/dimensions/input-controls/distance-slider.mdx +6 -18
- package/dist/docs/dimensions/selection-controls/list-selector.mdx +0 -14
- package/dist/docs/dimensions/selection-controls/toggle-selector.mdx +0 -14
- package/dist/docs/drag-and-drop/drag-handle.mdx +0 -1
- package/dist/docs/drag-and-drop/hotspot-handle.mdx +0 -1
- package/dist/docs/drag-and-drop/no-selection.mdx +0 -1
- package/dist/docs/drag-and-drop/planes.mdx +0 -3
- package/dist/docs/drag-and-drop/room-planner.mdx +0 -6
- package/dist/docs/drag-and-drop/rotatable.mdx +0 -1
- package/dist/docs/drag-and-drop/snapping/auto-rotation-demo.mdx +0 -2
- package/dist/docs/drag-and-drop/snapping/label-matching-demo.mdx +0 -2
- package/dist/docs/drag-and-drop/snapping/multi-snap-composition-demo.mdx +0 -2
- package/dist/docs/drag-and-drop/snapping/nested-entity-demo.mdx +0 -2
- package/dist/docs/drag-and-drop/snapping/priority-demo.mdx +0 -2
- package/dist/docs/drag-and-drop/snapping/snap-axis-demo.mdx +0 -2
- package/dist/docs/drag-and-drop/snapping/snap-edge-demo.mdx +0 -2
- package/dist/docs/drag-and-drop/snapping/snap-plane-demo.mdx +0 -5
- package/dist/docs/drag-and-drop/snapping/snap-point-demo.mdx +0 -2
- package/dist/docs/drag-and-drop/spatial-constraints/collision-system.mdx +0 -2
- package/dist/docs/drag-and-drop/spatial-constraints/disjoint-and-within.mdx +0 -6
- package/dist/docs/drag-and-drop/spatial-constraints/geometry-override.mdx +0 -4
- package/dist/docs/drag-and-drop/spatial-constraints/multiple-collision-meshes.mdx +0 -4
- package/dist/docs/drag-and-drop/spatial-constraints/touches.mdx +0 -4
- package/dist/docs/drag-and-drop/swap.mdx +0 -4
- package/dist/docs/fabs/basic.mdx +6 -12
- package/dist/docs/fabs/layout.mdx +0 -7
- package/dist/docs/index.json +6 -6
- package/dist/docs/integrations/lifecycle-providers.mdx +0 -12
- package/dist/docs/integrations/onloadprovider.mdx +0 -3
- package/dist/docs/integrations/webcomponent-api/basics.mdx +6 -2
- package/dist/docs/integrations/webcomponent-api/preset-tags.mdx +4 -1
- package/dist/docs/integrations/woocommerce/overview.mdx +4 -2
- package/dist/docs/layouts/custom-layout.mdx +1 -41
- package/dist/docs/layouts/custom-price.mdx +0 -2
- package/dist/docs/layouts/custom-theme-handler.mdx +0 -4
- package/dist/docs/layouts/gallery/ardent-compressor.mdx +3 -34
- package/dist/docs/layouts/gallery/corvid-drone.mdx +0 -29
- package/dist/docs/layouts/gallery/fenwick-window.mdx +0 -25
- package/dist/docs/layouts/gallery/ferrule-bar-station.mdx +0 -27
- package/dist/docs/layouts/gallery/kestrel-kettle.mdx +0 -29
- package/dist/docs/layouts/gallery/nightjar-guitar.mdx +2 -35
- package/dist/docs/layouts/gallery/sunfold-solar.mdx +0 -26
- package/dist/docs/layouts/gallery/tidepool-aquascape.mdx +0 -46
- package/dist/docs/layouts/header/custom.mdx +0 -2
- package/dist/docs/layouts/icon-sets.mdx +0 -6
- package/dist/docs/layouts/phoenix-elements.mdx +0 -4
- package/dist/docs/layouts/phoenix-handlers.mdx +19 -28
- package/dist/docs/layouts/presets/action-and-overlay.mdx +0 -8
- package/dist/docs/layouts/presets/custom.mdx +6 -13
- package/dist/docs/layouts/preview/always-expand.mdx +4 -14
- package/dist/docs/layouts/preview/always.mdx +4 -14
- package/dist/docs/layouts/preview/auto-presets.mdx +4 -14
- package/dist/docs/layouts/preview/auto.mdx +4 -14
- package/dist/docs/layouts/preview/never.mdx +4 -14
- package/dist/docs/layouts/sidebar/in-a-custom-layout.mdx +18 -13
- package/dist/docs/layouts/sidebar/property-page-stack.mdx +0 -2
- package/dist/docs/layouts/sidebar/property-page.mdx +0 -2
- package/dist/docs/layouts/sidebar/tabs.mdx +0 -4
- package/dist/docs/layouts/sidebar-footer/custom.mdx +0 -2
- package/dist/docs/layouts/sidebar-footer/universal.mdx +0 -10
- package/dist/docs/layouts/tool-controls.mdx +0 -1
- package/dist/docs/layouts/toolbar.mdx +0 -4
- package/dist/docs/layouts/universal.mdx +2 -22
- package/dist/docs/other-features/client-side-rendering/camera-padding.mdx +0 -2
- package/dist/docs/other-features/client-side-rendering/custom.mdx +0 -6
- package/dist/docs/other-features/client-side-rendering/declarative.mdx +0 -4
- package/dist/docs/other-features/client-side-rendering/postprocessing.mdx +0 -6
- package/dist/docs/other-features/component-filters.mdx +0 -7
- package/dist/docs/other-features/currency.mdx +5 -6
- package/dist/docs/other-features/domain-actions.mdx +33 -7
- package/dist/docs/other-features/dynamic-component-attachments.mdx +75 -46
- package/dist/docs/other-features/error-5xx.mdx +0 -14
- package/dist/docs/other-features/navigation-hotspot.mdx +0 -5
- package/dist/docs/other-features/not-found-404.mdx +0 -14
- package/dist/docs/other-features/projected-entities.mdx +0 -5
- package/dist/docs/other-features/side-effects.mdx +0 -23
- package/dist/docs/other-features/transformers.mdx +101 -96
- package/dist/docs/other-features/violation-messages.mdx +0 -4
- package/dist/docs/other-features/violation-severity.mdx +2 -3
- package/dist/docs/performance/clone-highlight.mdx +0 -7
- package/dist/docs/performance/dynamic-components.mdx +0 -6
- package/dist/docs/performance/editable-dimension-stress-test.mdx +0 -2
- package/dist/docs/performance/fast-highlight.mdx +0 -7
- package/dist/docs/performance/general.mdx +0 -7
- package/dist/docs/performance/render-isolation.mdx +0 -6
- package/dist/docs/phoenix/admin.mdx +105 -134
- package/dist/docs/phoenix/application-states.mdx +45 -27
- package/dist/docs/phoenix/blender-rendering.mdx +3 -1
- package/dist/docs/phoenix/components.mdx +53 -46
- package/dist/docs/phoenix/configurator-interface.mdx +272 -116
- package/dist/docs/phoenix/data-sources.mdx +61 -37
- package/dist/docs/phoenix/deployments.mdx +11 -1
- package/dist/docs/phoenix/domain-model.mdx +20 -15
- package/dist/docs/phoenix/expression-context.mdx +3 -29
- package/dist/docs/phoenix/finalization.mdx +2 -1
- package/dist/docs/phoenix/getting-started.mdx +1 -3
- package/dist/docs/phoenix/integration/authentication-internal.mdx +2 -2
- package/dist/docs/phoenix/integration/finalization-internal.mdx +1 -1
- package/dist/docs/phoenix/localization.mdx +66 -55
- package/dist/docs/phoenix/migration-guide.mdx +10 -11
- package/dist/docs/phoenix/phoenix-cli.mdx +57 -18
- package/dist/docs/phoenix/project-structure.mdx +58 -65
- package/dist/docs/phoenix/quickstart.mdx +1 -3
- package/dist/docs/phoenix/sdk-builder-workflow.mdx +17 -23
- package/dist/docs/phoenix/sessions-and-access.mdx +61 -40
- package/dist/docs/phoenix/sharing.mdx +1 -1
- package/dist/docs/phoenix/state-management.mdx +18 -16
- package/dist/docs/phoenix/testing.mdx +6 -1
- package/dist/docs/phoenix/webhooks.mdx +421 -241
- package/dist/docs/recipes-and-delete/delete-entity.mdx +3 -6
- package/dist/docs/recipes-and-delete/dynamic-root-entity.mdx +0 -2
- package/dist/docs/recipes-and-delete/grouped-button.mdx +0 -3
- package/dist/docs/recipes-and-delete/grouped-panel.mdx +0 -3
- package/dist/docs/recipes-and-delete/horizontal.mdx +3 -6
- package/dist/docs/recipes-and-delete/recipe-hierarchy-lists.mdx +0 -3
- package/dist/docs/recipes-and-delete/recipe-hierarchy-selection.mdx +0 -5
- package/dist/docs/recipes-and-delete/replace-dropdown.mdx +3 -6
- package/dist/docs/recipes-and-delete/replace-panel.mdx +0 -7
- package/dist/docs/recipes-and-delete/simple.mdx +3 -6
- package/dist/docs/recipes-and-delete/vertical.mdx +3 -6
- package/dist/docs/relations/aliases.mdx +0 -2
- package/dist/docs/relations/all-of-type.mdx +0 -4
- package/dist/docs/relations/child-nullable.mdx +0 -4
- package/dist/docs/relations/child-required.mdx +0 -2
- package/dist/docs/relations/collection-direct.mdx +0 -4
- package/dist/docs/relations/collection-indirect.mdx +0 -4
- package/dist/docs/relations/collection-multiple.mdx +0 -2
- package/dist/docs/relations/cross-reference.mdx +0 -2
- package/dist/docs/relations/hierarchy.mdx +0 -2
- package/dist/docs/selection-and-highlight/canvas.mdx +0 -1
- package/dist/docs/selection-and-highlight/disable-highlight-per-object.mdx +0 -1
- package/dist/docs/selection-and-highlight/disable-highlight.mdx +0 -1
- package/dist/docs/selection-and-highlight/effects/outline.mdx +0 -3
- package/dist/docs/selection-and-highlight/effects/overlay.mdx +0 -3
- package/dist/docs/selection-and-highlight/fast-emissive-highlight.mdx +0 -3
- package/dist/docs/selection-and-highlight/group-highlighting.mdx +0 -1
- package/dist/docs/selection-and-highlight/hierarchy.mdx +100 -151
- package/dist/docs/selection-and-highlight/hotspots.mdx +0 -1
- package/dist/domain/admin-domain/index.d.ts +2 -2
- package/dist/domain/application/GetApplicationWrapperHandler.d.ts +1 -1
- package/dist/domain/application/GetThemeHandler.d.ts +1 -1
- package/dist/domain/application/GetWebComponentOptions.d.ts +1 -1
- package/dist/domain/application/application-config.d.ts +1 -3
- package/dist/domain/application/assistant/assistant-fields.d.ts +1 -1
- package/dist/domain/application/assistant/assistant-value-type.d.ts +1 -1
- package/dist/domain/application/assistant/build-assistant-lenses.d.ts +1 -2
- package/dist/domain/application/assistant/build-assistant-manifest.d.ts +1 -2
- package/dist/domain/application/assistant/build-assistant-manifest.js +1 -1
- package/dist/domain/application/assistant/generate-assistant-prompt.d.ts +1 -2
- package/dist/domain/application/assistant/generate-assistant-prompt.js +1 -1
- package/dist/domain/application/assistant/index.d.ts +0 -4
- package/dist/domain/application/assistant/index.js +1 -1
- package/dist/domain/application/assistant/session-setup/AssistantSetupHandler.d.ts +1 -1
- package/dist/domain/application/assistant/session-setup/apply-assistant-setup.d.ts +1 -1
- package/dist/domain/application/assistant/session-setup/apply-assistant-setup.js +1 -1
- package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.d.ts +3 -5
- package/dist/domain/application/assistant/session-setup/assistant-setup-manifest.js +1 -1
- package/dist/domain/application/assistant/session-setup/create-session-assistant.d.ts +1 -2
- package/dist/domain/application/assistant-field-options.d.ts +1 -1
- package/dist/domain/application/assistant-mutations.d.ts +1 -1
- package/dist/domain/application/assistant-mutations.js +1 -1
- package/dist/domain/application/assistant-recipe-groups.d.ts +1 -1
- package/dist/domain/application/configurator-builder.d.ts +38 -39
- package/dist/domain/application/create-initial-published-data.d.ts +2 -1
- package/dist/domain/application/published-data/DataRowValidatorHandler.d.ts +1 -1
- package/dist/domain/application/published-data/FilterPublishedChunksHandler.d.ts +1 -1
- package/dist/domain/application/published-data/MapPublishedChunkedDataHandler.d.ts +1 -1
- package/dist/domain/application/published-data/MapPublishedRevisionDataHandler.d.ts +1 -1
- package/dist/domain/application/published-data/SheetValidatorHandler.d.ts +1 -1
- package/dist/domain/available-system-components/available-system-components.d.ts +11 -0
- package/dist/domain/available-system-components/available-system-components.js +1 -0
- package/dist/domain/available-system-components/index.d.ts +1 -0
- package/dist/domain/available-system-components/index.js +1 -0
- package/dist/domain/core/action/index.d.ts +0 -1
- package/dist/domain/core/action/index.js +1 -1
- package/dist/domain/core/domain.js +1 -1
- package/dist/domain/core/index.d.ts +1 -1
- package/dist/domain/core/index.js +1 -1
- package/dist/domain/core/invariant/violation.d.ts +3 -2
- package/dist/domain/{domain-builder.d.ts → domain-builder/domain-builder.d.ts} +2 -2
- package/dist/domain/domain-builder/domain-builder.js +1 -0
- package/dist/domain/domain-builder/index.d.ts +1 -0
- package/dist/domain/domain-builder/index.js +1 -0
- package/dist/domain/domain-context/action-system/action-system.d.ts +32 -6
- package/dist/domain/domain-context/action-system/action-system.js +1 -1
- package/dist/domain/domain-context/domain-context-systems.d.ts +1 -1
- package/dist/domain/domain-context/transformers/context.d.ts +4 -2
- package/dist/domain/domain-context/transformers/when-builder.d.ts +2 -1
- package/dist/domain/domain-runtime/action-factory.d.ts +11 -0
- package/dist/domain/domain-runtime/domain-context/action-context.d.ts +5 -5
- package/dist/domain/domain-runtime/domain-context/selectors.d.ts +2 -0
- package/dist/domain/domain-runtime/domain-context/selectors.js +1 -1
- package/dist/domain/domain-runtime/domain-runtime.d.ts +36 -24
- package/dist/domain/domain-runtime/domain-runtime.js +1 -1
- package/dist/domain/domain-runtime/environment/actions.d.ts +1 -0
- package/dist/domain/domain-runtime/environment/actions.js +1 -1
- package/dist/domain/domain-runtime/environment/initialize.js +1 -1
- package/dist/domain/domain-runtime/environment/selectors.d.ts +2 -0
- package/dist/domain/domain-runtime/environment/selectors.js +1 -1
- package/dist/domain/domain-runtime/environment/types.d.ts +6 -0
- package/dist/domain/domain-runtime/index.d.ts +1 -1
- package/dist/domain/domain-runtime/index.js +1 -1
- package/dist/domain/domain-runtime/spec/create-violation-expressions.d.ts +1 -1
- package/dist/domain/domain-runtime/spec/create-violation-expressions.js +1 -1
- package/dist/domain/domain-runtime/spec/index.d.ts +1 -1
- package/dist/domain/domain-runtime/spec/index.js +1 -1
- package/dist/domain/domain-runtime/spec/initialize.js +1 -1
- package/dist/domain/domain-runtime/spec/{module-checks/resolve-imported-transformers.d.ts → resolve-imported-transformers.d.ts} +3 -3
- package/dist/domain/domain-runtime/spec/resolve-imported-transformers.js +1 -0
- package/dist/domain/domain-runtime/spec/selectors.d.ts +5 -5
- package/dist/domain/domain-runtime/spec/types.d.ts +2 -2
- package/dist/domain/extensions/export-images/agent-screenshot.d.ts +6 -0
- package/dist/domain/extensions/export-images/agent-screenshot.js +1 -1
- package/dist/domain/extensions/export-images/index.d.ts +1 -1
- package/dist/domain/extensions/export-images/index.js +1 -1
- package/dist/domain/extensions/index.d.ts +1 -1
- package/dist/domain/extensions/index.js +1 -1
- package/dist/domain/extensions/scene-entity-delete-fab.d.ts +1 -1
- package/dist/domain/extensions/scene-entity-delete-fab.js +1 -1
- package/dist/domain/index.d.ts +15 -3
- package/dist/domain/index.js +1 -1
- package/dist/domain/mocks/create-mock-domain-runtime.d.ts +5 -0
- package/dist/domain/mocks/create-test-application-config.d.ts +1 -1
- package/dist/domain/spec/{enhanced-json-value.d.ts → enhanced-json/enhanced-json-value.d.ts} +1 -1
- package/dist/domain/spec/enhanced-json/index.d.ts +1 -0
- package/dist/domain/spec/enhanced-json/index.js +1 -0
- package/dist/domain/spec/expressions/expression.d.ts +1 -1
- package/dist/domain/spec/expressions/relation-expression-params.d.ts +1 -1
- package/dist/domain/spec/index.d.ts +3 -8
- package/dist/domain/spec/index.js +1 -1
- package/dist/domain/spec/model/defaults.d.ts +1 -1
- package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/element-registration.d.ts +1 -1
- package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/find-assistant-form-element-errors.d.ts +1 -1
- package/dist/domain/spec/modules/find-assistant-form-element-errors.js +1 -0
- package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/index.d.ts +2 -3
- package/dist/domain/spec/modules/index.js +1 -0
- package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/merge-expression-modules.d.ts +2 -2
- package/dist/domain/spec/modules/merge-expression-modules.js +1 -0
- package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/project-modules.d.ts +1 -1
- package/dist/domain/spec/modules/project-modules.js +1 -0
- package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/resolve-action-modules.d.ts +1 -1
- package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/resolve-component-optic-modules.d.ts +1 -1
- package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/resolve-expression-modules.d.ts +1 -1
- package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/resolve-invariant-modules.d.ts +1 -1
- package/dist/domain/spec/phx/index.d.ts +1 -0
- package/dist/domain/spec/phx/index.js +1 -0
- package/dist/{application-spec/generate-application/implementations → domain/spec/phx}/phx-application-types.d.ts +1 -1
- package/dist/domain/spec/phx/phx-application-types.js +1 -0
- package/dist/domain/spec/phx/phx-domain.js +1 -0
- package/dist/{application-spec/generate-application/implementations → domain/spec/phx}/phx-model.d.ts +2 -2
- package/dist/domain/spec/phx/phx-model.js +1 -0
- package/dist/{application-spec/generate-application/implementations → domain/spec/phx}/phx.d.ts +1 -2
- package/dist/{application-spec/generate-application → domain/spec}/runtime/admin-runtime/admin-runtime.d.ts +7 -6
- package/dist/domain/spec/runtime/admin-runtime/admin-runtime.js +1 -0
- package/dist/{application-spec/generate-application → domain/spec}/runtime/admin-runtime/admin-spec-runtime.d.ts +2 -2
- package/dist/domain/spec/runtime/admin-runtime/admin-spec-runtime.js +1 -0
- package/dist/domain/spec/runtime/admin-runtime/index.d.ts +2 -0
- package/dist/domain/spec/runtime/admin-runtime/index.js +1 -0
- package/dist/{application-spec/generate-application → domain/spec}/runtime/admin-runtime/states-runtime.d.ts +1 -1
- package/dist/{application-spec/generate-application → domain/spec}/runtime/application-runtime.d.ts +8 -6
- package/dist/domain/spec/runtime/application-runtime.js +1 -0
- package/dist/{application-spec/generate-application → domain/spec}/runtime/application-spec-slice.d.ts +3 -1
- package/dist/domain/spec/runtime/application-spec-slice.js +1 -0
- package/dist/{application-spec/generate-application → domain/spec}/runtime/configurator-runtime/configurator-runtime.d.ts +8 -10
- package/dist/domain/spec/runtime/configurator-runtime/configurator-runtime.js +1 -0
- package/dist/{application-spec/generate-application → domain/spec}/runtime/configurator-runtime/configurator-spec-runtime.d.ts +2 -2
- package/dist/domain/spec/runtime/configurator-runtime/configurator-spec-runtime.js +1 -0
- package/dist/domain/spec/runtime/configurator-runtime/index.d.ts +2 -0
- package/dist/domain/spec/runtime/configurator-runtime/index.js +1 -0
- package/dist/{application-spec/generate-application → domain/spec}/runtime/configurator-runtime/states-runtime.d.ts +1 -1
- package/dist/{application-spec/generate-application → domain/spec}/runtime/create-application.d.ts +3 -2
- package/dist/domain/spec/runtime/create-application.js +1 -0
- package/dist/{application-spec/generate-application/runtime/sections → domain/spec/runtime/expressions}/expression-runtime.d.ts +5 -2
- package/dist/domain/spec/runtime/expressions/expression-runtime.js +1 -0
- package/dist/{application-spec/generate-application/runtime/sections → domain/spec/runtime/expressions}/generate-memo-eval-plan-runtime.d.ts +2 -1
- package/dist/domain/spec/runtime/expressions/generate-memo-eval-plan-runtime.js +1 -0
- package/dist/domain/spec/runtime/expressions/index.d.ts +3 -0
- package/dist/domain/spec/runtime/expressions/index.js +1 -0
- package/dist/{application-spec/generate-application/runtime/sections → domain/spec/runtime/expressions}/reflection-constants-runtime.d.ts +2 -1
- package/dist/{application-spec/generate-application → domain/spec}/runtime/factory-data/factory-data-runtime.d.ts +4 -2
- package/dist/{application-spec/generate-application → domain/spec}/runtime/factory-data/recipe-defaults.d.ts +1 -1
- package/dist/domain/spec/runtime/factory-data/recipe-defaults.js +1 -0
- package/dist/{application-spec/generate-application → domain/spec}/runtime/factory-data/static-violations.d.ts +2 -1
- package/dist/domain/spec/runtime/factory-data/static-violations.js +1 -0
- package/dist/{application-spec/generate-application → domain/spec}/runtime/generate-runtime-instance.d.ts +1 -1
- package/dist/domain/spec/runtime/generate-runtime-instance.js +1 -0
- package/dist/domain/spec/runtime/index.d.ts +13 -0
- package/dist/domain/spec/runtime/index.js +1 -0
- package/dist/{application-spec/generate-application → domain/spec}/runtime/migrations/migration-runtime.d.ts +2 -2
- package/dist/domain/spec/runtime/migrations/migration-runtime.js +1 -0
- package/dist/{application-spec/generate-application/runtime/admin-runtime → domain/spec/runtime/model}/admin-model-runtime.d.ts +4 -2
- package/dist/domain/spec/runtime/model/admin-model-runtime.js +1 -0
- package/dist/{application-spec/generate-application/runtime/configurator-runtime → domain/spec/runtime/model}/configurator-model-runtime.d.ts +4 -2
- package/dist/domain/spec/runtime/model/configurator-model-runtime.js +1 -0
- package/dist/domain/spec/runtime/model/index.d.ts +2 -0
- package/dist/domain/spec/runtime/model/index.js +1 -0
- package/dist/{application-spec/generate-application/runtime/sections → domain/spec/runtime/optics}/build-sdk-optic.d.ts +3 -4
- package/dist/domain/spec/runtime/optics/build-sdk-optic.js +1 -0
- package/dist/domain/spec/runtime/optics/build-user-bound-optic.d.ts +7 -0
- package/dist/domain/spec/runtime/optics/build-user-bound-optic.js +1 -0
- package/dist/domain/spec/runtime/optics/built-component-optic.d.ts +11 -0
- package/dist/domain/spec/runtime/optics/built-component-optic.js +1 -0
- package/dist/{application-spec/generate-application/runtime/sections → domain/spec/runtime/optics}/component-optic.d.ts +4 -13
- package/dist/domain/spec/runtime/optics/index.d.ts +2 -0
- package/dist/domain/spec/runtime/optics/index.js +1 -0
- package/dist/{application-spec/caching → domain/spec/runtime}/runtime-reference-store.d.ts +1 -5
- package/dist/domain/spec/runtime/runtime-reference-store.js +1 -0
- package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/actions-runtime.d.ts +3 -2
- package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/assistant-runtime.d.ts +2 -2
- package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/data-runtime.d.ts +1 -1
- package/dist/domain/spec/runtime/sections/index.d.ts +6 -0
- package/dist/domain/spec/runtime/sections/index.js +1 -0
- package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/preset-runtime.d.ts +3 -2
- package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/theme-runtime.d.ts +1 -1
- package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/transformers-runtime.d.ts +2 -2
- package/dist/{application-spec/generate-application → domain/spec}/runtime/spec-code/resolve-spec-code.d.ts +1 -1
- package/dist/domain/spec/runtime/spec-code/spec-code-module.js +1 -0
- package/dist/{application-spec/generate-application → domain/spec}/runtime/spec-runtime.d.ts +3 -3
- package/dist/domain/spec/runtime/spec-runtime.js +1 -0
- package/dist/domain/spec/runtime-spec/index.d.ts +4 -0
- package/dist/domain/spec/runtime-spec/index.js +1 -0
- package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/runtime-spec.d.ts +7 -1
- package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/spec-code-id.d.ts +1 -1
- package/dist/domain/spec/sections/app-metadata.d.ts +1 -0
- package/dist/domain/{application → spec/sections}/assistant/assistant-manifest.d.ts +13 -3
- package/dist/domain/{application → spec/sections}/assistant/assistant-resolved-manifest.d.ts +14 -19
- package/dist/domain/spec/sections/assistant/assistant-resolved-manifest.js +1 -0
- package/dist/domain/spec/sections/assistant/index.d.ts +4 -0
- package/dist/domain/spec/sections/assistant/index.js +1 -0
- package/dist/domain/spec/sections/index.d.ts +1 -0
- package/dist/domain/spec/sections/index.js +1 -1
- package/dist/domain/system-components/phoenix-entity-elements/child-entity-card-selector.d.ts +2 -3
- package/dist/domain/system-components/phoenix-entity-elements/child-entity-list-selector.d.ts +2 -3
- package/dist/domain/system-components/phoenix-entity-elements/child-entity-toggle-selector.d.ts +2 -3
- package/dist/domain/system-definitions.js +1 -1
- package/dist/domain/utils/index.d.ts +2 -0
- package/dist/domain/utils/index.js +1 -0
- package/dist/editor/Editor.d.ts +5 -0
- package/dist/editor/Editor.js +1 -1
- package/dist/editor/EditorMode.d.ts +2 -0
- package/dist/editor/EditorMode.js +1 -1
- package/dist/editor/agent-mode/AgentModeBridge.d.ts +10 -0
- package/dist/editor/agent-mode/AgentModeBridge.js +1 -0
- package/dist/editor/agent-mode/agent-at-work-fonts.d.ts +2 -0
- package/dist/editor/agent-mode/agent-at-work-fonts.js +1 -0
- package/dist/editor/console-reporter/BrowserConsoleReporter.js +1 -1
- package/dist/editor/console-reporter/console-capture.d.ts +20 -0
- package/dist/editor/console-reporter/console-capture.js +1 -0
- package/dist/editor/index.d.ts +1 -0
- package/dist/editor/index.js +1 -1
- package/dist/editor/variants/VariantAnswerFooter.d.ts +8 -1
- package/dist/editor/variants/VariantAnswerFooter.js +1 -1
- package/dist/editor/variants/VariantPageUnavailable.d.ts +5 -0
- package/dist/editor/variants/VariantPageUnavailable.js +1 -0
- package/dist/editor/variants/VariantPreviewHandler.js +1 -1
- package/dist/editor/variants/variant-preview-fonts.d.ts +2 -0
- package/dist/editor/variants/variant-preview-fonts.js +1 -0
- package/dist/editor/variants/variant-preview-styles.d.ts +40 -48
- package/dist/editor/variants/variant-preview-styles.js +493 -1
- package/dist/extras/cognito/CognitoSignInPage.d.ts +2 -0
- package/dist/extras/cognito/CognitoSignInPage.js +1 -0
- package/dist/extras/cognito/index.d.ts +1 -0
- package/dist/extras/cognito/index.js +1 -0
- package/dist/i18n/locales/cs/messages.js +1 -1
- package/dist/i18n/locales/da/messages.js +1 -1
- package/dist/i18n/locales/de/messages.js +1 -1
- package/dist/i18n/locales/de-AT/messages.js +1 -1
- package/dist/i18n/locales/en/messages.js +1 -1
- package/dist/i18n/locales/en-AU/messages.js +1 -1
- package/dist/i18n/locales/en-GB/messages.js +1 -1
- package/dist/i18n/locales/es/messages.js +1 -1
- package/dist/i18n/locales/fr/messages.js +1 -1
- package/dist/i18n/locales/hu/messages.js +1 -1
- package/dist/i18n/locales/it/messages.js +1 -1
- package/dist/i18n/locales/nl/messages.js +1 -1
- package/dist/i18n/locales/pl/messages.js +1 -1
- package/dist/i18n/locales/pt/messages.js +1 -1
- package/dist/i18n/locales/ro/messages.js +1 -1
- package/dist/i18n/locales/sk/messages.js +1 -1
- package/dist/i18n/locales/tr/messages.js +1 -1
- package/dist/i18n/merge-catalogs.d.ts +4 -1
- package/dist/i18n/merge-catalogs.js +1 -1
- package/dist/legacy/domain-cli/gen/configurator-builder.js +5 -4
- package/dist/legacy/domain-cli/utils/cache.d.ts +1 -1
- package/dist/legacy/domain-cli/utils/cache.js +1 -1
- package/dist/legacy/domain-spec/__generated/domain-schema.d.ts +4 -2
- package/dist/legacy/phoenix-cli/project-gen/generators/file-templates/i18n-index.js +3 -3
- package/dist/legacy/phoenix-cli/services/webhook-service/transport.js +1 -1
- package/dist/legacy/phoenix-cli/services/webhook-service/tunnel.d.ts +1 -0
- package/dist/legacy/phoenix-cli/services/webhook-service/tunnel.js +1 -1
- package/dist/legacy/webhook-cli/lambda-local/index.js +1 -1
- package/dist/legacy/webhook-cli/lib/webhook-boundary.js +1 -1
- package/dist/phoenix/application-spec/application-spec-builder.d.ts +2 -2
- package/dist/phoenix/application-spec/application-spec-builder.js +1 -1
- package/dist/phoenix/application-spec/generate-application-spec-project.d.ts +2 -1
- package/dist/phoenix/application-spec/generate-application-spec-project.js +2 -2
- package/dist/phoenix/application-spec/generate-project-files.d.ts +4 -3
- package/dist/phoenix/application-spec/generate-project-files.js +1 -1
- package/dist/phoenix/application-spec/index.d.ts +2 -0
- package/dist/phoenix/application-spec/index.js +1 -1
- package/dist/phoenix/application-spec/project-files.d.ts +8 -2
- package/dist/phoenix/application-spec/project-files.js +1 -1
- package/dist/phoenix/application-spec/read-spec-project.d.ts +1 -2
- package/dist/phoenix/application-spec/read-spec-project.js +1 -1
- package/dist/phoenix/application-spec/resolve-deployment-data.d.ts +1 -0
- package/dist/phoenix/application-spec/resolve-deployment-data.js +2 -2
- package/dist/phoenix/cli.js +1 -1
- package/dist/phoenix/commands/account/index.d.ts +1 -0
- package/dist/phoenix/commands/account/index.js +1 -0
- package/dist/phoenix/commands/account/whoami.d.ts +4 -0
- package/dist/phoenix/commands/account/whoami.js +3 -0
- package/dist/phoenix/commands/activate-deployment.js +1 -1
- package/dist/phoenix/commands/build.d.ts +2 -1
- package/dist/phoenix/commands/build.js +1 -1
- package/dist/phoenix/commands/changelog.js +1 -1
- package/dist/phoenix/commands/check.js +1 -1
- package/dist/phoenix/commands/clean.d.ts +2 -1
- package/dist/phoenix/commands/clean.js +1 -1
- package/dist/phoenix/commands/cleanup-environment.js +2 -2
- package/dist/phoenix/commands/create-environment.js +1 -1
- package/dist/phoenix/commands/data.js +1 -1
- package/dist/phoenix/commands/deploy.js +3 -3
- package/dist/phoenix/commands/deployment-build-envs-command.js +1 -1
- package/dist/phoenix/commands/dev.d.ts +2 -1
- package/dist/phoenix/commands/dev.js +4 -5
- package/dist/phoenix/commands/docs.js +1 -1
- package/dist/phoenix/commands/feedback.js +1 -1
- package/dist/phoenix/commands/finish-deployment-command.js +1 -1
- package/dist/phoenix/commands/fix.js +1 -1
- package/dist/phoenix/commands/index.d.ts +1 -0
- package/dist/phoenix/commands/index.js +1 -1
- package/dist/phoenix/commands/inspect-assets.js +1 -1
- package/dist/phoenix/commands/list-environments.js +1 -1
- package/dist/phoenix/commands/login.d.ts +9 -3
- package/dist/phoenix/commands/login.js +3 -3
- package/dist/phoenix/commands/logout.js +1 -1
- package/dist/phoenix/commands/prepare-deployment-command.js +2 -2
- package/dist/phoenix/commands/prepare-local-environment-command.js +1 -1
- package/dist/phoenix/commands/register-deployment.js +1 -1
- package/dist/phoenix/commands/scene.js +1 -1
- package/dist/phoenix/commands/screenshot.js +1 -1
- package/dist/phoenix/commands/state.js +1 -1
- package/dist/phoenix/commands/story-build.js +3 -3
- package/dist/phoenix/commands/story-create.js +1 -1
- package/dist/phoenix/commands/story-dev.js +2 -2
- package/dist/phoenix/commands/sync.d.ts +2 -1
- package/dist/phoenix/commands/sync.js +1 -1
- package/dist/phoenix/commands/variants.js +1 -1
- package/dist/phoenix/editor-server/commands-router.js +1 -1
- package/dist/phoenix/editor-server/editor-server.d.ts +2 -13
- package/dist/phoenix/editor-server/editor-server.js +1 -1
- package/dist/phoenix/editor-server/spec-router.js +1 -1
- package/dist/phoenix/editor-server/trpc.d.ts +2 -12
- package/dist/phoenix/lingui/lingui.d.ts +4 -4
- package/dist/phoenix/scripts/docs-utils.js +1 -1
- package/dist/phoenix/services/application-spec-project-watcher.d.ts +14 -9
- package/dist/phoenix/services/application-spec-project-watcher.js +2 -2
- package/dist/phoenix/services/cli-credentials.d.ts +9 -6
- package/dist/phoenix/services/cli-credentials.js +2 -2
- package/dist/phoenix/services/cli-exit.d.ts +5 -0
- package/dist/phoenix/services/cli-exit.js +1 -0
- package/dist/phoenix/services/deployment/deployment-preparation-service.d.ts +28 -0
- package/dist/phoenix/services/deployment/deployment-preparation-service.js +1 -0
- package/dist/phoenix/services/deployment/index.d.ts +2 -0
- package/dist/phoenix/services/deployment/index.js +1 -0
- package/dist/phoenix/services/dev-experience/dev-experience.d.ts +31 -0
- package/dist/phoenix/services/dev-experience/dev-experience.js +1 -0
- package/dist/phoenix/services/dev-experience/index.d.ts +3 -0
- package/dist/phoenix/services/dev-experience/index.js +1 -0
- package/dist/phoenix/services/dev-experience/read-explicit-editor-setting.d.ts +7 -0
- package/dist/phoenix/services/dev-experience/read-explicit-editor-setting.js +1 -0
- package/dist/phoenix/services/dev-experience/regenerated-page-experience.d.ts +24 -0
- package/dist/phoenix/services/dev-experience/regenerated-page-experience.js +1 -0
- package/dist/phoenix/services/index.d.ts +6 -2
- package/dist/phoenix/services/index.js +1 -1
- package/dist/phoenix/services/phoenix-pubsub.d.ts +4 -0
- package/dist/phoenix/services/phoenix-regions.d.ts +1 -1
- package/dist/phoenix/services/phoenix-regions.js +1 -1
- package/dist/phoenix/services/phoenix-store.d.ts +3 -0
- package/dist/phoenix/services/phoenix-store.js +1 -1
- package/dist/phoenix/services/prepare-development-environment.js +1 -1
- package/dist/phoenix/services/session/editor-server-handle.d.ts +5 -0
- package/dist/phoenix/services/session/editor-server-handle.js +1 -0
- package/dist/phoenix/services/session/index.d.ts +2 -0
- package/dist/phoenix/services/session/index.js +1 -0
- package/dist/phoenix/services/session/phoenix-application.d.ts +83 -0
- package/dist/phoenix/services/session/phoenix-application.js +2 -0
- package/dist/phoenix/services/signed-in-development-environment.js +1 -1
- package/dist/phoenix/services/source-archive.d.ts +2 -0
- package/dist/phoenix/services/source-archive.js +1 -1
- package/dist/phoenix/services/swc.d.ts +5 -4
- package/dist/phoenix/services/swc.js +2 -2
- package/dist/phoenix/services/telemetry/amplitude-telemetry-transport.d.ts +9 -0
- package/dist/phoenix/services/telemetry/amplitude-telemetry-transport.js +1 -0
- package/dist/phoenix/services/telemetry/index.d.ts +3 -0
- package/dist/phoenix/services/telemetry/index.js +1 -0
- package/dist/phoenix/services/telemetry/telemetry-client.d.ts +25 -0
- package/dist/phoenix/services/telemetry/telemetry-client.js +1 -0
- package/dist/phoenix/services/telemetry/telemetry-command.d.ts +2 -0
- package/dist/phoenix/services/telemetry/telemetry-command.js +1 -0
- package/dist/phoenix/services/telemetry/telemetry-event.d.ts +44 -0
- package/dist/phoenix/services/telemetry/telemetry-event.js +1 -0
- package/dist/phoenix/services/telemetry/telemetry-state.d.ts +25 -0
- package/dist/phoenix/services/telemetry/telemetry-state.js +2 -0
- package/dist/phoenix/services/vite-config.d.ts +2 -1
- package/dist/phoenix/services/vite-config.js +1 -1
- package/dist/phoenix/services/webhook-service/transport.js +1 -1
- package/dist/phoenix/services/webhook-service/tunnel.d.ts +1 -0
- package/dist/phoenix/services/webhook-service/tunnel.js +1 -1
- package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-application.d.ts +2 -0
- package/dist/react-sdk/application-runtime/hooks/responsive/use-responsive-store.js +1 -1
- package/dist/react-sdk/application-runtime/hooks/use-environment.d.ts +7 -0
- package/dist/react-sdk/application-runtime/hooks/use-environment.js +1 -1
- package/dist/react-sdk/application-runtime/mocks/create-mock-application-runtime.js +1 -1
- package/dist/react-sdk/application-runtime/responsive/actions.d.ts +6 -0
- package/dist/react-sdk/application-runtime/responsive/actions.js +1 -1
- package/dist/react-sdk/application-runtime/responsive/initialize.js +1 -1
- package/dist/react-sdk/application-runtime/responsive/selectors.js +1 -1
- package/dist/react-sdk/application-runtime/responsive/types.d.ts +9 -0
- package/dist/react-sdk/application-runtime/runtime/create-application-runtime.d.ts +18 -0
- package/dist/react-sdk/application-runtime/runtime/create-application-runtime.js +1 -1
- package/dist/react-sdk/configurator-ui-elements/ConfiguratorUiElementHost.d.ts +7 -0
- package/dist/react-sdk/configurator-ui-elements/ConfiguratorUiElementHost.js +1 -0
- package/dist/react-sdk/configurator-ui-elements/ErrorFallbackElement.d.ts +14 -0
- package/dist/react-sdk/configurator-ui-elements/ErrorFallbackElement.js +1 -0
- package/dist/react-sdk/configurator-ui-elements/ErrorFallbackPropsProvider.d.ts +18 -0
- package/dist/react-sdk/configurator-ui-elements/ErrorFallbackPropsProvider.js +1 -0
- package/dist/react-sdk/configurator-ui-elements/PlainErrorFallback.d.ts +5 -0
- package/dist/react-sdk/configurator-ui-elements/PlainErrorFallback.js +1 -0
- package/dist/react-sdk/configurator-ui-elements/configurator-ui-element.d.ts +17 -0
- package/dist/react-sdk/configurator-ui-elements/configurator-ui-element.js +1 -0
- package/dist/react-sdk/configurator-ui-elements/create-configurator-ui-element.d.ts +5 -0
- package/dist/react-sdk/configurator-ui-elements/create-configurator-ui-element.js +1 -0
- package/dist/react-sdk/configurator-ui-elements/index.d.ts +6 -0
- package/dist/react-sdk/configurator-ui-elements/index.js +1 -0
- package/dist/react-sdk/domain-application-context/BackendDataProvider.js +1 -1
- package/dist/react-sdk/domain-application-context/FrontendDataProvider.js +1 -1
- package/dist/react-sdk/domain-application-context/PublishedDataProvider.js +1 -1
- package/dist/react-sdk/domain-context/common-hooks/use-domain-context.d.ts +4 -3
- package/dist/react-sdk/domain-context/common-hooks/use-state-validity.d.ts +6 -1
- package/dist/react-sdk/domain-context/common-hooks/use-state-validity.js +1 -1
- package/dist/react-sdk/domain-context/system-hooks/hover-hooks.d.ts +2 -2
- package/dist/react-sdk/domain-controls/ChildEntityCardSelector.d.ts +2 -3
- package/dist/react-sdk/domain-controls/ChildEntityListSelector.d.ts +2 -3
- package/dist/react-sdk/domain-controls/ChildEntityToggleSelector.d.ts +2 -3
- package/dist/react-sdk/domain-controls/hooks/use-cook-replace-recipes.d.ts +3 -3
- package/dist/react-sdk/elements/PhoenixEntityElement.js +1 -1
- package/dist/react-sdk/elements/PhoenixLayoutElement.js +1 -1
- package/dist/react-sdk/index.d.ts +3 -0
- package/dist/react-sdk/index.js +1 -1
- package/dist/react-sdk/preset-selection/PresetSelectionProvider.js +1 -0
- package/dist/react-sdk/preset-selection/index.d.ts +1 -0
- package/dist/react-sdk/preset-selection/index.js +1 -0
- package/dist/react-sdk/provider-slots/ConfiguratorProviderSlotHost.d.ts +11 -0
- package/dist/react-sdk/provider-slots/ConfiguratorProviderSlotHost.js +1 -0
- package/dist/react-sdk/provider-slots/configurator-provider-slot.d.ts +24 -0
- package/dist/react-sdk/provider-slots/configurator-provider-slot.js +1 -0
- package/dist/react-sdk/provider-slots/create-configurator-provider-slot.d.ts +5 -0
- package/dist/react-sdk/provider-slots/create-configurator-provider-slot.js +1 -0
- package/dist/react-sdk/provider-slots/index.d.ts +3 -0
- package/dist/react-sdk/provider-slots/index.js +1 -0
- package/dist/react-sdk/session/SessionServiceProvider.d.ts +5 -0
- package/dist/react-sdk/session/SessionServiceProvider.js +1 -1
- package/dist/ui-sdk/components/numerical-input/InputField.d.ts +2 -0
- package/dist/ui-sdk/components/numerical-input/InputField.js +1 -1
- package/dist/ui-sdk/components/numerical-input/NumericalInput.d.ts +2 -2
- package/dist/ui-sdk/components/numerical-input/Slider.d.ts +3 -1
- package/dist/ui-sdk/components/numerical-input/Slider.js +1 -1
- package/dist/ui-sdk/icons/__generated/ChatCircleText.d.ts +3 -0
- package/dist/ui-sdk/icons/__generated/ChatCircleText.js +1 -0
- package/dist/ui-sdk/icons/__generated/Microphone.d.ts +3 -0
- package/dist/ui-sdk/icons/__generated/Microphone.js +1 -0
- package/dist/ui-sdk/icons/__generated/MicrophoneSlash.d.ts +3 -0
- package/dist/ui-sdk/icons/__generated/MicrophoneSlash.js +1 -0
- package/dist/ui-sdk/icons/__generated/Paperclip.d.ts +3 -0
- package/dist/ui-sdk/icons/__generated/Paperclip.js +1 -0
- package/dist/ui-sdk/icons/__generated/PencilSimpleLine.d.ts +3 -0
- package/dist/ui-sdk/icons/__generated/PencilSimpleLine.js +1 -0
- package/dist/ui-sdk/icons/__generated/SpeakerHigh.d.ts +3 -0
- package/dist/ui-sdk/icons/__generated/SpeakerHigh.js +1 -0
- package/dist/ui-sdk/icons/__generated/SpeakerSlash.d.ts +3 -0
- package/dist/ui-sdk/icons/__generated/SpeakerSlash.js +1 -0
- package/dist/ui-sdk/icons/__generated/Stop.d.ts +3 -0
- package/dist/ui-sdk/icons/__generated/Stop.js +1 -0
- package/dist/ui-sdk/icons/__generated/index.d.ts +16 -0
- package/dist/ui-sdk/icons/__generated/index.js +1 -1
- package/dist/ui-sdk/icons/icons-registry.js +1 -1
- package/dist/ui-sdk/theme/types.d.ts +0 -4
- package/dist/watch/glob-matcher.d.ts +4 -4
- package/dist/watch/glob-matcher.js +1 -1
- package/dist/watch/watch.d.ts +4 -4
- package/dist/watch/watch.js +1 -1
- package/dist/webhook/builders/auth-handler-builder.d.ts +3 -0
- package/dist/webhook/builders/auth-handler-builder.js +1 -1
- package/dist/webhook/builders/common.d.ts +4 -2
- package/package.json +10 -4
- package/schema/domain-spec.json +88 -4
- package/dist/application-spec/caching/runtime-reference-store.js +0 -1
- package/dist/application-spec/generate-application/code/templates/skills/phoenix-cli-skill.d.ts +0 -1
- package/dist/application-spec/generate-application/code/templates/skills/phoenix-cli-skill.js +0 -1
- package/dist/application-spec/generate-application/code/templates/skills/phoenix-create-configurator-skill.d.ts +0 -3
- package/dist/application-spec/generate-application/code/templates/skills/phoenix-create-configurator-skill.js +0 -166
- package/dist/application-spec/generate-application/code/templates/skills/phoenix-feedback-skill.d.ts +0 -1
- package/dist/application-spec/generate-application/code/templates/skills/phoenix-feedback-skill.js +0 -54
- package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.d.ts +0 -1
- package/dist/application-spec/generate-application/code/templates/skills/phoenix-review-skill.js +0 -115
- package/dist/application-spec/generate-application/code/templates/skills/phoenix-skill.js +0 -1
- package/dist/application-spec/generate-application/code/templates/skills/phoenix-variants-skill.d.ts +0 -1
- package/dist/application-spec/generate-application/code/templates/skills/phoenix-variants-skill.js +0 -6
- package/dist/application-spec/generate-application/implementations/phx-application-types.js +0 -1
- package/dist/application-spec/generate-application/implementations/phx-domain.js +0 -1
- package/dist/application-spec/generate-application/implementations/phx-model.js +0 -1
- package/dist/application-spec/generate-application/runtime/admin-runtime/admin-model-runtime.js +0 -1
- package/dist/application-spec/generate-application/runtime/admin-runtime/admin-runtime.js +0 -1
- package/dist/application-spec/generate-application/runtime/admin-runtime/admin-spec-runtime.js +0 -1
- package/dist/application-spec/generate-application/runtime/application-runtime.js +0 -1
- package/dist/application-spec/generate-application/runtime/application-spec-slice.js +0 -1
- package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-model-runtime.js +0 -1
- package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-runtime.js +0 -1
- package/dist/application-spec/generate-application/runtime/configurator-runtime/configurator-spec-runtime.js +0 -1
- package/dist/application-spec/generate-application/runtime/create-application.js +0 -1
- package/dist/application-spec/generate-application/runtime/factory-data/recipe-defaults.js +0 -1
- package/dist/application-spec/generate-application/runtime/factory-data/static-violations.js +0 -1
- package/dist/application-spec/generate-application/runtime/generate-runtime-instance.js +0 -1
- package/dist/application-spec/generate-application/runtime/index.d.ts +0 -8
- package/dist/application-spec/generate-application/runtime/index.js +0 -1
- package/dist/application-spec/generate-application/runtime/migrations/migration-runtime.js +0 -1
- package/dist/application-spec/generate-application/runtime/sections/build-sdk-optic.js +0 -1
- package/dist/application-spec/generate-application/runtime/sections/build-user-bound-optic.d.ts +0 -8
- package/dist/application-spec/generate-application/runtime/sections/build-user-bound-optic.js +0 -1
- package/dist/application-spec/generate-application/runtime/sections/expression-runtime.js +0 -1
- package/dist/application-spec/generate-application/runtime/sections/generate-memo-eval-plan-runtime.js +0 -1
- package/dist/application-spec/generate-application/runtime/sections/index.d.ts +0 -10
- package/dist/application-spec/generate-application/runtime/sections/index.js +0 -1
- package/dist/application-spec/generate-application/runtime/spec-runtime.js +0 -1
- package/dist/application-spec/generate-application/runtime-spec/index.d.ts +0 -5
- package/dist/application-spec/generate-application/runtime-spec/index.js +0 -1
- package/dist/configurator/application-runtime/extensions/systems/assistant-system/browser-details.d.ts +0 -17
- package/dist/configurator/application-runtime/extensions/systems/assistant-system/browser-details.js +0 -1
- package/dist/configurator/configurator-context/PresetSelectionProvider.js +0 -1
- package/dist/configurator/ui/assistant/theme.d.ts +0 -2
- package/dist/configurator/ui/assistant/theme.js +0 -1
- package/dist/configurator/ui/configurator-layout/universal/ExportingOverlay.js +0 -1
- package/dist/domain/available-system-components.d.ts +0 -11
- package/dist/domain/available-system-components.js +0 -1
- package/dist/domain/core/action/action-factory.d.ts +0 -11
- package/dist/domain/domain-builder.js +0 -1
- package/dist/domain/domain-runtime/spec/module-checks/find-assistant-form-element-errors.js +0 -1
- package/dist/domain/domain-runtime/spec/module-checks/index.js +0 -1
- package/dist/domain/domain-runtime/spec/module-checks/merge-expression-modules.js +0 -1
- package/dist/domain/domain-runtime/spec/module-checks/project-modules.js +0 -1
- package/dist/domain/domain-runtime/spec/module-checks/resolve-imported-transformers.js +0 -1
- package/dist/phoenix/services/phoenix-application.d.ts +0 -21
- package/dist/phoenix/services/phoenix-application.js +0 -1
- /package/dist/{application-spec/generate-application/runtime/spec-code/spec-code-module.js → configurator/application-runtime/extensions/systems/assistant-system/assistant-annotation.js} +0 -0
- /package/dist/{domain/application/assistant/assistant-manifest.js → configurator/application-runtime/extensions/systems/assistant-system/assistant-image-view.js} +0 -0
- /package/dist/configurator/{configurator-context → pages/provider-slots}/ConfiguratorResponsiveProvider.d.ts +0 -0
- /package/dist/configurator/{configurator-context → pages/provider-slots}/ConfiguratorResponsiveProvider.js +0 -0
- /package/dist/domain/{core/action → domain-runtime}/action-factory.js +0 -0
- /package/dist/domain/spec/{enhanced-json-value.js → enhanced-json/enhanced-json-value.js} +0 -0
- /package/dist/domain/{domain-runtime → spec}/errors/implementation-error-collector.d.ts +0 -0
- /package/dist/domain/{domain-runtime → spec}/errors/implementation-error-collector.js +0 -0
- /package/dist/domain/{domain-runtime → spec}/errors/implementation-error.d.ts +0 -0
- /package/dist/domain/{domain-runtime → spec}/errors/implementation-error.js +0 -0
- /package/dist/domain/{domain-runtime → spec}/errors/implementation-errors.d.ts +0 -0
- /package/dist/domain/{domain-runtime → spec}/errors/implementation-errors.js +0 -0
- /package/dist/domain/{domain-runtime → spec}/errors/index.d.ts +0 -0
- /package/dist/domain/{domain-runtime → spec}/errors/index.js +0 -0
- /package/dist/domain/{domain-runtime → spec}/errors/to-implementation-errors.d.ts +0 -0
- /package/dist/domain/{domain-runtime → spec}/errors/to-implementation-errors.js +0 -0
- /package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/element-registration.js +0 -0
- /package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/handler-registration.d.ts +0 -0
- /package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/handler-registration.js +0 -0
- /package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/resolve-action-modules.js +0 -0
- /package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/resolve-component-optic-modules.js +0 -0
- /package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/resolve-expression-modules.js +0 -0
- /package/dist/domain/{domain-runtime/spec/module-checks → spec/modules}/resolve-invariant-modules.js +0 -0
- /package/dist/{application-spec/generate-application/implementations → domain/spec/phx}/phx-domain.d.ts +0 -0
- /package/dist/{application-spec/generate-application/implementations → domain/spec/phx}/phx.js +0 -0
- /package/dist/{application-spec/generate-application → domain/spec}/runtime/admin-runtime/states-runtime.js +0 -0
- /package/dist/{application-spec/generate-application → domain/spec}/runtime/configurator-runtime/states-runtime.js +0 -0
- /package/dist/{application-spec/generate-application/runtime/sections → domain/spec/runtime/expressions}/reflection-constants-runtime.js +0 -0
- /package/dist/{application-spec/generate-application → domain/spec}/runtime/factory-data/factory-data-runtime.js +0 -0
- /package/dist/{application-spec/generate-application → domain/spec}/runtime/factory-data/index.d.ts +0 -0
- /package/dist/{application-spec/generate-application → domain/spec}/runtime/factory-data/index.js +0 -0
- /package/dist/{application-spec/generate-application → domain/spec}/runtime/migrations/index.d.ts +0 -0
- /package/dist/{application-spec/generate-application → domain/spec}/runtime/migrations/index.js +0 -0
- /package/dist/{application-spec/generate-application/runtime/sections → domain/spec/runtime/optics}/component-optic.js +0 -0
- /package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/actions-runtime.js +0 -0
- /package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/assistant-runtime.js +0 -0
- /package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/data-runtime.js +0 -0
- /package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/preset-runtime.js +0 -0
- /package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/theme-runtime.js +0 -0
- /package/dist/{application-spec/generate-application → domain/spec}/runtime/sections/transformers-runtime.js +0 -0
- /package/dist/{application-spec/generate-application → domain/spec}/runtime/spec-code/index.d.ts +0 -0
- /package/dist/{application-spec/generate-application → domain/spec}/runtime/spec-code/index.js +0 -0
- /package/dist/{application-spec/generate-application → domain/spec}/runtime/spec-code/resolve-spec-code.js +0 -0
- /package/dist/{application-spec/generate-application → domain/spec}/runtime/spec-code/spec-code-module.d.ts +0 -0
- /package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/decode-runtime-spec.d.ts +0 -0
- /package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/decode-runtime-spec.js +0 -0
- /package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/encode-runtime-spec.d.ts +0 -0
- /package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/encode-runtime-spec.js +0 -0
- /package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/encoded-runtime-spec.d.ts +0 -0
- /package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/encoded-runtime-spec.js +0 -0
- /package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/runtime-spec.js +0 -0
- /package/dist/{application-spec/generate-application → domain/spec}/runtime-spec/spec-code-id.js +0 -0
- /package/dist/domain/{application/assistant/assistant-resolved-manifest.js → spec/sections/assistant/assistant-manifest.js} +0 -0
- /package/dist/domain/{application → spec/sections}/assistant/form/assistant-form-element-name.d.ts +0 -0
- /package/dist/domain/{application → spec/sections}/assistant/form/assistant-form-element-name.js +0 -0
- /package/dist/domain/{application → spec/sections}/assistant/form/assistant-form-elements.d.ts +0 -0
- /package/dist/domain/{application → spec/sections}/assistant/form/assistant-form-elements.js +0 -0
- /package/dist/domain/{application → spec/sections}/assistant/form/assistant-resource-path.d.ts +0 -0
- /package/dist/domain/{application → spec/sections}/assistant/form/assistant-resource-path.js +0 -0
- /package/dist/domain/{application → spec/sections}/assistant/form/index.d.ts +0 -0
- /package/dist/domain/{application → spec/sections}/assistant/form/index.js +0 -0
- /package/dist/phoenix/{commands → services/deployment}/generated-env-markers.d.ts +0 -0
- /package/dist/phoenix/{commands → services/deployment}/generated-env-markers.js +0 -0
- /package/dist/{configurator/configurator-context → react-sdk/preset-selection}/PresetSelectionProvider.d.ts +0 -0
package/dist/application-spec/generate-application/code/templates/skills/features/localization.js
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import{createPhoenixFeatureGuide as e}from"../guide.js";let a=`Read when the configurator needs several languages, when adding user-facing text to such a project, or when a PDF or email must follow the configurator user's language.
|
|
2
|
+
|
|
3
|
+
Enable localization when the client sells in several languages; take them from the product definition, and ask when it names none. With one language and none planned, plain strings are fine. When more are likely, make every text translatable from the start: converting later touches every label, message and template.`,t=`A table sold in English and German: option labels in the spec, an invariant message and a picker in a custom layout.
|
|
4
|
+
|
|
5
|
+
\`\`\`yaml
|
|
6
|
+
# spec/application.yaml
|
|
7
|
+
availableLocales: [en, de]
|
|
8
|
+
textLanguages: [en, de]
|
|
9
|
+
|
|
10
|
+
# spec/table.yaml
|
|
11
|
+
invariants:
|
|
12
|
+
Table:
|
|
13
|
+
glassLength:
|
|
14
|
+
types: [glassTooLong]
|
|
15
|
+
components:
|
|
16
|
+
Table:
|
|
17
|
+
applicationConfig:
|
|
18
|
+
main:
|
|
19
|
+
availableLocales: [en, de] # what users can pick; add it to an existing instance
|
|
20
|
+
attributeSelection:
|
|
21
|
+
finish:
|
|
22
|
+
value:
|
|
23
|
+
$bind: finish
|
|
24
|
+
options:
|
|
25
|
+
- value: oak
|
|
26
|
+
label:
|
|
27
|
+
$msg: Oak
|
|
28
|
+
- value: glass
|
|
29
|
+
label:
|
|
30
|
+
$msg: Glass
|
|
31
|
+
\`\`\`
|
|
32
|
+
|
|
33
|
+
\`\`\`ts
|
|
34
|
+
// src/invariants/table.ts
|
|
35
|
+
import { msg } from '@lingui/core/macro'
|
|
36
|
+
|
|
37
|
+
const MAX_GLASS_LENGTH = 2000
|
|
38
|
+
|
|
39
|
+
export default phx.domain.implementCustomInvariants({
|
|
40
|
+
Table: {
|
|
41
|
+
glassLength: table =>
|
|
42
|
+
table.finish === 'glass' && table.length > MAX_GLASS_LENGTH
|
|
43
|
+
? [
|
|
44
|
+
{
|
|
45
|
+
type: 'glassTooLong',
|
|
46
|
+
severity: 'fatal',
|
|
47
|
+
message: msg\`Glass tops are available up to \${MAX_GLASS_LENGTH} mm.\`,
|
|
48
|
+
},
|
|
49
|
+
]
|
|
50
|
+
: [],
|
|
51
|
+
},
|
|
52
|
+
})
|
|
53
|
+
\`\`\`
|
|
54
|
+
|
|
55
|
+
\`\`\`tsx
|
|
56
|
+
// src/elements/_shared/LanguagePicker.tsx, rendered by the project's ConfiguratorLayout
|
|
57
|
+
import { msg } from '@lingui/core/macro'
|
|
58
|
+
import { MenuItem, TextField } from '@mui/material'
|
|
59
|
+
|
|
60
|
+
const LANGUAGE = msg\`Language\`
|
|
61
|
+
|
|
62
|
+
export const LanguagePicker = () => {
|
|
63
|
+
const label = phx.frontend.useLocalizable(LANGUAGE)
|
|
64
|
+
const { locales, locale, setLocale, available } = phx.frontend.useLocaleSwitch()
|
|
65
|
+
|
|
66
|
+
if (!available) {
|
|
67
|
+
return null
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return (
|
|
71
|
+
<TextField select size="small" label={label} value={locale} onChange={event => setLocale(event.target.value)}>
|
|
72
|
+
{locales.map(option => (
|
|
73
|
+
<MenuItem key={option.locale} value={option.locale}>
|
|
74
|
+
{option.displayName}
|
|
75
|
+
</MenuItem>
|
|
76
|
+
))}
|
|
77
|
+
</TextField>
|
|
78
|
+
)
|
|
79
|
+
}
|
|
80
|
+
\`\`\`
|
|
81
|
+
|
|
82
|
+
After \`pnpm phoenix sync\`, translate the texts in \`src/locales/de/messages.po\`, keeping the placeholder:
|
|
83
|
+
|
|
84
|
+
\`\`\`po
|
|
85
|
+
msgid "Glass tops are available up to {MAX_GLASS_LENGTH} mm."
|
|
86
|
+
msgstr "Glasplatten gibt es bis {MAX_GLASS_LENGTH} mm L\xe4nge."
|
|
87
|
+
\`\`\``;export const generatePhoenixLocalizationFeature=()=>e({path:"features/localization.md",title:"Localization",summary:"Languages, translatable spec and TypeScript texts, the language switch, the webhook's language, catalogs and formatting; read when the configurator must work in more than one language or a text must be translatable.",whenToUse:a,capabilities:"### Enable languages\n\nThree lists, each with its own job:\n\n- **`availableLocales`** in `spec/application.yaml` (default `[en]`) — the languages with a project catalog, `src/locales/<locale>/messages.po`.\n- **`availableLocales` of the root entity's `applicationConfig`** — the languages users can pick. Without it the switch offers English only and the default toolbar has no language button. Keep it within the top-level list: picking another locale activates its fallback.\n- **`textLanguages`** in `spec/application.yaml` — the languages Admin edits multilingual texts in, and the fallback order of `$lang` values.\n\nThe configurator starts in the embedding page's `locale` attribute or property (English when unset), not the first listed locale. A page locale outside `availableLocales` falls back to a listed one: a regional locale to its listed base language (`de-AT` to `de`), anything else to `en`, or to the first listed locale when `en` is not listed. List a regional locale the site sets when its texts should differ from the base language; its empty entries compile from the base language. In a language the SDK lacks, built-in texts stay English.\n\n### Spec texts: `$msg` or `$lang`\n\n- **`$msg`** — UI text authored in the spec: titles, labels, hints, static invariant messages, constants. The text is its own id, so rewording drops its translations; add a stable `$msgId: 'finish.title'` to texts likely to change.\n- **`$lang`** — data carrying its own translations: Admin content, published data, imports. Inline `$lang` in the spec suits data the client supplies translated.\n- A plain string shows unchanged in every language.\n- An expression holding `$msg` or `$lang` declares `$ref: phx:Localizable`; for `$msg`, `type: string` reports `EXPRESSION_VALUE_TYPE_MISMATCH`.\n- `$lang` resolves to the active locale, then each `textLanguages` entry, then `en`, else an empty string. List every market language there, primary first.\n\n### TypeScript texts\n\n- `msg` from `@lingui/core/macro` creates a message descriptor: use it for invariant messages, expression results the UI shows and labels passed to components. `` msg`Up to ${max} mm` `` keeps a placeholder for translators, `msg({ id, message })` fixes the id, `plural` handles counts.\n- Expressions, invariants and transformers run without a locale, on the server too: return descriptors or `$lang`, never translated strings or formatted numbers. [Violations](state/violations.md) covers hint texts formatted per change.\n- In React, render content with `<Trans>` from `@lingui/react/macro`. Where a string is needed (an attribute, a string-only prop, a spec text, a descriptor):\n - `phx.frontend.useLocalizable(text)` returns one text in the active language;\n - `phx.frontend.useResolveLocalizable()` returns `resolve(text)` for lists, loops and conditional texts.\n- Both accept a string, a descriptor or `$lang`, apply the `textLanguages` fallback and re-render on a language change. Resolve inside components, never at module scope.\n\n### Language switch\n\n- The default toolbar shows a language button, and a menu action on phones, when the `applicationConfig` list has several locales. A configured `toolbar` lists `languageToolbarButton` and `languageMenuAction` itself; [Toolbar actions](custom-layout/toolbar-actions.md) covers toolbars a layout renders.\n- `phx.frontend.useLocaleSwitch()` returns `{ locales, locale, setLocale, available }`: the `applicationConfig` locales as `{ locale, displayName }`, each named in its own language; the active locale; a setter; and whether there is a choice. Use it for your own picker and wherever code needs the active locale.\n\n### Webhooks\n\n- The language reaches the webhook only if the finalize handler sends it: `apiClient.finalize(configurationId, finalizationUuid, finalizeData, locale, frontendData)`, with `locale` from `phx.frontend.useLocaleSwitch()`. Without it, PDFs and emails come out in English. [Finalization](../processes/finalization.md) owns the handler.\n- Tasks get `ctx.resolveLocalizable(text)`, bound to that locale and `textLanguages`, and `ctx.i18n`. The PDF and email builders resolve every localizable input; templates use `<Trans>`, and `HtmlHelpers.Localized` from `@salsita-ai/sdk/webhook` for domain texts.\n- `.withLocale('de')` renders one PDF or email in another language. Plain payloads (CSV, HTTP) need `ctx.resolveLocalizable` on each text.\n\n### Catalogs and translation\n\n- `pnpm phoenix sync` and `pnpm phoenix build` extract every `msg`, `<Trans>` and `$msg` into the PO files and compile the TypeScript catalogs.\n- `pnpm phoenix dev` only creates missing catalogs at startup; with `--withLingui` (or `WITH_LINGUI=true`) it extracts and compiles on every change. Without it a new text stays English until the next sync. Restart dev after changing `availableLocales`.\n- Translate in the `msgstr` entries of `src/locales/<locale>/messages.po`, keeping placeholders such as `{max}`. Never edit the compiled `messages.ts` ([CLI core](../core/cli.md)).\n- An empty `msgstr` compiles from the fallback chain (`de-AT` → `de` → `en`): the text shows English, without an error. Before a handover, search for empty `msgstr \"\"` entries after the header.\n- When you translate yourself, tell the client which languages need a native speaker's review and record them as provisional.\n\n### Numbers and currency\n\n- `phx.frontend.useRootEntityPrice()` formats the root's `price` component for the active locale in its `currency` (`USD` when unset), and returns `null` while the root has none; choose the currency per market in the spec.\n- Format other numbers, dates and lists with `Intl` and the active locale: `useLocaleSwitch().locale` in React, `ctx.i18n.locale` in webhooks.",example:t,documentation:"Read with `pnpm phoenix docs -r <path>`:\n\n- `docs/phoenix/localization.mdx` — enabling languages, choosing the language, `$msg`, `$msgId`, `$lang` and its sources, the hooks and server-side translation.\n- `docs/phoenix/webhooks.mdx` — localized PDF and email builders and `.withLocale`.\n- `docs/other-features/violation-messages.mdx` — translated violation hints with nested labels.\n- `docs/other-features/currency.mdx` — the currency chosen from session data, one price component per currency filtered with `active`.\n- `docs/integrations/webcomponent-api/basics.mdx` — the page's `locale` property.",phxMembers:["frontend.useResolveLocalizable","frontend.useLocalizable","frontend.useLocaleSwitch","frontend.useRootEntityPrice"]});
|
package/dist/application-spec/generate-application/code/templates/skills/features/scene-objects.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import{createPhoenixFeatureGuide as e}from"../guide.js";let t=`A worktop with a cut-out per basin, as a scene element. The geometry is rebuilt only when the length or the cut-outs change; React Three Fiber releases the old one.
|
|
2
|
+
|
|
3
|
+
\`\`\`yaml
|
|
4
|
+
# spec/domain.yaml, components of Washtable
|
|
5
|
+
sceneEntityObject:
|
|
6
|
+
worktop:
|
|
7
|
+
name: 'Worktop'
|
|
8
|
+
sceneEntityObjectProperties:
|
|
9
|
+
worktop:
|
|
10
|
+
offsetY: 850
|
|
11
|
+
\`\`\`
|
|
12
|
+
|
|
13
|
+
\`\`\`tsx
|
|
14
|
+
// src/elements/Worktop.tsx
|
|
15
|
+
import { useMemo } from 'react'
|
|
16
|
+
import { Path, Shape } from 'three'
|
|
17
|
+
|
|
18
|
+
const NO_CUT_OUTS: readonly number[] = []
|
|
19
|
+
|
|
20
|
+
export default phx.frontend.createCustomPhoenixEntityElement('Worktop', ({ entityId }) => {
|
|
21
|
+
const entity = phx.frontend.useCommittedState().entities.find(e => e.id === entityId)
|
|
22
|
+
const washtable = entity?.type === 'Washtable' ? entity : undefined
|
|
23
|
+
const length = washtable?.length ?? 1200
|
|
24
|
+
const cutOuts = washtable?.basinPositions ?? NO_CUT_OUTS
|
|
25
|
+
|
|
26
|
+
const shape = useMemo(() => {
|
|
27
|
+
const top = new Shape().moveTo(0, 0).lineTo(length, 0).lineTo(length, 460).lineTo(0, 460).closePath()
|
|
28
|
+
for (const x of cutOuts) {
|
|
29
|
+
top.holes.push(new Path().absellipse(x, 230, 180, 140, 0, Math.PI * 2, false, 0))
|
|
30
|
+
}
|
|
31
|
+
return top
|
|
32
|
+
}, [length, cutOuts])
|
|
33
|
+
|
|
34
|
+
return (
|
|
35
|
+
<mesh rotation-x={-Math.PI / 2} castShadow receiveShadow>
|
|
36
|
+
<extrudeGeometry args={[shape, { depth: 12, bevelEnabled: false }]} />
|
|
37
|
+
<meshPhysicalMaterial color="#f1ede4" roughness={0.35} clearcoat={0.3} />
|
|
38
|
+
</mesh>
|
|
39
|
+
)
|
|
40
|
+
})
|
|
41
|
+
\`\`\`
|
|
42
|
+
|
|
43
|
+
A new finish changes only the material's color; dragging a basin changes \`basinPositions\`, which a cut-out needs, so that rebuild is real.`;export const generatePhoenixSceneObjectsFeature=()=>e({path:"features/scene-objects.md",title:"Scene objects built in code",summary:"Geometry built in code instead of loaded from a model, and keeping its rebuilds cheap; read when part of the product or its setting is generated.",whenToUse:"Read when part of the product or its setting is built in code instead of loaded from a model: geometry that follows the configuration, such as a worktop with cut-outs where the basins sit, a shelf that grows with its width or a room whose walls follow the plan.\n\nPrefer a model when one exists: `sceneEntityRemoteObject` loads a GLB, and `sceneEntityObjectProperties` positions it and binds its transforms to state. Build in code what a model cannot express.",capabilities:"### Three ways to build it\n\n- **A scene element** — usually the best fit. Name an element in an entity's `sceneEntityObject` instance, `name: 'Worktop'`, and register it in `src/elements/` with `phx.frontend.createCustomPhoenixEntityElement('Worktop', ({ entityId }) => …)`; [Custom controls](domain-controls/custom-controls.md) has the registration rules. It returns React Three Fiber JSX, meshes with their geometries and materials, and reads state through the hooks like any entity element. React Three Fiber releases what it created when the element unmounts or a geometry's `args` change.\n- **A whole custom entity** — `customSceneEntity` with `name` replaces the entity's entire representation by the element. The entity's remote objects, object properties, materials, decals and clips are then ignored; child entities still render.\n- **A three.js object** — attach `sceneEntityObjectComponent` from `@salsita-ai/sdk/domain` with `phx.domain.attachComponent` in `src/components/`, its state `{ object }` built in `memoEval`. The SDK renders the object as given and never disposes it.\n\nFor the first and third, `sceneEntityObjectProperties` of the same instance still positions, hides and highlights the object.\n\n### Rebuild only when the shape changes\n\nA rebuild costs geometry, triangulation and an upload to the GPU, and a slider or a drag can ask for one every frame.\n\n- Rebuild when an input that changes the shape changes, such as a length or a cut-out, and nothing else: memoize the geometry on those inputs, `useMemo` in an element or the `memoEval` dependencies of an attached object.\n- Move, rotate or recolor the existing object for a position or a finish, through `sceneEntityObjectProperties` bindings or the material, instead of rebuilding it.\n- A three.js object you replace keeps its GPU memory until you call `dispose()` on its geometries, materials and textures, so dispose what a rebuild replaces. Reuse a texture across rebuilds rather than cloning it and setting `needsUpdate` each time, which uploads it again.\n\n### Shadows and effects\n\n- On a three.js object, `sceneEntityObjectProperties` sets `castShadow` and `receiveShadow` on every child from the spec, `false` when unset, so flags set in code are overwritten: set them in the spec. A scene element sets them on its own meshes.\n- Soft shadows on large surfaces, outlines and other effects cost every frame; keep those whose result the client sees.",example:t,documentation:"Read with `pnpm phoenix docs -r <path>`:\n\n- `docs/3d-scene/rendering/basic.mdx` — loaded models, object properties and three.js objects attached in code.\n- `docs/3d-scene/rendering/scene-entity-object.mdx` — the `sceneEntityObject` component and its forms.\n- `docs/3d-scene/rendering/custom-entity.mdx` — `customSceneEntity` and a complete React Three Fiber element.\n- `docs/3d-scene/rendering/soft-shadows.mdx` — the canvas, object and light settings shadows need.\n- The **Performance** category — what costs per frame and per change.",phxMembers:[]});
|
package/dist/application-spec/generate-application/code/templates/skills/features/state/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './state.js';
|
package/dist/application-spec/generate-application/code/templates/skills/features/state/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export*from"./state.js";
|
package/dist/application-spec/generate-application/code/templates/skills/features/state/slices.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import{createPhoenixFeatureGuide as e}from"../../guide.js";let t=`A cabinet label follows a drag frame by frame, while the order summary ignores previews and rejected changes. The label returns a tuple of numbers, so it re-renders only when one changes; returning \`cabinet.$shelves\` would re-render it on every pointer move.
|
|
2
|
+
|
|
3
|
+
\`\`\`tsx
|
|
4
|
+
// src/elements/CabinetWidthLabel.tsx
|
|
5
|
+
import { Trans } from '@lingui/react/macro'
|
|
6
|
+
import { Typography } from '@mui/material'
|
|
7
|
+
|
|
8
|
+
export default phx.frontend.createCustomPhoenixEntityElement('CabinetWidthLabel', ({ entityId }) => {
|
|
9
|
+
if (!phx.domain.model.Cabinet.isId(entityId)) {
|
|
10
|
+
throw new Error('CabinetWidthLabel is attached to a Cabinet only.')
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
const [width, shelves] = phx.frontend.useRenderedEntitySelector(
|
|
14
|
+
entityId,
|
|
15
|
+
cabinet => [cabinet.width, cabinet.$shelves.length] as const,
|
|
16
|
+
[]
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
return (
|
|
20
|
+
<Typography variant="caption">
|
|
21
|
+
<Trans>
|
|
22
|
+
{width} mm, {shelves} shelves
|
|
23
|
+
</Trans>
|
|
24
|
+
</Typography>
|
|
25
|
+
)
|
|
26
|
+
})
|
|
27
|
+
\`\`\`
|
|
28
|
+
|
|
29
|
+
\`\`\`tsx
|
|
30
|
+
// src/_shared/OrderSummary.tsx: committed only, so a dragged-across position never shows a price
|
|
31
|
+
import { Trans } from '@lingui/react/macro'
|
|
32
|
+
import { Typography } from '@mui/material'
|
|
33
|
+
|
|
34
|
+
export const OrderSummary = () => {
|
|
35
|
+
const [cabinets, total] = phx.frontend.useRootEntitySelector(
|
|
36
|
+
kitchen => [kitchen.$cabinets.length, kitchen.$totalPrice] as const,
|
|
37
|
+
[]
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
return (
|
|
41
|
+
<Typography>
|
|
42
|
+
<Trans>
|
|
43
|
+
{cabinets} cabinets, {total}
|
|
44
|
+
</Trans>
|
|
45
|
+
</Typography>
|
|
46
|
+
)
|
|
47
|
+
}
|
|
48
|
+
\`\`\``;export const generatePhoenixStateSlicesFeature=()=>e({path:"features/state/slices.md",title:"State slices",summary:"The rendered, committed and potentially invalid slices and the hooks that read them; read when UI shows configuration state, such as a live label during a drag or a price summary.",whenToUse:"Read when UI shows configuration state: choosing between a live preview and the committed configuration, picking a reading hook, or keeping an element from re-rendering on every drag frame. Writing changes belongs to [Updates and dry runs](updates.md).",capabilities:"### The three slices\n\nThe store keeps three slices. Each emits a state emission `{ kind, state, validity }`; an update emission adds `previousState` and `updates`.\n\n- **`rendered`** — every valid state, committed or staged: gesture previews and hover included. The scene renders from it. An invalid staged state is not emitted, so the preview stays at the last valid one.\n- **`committed`** — every valid committed state: what is saved, what undo records and what finalizing checks.\n- **`potentiallyInvalid`** — every attempted commit, rejected ones included. No reading hook targets it; configurator messages report its rejections ([Messages](../custom-layout/messages.md)).\n\n`state` is `{ rootEntityId, rootEntityType, entities, ephemeralRecords }`:\n\n- `entities` are raw entities: own fields only, no `$` expressions or relations. Read the `$` entity through the entity hooks below.\n- `ephemeralRecords` hold navigation, view, tool, selection, hover and drag state. They are never saved, and a commit that changes only them makes no undo step. Read them with the hooks of [Application states](../application-states/index.md), not by scanning records.\n\n### Choose a slice\n\n- **Rendered** — what must follow a gesture while it happens: a dimension label during a drag, an in-scene overlay, a live preview of the value being changed.\n- **Committed** — what must not flicker with previews or show a state nobody accepted: price, summaries, step completion, enabling Next or Finalize, analytics, data sent to a server.\n- Never mix them in one value: a price computed from rendered state shows prices of positions a drag only passed through.\n\n### Reading hooks\n\nEach pair reads the committed slice first, the rendered slice second:\n\n- `phx.frontend.useStoreSelector(select, deps)` \xb7 `phx.frontend.useRenderedSelector(select, deps)` — `select(emission)` returns any value. An optional third argument `false` pauses updates, for hidden UI.\n- `phx.frontend.useEntitySelector(id, select, deps)` \xb7 `phx.frontend.useRenderedEntitySelector(id, select, deps)` — `select($entity, emission)` for one entity.\n- `phx.frontend.useRootEntitySelector(select, deps)` \xb7 `phx.frontend.useRenderedRootEntitySelector(select, deps)` — the same for the root entity.\n- `phx.frontend.useEntityState(id)` — the committed `$` entity. It takes the id only and has no rendered twin on `phx.frontend`; use `useRenderedEntitySelector`.\n- `phx.frontend.useRootEntityState()` \xb7 `phx.frontend.useRootEntityRenderedState()` — the root `$` entity.\n- `phx.frontend.useRootEntityId()` \xb7 `phx.frontend.useRootEntityRenderedId()` — the root entity's id.\n- `phx.frontend.useCommittedState()` \xb7 `phx.frontend.useRenderedState()` — the whole `state`.\n- `phx.frontend.useCommittedSlice()` \xb7 `phx.frontend.useRenderedSlice()` — the whole emission, `validity` included. Neither takes an argument.\n- `phx.frontend.useStoreSelector$(select, deps)` \xb7 `phx.frontend.useRenderedSelector$(select, deps)` — an RxJS observable of the selected value, for work outside rendering such as a debounced request in an effect. It replays the current value and emits for every emission, equal or not: add `distinctUntilChanged()`.\n\nThe entity hooks throw for an id the state does not contain: take ids from the slice you read, and drop an id once its entity is deleted. In event handlers and async flows, read `storeSystem.stateSlices.committed.value.state` from `phx.frontend.useDomain()` when the code runs; a value captured during render may be stale by then.\n\n### Keep re-renders narrow\n\n- A selector runs for every emission of its slice; the component re-renders only when the result changes. Results compare shallowly: a primitive by value, an object or array member by member, each member by reference.\n- Return primitives, ids, counts or tuples of them. A relation such as `$shelves`, and anything built from it, is a new array on every state, so returning it re-renders every time: return its `length` or its ids.\n- The whole-object hooks (`useEntityState`, `useRootEntityState`, `useRootEntityRenderedState`, the state and slice hooks) compare the whole entity or state. An entity re-renders its component when one of its fields or expression values changes, and a relation is a new array on every state, so an entity with relations, such as the root, re-renders on every commit, and on every drag frame for the rendered ones. Keep them for small panels; use a selector in elements mounted per entity or shown during gestures.\n- List in `deps` every component value the selector reads, as for `useMemo`; the entity selectors add the id themselves. A missing dependency keeps a stale selector.\n- Treat every returned value as immutable. Move expensive derivations into [expressions](../domain-model/expressions.md), which are cached per state, rather than computing them in selectors.",example:t,documentation:'Read each with `pnpm phoenix docs -r <path>`:\n\n- `docs/performance/render-isolation.mdx` — rendered entity selectors that keep a large scene smooth while dragging, and why their results must compare equal.\n- `docs/phoenix/state-management.mdx` — slices, the emission lifecycle, validity results and the selector hooks.\n- `docs/phoenix/configurator-interface.mdx` — "Core Hooks": the slice, selector and entity hooks with a sample call each.',phxMembers:["frontend.useStoreSelector","frontend.useRenderedSelector","frontend.useStoreSelector$","frontend.useRenderedSelector$","frontend.useEntitySelector","frontend.useRenderedEntitySelector","frontend.useRootEntitySelector","frontend.useRenderedRootEntitySelector","frontend.useEntityState","frontend.useRootEntityState","frontend.useRootEntityRenderedState","frontend.useRootEntityId","frontend.useRootEntityRenderedId","frontend.useCommittedState","frontend.useRenderedState","frontend.useCommittedSlice","frontend.useRenderedSlice"]});
|
package/dist/application-spec/generate-application/code/templates/skills/features/state/state.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{createPhoenixIndexGuide as t}from"../../guide.js";import{generatePhoenixStateSlicesFeature as e}from"./slices.js";import{generatePhoenixUpdatesFeature as o}from"./updates.js";import{generatePhoenixViolationsFeature as a}from"./violations.js";export const generatePhoenixStateGuides=()=>{let n=[e(),o(),a()];return[t({path:"features/state/index.md",title:"State",summary:"Reading and writing the configuration at runtime and how violations surface; read when UI or a handler reads or changes the configuration, or must reflect what a change breaks.",intro:"The configurator keeps the configuration in a store. The slices hold the states UI can read; updates stage and commit changes, and dry runs test them first; the violations of those states disable control options, become hints and block finalizing. Read only the guide for the task. Declaring invariants belongs to [Validation and repair](../domain-model/validation-and-repair.md), transformers to [Transformers](../domain-model/transformers.md), and the controls that write for you to [Domain controls](../domain-controls/index.md).",guides:n,notes:[]}),...n]};
|
package/dist/application-spec/generate-application/code/templates/skills/features/state/updates.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import{createPhoenixFeatureGuide as e}from"../../guide.js";let t=`A width scrubber no configured control covers: every position is previewed, the release commits once, and the drag is one undo step. A width that breaks an invariant is not previewed, so the cabinet stays at the last valid width; a rejected release reverts the preview and becomes a message.
|
|
2
|
+
|
|
3
|
+
\`\`\`tsx
|
|
4
|
+
// src/_shared/WidthScrubber.tsx
|
|
5
|
+
import { Slider } from '@mui/material'
|
|
6
|
+
|
|
7
|
+
export const WidthScrubber = ({ cabinetId }: { readonly cabinetId: Cabinet['id'] }) => {
|
|
8
|
+
const { storeSystem } = phx.frontend.useDomain()
|
|
9
|
+
const width = phx.frontend.useRenderedEntitySelector(cabinetId, cabinet => cabinet.width, [])
|
|
10
|
+
|
|
11
|
+
const preview = (value: number | number[]) => {
|
|
12
|
+
if (typeof value !== 'number') {
|
|
13
|
+
return
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// Replaces the previous preview: the whole change from the committed state
|
|
17
|
+
storeSystem.stage([
|
|
18
|
+
phx.frontend.updates.DomainEntityModification({
|
|
19
|
+
entityId: cabinetId,
|
|
20
|
+
stateDelta: { width: value },
|
|
21
|
+
updateTag: 'cabinet.scrubWidth',
|
|
22
|
+
}),
|
|
23
|
+
])
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return (
|
|
27
|
+
<Slider
|
|
28
|
+
value={width}
|
|
29
|
+
min={400}
|
|
30
|
+
max={1200}
|
|
31
|
+
step={10}
|
|
32
|
+
onChange={(_event, value) => preview(value)}
|
|
33
|
+
onChangeCommitted={() => storeSystem.commit()}
|
|
34
|
+
/>
|
|
35
|
+
)
|
|
36
|
+
}
|
|
37
|
+
\`\`\`
|
|
38
|
+
|
|
39
|
+
A discrete action is one call, such as \`storeSystem.stageAndCommit([phx.frontend.updates.EntityDeletion({ entityId, updateTag: 'cabinet.remove' })])\`. When configurator users pick it among options, a control with a dry run is the better home.`;export const generatePhoenixUpdatesFeature=()=>e({path:"features/state/updates.md",title:"Updates and dry runs",summary:"Update kinds, the stage, commit and rollback cycle, dry runs and undo steps; read when code writes the configuration or a transformer must stay cheap.",whenToUse:"Read when code writes the configuration outside a configured control, previews a change during a gesture, dry-runs a change to decide whether to offer it, needs ids for new entities, or narrows updates in a transformer.",capabilities:"### Choose the write path\n\n- Write through the control hooks of [Custom controls](../domain-controls/custom-controls.md) first: they build updates, dry-run options, stage gestures and commit. `phx.frontend.useUpdateControl(fixableViolations)` returns `prepare(updates)`, which dry-runs any updates and returns `{ disabled, hints, update, stage, trace }`.\n- Use the store system only when no control hook fits: a gesture you drive yourself, a write from a toolbar action, dialog or handler, a confirmation before a commit, or work that waits for a gesture to end.\n- `phx.frontend.useDomain()` returns the stable domain systems (`storeSystem`, `domain`, `undoSystem`, `navigationSystem`, `componentReader`, the projections), safe in dependency arrays. Navigation and selection changes belong to [Application states](../application-states/index.md).\n- Transformers return update arrays and never write to the store ([Transformers](../domain-model/transformers.md)).\n\n### Build updates\n\nEach `phx.frontend.updates` factory takes one object with an `updateTag` naming the change, such as `'cabinet.scrubWidth'`; `withTag` filters, the guards below and analytics read it. An optional localizable `hint` reaches configurator users as a side-effect message on commit: set it when a transformer changes something they did not touch.\n\n- `DomainEntityModification({ entityId, stateDelta, updateTag })` — sets some of the entity's own fields, never `id` or `type`.\n- `DomainEntityCreation({ entity, parentId, updateTag })` — adds a complete entity, optionally to the reference component instance named by `collection`. Build it with `phx.domain.createRecipe({ type, … })`, which fills the spec defaults, and replace its placeholder id. For children from recipes, prefer `phx.frontend.useCookRecipes`, which assigns ids.\n- `DomainEntityReplacement({ entityId, replacementEntity, keepChildren, updateTag })` — swaps in a new entity with a new id; `keepChildren: false` deletes its composed children.\n- `EntityDeletion({ entityId, updateTag })` — removes an entity; built-in transformers delete its composed children and prune references to it.\n- `ComponentModification({ componentInstance, writableState, updateTag })` — writes a component's writable state, as built-in controls do; it throws for a state the component rejects.\n\n`phx.frontend.getIdSequence(entities, pendingUpdates)` returns `{ nextId(type) }`, above every existing id and every id created or replaced in `pendingUpdates`. Draw a batch's ids from one sequence: two sequences from one state return the same id. In a transformer, use the context's `getIdSequence()`.\n\n### Stage, commit and roll back\n\n- `storeSystem.stage(updates)` runs transformers and invariants against the committed state and previews a valid result in the rendered slice; an invalid stage previews nothing. Each call replaces the staged updates: stage the whole change from the committed state, never a delta.\n- `storeSystem.commit()` prepares the staged updates again, runs the `onBeforeCommit` hooks and commits a valid result. A rejected commit keeps the committed state, resets the preview and reaches configurator messages through the potentially invalid slice.\n- `storeSystem.rollback()` drops the staged updates and their preview.\n- `storeSystem.stageAndCommit(updates)` writes a discrete action in one step: a click, a toggle, an add.\n- `storeSystem.hasStagedUpdates` is `true` while a staged change is pending; a hover stages nothing. It is a getter, not a subscription: check it before snapshotting the committed state, such as for an export.\n- `storeSystem.onBeforeCommit((emission, emit) => …)` runs before every commit and returns its unregister function; register it in an effect. Returning `false` holds the commit, such as to confirm a destructive change: the preview rolls back, and `emit()` commits that emission later. The hooks run again then, so let it through.\n- Leave `storeSystem.commitPrepared` to the SDK's own operations.\n\n### Dry runs\n\n- `storeSystem.prepareStateEmission(updates, storeSystem.stateSlices.committed.value.state, 'committed')` returns the emission a commit would produce, `{ state, validity, updates, … }`, without emitting it. Controls dry-run every option this way ([Violations](violations.md)).\n- Transformers and invariants run in a dry run exactly as in a commit, with the kind `'committed'`, so a transformer cannot tell them apart: `onEmissionsOfKind(['committed'])` skips staged previews but not dry runs.\n- Every mounted control dry-runs each option after every commit: ten options run the transformer pipeline and every invariant ten times per change. Staging runs them on every frame of a gesture.\n- Keep transformers pure and cheap: no requests, storage, analytics or React state.\n\n### Undo steps\n\n- One commit that changes entities is one undo step, transformer updates included, so a transformer's repair undoes with the change that caused it.\n- A commit that changes only navigation, view, tool or selection state makes no step.\n- Staged frames make no steps, but `stageAndCommit` on every keystroke or slider tick makes one each: stage while the value changes and commit once, on release or blur. [Toolbar actions](../custom-layout/toolbar-actions.md) covers the undo and redo buttons.\n\n### Update guards\n\nNarrow updates in a transformer (`ctx.updates`, `overrideAllUpdates`) or in an `onBeforeCommit` emission:\n\n- `phx.frontend.isCreateEntityUpdate(update, types)`, `phx.frontend.isReplaceEntityUpdate(update, types)` and `phx.frontend.isDeleteEntityUpdate(update, types)` — an entity of `types` added or replaced from a recipe, or removed by a built-in delete control. They check the SDK's own tags, so your own `EntityDeletion` does not match.\n- `(update, types, instanceName)` guards — the write of one built-in control on one component instance: `phx.frontend.isAttributeSelectionUpdate`, `phx.frontend.isAttributeSwitchUpdate`, `phx.frontend.isTextValueUpdate`, `phx.frontend.isSwatchSelectionUpdate`, `phx.frontend.isGenericDimensionUpdate`, `phx.frontend.isDistanceDimensionUpdate`, `phx.frontend.isAngleDimensionUpdate`.\n- A built-in step at priority `Infinity` turns component writes into entity modifications. Transformers default to that priority and run after it, and `onBeforeCommit` sees its result, so the control guards never match there. Give such a transformer a finite `priority` in its `transformers:` entry, or filter with `when.entity([...]).modified({ atFields })`.",example:t,documentation:'Read each with `pnpm phoenix docs -r <path>`:\n\n- `docs/other-features/transformers.mdx` — the transformer guide, including a component trigger registered with a finite priority.\n- `docs/complex-use-cases/navigation-guard.mdx` — an `onBeforeCommit` hook that holds a commit until configurator users confirm.\n- `docs/phoenix/state-management.mdx` — the stage, commit and rollback cycle and the emission kinds.\n- `docs/phoenix/configurator-interface.mdx` — "Updates Factory" and "Update Type Guards": every factory member, a control that dry-runs its updates, and the guards.',phxMembers:["frontend.updates","frontend.getIdSequence","frontend.useDomain","frontend.isCreateEntityUpdate","frontend.isReplaceEntityUpdate","frontend.isDeleteEntityUpdate","frontend.isAngleDimensionUpdate","frontend.isDistanceDimensionUpdate","frontend.isGenericDimensionUpdate","frontend.isAttributeSelectionUpdate","frontend.isAttributeSwitchUpdate","frontend.isTextValueUpdate","frontend.isSwatchSelectionUpdate"]});
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import{createPhoenixFeatureGuide as t}from"../../guide.js";let i=`A missing purpose is a \`warning\`: the change stays, the purpose step's Next waits for it, and finalizing waits for it like for every other warning. Its priority puts its text alone in the finalize hint while lower-ranked warnings also hold.
|
|
2
|
+
|
|
3
|
+
\`\`\`yaml
|
|
4
|
+
# spec/invariants.yaml
|
|
5
|
+
invariants:
|
|
6
|
+
KitchenRange:
|
|
7
|
+
purposeRequired:
|
|
8
|
+
type: purpose-required
|
|
9
|
+
severity: warning
|
|
10
|
+
message:
|
|
11
|
+
$msg: Choose a purpose before continuing
|
|
12
|
+
controlViolationPriority: 10
|
|
13
|
+
\`\`\`
|
|
14
|
+
|
|
15
|
+
\`\`\`tsx
|
|
16
|
+
// src/_shared/PurposeNextButton.tsx
|
|
17
|
+
import { Trans } from '@lingui/react/macro'
|
|
18
|
+
import { Button, Tooltip } from '@mui/material'
|
|
19
|
+
|
|
20
|
+
export const PurposeNextButton = () => {
|
|
21
|
+
const { canGoNext, next } = phx.frontend.useStepNavigation()
|
|
22
|
+
const { violations } = phx.frontend.useFinalizeViolations()
|
|
23
|
+
const resolve = phx.frontend.useResolveLocalizable()
|
|
24
|
+
const missing = violations?.find(({ violation }) => violation.type === 'purpose-required')
|
|
25
|
+
|
|
26
|
+
return (
|
|
27
|
+
<Tooltip title={missing ? resolve(missing.violation.message ?? missing.violation.type) : ''}>
|
|
28
|
+
<span>
|
|
29
|
+
<Button variant="contained" disabled={!canGoNext || missing !== undefined} onClick={() => next()}>
|
|
30
|
+
<Trans>Next</Trans>
|
|
31
|
+
</Button>
|
|
32
|
+
</span>
|
|
33
|
+
</Tooltip>
|
|
34
|
+
)
|
|
35
|
+
}
|
|
36
|
+
\`\`\``;export const generatePhoenixViolationsFeature=()=>t({path:"features/state/violations.md",title:"Violations",summary:"How violations disable control options, become hints and gate finalizing; read when a control or button must reflect what a change would break or what still blocks the configuration.",whenToUse:"Read when a control must show what an option would break, when hint text needs ranking or custom wording, or when Next or Finalize must wait for the configuration's problems. Declaring invariants, choosing a severity and repairing with transformers belong to [Validation and repair](../domain-model/validation-and-repair.md).",capabilities:"### Where violations surface\n\n- **Controls** — every option is dry-run ([Updates and dry runs](updates.md#dry-runs)). An option is `disabled` when its dry run, after transformers, still has a `fatal` or `fixable` violation or an invariant throws; its hint is the text of those violations. A `warning` or `notice` never disables an option.\n- **Messages** — a rejected commit reaches the potentially invalid slice, and its violations become configurator messages. They include every violation of that state, notices and warnings too, so check `violation.severity`. [Messages](../custom-layout/messages.md) owns showing them.\n- **Finalizing** — reads the committed state: a `warning` or a failed save blocks it, a `notice` only adds text.\n\n### Control violations\n\n`phx.frontend.useControlViolations(ignoredTypes)` returns a function from a prepared emission to `{ disabled, hints, violations }`:\n\n- no violation — enabled, no hint;\n- `notice` or `warning` — enabled, no hint, `violations` listed;\n- `fatal` or `fixable` — disabled, `hints` from those violations, `violations` all of them;\n- an invariant that throws — disabled, no hint. A transformer that throws is not caught: the control's render throws.\n\nPrefer `phx.frontend.useUpdateControl` from [Custom controls](../domain-controls/custom-controls.md), which prepares the emission and applies this mapping. Call `useControlViolations` yourself only for an emission you prepared, such as a dialog listing from `violations` what an option would break.\n\n`fixableViolations`, an argument of every control hook and of both update hooks, only removes those violation types from the hint text: the option stays disabled. List a type when another part of the UI explains it. To keep an option enabled, repair the violation in a transformer, so its dry run ends valid.\n\n### Hint text\n\n- Hints keep only the violations with the highest `controlViolationPriority` (default 0), drop duplicates and join several as sentences. Rank a root cause above its consequences, such as size above color.\n- Ignored types are removed before the highest priority is found, so ignoring the top-ranked violation shows the next one.\n- Set `controlViolationPriority` on a YAML invariant or on a violation returned from TypeScript. The finalize hint applies the same ranking.\n- A TypeScript violation may add `formatControlViolationMessage(emission, { i18n })`: a hint naming the attempted value, or `null` to drop this hint, such as for all but one of identical violations. Messages keep using `message`.\n- `message` is optional on a TypeScript violation, and messages fall back to its type. In YAML it is a string or `$msg`; [Localization](../localization.md) covers the catalogs.\n- `phx.frontend.useMapViolationHints(ignoreTypes?)` returns `(violations, emission) => string`, the hint text these rules make from any violations. For the committed state, take the emission from `phx.frontend.useCommittedSlice()`.\n\n### Finalize and step gating\n\n`phx.frontend.useFinalizeViolations()` returns `{ disabled, hints, violations }` for the committed state:\n\n- `disabled` while a `warning` holds or the last save failed; `hints` then says why, and `violations` is `undefined` for a failed save;\n- a `notice` leaves it enabled, with its text in `hints`;\n- `violations` lists the committed state's violations, `undefined` when there are none.\n\n`phx.frontend.useStateValidity()` returns the validity of the last committed emission: `{ valid: true, severity: null }`, or `{ valid: true, severity: 'warning' | 'notice', entityViolations }`. A `fatal` or `fixable` violation is never committed, so a `warning` is the problem the committed state can still have. Its type also lists the rejected results: narrow on `severity` before reading `entityViolations`.\n\n- Gate Finalize with `disabled` and show `hints` beside it; `useFinalizeActions` already returns both ([Finalization actions](../custom-layout/finalization-actions.md)).\n- Next enforces nothing by itself ([Tabs and steps](../custom-layout/tabs-and-steps.md)). Gate it with `disabled` and show `hints`. `useStateValidity().severity === 'warning'` holds it for the configuration alone, ignoring a failed save, and gives no text.\n- When a step waits only for its own problems, filter `violations` by their types and word them with `useMapViolationHints`.",example:i,documentation:'Read each with `pnpm phoenix docs -r <path>`:\n\n- `docs/other-features/violation-messages.mdx` — `controlViolationPriority` and `formatControlViolationMessage` worked through four ranked violations, with localized hint text.\n- `docs/other-features/violation-severity.mdx` — what each severity does to controls and finalizing; [Validation and repair](../domain-model/validation-and-repair.md) owns choosing one.\n- `docs/complex-use-cases/filtered-controls-with-fix-dialog.mdx` — controls ordered so transformers repair lower choices, with `fixableViolations` shortening each hint.\n- `docs/phoenix/configurator-interface.mdx` — "Violations" lists the violation hooks with what each returns.',phxMembers:["frontend.useControlViolations","frontend.useFinalizeViolations","frontend.useStateValidity","frontend.useMapViolationHints"]});
|
|
@@ -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 and invariants run on the server too; those folders and action files are outside the supported edit surface.\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.",phxMembers:[]});
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import{createPhoenixFeatureGuide as e}from"../../guide.js";let s=`A configurator user who opens a shared configuration may ask about it but not change it:
|
|
2
|
+
|
|
3
|
+
\`\`\`yaml
|
|
4
|
+
# spec/assistant.yaml
|
|
5
|
+
assistant:
|
|
6
|
+
instructions: Help the visitor choose a chair and explain the finishes.
|
|
7
|
+
ai:
|
|
8
|
+
provider: openai
|
|
9
|
+
model: balanced
|
|
10
|
+
reasoning: low
|
|
11
|
+
entities:
|
|
12
|
+
Chair:
|
|
13
|
+
label:
|
|
14
|
+
finish:
|
|
15
|
+
writable:
|
|
16
|
+
Chair:
|
|
17
|
+
finish:
|
|
18
|
+
\`\`\`
|
|
19
|
+
|
|
20
|
+
\`\`\`ts
|
|
21
|
+
// src/handlers/assistant-setup.ts
|
|
22
|
+
export default phx.domain.createAssistantSetupHandler((manifest, { access }) =>
|
|
23
|
+
access === 'o'
|
|
24
|
+
? manifest
|
|
25
|
+
: {
|
|
26
|
+
...manifest,
|
|
27
|
+
writable: {},
|
|
28
|
+
deletable: {},
|
|
29
|
+
instructions: 'The visitor is viewing a shared configuration. Describe it and answer questions; never offer to change it.',
|
|
30
|
+
}
|
|
31
|
+
)
|
|
32
|
+
\`\`\``;export const generatePhoenixAssistantSetupFeature=()=>e({path:"features/webhooks/assistant-setup.md",title:"Assistant setup",summary:"`phx.domain.createAssistantSetupHandler`, which narrows what the assistant may see and change per session or switches it off; read when the assistant must behave differently by role, session data or access.",whenToUse:"Read when the assistant must offer less to some sessions — viewers of a shared configuration, anonymous users, a customer group — or none at all.",capabilities:"### The handler\n\n- `phx.webhooks` has no builder for it: default-export `phx.domain.createAssistantSetupHandler((manifest, { role, sessionData, access }) => manifest)` from a file in `src/handlers/`, at most one per project. The file joins the webhook automatically, so it imports only server-safe modules ([Webhook entry and environment](entry-and-environment.md)).\n- The SDK calls it for every assistant session with the manifest the `assistant` spec declares, and uses what it returns. Return `null` to switch the assistant off for the session.\n- `role` and `sessionData` come from [authentication](authentication.md); `access` is how the configuration was opened, such as `o` for its owner.\n\n### What it may change\n\n- Narrow, never widen: leave out entries of `entities`, `writable`, `deletable`, `actions` and the recipe maps to hide them. Entries keep the entity and alias split of the YAML; narrow those original declarations and the SDK expands them to member types afterwards.\n- Writable options accept only `validate: true` and `allowDryRuns: false`; recipe groups accept a `description` and `allowDryRuns: false`; screenshot views accept a `description`; deletable entries are `{}`. Names, component bindings, hints and types are fixed by the spec.\n- `instructions` and `ai` change the server's prompt and model. An empty `instructions` string clears the spec's instructions; an omitted one keeps them. `ai.voice` turns voice messages and the replies read aloud on or off for the session; the panel follows the server, so it shows the mic, the play buttons and the mute control exactly when the server takes them.\n- The assistant's buttons and panel follow the spec, not the handler; hide them per session in the layout, for example with `$filter`.\n\n### Constraints\n\n- Keep it synchronous, pure and deterministic: it runs in the browser and in the webhook, and both must reach the same manifest.\n- In the browser the manifest has no `instructions` or `ai`, and what the handler returns for them is ignored. Never decide the other entries from `manifest.ai`, or the browser's schema would differ from the server's.\n- A handler that throws or returns an invalid manifest leaves the assistant unavailable for the session. Deployed environments reuse a session's setup for up to 15 minutes; under `phoenix dev` it runs on every request, within 15 seconds.",example:s,documentation:"The shipped SDK docs do not cover the assistant setup handler yet; [Webhook entry and environment](entry-and-environment.md) covers how its file joins the webhook.",phxMembers:["domain.createAssistantSetupHandler"]});
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import{createPhoenixFeatureGuide as e}from"../../guide.js";let s=`Dealers arrive from a portal with a code; everyone else browses with retail prices:
|
|
2
|
+
|
|
3
|
+
\`\`\`yaml
|
|
4
|
+
# spec/session.yaml
|
|
5
|
+
useAuthHook: true
|
|
6
|
+
sessionData:
|
|
7
|
+
type: object
|
|
8
|
+
properties:
|
|
9
|
+
customerGroup:
|
|
10
|
+
type: string
|
|
11
|
+
enum:
|
|
12
|
+
- retail
|
|
13
|
+
- dealer
|
|
14
|
+
additionalProperties: false
|
|
15
|
+
\`\`\`
|
|
16
|
+
|
|
17
|
+
\`\`\`ts
|
|
18
|
+
// src/webhooks/auth.ts
|
|
19
|
+
export const authHandler = phx.webhooks.authHandlerBuilder
|
|
20
|
+
.withCodeHandler(async ({ accessToken }, { logger }) => {
|
|
21
|
+
const response = await fetch(\`\${phx.webhooksEnv.CRM_API_URL}/dealers/me\`, {
|
|
22
|
+
headers: { authorization: \`Bearer \${accessToken}\` },
|
|
23
|
+
})
|
|
24
|
+
|
|
25
|
+
if (!response.ok) {
|
|
26
|
+
logger.warn(\`The CRM refused the dealer token with status \${response.status}.\`)
|
|
27
|
+
|
|
28
|
+
return { success: false }
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const dealer: { readonly id: string } = await response.json()
|
|
32
|
+
|
|
33
|
+
return {
|
|
34
|
+
success: true,
|
|
35
|
+
role: 'user',
|
|
36
|
+
data: { customerGroup: 'dealer' },
|
|
37
|
+
userId: dealer.id,
|
|
38
|
+
}
|
|
39
|
+
})
|
|
40
|
+
.withAnonymousHandler(async () => ({ success: true, role: 'anonymous', data: { customerGroup: 'retail' } }))
|
|
41
|
+
.build()
|
|
42
|
+
\`\`\``;export const generatePhoenixWebhookAuthenticationFeature=()=>e({path:"features/webhooks/authentication.md",title:"Authentication",summary:"The auth hook: code, refresh, anonymous and Clerk flows, roles, session data and expiry; read when the configurator signs users in or treats some of them differently.",whenToUse:"Read when configurator users sign in, arrive from a host application, need different roles or prices, or when anonymous access must be refused.",capabilities:"### When the hook runs\n\n- With `useAuthHook: true` every configurator session starts with a call to the hook. Without it every configurator user gets an anonymous session and the hook never runs. Clerk sign-in needs `useClerk: true` as well, which adds the Clerk credentials to the webhook.\n- Build the hook with `phx.webhooks.authHandlerBuilder` and register it with `withAuthHook` in the [entry](entry-and-environment.md). What the browser sends picks the flow:\n - **Code** — a host application's backend deposited its token with the platform and handed the configurator a one-time code. `withCodeHandler` receives `{ accessToken, refreshToken?, idToken? }` and decides who the configurator user is.\n - **Refresh** — the session expired and the browser holds a refresh token an earlier answer returned. `withRefreshHandler` receives `{ refreshToken }`.\n - **Anonymous** — neither. `withAnonymousHandler` grants or refuses a session to configurator users who are not signed in; without it their sessions fail.\n- `withClerkCodeHandler()`, `withClerkSessionHandler()` and `withClerkRefreshHandler()` add the Clerk flows, which are tried before the custom handlers. The session handler rejects banned Clerk users.\n- `useCognito: true` selects shared Phoenix sign-in for Cognito SDK Builder workspaces, enables generated redirect pages and the auth hook, and accepts current project grant roles and membership tags. It conflicts with `useClerk`. Without a project webhook it refuses anonymous sessions; custom hooks can add `withAnonymousHandler`. `withCognitoHandlers()` enables this flow on a manually assembled builder. See the Cognito section of `docs/phoenix/webhooks.mdx` for its session schema and fifteen-minute authentication limit.\n- Under `phoenix dev` the hook has 15 seconds to answer.\n\n### What a handler returns\n\n- `{ success: false }` refuses the session. `{ success: true, role, data }` grants it:\n - `role` — `anonymous`, `user`, `admin` or `superadmin`. The admin roles also open Project Admin.\n - `data` — the session data, validated strictly against the spec's `sessionData` schema. The schema declares no required properties, because Admin and preset sessions carry no custom session data, so code reading it handles a missing field. Later webhook calls read it as `data.sessionPayload`, and the configurator reads it as session data. It is readable in the browser, so it never holds a credential configurator users must not see, such as an API key.\n - `userId` — the stable id of the person, so their configurations and assistant threads follow them.\n - `refreshToken` — returned to the browser for the refresh flow; return one only together with a refresh handler.\n - `expirationTime` — when the session ends, as a Unix timestamp in seconds, not a duration. Leave it out: the three-hour default is what the platform's session tracking assumes, so change it only when the client needs other session lengths.\n- `withPublishedChunkScopes(({ role, data }) => [...])` grants the published-data chunk scopes a session may read; `public` is always granted. Read `docs/phoenix/publishing.mdx` before scoping chunks.",example:s,documentation:"Read with `pnpm phoenix docs -r <path>`:\n\n- `docs/phoenix/sessions-and-access.mdx` — sessions, roles, the session user and access to configurations.\n- `docs/phoenix/clerk-sign-in.mdx` — Clerk sign-in, its handlers and pages.\n- `docs/phoenix/integration/authentication-internal.mdx` and `authentication-external.mdx` — a host application signing its users in with a code.",phxMembers:["webhooks.authHandlerBuilder"]});
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import{createPhoenixFeatureGuide as e}from"../../guide.js";let a=`Lead times depend on the customer group and come from the CRM:
|
|
2
|
+
|
|
3
|
+
\`\`\`yaml
|
|
4
|
+
# spec/backend-data.yaml
|
|
5
|
+
backendData:
|
|
6
|
+
type: object
|
|
7
|
+
properties:
|
|
8
|
+
leadTimeDays:
|
|
9
|
+
type: number
|
|
10
|
+
required:
|
|
11
|
+
- leadTimeDays
|
|
12
|
+
additionalProperties: false
|
|
13
|
+
\`\`\`
|
|
14
|
+
|
|
15
|
+
\`\`\`ts
|
|
16
|
+
// src/webhooks/backend-data.ts
|
|
17
|
+
type FetchBackendData = Parameters<typeof phx.webhooks.webhookBuilder.withFetchBackendData>[0]
|
|
18
|
+
|
|
19
|
+
const FALLBACK_LEAD_TIME_DAYS = 28
|
|
20
|
+
|
|
21
|
+
const fetchLeadTimeDays = async (customerGroup: string): Promise<number> => {
|
|
22
|
+
const response = await fetch(\`\${phx.webhooksEnv.CRM_API_URL}/lead-times/\${customerGroup}\`, {
|
|
23
|
+
headers: { authorization: \`Bearer \${phx.webhooksEnv.CRM_API_TOKEN}\` },
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
if (!response.ok) {
|
|
27
|
+
throw new Error(\`The CRM answered with status \${response.status}.\`)
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const { days }: { readonly days: number } = await response.json()
|
|
31
|
+
|
|
32
|
+
return days
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export const fetchBackendData: FetchBackendData = async ({ sessionPayload }, { logger }) => {
|
|
36
|
+
try {
|
|
37
|
+
return { backendData: { leadTimeDays: await fetchLeadTimeDays(sessionPayload.customerGroup ?? 'retail') } }
|
|
38
|
+
} catch (error) {
|
|
39
|
+
// The fallback keeps the configurator and every finalization working while the CRM is down
|
|
40
|
+
logger.warn(\`Lead times are unavailable (\${String(error)}); using \${FALLBACK_LEAD_TIME_DAYS} days.\`)
|
|
41
|
+
|
|
42
|
+
return { backendData: { leadTimeDays: FALLBACK_LEAD_TIME_DAYS } }
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
\`\`\``;export const generatePhoenixWebhookBackendDataFeature=()=>e({path:"features/webhooks/backend-data.md",title:"Backend data",summary:"Data the webhook fetches per session, such as stock, lead times or customer prices, and how expressions and tasks read it; read when the configurator needs data only the server may fetch.",whenToUse:"Read when a value depends on who is configuring or changes faster than published content, and fetching it needs a credential the browser must not see.",capabilities:"### When it runs\n\n- Declare a `backendData` schema; without one the configurator never asks for backend data. Register the handler with `withFetchBackendData` in the [entry](entry-and-environment.md).\n- The configurator asks for it when it loads and again whenever its frontend data changes, and the webhook runs the handler again before every [finalization](finalization.md). The two answers can differ, and finalization uses its own.\n- A failure in the browser's request leaves backend data `undefined` and the configurator keeps running, so expressions handle `undefined`. A failure before finalization fails the finalization: catch what may fail and return a safe value when one exists.\n- Under `phoenix dev` the handler has 15 seconds to answer, and an answer above 5 MiB is refused.\n\n### What it receives and returns\n\n- The handler receives `{ sessionRole, sessionPayload, frontendData, frontendUrl, deploymentId }` and the `logger`, and returns `{ backendData }`, validated against the schema.\n- Backend data is readable in the browser. Fetch with the credentials in the webhook and return only what the configurator may show.\n- Expressions read it as `ctx.backendData` ([Expressions](../domain-model/expressions.md)) and webhook tasks as `data.backendData`. Both are `Record<string, unknown> | undefined`: the schema validates the handler's answer but does not type what reads it, so narrow each value before use.\n- Choose backend data for values that depend on who is configuring or change too often to publish: stock, lead times, customer prices. Published data suits catalogue content, frontend data what the embedding page passes in.",example:a,documentation:"Read `docs/phoenix/data-sources.mdx` with `pnpm phoenix docs -r docs/phoenix/data-sources.mdx` for every data source and its lifetime; its backend data section shows the frontend side.",phxMembers:[]});
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import{createPhoenixFeatureGuide as e}from"../../guide.js";let t=`A quote configurator reads its CRM and integration credentials from the environment and registers the hooks the other webhook guides implement:
|
|
2
|
+
|
|
3
|
+
\`\`\`yaml
|
|
4
|
+
# spec/webhook-env.yaml
|
|
5
|
+
env:
|
|
6
|
+
webhook:
|
|
7
|
+
CRM_API_URL:
|
|
8
|
+
type: url
|
|
9
|
+
required: true
|
|
10
|
+
devDefault: http://localhost:4000
|
|
11
|
+
CRM_API_TOKEN:
|
|
12
|
+
type: str
|
|
13
|
+
required: true
|
|
14
|
+
QUOTE_SENDER:
|
|
15
|
+
type: str
|
|
16
|
+
default: quotes@example.com
|
|
17
|
+
WOOCOMMERCE_SHOP_URL:
|
|
18
|
+
type: url
|
|
19
|
+
WOOCOMMERCE_API_KEY:
|
|
20
|
+
type: str
|
|
21
|
+
QUOTES_SPREADSHEET_ID:
|
|
22
|
+
type: str
|
|
23
|
+
GOOGLE_SERVICE_ACCOUNT_JSON:
|
|
24
|
+
type: str
|
|
25
|
+
\`\`\`
|
|
26
|
+
|
|
27
|
+
\`\`\`ts
|
|
28
|
+
// src/webhooks/index.ts
|
|
29
|
+
import { authHandler } from './auth.js'
|
|
30
|
+
import { fetchBackendData } from './backend-data.js'
|
|
31
|
+
import { quoteFinalization } from './finalization.js'
|
|
32
|
+
|
|
33
|
+
export default phx.webhooks.webhookBuilder
|
|
34
|
+
.withAuthHook(authHandler)
|
|
35
|
+
.withFetchBackendData(fetchBackendData)
|
|
36
|
+
.withConfiguratorFinalize(quoteFinalization)
|
|
37
|
+
.build()
|
|
38
|
+
\`\`\``;export const generatePhoenixWebhookEntryFeature=()=>e({path:"features/webhooks/entry-and-environment.md",title:"Webhook entry and environment",summary:"`src/webhooks/index.ts`, which project code runs on the server, browser-import limits and `env.webhook` variables; read when creating the webhook, adding server code or a secret, or fixing a webhook parse or build error.",whenToUse:"Read when the project needs server-side code — sign-in, backend data, finalization — or a credential, or when parsing or the build names a webhook file.",capabilities:"### The entry\n\n- The webhook is the project's server side: one bundle the platform calls for sign-in, backend data, finalization and its callback, Admin publishing and assistant setup. A deployed environment runs it as a cloud function; `phoenix dev` runs it on the developer's machine through the development tunnel.\n- `src/webhooks/index.ts` is the entry and default-exports `phx.webhooks.webhookBuilder` with its hooks, then `.build()`. Only that file is imported; other files in `src/webhooks/` run when it imports them. Files in `src/webhooks/` without an `index.ts` fail with `MISSING_WEBHOOK_INDEX`.\n- The builder takes `withAuthHook` ([Authentication](authentication.md)), `withFetchBackendData` ([Backend data](backend-data.md)) and `withConfiguratorFinalize` ([Finalization](finalization.md)). Register only what the project uses. The SDK adds [Admin publishing](publishing.md) itself, and [assistant setup](assistant-setup.md) when the spec configures the assistant.\n- With `useCognito: true`, the built-in webhook authenticates invited Phoenix accounts and refuses anonymous sessions. Otherwise, without an entry the SDK builds a webhook that signs every configurator user in anonymously. `useAuthHook: true` or `useClerk: true` without an entry reports `AUTH_WITHOUT_PROJECT_WEBHOOK`.\n- A hook that throws answers with an error: the sign-in, the finalization or the publish fails. Its message reaches the server log, not the configurator user, so log what went wrong with the `logger` each hook receives.\n\n### Project code in the webhook\n\n- The spec's domain, expressions and invariants also run in the webhook. Action modules load in its shared domain assembly, but action implementations currently execute only in the browser, including assistant custom mutations. Components, admin components and handlers are frontend-only by default.\n- A handler module that calls `phx.domain.createAssistantSetupHandler` or one of the `phx.domain.admin` publishing and validation factories joins the webhook automatically. The call is detected literally, so do not alias it.\n- Make `'use webhook'` the first statement of another component or handler the server needs, such as one that prepares the scene for server rendering. Leading comments may precede it.\n- An included file and every local file it imports must not import the browser SDK entry points (`admin`, `application`, `configurator`, `editor`, `react`, `ui`, `extras/clerk`, `extras/cognito`) or style, font and image files. Type-only imports are allowed. For files included by `'use webhook'` or a detected handler registration, parsing reports `WEBHOOK_UNSAFE_IMPORT` with the import chain; action modules are not covered by that parse-time check. Unsafe action imports can fail when the webhook is built or loaded. Move logic both sides need into a module without them, and keep rendering in a frontend-only file.\n\n### Environment variables and secrets\n\n- Declare variables under `env.webhook`: `type` is `bool`, `str`, `num` or `url`, with an optional `default`, `devDefault` (the value under `phoenix dev`) and `required`. A variable that is neither required nor defaulted is `undefined` when unset. Read them as `phx.webhooksEnv.NAME`.\n- Values are fixed when the webhook is built: a changed value needs a restart of `phoenix dev` locally and a new deploy on an environment. Deployed builds take values from the environment variables a workspace or project Superadmin sets in Studio; `phoenix dev` takes them from `.env`, which is not committed.\n- Keep credentials in the webhook. Session data, backend data and the finalization result all reach the browser, and `env.frontend` values are public.\n- `budgets.webhookGzipMb` fails the build when the compressed webhook grows past it; `phoenix build --onlyWebhook` builds the webhook alone.",example:t,documentation:"Read with `pnpm phoenix docs -r <path>`:\n\n- `docs/phoenix/webhooks.mdx` — the entry, the built-in webhook and environment variables.\n- `docs/phoenix/webhook-membership.mdx` — which files join the webhook and the server-safe import rule.\n- `docs/phoenix/sdk-builder-workflow.mdx` — setting environment variables in Studio.",phxMembers:["webhooks.webhookBuilder"]});
|