@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
|
@@ -10,31 +10,35 @@
|
|
|
10
10
|
- [Dynamic Resources Factory](#dynamic-resources-factory)
|
|
11
11
|
- [Backend Data Handler](#backend-data-handler)
|
|
12
12
|
|
|
13
|
-
To support project specific finalization workflows, authentication and custom integrations, platform
|
|
14
|
-
These webhooks are deployed on aws lambda and can be triggered by specific platform triggers. Currently we support three types of webhooks.
|
|
13
|
+
To support project specific finalization workflows, authentication and custom integrations, the platform runs a project webhook: one bundle, deployed as a cloud function (AWS Lambda), that the platform calls for these operations:
|
|
15
14
|
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
15
|
+
- **auth** - creating or refreshing a configurator session ([Auth Hook](#auth-hook))
|
|
16
|
+
- **fetchBackendData** - server-side data for the configurator ([Backend Data Handler](#backend-data-handler))
|
|
17
|
+
- **finalize** - configurator finalization ([Configurator Finalization](#configurator-finalization)) and Admin finalization when an admin publishes from Project Admin ([Admin Finalization](#admin-finalization))
|
|
18
|
+
- **callback** - the result of a configurator finalization ([Callback Hook / Result](#callback-hook--result))
|
|
19
|
+
- **assistantSetup** - the assistant's setup for a session, when the spec configures the assistant
|
|
20
|
+
|
|
21
|
+
Under `phoenix dev` the webhook runs on the developer's machine, and the platform reaches it through the development webhook tunnel instead of the cloud function.
|
|
19
22
|
|
|
20
23
|
## Webhook builders
|
|
21
24
|
|
|
22
|
-
Phoenix provides domain-aware builders through the global `phx.webhooks` namespace. These are automatically generated from your
|
|
25
|
+
Phoenix provides domain-aware builders through the global `phx.webhooks` namespace. These are automatically generated from your spec into `.phoenix/webhook-builders.ts` and available without imports.
|
|
23
26
|
|
|
24
27
|
**Available builders and factories:**
|
|
25
28
|
|
|
26
|
-
- `phx.webhooks.webhookBuilder` - Main webhook builder for composing handlers
|
|
27
|
-
- `phx.webhooks.finalizeHandlerBuilder` - Configurator finalization handler builder
|
|
28
|
-
- `phx.webhooks.adminFinalizeHandlerBuilder` - Admin finalization handler builder
|
|
29
29
|
- `phx.webhooks.authHandlerBuilder` - Authentication handler builder
|
|
30
|
+
- `phx.webhooks.webhookBuilder` - Main webhook builder for composing handlers: `withAuthHook`, `withFetchBackendData`, `withConfiguratorFinalize` and `build()`
|
|
30
31
|
- `phx.webhooks.taskFactory` - Factory for creating finalization tasks
|
|
32
|
+
- `phx.webhooks.finalizeHandlerBuilder` - Configurator finalization handler builder; pass its `build()` result to `withConfiguratorFinalize`
|
|
31
33
|
- `phx.webhooks.callbackBuilder` - Builder for callback handlers
|
|
32
34
|
- `phx.webhooks.prefetchBuilder` - Builder for prefetch handlers
|
|
33
35
|
- `phx.webhooks.dynamicResourcesFactory` - Factory for dynamic resource creation
|
|
34
36
|
|
|
37
|
+
There is no builder for Admin finalization: the SDK builds it itself (see [Admin Finalization](#admin-finalization)).
|
|
38
|
+
|
|
35
39
|
### Webhook Entry Point
|
|
36
40
|
|
|
37
|
-
Your webhook is the default export of `src/webhooks/index.ts`. With the application-spec pipeline (see [Current and legacy project tooling](?path=/docs/phoenix-phoenix-cli--docs#current-and-legacy-project-tooling)), the file is yours to create; sync does not write it. A project without it gets a built-in webhook, so it builds and deploys with no webhook code.
|
|
41
|
+
Your webhook is the default export of `src/webhooks/index.ts`. With the application-spec pipeline (see [Current and legacy project tooling](?path=/docs/phoenix-phoenix-cli--docs#current-and-legacy-project-tooling)), the file is yours to create; sync does not write it. A project without it gets a built-in webhook, so it builds and deploys with no webhook code. Unless `useCognito` is enabled, the built-in webhook has one handler, an anonymous auth handler, which the platform calls only when `spec/application.yaml` sets `useAuthHook`. The legacy pipeline writes the file with that webhook on the first sync.
|
|
38
42
|
|
|
39
43
|
Create `src/webhooks/index.ts` when the project needs its own handlers: finalization, backend data, or an auth handler that does more than start an anonymous session.
|
|
40
44
|
|
|
@@ -53,6 +57,8 @@ export default phx.webhooks.webhookBuilder.withAuthHook(authHandler).build()
|
|
|
53
57
|
|
|
54
58
|
The next `phoenix sync` or `phoenix build`, or the rebuild of a running `phoenix dev`, uses the file; deleting it brings the built-in webhook back. A webhook needs at least one handler, and a project with any other file in `src/webhooks/` must have `index.ts`.
|
|
55
59
|
|
|
60
|
+
Only `src/webhooks/index.ts` is imported: other files in `src/webhooks/` run only when it imports them. Sync generates the rest: `.phoenix/webhook.ts` (the bundle's entry, which exports your webhook or the built-in one), `.phoenix/webhook-builders.ts` (the `phx.webhooks` builders) and `.phoenix/webhooks.config.ts` (the reader of [environment variables](#environment-variables)).
|
|
61
|
+
|
|
56
62
|
A webhook with more handlers:
|
|
57
63
|
|
|
58
64
|
```ts
|
|
@@ -84,16 +90,35 @@ Environment variables for webhooks are defined in `spec/application.yaml` under
|
|
|
84
90
|
# spec/application.yaml
|
|
85
91
|
env:
|
|
86
92
|
webhook:
|
|
87
|
-
|
|
88
|
-
type:
|
|
93
|
+
CRM_API_URL:
|
|
94
|
+
type: url
|
|
95
|
+
required: true
|
|
96
|
+
devDefault: http://localhost:4000
|
|
97
|
+
CRM_API_TOKEN:
|
|
98
|
+
type: str
|
|
99
|
+
required: true
|
|
89
100
|
EMAIL_FROM:
|
|
90
|
-
type:
|
|
101
|
+
type: str
|
|
102
|
+
default: configurator@example.com
|
|
103
|
+
WOOCOMMERCE_SHOP_URL:
|
|
104
|
+
type: url
|
|
105
|
+
WOOCOMMERCE_API_KEY:
|
|
106
|
+
type: str
|
|
91
107
|
GOOGLE_SPREADSHEET_ID:
|
|
92
108
|
type: str
|
|
93
|
-
|
|
109
|
+
GOOGLE_SERVICE_ACCOUNT_JSON:
|
|
94
110
|
type: str
|
|
95
111
|
```
|
|
96
112
|
|
|
113
|
+
Each entry accepts only these keys:
|
|
114
|
+
|
|
115
|
+
- `type` - `bool`, `str`, `num` or `url`
|
|
116
|
+
- `default` - the value when the variable is not set
|
|
117
|
+
- `devDefault` - the value when the variable is not set under `phoenix dev`, which builds the webhook outside production
|
|
118
|
+
- `required` - `true` when the variable must be set
|
|
119
|
+
|
|
120
|
+
A variable that is neither required nor defaulted is `undefined` when it is not set, so code checks it before use.
|
|
121
|
+
|
|
97
122
|
### Using Environment Variables
|
|
98
123
|
|
|
99
124
|
Environment variables are available through the `phx.webhooksEnv` global:
|
|
@@ -101,11 +126,11 @@ Environment variables are available through the `phx.webhooksEnv` global:
|
|
|
101
126
|
```ts
|
|
102
127
|
// src/webhooks/handlers/some-handler.ts
|
|
103
128
|
const GOOGLE_SPREADSHEET_ID = phx.webhooksEnv.GOOGLE_SPREADSHEET_ID
|
|
104
|
-
const
|
|
129
|
+
const GOOGLE_SERVICE_ACCOUNT_JSON = phx.webhooksEnv.GOOGLE_SERVICE_ACCOUNT_JSON
|
|
105
130
|
```
|
|
106
131
|
|
|
107
|
-
|
|
108
|
-
|
|
132
|
+
The values are inlined into the webhook bundle when it is built, so a changed value takes effect only after a restart of `phoenix dev`, or a new deploy on a deployed environment.
|
|
133
|
+
Deployed builds take the values from the environment variables a workspace super admin sets in Studio (see [SDK Builder Workflow](?path=/docs/phoenix-sdk-builder-workflow--docs)); `phoenix dev` reads them from the project's `.env`.
|
|
109
134
|
|
|
110
135
|
## Configurator Finalization
|
|
111
136
|
|
|
@@ -181,7 +206,7 @@ Additionally, tasks receive:
|
|
|
181
206
|
- `prefetchedData`: Results from [prefetch handlers](#prefetch-tasks), if configured
|
|
182
207
|
- `backendData`: Server-side data from [backend data handlers](#backend-data-handler), if configured
|
|
183
208
|
|
|
184
|
-
Before the task is executed, the domain state is validated using the configurator's domain and its violations. If any violations are found (warning level and up), the task is not executed and the
|
|
209
|
+
Before the task is executed, the domain state is validated using the configurator's domain and its violations. If any violations are found (warning level and up), the task is not executed and the finalization fails; the client learns only that it failed, and the reason is in the webhook's log.
|
|
185
210
|
|
|
186
211
|
#### Task Context
|
|
187
212
|
|
|
@@ -211,26 +236,28 @@ export interface TaskContext<
|
|
|
211
236
|
|
|
212
237
|
#### Static assets
|
|
213
238
|
|
|
214
|
-
Some tasks may need access to static assets, like logos, fonts, scripts, blender files, etc...
|
|
215
|
-
|
|
239
|
+
Some tasks may need access to static assets, like logos, fonts, scripts, blender files, etc...
|
|
240
|
+
Put files only the server uses (Blender templates, models, render scripts) in `/assets/private`, and files that must be reachable by URL (logos, fonts) in `/assets/public`. Both folders are uploaded with the deployment; a task resolves a public file's URL with `ctx.getPublicAssetUrl(path)`.
|
|
216
241
|
|
|
217
242
|
### Task execution order
|
|
218
243
|
|
|
219
|
-
The webhook
|
|
244
|
+
The webhook prepares the finalization, then the platform runs its tasks:
|
|
220
245
|
|
|
221
|
-
1. **Backend Data Handler** (if configured) -
|
|
246
|
+
1. **Backend Data Handler** (if configured) - The webhook runs it again before every configurator finalization; a failure fails the finalization
|
|
222
247
|
2. **Prefetch Handler** (if configured) - Data preparation and external system setup
|
|
223
|
-
3. **Task
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
5. **Result** -
|
|
248
|
+
3. **Task collection** - The webhook calls the `withTask` and `withResources` handlers and returns the tasks and resources to the platform
|
|
249
|
+
4. **Task execution by type** - The server runs tasks by type, not in `withTask` order. Tasks of one type run in parallel, except server renders, which the rendering worker takes one at a time:
|
|
250
|
+
1. As child jobs: `GenerateConfigurationLink` (and the `Publish*` tasks of Admin finalization) on the server, and `GenerateImages` on the rendering worker
|
|
251
|
+
2. Then, on the finalize worker: `GenerateCsv`, then `GeneratePdf` and `GenerateStaticPdf`
|
|
252
|
+
3. The generated PDFs and CSVs are uploaded to their `s3Key` - only when the finalization also has a `CallLambdaBack` or `WooCommerceAddToCart` task
|
|
253
|
+
4. `SendEmail` and `SendStaticEmail`
|
|
254
|
+
5. `SendHttpRequest`
|
|
255
|
+
6. `WooCommerceAddToCart`
|
|
256
|
+
7. `EditGoogleSpreadsheet`
|
|
257
|
+
8. `CallLambdaBack` - the [callback](#callback-hook--result), last
|
|
258
|
+
5. **Result** - The callback's result is returned to the client; without a callback the client receives no result
|
|
259
|
+
|
|
260
|
+
So a PDF or an email can use the links and rendered images, and an email can attach the generated PDFs and CSVs. Nothing is retried or rolled back: when a task fails, the finalization fails and what already ran stays done.
|
|
234
261
|
|
|
235
262
|
### GenerateConfigurationLink Task
|
|
236
263
|
|
|
@@ -702,11 +729,26 @@ To avoid sending real emails through SES during local development, set the `EMAI
|
|
|
702
729
|
|
|
703
730
|
### SendHttpRequest Task
|
|
704
731
|
|
|
705
|
-
Sends
|
|
732
|
+
Sends an HTTP request to the provided URL with `method` (`GET` by default), `headers` and a string `body`. A body needs a method other than `GET`. An answer outside 2xx fails the finalization; there is no timeout and no retry.
|
|
733
|
+
|
|
734
|
+
Following example shows a task that posts the configuration to a CRM, with the URL and token from [environment variables](#environment-variables):
|
|
735
|
+
|
|
736
|
+
```ts
|
|
737
|
+
// src/webhooks/handlers/configurator-finalize-handler/tasks/crm-quote-task.ts
|
|
738
|
+
export const crmQuoteTask = phx.webhooks.taskFactory.createSendHttpRequestTask((_resources, data, ctx) => {
|
|
739
|
+
const chair = ctx.domain.getRoot$Entity(data.state)
|
|
706
740
|
|
|
707
|
-
|
|
741
|
+
return {
|
|
742
|
+
type: 'SendHttpRequest',
|
|
743
|
+
url: `${phx.webhooksEnv.CRM_API_URL}/quotes`,
|
|
744
|
+
method: 'POST',
|
|
745
|
+
headers: { authorization: `Bearer ${phx.webhooksEnv.CRM_API_TOKEN}`, 'content-type': 'application/json' },
|
|
746
|
+
body: JSON.stringify({ configurationId: data.configurationId, model: chair.label }),
|
|
747
|
+
}
|
|
748
|
+
})
|
|
749
|
+
```
|
|
708
750
|
|
|
709
|
-
|
|
751
|
+
Full definition of the task is defined in the `SendHttpRequestTask` type.
|
|
710
752
|
|
|
711
753
|
```ts
|
|
712
754
|
/**
|
|
@@ -733,11 +775,52 @@ export interface SendHttpRequestTask {
|
|
|
733
775
|
}
|
|
734
776
|
```
|
|
735
777
|
|
|
736
|
-
###
|
|
778
|
+
### WooCommerceAddToCart Task
|
|
737
779
|
|
|
738
780
|
Adds the configured product to a WooCommerce cart. This task is part of the WooCommerce integration, which also requires the WordPress plugin —
|
|
739
|
-
see [Integrations / WooCommerce / Overview](
|
|
740
|
-
[Integrations / WooCommerce / Local Development](
|
|
781
|
+
see [Integrations / WooCommerce / Overview](?path=/docs/integrations-woocommerce-overview--docs) for the full picture and
|
|
782
|
+
[Integrations / WooCommerce / Local Development](?path=/docs/integrations-woocommerce-local-development--docs) for a local setup guide.
|
|
783
|
+
|
|
784
|
+
The task takes:
|
|
785
|
+
|
|
786
|
+
- `items` - each with a `product`, and optionally `productName`, `productDescription`, `price`, `quantity`, `image` (the name of a declared `Image` resource, not a URL), `customData` and `resources` listed in the order as `{ type, name, label }`
|
|
787
|
+
- `fees` - optional, each `{ type: 'Flat' | 'Percentage', name, amount, taxable?, taxClass? }`
|
|
788
|
+
- `session` and `addToCartUrl` - the Phoenix WordPress plugin puts `session` and a relative `add-to-cart-url` as attributes on the configurator tag; the configurator passes both unchanged in the finalize data. The task's `addToCartUrl` must be absolute, and the platform sends the API key to it, so the webhook builds it from the shop's URL in a webhook environment variable and refuses any other origin: a URL taken from the browser as-is would let anyone have the key sent to a server of their choosing
|
|
789
|
+
- `apiKey` - the key configured in the plugin, kept in a webhook environment variable
|
|
790
|
+
|
|
791
|
+
The example assumes `cartSession` and `addToCartUrl` in the `finalizeData` schema and skips the task when the configurator does not run in the shop:
|
|
792
|
+
|
|
793
|
+
```ts
|
|
794
|
+
// src/webhooks/handlers/configurator-finalize-handler/tasks/cart-task.ts
|
|
795
|
+
export const cartTask = phx.webhooks.taskFactory.createWooCommerceAddToCartTask((resources, data, ctx) => {
|
|
796
|
+
const { cartSession, addToCartUrl } = data.finalizeData
|
|
797
|
+
const shopUrl = phx.webhooksEnv.WOOCOMMERCE_SHOP_URL
|
|
798
|
+
const apiKey = phx.webhooksEnv.WOOCOMMERCE_API_KEY
|
|
799
|
+
|
|
800
|
+
if (cartSession === undefined || addToCartUrl === undefined || shopUrl === undefined || apiKey === undefined) {
|
|
801
|
+
return null
|
|
802
|
+
}
|
|
803
|
+
|
|
804
|
+
// The platform sends the API key to this URL, so it may only point at the shop
|
|
805
|
+
const cartEndpoint = new URL(addToCartUrl, shopUrl)
|
|
806
|
+
|
|
807
|
+
if (cartEndpoint.origin !== new URL(shopUrl).origin) {
|
|
808
|
+
throw new Error(
|
|
809
|
+
`The add-to-cart URL ${addToCartUrl} is not on the shop ${shopUrl}. Pass the plugin's add-to-cart-url unchanged.`
|
|
810
|
+
)
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
const chair = ctx.domain.getRoot$Entity(data.state)
|
|
814
|
+
|
|
815
|
+
return {
|
|
816
|
+
type: 'WooCommerceAddToCart',
|
|
817
|
+
session: cartSession,
|
|
818
|
+
addToCartUrl: cartEndpoint.href,
|
|
819
|
+
apiKey,
|
|
820
|
+
items: [{ product: 'custom-chair', productName: chair.label, quantity: 1, image: resources.simpleImage }],
|
|
821
|
+
}
|
|
822
|
+
})
|
|
823
|
+
```
|
|
741
824
|
|
|
742
825
|
### EditGoogleSpreadsheet Task
|
|
743
826
|
|
|
@@ -747,8 +830,8 @@ Google spreadsheet and share it with a service account created for this purpose.
|
|
|
747
830
|
|
|
748
831
|
For details on how to create a service account, see the [official documentation](https://cloud.google.com/iam/docs/service-accounts-create).
|
|
749
832
|
|
|
750
|
-
To edit the spreadsheet, the
|
|
751
|
-
service account key (content of credentials
|
|
833
|
+
To edit the spreadsheet, the webhook returns an `EditGoogleSpreadsheetTask` object in tasks. The task specifies the
|
|
834
|
+
service account key (the parsed content of the credentials JSON file), the id of the spreadsheet (from its URL), and an array of edits to make to the spreadsheet.
|
|
752
835
|
|
|
753
836
|
```ts
|
|
754
837
|
export interface EditGoogleSpreadsheetTask {
|
|
@@ -776,19 +859,21 @@ There are currently two types of edit mode available:
|
|
|
776
859
|
- **overwrite** overwrite the contents of one or more ranges of cells in the spreadsheet
|
|
777
860
|
- **append** append new rows of cells
|
|
778
861
|
|
|
779
|
-
Within each edit, the
|
|
862
|
+
Within each edit, the task provides one or more operations to perform. Each operation relates to a single range of cells and their corresponding new values.
|
|
780
863
|
|
|
781
864
|
```ts
|
|
865
|
+
export type GoogleSpreadsheetCellValue = string | number | boolean | { type: 'ConfigurationLink'; name: string }
|
|
866
|
+
|
|
782
867
|
export interface GoogleSpreadsheetEdit {
|
|
783
868
|
/**
|
|
784
869
|
* Ranges of cells to edit
|
|
785
870
|
*/
|
|
786
|
-
ranges: Record<string,
|
|
871
|
+
ranges: Record<string, GoogleSpreadsheetCellValue[][]>
|
|
787
872
|
|
|
788
873
|
/**
|
|
789
874
|
* Edit mode
|
|
790
875
|
*/
|
|
791
|
-
mode:
|
|
876
|
+
mode: 'append' | 'overwrite'
|
|
792
877
|
}
|
|
793
878
|
```
|
|
794
879
|
|
|
@@ -797,51 +882,62 @@ The operations are stored in the `ranges` property. The keys represent reference
|
|
|
797
882
|
In append mode, the key represents the range of columns that the appended row or rows will span. Cells in the given range are scanned, and data is inserted into the first row where all cells in the range of that row and all subsequent rows are empty.
|
|
798
883
|
|
|
799
884
|
The values are two dimensional arrays of corresponding cell content to write. The major dimension is always 'rows'. That means
|
|
800
|
-
that the outer array represents rows and the inner arrays represent cells arranged in columns.
|
|
885
|
+
that the outer array represents rows and the inner arrays represent cells arranged in columns. A cell is a string, number or boolean, written exactly as given (raw, not parsed as a formula), or `{ type: 'ConfigurationLink', name }`, replaced with a link generated in the same finalization.
|
|
801
886
|
|
|
802
887
|
example:
|
|
803
888
|
|
|
804
889
|
```ts
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
spreadsheetId
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
890
|
+
// src/webhooks/handlers/configurator-finalize-handler/tasks/spreadsheet-task.ts
|
|
891
|
+
export const spreadsheetTask = phx.webhooks.taskFactory.createEditGoogleSpreadsheetTask((resources, data) => {
|
|
892
|
+
const spreadsheetId = phx.webhooksEnv.GOOGLE_SPREADSHEET_ID
|
|
893
|
+
const serviceAccount = phx.webhooksEnv.GOOGLE_SERVICE_ACCOUNT_JSON
|
|
894
|
+
|
|
895
|
+
if (spreadsheetId === undefined || serviceAccount === undefined) {
|
|
896
|
+
return null
|
|
897
|
+
}
|
|
898
|
+
|
|
899
|
+
return {
|
|
900
|
+
type: 'EditGoogleSpreadsheet',
|
|
901
|
+
spreadsheetId,
|
|
902
|
+
credentials: JSON.parse(serviceAccount),
|
|
903
|
+
edits: [
|
|
904
|
+
{
|
|
905
|
+
ranges: {
|
|
906
|
+
'Orders!A:C': [
|
|
907
|
+
[data.configurationId, 'Custom Chair', { type: 'ConfigurationLink', name: resources.ownerLink }],
|
|
908
|
+
],
|
|
909
|
+
},
|
|
910
|
+
mode: 'append',
|
|
816
911
|
},
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
912
|
+
{
|
|
913
|
+
ranges: {
|
|
914
|
+
'Summary!B5': [[new Date().toLocaleString('en-GB')]],
|
|
915
|
+
},
|
|
916
|
+
mode: 'overwrite',
|
|
822
917
|
},
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
}
|
|
918
|
+
],
|
|
919
|
+
}
|
|
920
|
+
})
|
|
827
921
|
```
|
|
828
922
|
|
|
829
923
|
### Callback Hook / Result
|
|
830
924
|
|
|
831
|
-
Sometimes, the provided tasks are not enough and you need to define a custom callback to be called after the tasks are executed.
|
|
925
|
+
Sometimes, the provided tasks are not enough and you need to define a custom callback to be called after the tasks are executed. Build it with `phx.webhooks.callbackBuilder`, register it with `withCallback` on `phx.webhooks.finalizeHandlerBuilder`, and even return a result to the client.
|
|
832
926
|
This callback handler is meant to be used for custom integrations, sending data to 3rd party services, etc.
|
|
833
927
|
|
|
834
|
-
The callback
|
|
928
|
+
The callback adds a `CallLambdaBack` task, which the platform runs after all other tasks; it then calls the webhook's callback operation with the data and resource links. The resource links it receives are signed and expire after 30 minutes. Only resources with an `s3Key` (generated PDFs, CSVs and images) and configuration links can be passed.
|
|
929
|
+
|
|
930
|
+
The callback definition has two parts, first you define a `CallbackData` handler that maps the resources and task data to the data that will be passed to the callback handler.
|
|
835
931
|
|
|
836
932
|
```ts
|
|
837
933
|
// src/webhooks/handlers/configurator-finalize-handler/tasks/callback-task.ts
|
|
838
934
|
export const callbackTask = phx.webhooks.callbackBuilder
|
|
839
935
|
// Task Data and Context is available
|
|
840
|
-
.withCallbackData((resources,
|
|
936
|
+
.withCallbackData((resources, data) => {
|
|
841
937
|
return {
|
|
842
938
|
// data that will be passed to the callback handler
|
|
843
939
|
replayData: {
|
|
844
|
-
emailAddress:
|
|
940
|
+
emailAddress: data.finalizeData.emailAddress,
|
|
845
941
|
},
|
|
846
942
|
// generated resources that should be forwarded to the callback handler
|
|
847
943
|
resources: {
|
|
@@ -880,7 +976,7 @@ The `FinalizeResult` returned from the callback handler is then passed back to t
|
|
|
880
976
|
|
|
881
977
|
## Admin Finalization
|
|
882
978
|
|
|
883
|
-
Admin finalization is triggered when an admin publishes
|
|
979
|
+
Admin finalization is triggered when an admin publishes from Project Admin. The SDK builds the Admin finalization handler automatically: `phx.webhooks` has no builder for it, and `src/webhooks/index.ts` registers nothing. Without chunks, it returns a `PublishRevision` task that maps the `AdminConfiguration` to a public
|
|
884
980
|
`PublishedDataRevision` that is stored in the database and published to s3. Latest published revision link is stored in `SessionToken` and its data are fetched before initializing domain.
|
|
885
981
|
|
|
886
982
|
When chunks are defined in the domain spec, the handler auto-detects them and maps the published data into per-chunk payloads. Current servers provide a pre-signed staging URL; the current SDK uploads all chunks there and returns the lightweight `PublishRevisionChunksStaged` task, keeping chunk data out of the Lambda response and Redis job payload. The server checks the staged object before downloading it: payloads up to **100 MiB** are accepted, while a larger payload fails publishing with an explicit size-limit error.
|
|
@@ -889,30 +985,32 @@ Compatibility is preserved during upgrades. An older SDK still returns the inlin
|
|
|
889
985
|
|
|
890
986
|
No sensitive data should be exposed!
|
|
891
987
|
|
|
892
|
-
The
|
|
988
|
+
The published data is validated against the project's published data schema before a configurator initializes its domain with it.
|
|
893
989
|
|
|
894
|
-
|
|
990
|
+
Presets, preset categories, recipes and swatch options are published without project code. To customise the published data, default-export a handler from a file in `src/handlers/`:
|
|
991
|
+
|
|
992
|
+
- `phx.domain.admin.createMapPublishedRevisionDataHandler(({ entities, adminEntity }) => data)` - the published data of a project without chunks (the `PublishRevision` task)
|
|
993
|
+
- `phx.domain.admin.createMapPublishedChunkedDataHandler(({ entities, adminEntity, connectedSheetData }) => chunks)` - per-chunk data of a project with chunks (the `PublishRevisionChunksStaged` task, or `PublishRevisionChunks` inline when the platform offers no staging upload)
|
|
994
|
+
- `phx.domain.admin.createDataRowValidatorHandler` and `phx.domain.admin.createSheetValidatorHandler` - business rules for manual and connected data, checked again when publishing
|
|
895
995
|
|
|
896
996
|
```ts
|
|
897
|
-
// src/
|
|
898
|
-
export
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
.filter(
|
|
903
|
-
.
|
|
904
|
-
.map(
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
})
|
|
908
|
-
.build()
|
|
997
|
+
// src/handlers/map-published-revision-data.ts
|
|
998
|
+
export default phx.domain.admin.createMapPublishedRevisionDataHandler(({ entities }) => {
|
|
999
|
+
// validated admin entities are passed to the handler
|
|
1000
|
+
return {
|
|
1001
|
+
customMaterials: entities
|
|
1002
|
+
.filter(phx.domain.admin.model.CustomMaterial.is)
|
|
1003
|
+
.filter(material => material.visible)
|
|
1004
|
+
.map(material => ({ id: material.id, name: material.name })),
|
|
1005
|
+
}
|
|
1006
|
+
})
|
|
909
1007
|
```
|
|
910
1008
|
|
|
911
|
-
Before the admin finalization
|
|
1009
|
+
Before the admin finalization runs, the `AdminConfiguration` data are first validated via the admin domain and its violations. See **[Publishing](?path=/docs/phoenix-publishing--docs)** for the mapping handlers and chunks, and **[Connected Data Sources](?path=/docs/phoenix-connected-data-sources--docs)** for `connectedSheetData` and the validators.
|
|
912
1010
|
|
|
913
1011
|
## Auth Hook
|
|
914
1012
|
|
|
915
|
-
Auth hook is triggered when a configurator session is created or refreshed and the deployment enables it.
|
|
1013
|
+
Auth hook is triggered when a configurator session is created or refreshed and the deployment enables it. Enable it in a spec file such as `spec/application.yaml` (add `useClerk: true` as well for Clerk sign-in), then run `phoenix sync`:
|
|
916
1014
|
|
|
917
1015
|
```yaml
|
|
918
1016
|
useAuthHook: true
|
|
@@ -921,32 +1019,36 @@ useAuthHook: true
|
|
|
921
1019
|
Auth hook can define different types of handlers.
|
|
922
1020
|
|
|
923
1021
|
- For Clerk:
|
|
924
|
-
- CodeFlow Handler
|
|
925
|
-
-
|
|
1022
|
+
- CodeFlow Handler (`withClerkCodeHandler`)
|
|
1023
|
+
- Session Handler (`withClerkSessionHandler`), for the inline Clerk sign-in
|
|
1024
|
+
- RefreshFlow Handler (`withClerkRefreshHandler`)
|
|
926
1025
|
- Custom handlers:
|
|
927
|
-
- CodeFlow Handler
|
|
928
|
-
- RefreshFlow Handler
|
|
929
|
-
- AnonymousFlow Handler
|
|
1026
|
+
- CodeFlow Handler (`withCodeHandler`)
|
|
1027
|
+
- RefreshFlow Handler (`withRefreshHandler`)
|
|
1028
|
+
- AnonymousFlow Handler (`withAnonymousHandler`)
|
|
930
1029
|
|
|
931
1030
|
```ts
|
|
932
1031
|
// src/webhooks/handlers/auth-handler.ts
|
|
933
1032
|
export const authHandler = phx.webhooks.authHandlerBuilder
|
|
934
1033
|
// To enable default authentication method with Clerk:
|
|
935
1034
|
.withClerkCodeHandler()
|
|
1035
|
+
.withClerkSessionHandler()
|
|
936
1036
|
.withClerkRefreshHandler()
|
|
937
1037
|
|
|
938
1038
|
// To implement custom auth handlers.
|
|
939
1039
|
// For example to integrate with customer's auth.
|
|
940
1040
|
.withCodeHandler(async payload => {
|
|
941
|
-
// ... CodeFlow implementation
|
|
1041
|
+
// ... CodeFlow implementation, see CodeFlow Handler below
|
|
1042
|
+
return { success: false }
|
|
942
1043
|
})
|
|
943
1044
|
.withRefreshHandler(async payload => {
|
|
944
|
-
// .. RefreshFlow implementation
|
|
1045
|
+
// .. RefreshFlow implementation, see RefreshFlow Handler below
|
|
1046
|
+
return { success: false }
|
|
945
1047
|
})
|
|
946
1048
|
|
|
947
1049
|
// Add to allow anonymous access.
|
|
948
1050
|
.withAnonymousHandler(async () => {
|
|
949
|
-
return { success:
|
|
1051
|
+
return { success: true, data: {}, role: 'anonymous' }
|
|
950
1052
|
})
|
|
951
1053
|
|
|
952
1054
|
// Assign chunk scopes for chunked published data access control.
|
|
@@ -961,6 +1063,8 @@ export const authHandler = phx.webhooks.authHandlerBuilder
|
|
|
961
1063
|
|
|
962
1064
|
For full details on `withPublishedChunkScopes()`, scope resolver patterns, and chunked publishing, see **[Publishing - Access Control](?path=/docs/phoenix-publishing--docs#access-control)**.
|
|
963
1065
|
|
|
1066
|
+
A handler answers `{ success: false }` to refuse the session, or `{ success: true, data, role, refreshToken?, expirationTime?, scopes?, userId? }` to grant it. `role` is `anonymous`, `user`, `admin` or `superadmin`. `expirationTime` is an absolute Unix timestamp in seconds, not a duration, and defaults to 3 hours from now; keep the default, which session tracking assumes, unless the client needs other session lengths. `data` is validated against the spec's `sessionData` schema, which may not declare required properties: Admin and preset sessions carry no custom session data.
|
|
1067
|
+
|
|
964
1068
|
### Clerk handlers
|
|
965
1069
|
|
|
966
1070
|
For the optional inline Configurator and Admin UI that uses `withClerkSessionHandler()`, see [Clerk Sign-In](?path=/docs/phoenix-clerk-sign-in--docs).
|
|
@@ -988,31 +1092,15 @@ We get the rest of the Clerk ENVs after creating a new OAuth application in `[YO
|
|
|
988
1092
|
- `https://<your server>/deployments/auth/callback` for every server the configurator is deployed to
|
|
989
1093
|
- `http://localhost:3000/deployments/auth/callback` for local development
|
|
990
1094
|
|
|
991
|
-
Save the OAuth application, then
|
|
992
|
-
|
|
993
|
-
```
|
|
994
|
-
# Application credentials -> Client ID
|
|
995
|
-
# Where to put it: webhook
|
|
996
|
-
OAUTH_PROVIDER_CLIENT_ID=xxx
|
|
997
|
-
|
|
998
|
-
# Application credentials -> Client Secret
|
|
999
|
-
# Where to put it: webhook
|
|
1000
|
-
OAUTH_PROVIDER_CLIENT_SECRET=xxx
|
|
1095
|
+
Save the OAuth application, then enter in the customer's **Clerk Settings** tab in Studio:
|
|
1001
1096
|
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
```
|
|
1006
|
-
|
|
1007
|
-
Save the same OAuth client ID, client secret, and base URL in the customer's **Clerk Settings** tab in Studio. The remaining webhook variable is not taken from Clerk:
|
|
1097
|
+
- the client ID and client secret from **Application credentials**
|
|
1098
|
+
- the base URL, the origin part of the Discovery URL (`https://<your Clerk frontend API domain>/`)
|
|
1099
|
+
- a JWT secret for signing tokens: the base64 of a long random key
|
|
1008
1100
|
|
|
1009
|
-
|
|
1010
|
-
# For signing tokens - generate reasonably long alphanumeric key
|
|
1011
|
-
# Where to put it: webhook
|
|
1012
|
-
JWT_SECRET_BASE64=<base64 of a long random key>
|
|
1013
|
-
```
|
|
1101
|
+
The platform passes them to the webhook as the generated variables `OAUTH_PROVIDER_CLIENT_ID`, `OAUTH_PROVIDER_CLIENT_SECRET`, `OAUTH_PROVIDER_BASE_URL` and `JWT_SECRET_BASE64`, beside `CLERK_API_KEY`, `FRONTEND_URL` and `RESOURCES_URL`. The project declares none of them and keeps none of them in its `.env`.
|
|
1014
1102
|
|
|
1015
|
-
|
|
1103
|
+
Deploy with `pnpm phoenix deploy`; CI pipelines run `pnpm phoenix deployment:prepare` followed by `pnpm phoenix deployment:finish`. For local development, `phoenix dev` prepares its own development deployment. All of them use the customer settings stored in Studio.
|
|
1016
1104
|
|
|
1017
1105
|
#### Clerk organization
|
|
1018
1106
|
|
|
@@ -1064,27 +1152,40 @@ CodeFlow solves the problem of safely passing credentials to the client from 3rd
|
|
|
1064
1152
|
and receives a one time `code` in return. This code is then passed to the client in a query parameter and used to authenticate the session. The server after receiving
|
|
1065
1153
|
the code, retrieves the passed credentials from temporary storage and calls the Auth Hook CodeFlow Handler. The handler is then responsible for authenticating the user and returning the session data.
|
|
1066
1154
|
|
|
1155
|
+
The code handler receives `{ type: 'code', accessToken, refreshToken?, idToken? }`.
|
|
1156
|
+
|
|
1067
1157
|
```ts
|
|
1068
|
-
export const authHandler = phx.webhooks.authHandlerBuilder.withCodeHandler(async payload => {
|
|
1158
|
+
export const authHandler = phx.webhooks.authHandlerBuilder.withCodeHandler(async (payload, { logger }) => {
|
|
1069
1159
|
// refresh token may or may not be present based on what the 3rd party service sends
|
|
1070
1160
|
const { accessToken, refreshToken } = payload
|
|
1071
1161
|
|
|
1072
|
-
// authenticate the
|
|
1162
|
+
// authenticate the visitor using the provided credentials, fetch user data, etc...
|
|
1163
|
+
const response = await fetch(`${phx.webhooksEnv.CRM_API_URL}/me`, {
|
|
1164
|
+
headers: { authorization: `Bearer ${accessToken}` },
|
|
1165
|
+
})
|
|
1166
|
+
|
|
1167
|
+
if (!response.ok) {
|
|
1168
|
+
logger.warn(`The CRM refused the access token with status ${response.status}.`)
|
|
1169
|
+
// refuse the session
|
|
1170
|
+
return { success: false }
|
|
1171
|
+
}
|
|
1172
|
+
|
|
1173
|
+
const { id: userId }: { readonly id: string } = await response.json()
|
|
1073
1174
|
|
|
1074
1175
|
return {
|
|
1075
|
-
// return true/false based on the authentication result, if
|
|
1176
|
+
// return true/false based on the authentication result, if the handler throws, the webhook will return 500 and an error will be reported to the alerting system
|
|
1076
1177
|
success: true,
|
|
1077
1178
|
data: {
|
|
1078
|
-
// custom session data that will be stored in the session - defined via the
|
|
1179
|
+
// custom session data that will be stored in the session - defined via the sessionData schema
|
|
1079
1180
|
},
|
|
1080
|
-
// role of the
|
|
1181
|
+
// role of the session, can be 'superadmin', 'admin', 'user' or 'anonymous'
|
|
1081
1182
|
role: 'user',
|
|
1082
1183
|
// id of the signed-in user in your system; the session token's `sub` becomes `custom-<userId>`
|
|
1083
1184
|
userId,
|
|
1084
1185
|
// refresh token that will be passed to the refresh flow when the session expires
|
|
1085
1186
|
refreshToken,
|
|
1086
|
-
//
|
|
1087
|
-
|
|
1187
|
+
// optional expirationTime: an absolute Unix timestamp in seconds, not a duration. Keep the 3-hour default,
|
|
1188
|
+
// which session tracking assumes, unless the client needs other session lengths
|
|
1088
1189
|
}
|
|
1089
1190
|
})
|
|
1090
1191
|
```
|
|
@@ -1093,7 +1194,7 @@ export const authHandler = phx.webhooks.authHandlerBuilder.withCodeHandler(async
|
|
|
1093
1194
|
|
|
1094
1195
|
#### RefreshFlow Handler
|
|
1095
1196
|
|
|
1096
|
-
RefreshFlow is triggered when the session is authenticated via `refreshToken`. The handler is responsible for refreshing the session data and returning the new session data.
|
|
1197
|
+
RefreshFlow is triggered when the session is authenticated via `refreshToken`. The handler is responsible for refreshing the session data and returning the new session data. It receives `{ type: 'refresh', refreshToken }`.
|
|
1097
1198
|
|
|
1098
1199
|
```ts
|
|
1099
1200
|
export const authHandler = phx.webhooks.authHandlerBuilder.withRefreshHandler(async payload => {
|
|
@@ -1101,21 +1202,32 @@ export const authHandler = phx.webhooks.authHandlerBuilder.withRefreshHandler(as
|
|
|
1101
1202
|
const { refreshToken } = payload
|
|
1102
1203
|
|
|
1103
1204
|
// Use the refresh token to refresh the session data, fetch user data, etc...
|
|
1205
|
+
const response = await fetch(`${phx.webhooksEnv.CRM_API_URL}/token/refresh`, {
|
|
1206
|
+
method: 'POST',
|
|
1207
|
+
headers: { 'content-type': 'application/json' },
|
|
1208
|
+
body: JSON.stringify({ refreshToken }),
|
|
1209
|
+
})
|
|
1210
|
+
|
|
1211
|
+
if (!response.ok) {
|
|
1212
|
+
return { success: false }
|
|
1213
|
+
}
|
|
1214
|
+
|
|
1215
|
+
const refreshed: { readonly userId: string; readonly refreshToken: string } = await response.json()
|
|
1104
1216
|
|
|
1105
1217
|
return {
|
|
1106
|
-
// return true/false based on the authentication result, if
|
|
1218
|
+
// return true/false based on the authentication result, if the handler throws, the webhook will return 500 and an error will be reported to the alerting system
|
|
1107
1219
|
success: true,
|
|
1108
1220
|
data: {
|
|
1109
|
-
// custom session data that will be stored in the session - defined via the
|
|
1221
|
+
// custom session data that will be stored in the session - defined via the sessionData schema
|
|
1110
1222
|
},
|
|
1111
|
-
// role of the
|
|
1223
|
+
// role of the session, can be 'superadmin', 'admin', 'user' or 'anonymous'
|
|
1112
1224
|
role: 'user',
|
|
1113
1225
|
// return the user id again: a refresh without it turns the session into the browser's anonymous user
|
|
1114
|
-
userId,
|
|
1226
|
+
userId: refreshed.userId,
|
|
1115
1227
|
// refresh token that will be passed to the refresh flow when the session expires
|
|
1116
|
-
refreshToken,
|
|
1117
|
-
//
|
|
1118
|
-
|
|
1228
|
+
refreshToken: refreshed.refreshToken,
|
|
1229
|
+
// optional expirationTime: an absolute Unix timestamp in seconds, not a duration. Keep the 3-hour default,
|
|
1230
|
+
// which session tracking assumes, unless the client needs other session lengths
|
|
1119
1231
|
}
|
|
1120
1232
|
})
|
|
1121
1233
|
```
|
|
@@ -1131,17 +1243,15 @@ export const authHandler = phx.webhooks.authHandlerBuilder
|
|
|
1131
1243
|
// Do whatever you need to here, but it is probably not a good idea
|
|
1132
1244
|
|
|
1133
1245
|
return {
|
|
1134
|
-
// return true/false based on the authentication result, if
|
|
1246
|
+
// return true/false based on the authentication result, if the handler throws, the webhook will return 500 and an error will be reported to the alerting system
|
|
1135
1247
|
success: true,
|
|
1136
1248
|
data: {
|
|
1137
|
-
// custom session data that will be stored in the session - defined via the
|
|
1249
|
+
// custom session data that will be stored in the session - defined via the sessionData schema
|
|
1138
1250
|
},
|
|
1139
|
-
// role of the
|
|
1251
|
+
// role of the session, can be 'superadmin', 'admin', 'user' or 'anonymous'
|
|
1140
1252
|
role: 'anonymous',
|
|
1141
|
-
//
|
|
1142
|
-
|
|
1143
|
-
// expiration time of the session in seconds
|
|
1144
|
-
expirationTime,
|
|
1253
|
+
// optional: absolute Unix timestamp in seconds, not a duration; defaults to 3 hours from now
|
|
1254
|
+
expirationTime: Math.floor(Date.now() / 1000) + 3 * 60 * 60,
|
|
1145
1255
|
}
|
|
1146
1256
|
})
|
|
1147
1257
|
```
|
|
@@ -1206,35 +1316,31 @@ export const configuratorFinalizeHandler = phx.webhooks.finalizeHandlerBuilder
|
|
|
1206
1316
|
|
|
1207
1317
|
The data returned by your prefetch handler is available to all subsequent tasks as `prefetchedData`:
|
|
1208
1318
|
|
|
1209
|
-
```
|
|
1319
|
+
```tsx
|
|
1210
1320
|
// Tasks can access prefetched data
|
|
1211
1321
|
export const pdfTask = phx.webhooks.taskFactory.createGeneratePdfTask((resources, data, ctx) => {
|
|
1212
1322
|
// Access prefetched data
|
|
1213
1323
|
const { totalPrice, estimatedDeliveryDate, productCatalog } = data.prefetchedData
|
|
1214
1324
|
|
|
1215
|
-
return
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
includeResources: [],
|
|
1235
|
-
},
|
|
1236
|
-
// ... rest of PDF configuration
|
|
1237
|
-
}
|
|
1325
|
+
return ctx.pdfTaskBuilder
|
|
1326
|
+
.withResourceName(resources.configurationPdf)
|
|
1327
|
+
.withReactBody(
|
|
1328
|
+
<html>
|
|
1329
|
+
<body>
|
|
1330
|
+
<h1>Configuration Summary</h1>
|
|
1331
|
+
<p>Total Price: {totalPrice}</p>
|
|
1332
|
+
<p>Estimated Delivery: {estimatedDeliveryDate}</p>
|
|
1333
|
+
<ul>
|
|
1334
|
+
{productCatalog.items.map(item => (
|
|
1335
|
+
<li key={item.sku}>
|
|
1336
|
+
{item.name} - {item.sku}
|
|
1337
|
+
</li>
|
|
1338
|
+
))}
|
|
1339
|
+
</ul>
|
|
1340
|
+
</body>
|
|
1341
|
+
</html>
|
|
1342
|
+
)
|
|
1343
|
+
.build()
|
|
1238
1344
|
})
|
|
1239
1345
|
```
|
|
1240
1346
|
|
|
@@ -1266,39 +1372,38 @@ export interface PrefetchTaskData<
|
|
|
1266
1372
|
|
|
1267
1373
|
## Dynamic Resources Factory
|
|
1268
1374
|
|
|
1269
|
-
The Dynamic Resources Factory allows you to create resources dynamically at runtime based on configuration state,
|
|
1375
|
+
The Dynamic Resources Factory allows you to create resources dynamically at runtime based on configuration state, finalize data, or other conditions. Unlike static resource definitions in the spec, dynamic resources are generated programmatically during finalization.
|
|
1270
1376
|
|
|
1271
1377
|
Its handler context exposes the same request-bound `ctx.resolveLocalizable(value)` and raw `ctx.i18n` as task handlers.
|
|
1272
1378
|
|
|
1273
|
-
**Important**: Dynamic resource names are not statically typed since they are created at runtime. You'll need to reference them by string names in templates and tasks.
|
|
1379
|
+
**Important**: Dynamic resource names are not statically typed since they are created at runtime, and they are not part of the `resources` map tasks receive. You'll need to reference them by string names in templates and tasks.
|
|
1274
1380
|
|
|
1275
1381
|
### Available Resource Creation Methods
|
|
1276
1382
|
|
|
1277
1383
|
The `phx.webhooks.dynamicResourcesFactory` provides methods for creating different types of resources:
|
|
1278
1384
|
|
|
1279
1385
|
```ts
|
|
1280
|
-
// src/webhooks/handlers/dynamic-resources.ts
|
|
1386
|
+
// src/webhooks/handlers/configurator-finalize-handler/tasks/dynamic-resources.ts
|
|
1281
1387
|
|
|
1282
|
-
// Server-generated images
|
|
1283
|
-
const generatedImageHandler = phx.webhooks.dynamicResourcesFactory.createGeneratedImage((resources, data
|
|
1388
|
+
// Server-generated images, produced by a GenerateImages task under the same name
|
|
1389
|
+
export const generatedImageHandler = phx.webhooks.dynamicResourcesFactory.createGeneratedImage((resources, data) => {
|
|
1284
1390
|
return {
|
|
1285
|
-
type: '
|
|
1391
|
+
type: 'Image',
|
|
1286
1392
|
name: 'dynamicServerImage',
|
|
1287
1393
|
s3Key: `generated/${data.configurationId}/render.png`,
|
|
1288
1394
|
}
|
|
1289
1395
|
})
|
|
1290
1396
|
|
|
1291
|
-
// Dynamic links
|
|
1292
|
-
const linkHandler = phx.webhooks.dynamicResourcesFactory.createLink((
|
|
1397
|
+
// Dynamic configuration links, produced by a GenerateConfigurationLink task under the same name
|
|
1398
|
+
export const linkHandler = phx.webhooks.dynamicResourcesFactory.createLink(() => {
|
|
1293
1399
|
return {
|
|
1294
|
-
type: '
|
|
1400
|
+
type: 'ConfigurationLink',
|
|
1295
1401
|
name: 'customShareLink',
|
|
1296
|
-
url: `${data.frontendUrl}/share/${data.configurationId}?utm_source=dynamic`,
|
|
1297
1402
|
}
|
|
1298
1403
|
})
|
|
1299
1404
|
|
|
1300
|
-
// Dynamic PDFs
|
|
1301
|
-
const pdfHandler = phx.webhooks.dynamicResourcesFactory.createPdf((resources, data
|
|
1405
|
+
// Dynamic PDFs, produced by a PDF task under the same name
|
|
1406
|
+
export const pdfHandler = phx.webhooks.dynamicResourcesFactory.createPdf((resources, data) => {
|
|
1302
1407
|
return {
|
|
1303
1408
|
type: 'Pdf',
|
|
1304
1409
|
name: 'dynamicReport',
|
|
@@ -1307,7 +1412,21 @@ const pdfHandler = phx.webhooks.dynamicResourcesFactory.createPdf((resources, da
|
|
|
1307
1412
|
})
|
|
1308
1413
|
```
|
|
1309
1414
|
|
|
1310
|
-
Other available methods include: `createClientGeneratedImage
|
|
1415
|
+
Other available methods include: `createClientGeneratedImage` (`{ type: 'Image', name, clientGenerated: true, s3Key }`), `createExistingImage` (`{ type: 'Image', name, exists: true, url }`), `createCsv` (`{ type: 'Csv', name, s3Key? }`), and `createResource` (any of these). `getClientSideImageResourceName(entityId, instanceName)` returns the name of a configurator-rendered image resource.
|
|
1416
|
+
|
|
1417
|
+
### Registering dynamic resources
|
|
1418
|
+
|
|
1419
|
+
A dynamic resource takes effect only when its handler is registered with `withResources` on the finalization handler, one call per handler:
|
|
1420
|
+
|
|
1421
|
+
```ts
|
|
1422
|
+
// src/webhooks/handlers/configurator-finalize-handler/configurator-finalize-handler.ts
|
|
1423
|
+
export const configuratorFinalizeHandler = phx.webhooks.finalizeHandlerBuilder
|
|
1424
|
+
.withResources(generatedImageHandler)
|
|
1425
|
+
.withResources(pdfHandler)
|
|
1426
|
+
.withTask(dynamicImageTask)
|
|
1427
|
+
.withTask(dynamicReportTask)
|
|
1428
|
+
.build()
|
|
1429
|
+
```
|
|
1311
1430
|
|
|
1312
1431
|
### Conditional Resource Creation
|
|
1313
1432
|
|
|
@@ -1324,7 +1443,7 @@ const conditionalImageHandler = phx.webhooks.dynamicResourcesFactory.createGener
|
|
|
1324
1443
|
}
|
|
1325
1444
|
|
|
1326
1445
|
return {
|
|
1327
|
-
type: '
|
|
1446
|
+
type: 'Image',
|
|
1328
1447
|
name: 'customMaterialPreview',
|
|
1329
1448
|
s3Key: `previews/${data.configurationId}/custom-materials.png`,
|
|
1330
1449
|
}
|
|
@@ -1340,7 +1459,7 @@ const multipleImagesHandler = phx.webhooks.dynamicResourcesFactory.createGenerat
|
|
|
1340
1459
|
const colorOptions = data.finalizeData.requestedColors || []
|
|
1341
1460
|
|
|
1342
1461
|
return colorOptions.map((color, index) => ({
|
|
1343
|
-
type: '
|
|
1462
|
+
type: 'Image',
|
|
1344
1463
|
name: `colorPreview${index}`,
|
|
1345
1464
|
s3Key: `colors/${data.configurationId}/${color}.png`,
|
|
1346
1465
|
}))
|
|
@@ -1349,58 +1468,77 @@ const multipleImagesHandler = phx.webhooks.dynamicResourcesFactory.createGenerat
|
|
|
1349
1468
|
|
|
1350
1469
|
### Using Dynamic Resources in Tasks
|
|
1351
1470
|
|
|
1352
|
-
|
|
1471
|
+
Registered dynamic resources are available to finalization tasks by name. A `GenerateImages` task renders the dynamic image, and a PDF built with `pdfTaskBuilder` embeds it and is stored as the dynamic PDF:
|
|
1472
|
+
|
|
1473
|
+
```tsx
|
|
1474
|
+
// src/webhooks/handlers/configurator-finalize-handler/tasks/dynamic-tasks.tsx
|
|
1475
|
+
import { ResourceHelpers } from '@salsita-ai/sdk/webhook'
|
|
1476
|
+
|
|
1477
|
+
export const dynamicImageTask = phx.webhooks.taskFactory.createGenerateImagesTask((_resources, data, ctx) => {
|
|
1478
|
+
const imageConfig = ctx.blenderProjections.getBlenderImageConfig(data.state, 'Default', data.state.rootEntityId, {
|
|
1479
|
+
width: 1920,
|
|
1480
|
+
height: 1080,
|
|
1481
|
+
})
|
|
1353
1482
|
|
|
1354
|
-
```ts
|
|
1355
|
-
export const emailTask = phx.webhooks.taskFactory.createSendEmailTask((resources, data) => {
|
|
1356
1483
|
return {
|
|
1357
|
-
type: '
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
template: '<img src="${"{{"}resource-dynamicServerImage{{"}}"}}" />',
|
|
1363
|
-
data: {},
|
|
1364
|
-
includeResources: [
|
|
1365
|
-
{
|
|
1366
|
-
name: 'dynamicServerImage', // Reference dynamic resource
|
|
1367
|
-
type: 'Image',
|
|
1368
|
-
embeddingType: 'Embedded',
|
|
1369
|
-
},
|
|
1370
|
-
],
|
|
1371
|
-
},
|
|
1372
|
-
attachments: [],
|
|
1484
|
+
type: 'GenerateImages',
|
|
1485
|
+
deploymentId: data.deploymentId,
|
|
1486
|
+
blenderSetupTemplate: 'template.blend',
|
|
1487
|
+
templateFiles: ['LaProvencal.gltf'],
|
|
1488
|
+
images: [{ name: 'dynamicServerImage', fileFormat: 'PNG', ...imageConfig }],
|
|
1373
1489
|
}
|
|
1374
1490
|
})
|
|
1491
|
+
|
|
1492
|
+
export const dynamicReportTask = phx.webhooks.taskFactory.createGeneratePdfTask((_resources, _data, ctx) => {
|
|
1493
|
+
return ctx.pdfTaskBuilder
|
|
1494
|
+
.withResourceName('dynamicReport')
|
|
1495
|
+
.withIncludedResources({
|
|
1496
|
+
// Reference the dynamic resource by its name
|
|
1497
|
+
other: [{ name: 'dynamicServerImage', type: 'Image', embeddingType: 'Embedded' }],
|
|
1498
|
+
})
|
|
1499
|
+
.withReactBody(
|
|
1500
|
+
<html>
|
|
1501
|
+
<body>
|
|
1502
|
+
<ResourceHelpers.Image resource="dynamicServerImage" alt="Your configuration" />
|
|
1503
|
+
</body>
|
|
1504
|
+
</html>
|
|
1505
|
+
)
|
|
1506
|
+
.build()
|
|
1507
|
+
})
|
|
1375
1508
|
```
|
|
1376
1509
|
|
|
1377
1510
|
## Backend Data Handler
|
|
1378
1511
|
|
|
1379
1512
|
The Backend Data Handler allows you to fetch data on the server that will be automatically made available both in the domain (client-side) and in webhook contexts. Its main purpose is to securely fetch data using API keys or other sensitive credentials that cannot be exposed to the client, while making that data available throughout your application.
|
|
1380
1513
|
|
|
1514
|
+
Responses of at least 32 KiB are automatically gzip-compressed when the caller accepts gzip and the base64 representation is smaller. Project handlers return the same `backendData` object; the API and configurator receive decoded JSON. This also works through `phoenix dev` when both the server and CLI support gzip. Older tunnel clients keep plain JSON.
|
|
1515
|
+
|
|
1516
|
+
Compression does not remove platform limits: the complete encoded development-tunnel request must fit within 5 MiB, and deployed webhooks remain subject to Lambda's buffered response limit. The tunnel accepts up to 100 MiB of decoded gzip data. Data that does not compress enough must be reduced or split. Binary responses appear as a byte-count placeholder in the development tunnel inspector.
|
|
1517
|
+
|
|
1518
|
+
The configurator requests backend data in the browser, and the webhook runs the handler again before every configurator finalization, so tasks get their own fresh `backendData`. A failure in the browser only leaves `backendData` undefined; a failure before a finalization fails the finalization.
|
|
1519
|
+
|
|
1381
1520
|
### Defining a Backend Data Handler
|
|
1382
1521
|
|
|
1383
|
-
Backend data handlers are defined inline in the webhook builder
|
|
1522
|
+
Backend data handlers are defined inline in the webhook builder. The handler returns `{ backendData }`:
|
|
1384
1523
|
|
|
1385
1524
|
```ts
|
|
1386
1525
|
// src/webhooks/index.ts
|
|
1387
1526
|
export default phx.webhooks.webhookBuilder
|
|
1388
1527
|
.withAuthHook(authHandler)
|
|
1389
1528
|
.withConfiguratorFinalize(configuratorFinalizeHandler)
|
|
1390
|
-
.withFetchBackendData(async ({
|
|
1529
|
+
.withFetchBackendData(async ({ sessionPayload }, { logger }) => {
|
|
1391
1530
|
logger.info('Fetching backend data')
|
|
1392
1531
|
|
|
1393
|
-
// Fetch
|
|
1394
|
-
const
|
|
1395
|
-
headers: { Authorization: `Bearer ${phx.webhooksEnv.
|
|
1396
|
-
})
|
|
1397
|
-
|
|
1398
|
-
const pricingData = await fetchPricingData(deploymentId, phx.webhooksEnv.PRICING_API_KEY)
|
|
1532
|
+
// Fetch with an API key the browser never sees; customerId is a field of the spec's sessionData
|
|
1533
|
+
const response = await fetch(`${phx.webhooksEnv.PRICING_API_URL}/customers/${sessionPayload.customerId}`, {
|
|
1534
|
+
headers: { Authorization: `Bearer ${phx.webhooksEnv.PRICING_API_KEY}` },
|
|
1535
|
+
})
|
|
1536
|
+
const customer: { readonly tier: string; readonly basePrice: number } = await response.json()
|
|
1399
1537
|
|
|
1400
1538
|
return {
|
|
1401
1539
|
backendData: {
|
|
1402
|
-
|
|
1403
|
-
|
|
1540
|
+
tier: customer.tier,
|
|
1541
|
+
basePrice: customer.basePrice,
|
|
1404
1542
|
fetchedAt: new Date().toISOString(),
|
|
1405
1543
|
},
|
|
1406
1544
|
}
|
|
@@ -1417,12 +1555,14 @@ Define the schema for backend data in `spec/application.yaml`:
|
|
|
1417
1555
|
backendData:
|
|
1418
1556
|
type: object
|
|
1419
1557
|
properties:
|
|
1420
|
-
|
|
1558
|
+
tier:
|
|
1559
|
+
type: string
|
|
1560
|
+
basePrice:
|
|
1421
1561
|
type: number
|
|
1422
|
-
|
|
1423
|
-
type:
|
|
1562
|
+
fetchedAt:
|
|
1563
|
+
type: string
|
|
1424
1564
|
required:
|
|
1425
|
-
-
|
|
1565
|
+
- fetchedAt
|
|
1426
1566
|
additionalProperties: false
|
|
1427
1567
|
```
|
|
1428
1568
|
|
|
@@ -1432,46 +1572,31 @@ Backend data is automatically fetched and made available throughout your applica
|
|
|
1432
1572
|
|
|
1433
1573
|
**In the Domain (Client-side)**: The data is automatically available in the domain context and can be used in expressions, components, and UI logic.
|
|
1434
1574
|
|
|
1435
|
-
**In Webhooks**: Backend data is available to prefetch handlers and finalization tasks:
|
|
1575
|
+
**In Webhooks**: Backend data is available to prefetch handlers and finalization tasks as `data.backendData`. Like `ctx.backendData` in expressions, it is `Record<string, unknown> | undefined`: the schema validates the handler's answer but does not type what reads it, so narrow each value before use:
|
|
1436
1576
|
|
|
1437
|
-
```
|
|
1577
|
+
```tsx
|
|
1438
1578
|
// Prefetch handlers receive backend data
|
|
1439
1579
|
export const prefetchHandler = phx.webhooks.prefetchBuilder
|
|
1440
|
-
.withPrefetchHandler(
|
|
1441
|
-
const
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
const discountRate = userProfile?.tier === 'premium' ? 0.15 : 0.05
|
|
1445
|
-
const finalPrice = pricingData?.basePrice * (1 - discountRate)
|
|
1446
|
-
|
|
1447
|
-
// Fetch additional data based on user profile
|
|
1448
|
-
const recommendedProducts = await fetchRecommendedProducts(userProfile?.preferences)
|
|
1580
|
+
.withPrefetchHandler(data => {
|
|
1581
|
+
const tier = data.backendData?.['tier']
|
|
1582
|
+
const basePrice = data.backendData?.['basePrice']
|
|
1583
|
+
const discountRate = tier === 'premium' ? 0.15 : 0.05
|
|
1449
1584
|
|
|
1450
1585
|
return {
|
|
1451
1586
|
discountRate,
|
|
1452
|
-
finalPrice,
|
|
1453
|
-
recommendedProducts,
|
|
1454
|
-
userTier: userProfile?.tier,
|
|
1587
|
+
finalPrice: typeof basePrice === 'number' ? basePrice * (1 - discountRate) : null,
|
|
1455
1588
|
}
|
|
1456
1589
|
})
|
|
1457
1590
|
.build()
|
|
1458
1591
|
|
|
1459
1592
|
// Tasks also receive backend data
|
|
1460
1593
|
export const pricingTask = phx.webhooks.taskFactory.createGeneratePdfTask((resources, data, ctx) => {
|
|
1461
|
-
const
|
|
1594
|
+
const basePrice = data.backendData?.['basePrice']
|
|
1462
1595
|
|
|
1463
|
-
return
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
template: '<h1>Price: ${"{{"}price{{"}}"}}</h1>',
|
|
1468
|
-
data: {
|
|
1469
|
-
price: pricingData?.totalPrice || 'N/A',
|
|
1470
|
-
},
|
|
1471
|
-
includeResources: [],
|
|
1472
|
-
},
|
|
1473
|
-
// ... rest of PDF configuration
|
|
1474
|
-
}
|
|
1596
|
+
return ctx.pdfTaskBuilder
|
|
1597
|
+
.withResourceName(resources.pricingReport)
|
|
1598
|
+
.withReactBody(<h1>Price: {typeof basePrice === 'number' ? basePrice.toFixed(2) : 'N/A'}</h1>)
|
|
1599
|
+
.build()
|
|
1475
1600
|
})
|
|
1476
1601
|
```
|
|
1477
1602
|
|
|
@@ -1486,13 +1611,16 @@ export interface FetchBackendDataPayload<
|
|
|
1486
1611
|
> {
|
|
1487
1612
|
deploymentId: DeploymentId
|
|
1488
1613
|
frontendUrl: FrontendUrl
|
|
1489
|
-
frontendData
|
|
1614
|
+
frontendData?: FRONTEND_DATA
|
|
1490
1615
|
sessionRole: SessionRole
|
|
1491
1616
|
sessionPayload: SESSION_DATA
|
|
1492
|
-
publishedAdminRevisionPath
|
|
1617
|
+
publishedAdminRevisionPath?: string
|
|
1618
|
+
publishedChunkUrls?: Record<string, string>
|
|
1493
1619
|
}
|
|
1494
1620
|
```
|
|
1495
1621
|
|
|
1622
|
+
The `backendData` the handler returns is validated against the `backendData` schema.
|
|
1623
|
+
|
|
1496
1624
|
### Use Cases
|
|
1497
1625
|
|
|
1498
1626
|
Backend data handlers are ideal when you need to:
|
|
@@ -1530,11 +1658,11 @@ In this guide, we explored Phoenix's webhook system:
|
|
|
1530
1658
|
- **Webhook-based architecture** enables server-side processing for authentication, finalization, and admin workflows
|
|
1531
1659
|
- **Domain-aware builders** provide type-safe webhook development with full access to domain context
|
|
1532
1660
|
- **Environment variables** allow secure configuration management for API keys and external service credentials
|
|
1533
|
-
- **Task execution pipeline**
|
|
1661
|
+
- **Task execution pipeline** runs tasks by type, so links and rendered images are ready before the PDFs, emails and callback that use them
|
|
1534
1662
|
- **Resource system** manages static domain resources and dynamic runtime-generated resources
|
|
1535
1663
|
- **React templates** render PDF and email bodies as `.tsx` trees via builder chains, with Handlebars retained as legacy
|
|
1536
1664
|
- **Authentication hooks** support custom auth flows, Clerk integration, and anonymous access patterns
|
|
1537
|
-
- **Admin finalization
|
|
1665
|
+
- **Admin finalization**, built by the SDK and customised with handlers, transforms admin configurations into published data for configurators
|
|
1538
1666
|
|
|
1539
1667
|
**Advanced Features:**
|
|
1540
1668
|
|
|
@@ -1555,3 +1683,55 @@ Now that you understand Phoenix's webhook system, explore these related topics:
|
|
|
1555
1683
|
- **[Best Practices](?path=/docs/phoenix-best-practices--docs)** - Follow proven patterns for webhook implementation and deployment
|
|
1556
1684
|
|
|
1557
1685
|
For hands-on practice, explore webhook examples in the **[demo projects](?path=/docs/phoenix-quickstart--docs)** and finalization workflows.
|
|
1686
|
+
|
|
1687
|
+
## Cognito configurator sign-in
|
|
1688
|
+
|
|
1689
|
+
Use shared Phoenix accounts when invited dealers should open a configurator and project administrators should edit its catalog. This path requires a Cognito SDK Builder workspace and the current application-spec pipeline. Standard customers and staff retain Clerk; existing `useClerk` and custom handlers keep their defaults.
|
|
1690
|
+
|
|
1691
|
+
Add this to `spec/application.yaml`, then run `phoenix sync` and deploy to your workspace:
|
|
1692
|
+
|
|
1693
|
+
```yaml
|
|
1694
|
+
useCognito: true
|
|
1695
|
+
sessionData:
|
|
1696
|
+
type: object
|
|
1697
|
+
properties:
|
|
1698
|
+
id:
|
|
1699
|
+
type: string
|
|
1700
|
+
emailAddress:
|
|
1701
|
+
type: string
|
|
1702
|
+
fullName:
|
|
1703
|
+
type:
|
|
1704
|
+
- string
|
|
1705
|
+
- 'null'
|
|
1706
|
+
accessToken:
|
|
1707
|
+
type: string
|
|
1708
|
+
tags:
|
|
1709
|
+
type: array
|
|
1710
|
+
items:
|
|
1711
|
+
type: string
|
|
1712
|
+
required: []
|
|
1713
|
+
additionalProperties: false
|
|
1714
|
+
```
|
|
1715
|
+
|
|
1716
|
+
`useCognito` enables the auth hook, generated redirect sign-in pages, and the built-in Cognito handler. It cannot be combined with `useClerk: true` or `useAuthHook: false`. An incompatible session schema reports `COGNITO_SESSION_DATA_INCOMPATIBLE`. No custom webhook is needed for an invitation-only project: the built-in webhook refuses anonymous sessions.
|
|
1717
|
+
|
|
1718
|
+
If the project already has a webhook, register its auth hook as usual. The generated auth builder accepts Cognito identities automatically; `withCognitoHandlers()` also enables the handler when assembling a builder manually. Anonymous, custom code and custom refresh handlers compose with it:
|
|
1719
|
+
|
|
1720
|
+
```typescript
|
|
1721
|
+
const authHandler = phx.webhooks.authHandlerBuilder
|
|
1722
|
+
.withCognitoHandlers()
|
|
1723
|
+
.withAnonymousHandler(async () => ({ success: true, data: {}, role: 'anonymous' }))
|
|
1724
|
+
.build()
|
|
1725
|
+
|
|
1726
|
+
export default phx.webhooks.webhookBuilder.withAuthHook(authHandler).build()
|
|
1727
|
+
```
|
|
1728
|
+
|
|
1729
|
+
The server redirects through the shared pool's login and `/auth/callback`, then returns a one-use code to the exact allowed frontend origin, preserving its path and query. A signed-in Studio account may still need to authenticate. A missing project grant opens **Access denied**, with an explicit retry instead of a redirect loop. Project User grants open the configurator; Admin and Superadmin grants also open its admin. Workspace Superadmins inherit every project. Workspace User/Admin membership alone grants no project access and does not grant Builder management access.
|
|
1730
|
+
|
|
1731
|
+
`id` is the stable Phoenix account UUID; the session subject is `phoenix-<id>`. `emailAddress` comes from verified native email, `tags` from the current workspace membership, and `fullName` is currently null. `accessToken` is an empty compatibility field: Cognito credentials never reach project code. Custom fields may be added to the schema, but the server protects identity, role and tags from changes by a webhook.
|
|
1732
|
+
|
|
1733
|
+
Sessions last at most five minutes and refresh through an opaque credential bounded to fifteen minutes from sign-in. Refresh does not renew that authentication deadline; sign in again afterwards. The server checks current account status, membership, project role and tags on each protected API request and refresh. Revocation takes effect on the next API request; changed tags or role require a refresh. This does not retract data already downloaded by the browser. Local sign-out clears the configurator session; the shared provider cookie can still make a later explicit sign-in silent.
|
|
1734
|
+
|
|
1735
|
+
Only the existing public `SERVER_URL` and `DEPLOYMENT_ID` are needed in generated projects. The server owns the pool/client configuration, login callback and credentials. There is no customer OAuth secret or per-customer Cognito client. The server sends resolved identities only over the existing IAM-authenticated Lambda transport or authenticated development tunnel; never expose a production webhook as an unauthenticated HTTP endpoint.
|
|
1736
|
+
|
|
1737
|
+
The Fold `demo-modular-layout` demonstrates Cognito admin sign-in alongside a public anonymous configurator. Its README describes workspace setup and the manual regression flow. Browser-local persistence cannot exercise real Cognito sign-in. Social sign-in/linking, MFA, public signup, custom branding and Standard-customer migration are separate work.
|