@wildo-ai/saas-frontend-lib 1.1.9 → 1.1.11
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/dist/esm/companion-exports.d.ts +2 -1
- package/dist/esm/companion-exports.d.ts.map +1 -1
- package/dist/esm/companion-exports.js +2 -1
- package/dist/esm/companion-exports.js.map +1 -1
- package/dist/esm/components/actions/action-bar.d.ts +45 -1
- package/dist/esm/components/actions/action-bar.d.ts.map +1 -1
- package/dist/esm/components/actions/action-bar.js +84 -0
- package/dist/esm/components/actions/action-bar.js.map +1 -1
- package/dist/esm/components/actions/button.d.ts +22 -0
- package/dist/esm/components/actions/button.d.ts.map +1 -1
- package/dist/esm/components/actions/button.js +45 -0
- package/dist/esm/components/actions/button.js.map +1 -1
- package/dist/esm/components/ai-elements/chat/conversation-thread.d.ts +109 -0
- package/dist/esm/components/ai-elements/chat/conversation-thread.d.ts.map +1 -0
- package/dist/esm/components/ai-elements/chat/conversation-thread.js +22 -0
- package/dist/esm/components/ai-elements/chat/conversation-thread.js.map +1 -0
- package/dist/esm/components/ai-elements/decision/approval.d.ts +103 -7
- package/dist/esm/components/ai-elements/decision/approval.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/decision/approval.js.map +1 -1
- package/dist/esm/components/ai-elements/execution/tool.d.ts +6 -0
- package/dist/esm/components/ai-elements/execution/tool.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/execution/tool.js.map +1 -1
- package/dist/esm/components/ai-elements/graph/canvas.d.ts +60 -1
- package/dist/esm/components/ai-elements/graph/canvas.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/canvas.js +26 -0
- package/dist/esm/components/ai-elements/graph/canvas.js.map +1 -1
- package/dist/esm/components/ai-elements/graph/node.d.ts +39 -4
- package/dist/esm/components/ai-elements/graph/node.d.ts.map +1 -1
- package/dist/esm/components/ai-elements/graph/node.js +18 -0
- package/dist/esm/components/ai-elements/graph/node.js.map +1 -1
- package/dist/esm/components/app/AppLayout_AuthenticatedRoute.d.ts +6 -0
- package/dist/esm/components/app/AppLayout_AuthenticatedRoute.d.ts.map +1 -1
- package/dist/esm/components/app/AppLayout_AuthenticatedRoute.js +29 -8
- package/dist/esm/components/app/AppLayout_AuthenticatedRoute.js.map +1 -1
- package/dist/esm/components/app/AppLayout_DecisionInbox.d.ts +17 -0
- package/dist/esm/components/app/AppLayout_DecisionInbox.d.ts.map +1 -0
- package/dist/esm/components/app/AppLayout_DecisionInbox.js +24 -0
- package/dist/esm/components/app/AppLayout_DecisionInbox.js.map +1 -0
- package/dist/esm/components/app/AppLayout_MainContainer.d.ts.map +1 -1
- package/dist/esm/components/app/AppLayout_MainContainer.js +3 -0
- package/dist/esm/components/app/AppLayout_MainContainer.js.map +1 -1
- package/dist/esm/components/app/PublicLayout_LegalNotice.d.ts +18 -0
- package/dist/esm/components/app/PublicLayout_LegalNotice.d.ts.map +1 -0
- package/dist/esm/components/app/PublicLayout_LegalNotice.js +8 -0
- package/dist/esm/components/app/PublicLayout_LegalNotice.js.map +1 -0
- package/dist/esm/components/app/PublicLayout_LegalNotice.labels.d.ts +3 -0
- package/dist/esm/components/app/PublicLayout_LegalNotice.labels.d.ts.map +1 -0
- package/dist/esm/components/app/PublicLayout_LegalNotice.labels.js +38 -0
- package/dist/esm/components/app/PublicLayout_LegalNotice.labels.js.map +1 -0
- package/dist/esm/components/auth/Auth_ChatIdentityLink.d.ts +15 -0
- package/dist/esm/components/auth/Auth_ChatIdentityLink.d.ts.map +1 -0
- package/dist/esm/components/auth/Auth_ChatIdentityLink.js +219 -0
- package/dist/esm/components/auth/Auth_ChatIdentityLink.js.map +1 -0
- package/dist/esm/components/auth/Auth_ChatIdentityLink.labels.d.ts +3 -0
- package/dist/esm/components/auth/Auth_ChatIdentityLink.labels.d.ts.map +1 -0
- package/dist/esm/components/auth/Auth_ChatIdentityLink.labels.js +49 -0
- package/dist/esm/components/auth/Auth_ChatIdentityLink.labels.js.map +1 -0
- package/dist/esm/components/auth/Auth_Invitation.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_Invitation.js +3 -2
- package/dist/esm/components/auth/Auth_Invitation.js.map +1 -1
- package/dist/esm/components/auth/Auth_Invitation.labels.js +2 -2
- package/dist/esm/components/auth/Auth_Invitation.labels.js.map +1 -1
- package/dist/esm/components/auth/Auth_Main.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_Main.js +40 -7
- package/dist/esm/components/auth/Auth_Main.js.map +1 -1
- package/dist/esm/components/auth/Auth_Main.labels.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_Main.labels.js +9 -0
- package/dist/esm/components/auth/Auth_Main.labels.js.map +1 -1
- package/dist/esm/components/auth/Auth_OAuthConsent.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_OAuthConsent.js +3 -2
- package/dist/esm/components/auth/Auth_OAuthConsent.js.map +1 -1
- package/dist/esm/components/auth/Auth_PasswordLost.labels.js +2 -2
- package/dist/esm/components/auth/Auth_PasswordLost.labels.js.map +1 -1
- package/dist/esm/components/auth/Auth_Register.d.ts.map +1 -1
- package/dist/esm/components/auth/Auth_Register.js +8 -1
- package/dist/esm/components/auth/Auth_Register.js.map +1 -1
- package/dist/esm/components/auth/Auth_Register.labels.js +2 -2
- package/dist/esm/components/auth/Auth_Register.labels.js.map +1 -1
- package/dist/esm/components/auth/StepUpAuthDialog.d.ts +1 -1
- package/dist/esm/components/auth/StepUpAuthDialog.js +3 -3
- package/dist/esm/components/auth/StepUpAuthDialog.js.map +1 -1
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.d.ts.map +1 -1
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.js +94 -6
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.js.map +1 -1
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.d.ts.map +1 -1
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.js +21 -1
- package/dist/esm/components/auth/admin-config/AppPage_SecuritySettings.labels.js.map +1 -1
- package/dist/esm/components/auth/admin-config/ResourceLayoutPreset_Create_SamlWizard.d.ts.map +1 -1
- package/dist/esm/components/auth/admin-config/ResourceLayoutPreset_Create_SamlWizard.js +16 -13
- package/dist/esm/components/auth/admin-config/ResourceLayoutPreset_Create_SamlWizard.js.map +1 -1
- package/dist/esm/components/auth/admin-config/SsoConnectionSamlReadSection.js +3 -3
- package/dist/esm/components/auth/admin-config/SsoConnectionSamlReadSection.js.map +1 -1
- package/dist/esm/components/auth/enrollment/PasskeyEnrollmentMethod.d.ts.map +1 -1
- package/dist/esm/components/auth/enrollment/PasskeyEnrollmentMethod.js +1 -1
- package/dist/esm/components/auth/enrollment/PasskeyEnrollmentMethod.js.map +1 -1
- package/dist/esm/components/auth/methods/OrgSamlAuthMethod.d.ts +1 -1
- package/dist/esm/components/auth/methods/OrgSamlAuthMethod.d.ts.map +1 -1
- package/dist/esm/components/auth/methods/OrgSamlAuthMethod.js +3 -4
- package/dist/esm/components/auth/methods/OrgSamlAuthMethod.js.map +1 -1
- package/dist/esm/components/auth/pages/AuthPage_ChatIdentityLink.d.ts +11 -0
- package/dist/esm/components/auth/pages/AuthPage_ChatIdentityLink.d.ts.map +1 -0
- package/dist/esm/components/auth/pages/AuthPage_ChatIdentityLink.js +25 -0
- package/dist/esm/components/auth/pages/AuthPage_ChatIdentityLink.js.map +1 -0
- package/dist/esm/components/auth/utils/AuthPrivacyNoticeLink.d.ts +39 -0
- package/dist/esm/components/auth/utils/AuthPrivacyNoticeLink.d.ts.map +1 -0
- package/dist/esm/components/auth/utils/AuthPrivacyNoticeLink.js +45 -0
- package/dist/esm/components/auth/utils/AuthPrivacyNoticeLink.js.map +1 -0
- package/dist/esm/components/auth/utils/PasswordStrengthIndicator.js +1 -1
- package/dist/esm/components/auth/utils/PasswordStrengthIndicator.js.map +1 -1
- package/dist/esm/components/compliance/GovernedDocumentAcceptanceControl.d.ts.map +1 -1
- package/dist/esm/components/compliance/GovernedDocumentAcceptanceControl.js +2 -1
- package/dist/esm/components/compliance/GovernedDocumentAcceptanceControl.js.map +1 -1
- package/dist/esm/components/data-display/AutomaticDisplayer.d.ts.map +1 -1
- package/dist/esm/components/data-display/AutomaticDisplayer.js +21 -35
- package/dist/esm/components/data-display/AutomaticDisplayer.js.map +1 -1
- package/dist/esm/components/data-display/DisplayField.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayField.js +98 -70
- package/dist/esm/components/data-display/DisplayField.js.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldEditable.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldEditable.js +48 -8
- package/dist/esm/components/data-display/DisplayFieldEditable.js.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldEditableArray.d.ts +3 -1
- package/dist/esm/components/data-display/DisplayFieldEditableArray.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldEditableArray.js +30 -4
- package/dist/esm/components/data-display/DisplayFieldEditableArray.js.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldReadOnly.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayFieldReadOnly.js +2 -2
- package/dist/esm/components/data-display/DisplayFieldReadOnly.js.map +1 -1
- package/dist/esm/components/data-display/DisplayValueDispatcher.d.ts +1 -1
- package/dist/esm/components/data-display/DisplayValueDispatcher.d.ts.map +1 -1
- package/dist/esm/components/data-display/DisplayValueDispatcher.js +45 -94
- package/dist/esm/components/data-display/DisplayValueDispatcher.js.map +1 -1
- package/dist/esm/components/data-display/ResourceAutomaticDisplayer.d.ts.map +1 -1
- package/dist/esm/components/data-display/ResourceAutomaticDisplayer.js +14 -8
- package/dist/esm/components/data-display/ResourceAutomaticDisplayer.js.map +1 -1
- package/dist/esm/components/data-display/ResourceSummaryDisplayer.d.ts +41 -3
- package/dist/esm/components/data-display/ResourceSummaryDisplayer.d.ts.map +1 -1
- package/dist/esm/components/data-display/ResourceSummaryDisplayer.js +49 -5
- package/dist/esm/components/data-display/ResourceSummaryDisplayer.js.map +1 -1
- package/dist/esm/components/data-display/SummaryContext.d.ts +2 -2
- package/dist/esm/components/data-display/SummaryContext.js.map +1 -1
- package/dist/esm/components/data-display/automatic-displayer.utils.d.ts +22 -1
- package/dist/esm/components/data-display/automatic-displayer.utils.d.ts.map +1 -1
- package/dist/esm/components/data-display/automatic-displayer.utils.js +29 -0
- package/dist/esm/components/data-display/automatic-displayer.utils.js.map +1 -1
- package/dist/esm/components/data-display/badge.d.ts +9 -0
- package/dist/esm/components/data-display/badge.d.ts.map +1 -1
- package/dist/esm/components/data-display/badge.js.map +1 -1
- package/dist/esm/components/data-display/chromes/DisplayFieldChrome.d.ts +14 -2
- package/dist/esm/components/data-display/chromes/DisplayFieldChrome.d.ts.map +1 -1
- package/dist/esm/components/data-display/chromes/DisplayFieldChrome.js +42 -12
- package/dist/esm/components/data-display/chromes/DisplayFieldChrome.js.map +1 -1
- package/dist/esm/components/data-display/chromes/display-chrome-mode-resolution.d.ts +10 -0
- package/dist/esm/components/data-display/chromes/display-chrome-mode-resolution.d.ts.map +1 -0
- package/dist/esm/components/data-display/chromes/display-chrome-mode-resolution.js +18 -0
- package/dist/esm/components/data-display/chromes/display-chrome-mode-resolution.js.map +1 -0
- package/dist/esm/components/data-display/chromes/field-tile-boundaries.d.ts +38 -0
- package/dist/esm/components/data-display/chromes/field-tile-boundaries.d.ts.map +1 -0
- package/dist/esm/components/data-display/chromes/field-tile-boundaries.js +30 -0
- package/dist/esm/components/data-display/chromes/field-tile-boundaries.js.map +1 -0
- package/dist/esm/components/data-display/chromes/field-tiles.utils.d.ts +22 -0
- package/dist/esm/components/data-display/chromes/field-tiles.utils.d.ts.map +1 -0
- package/dist/esm/components/data-display/chromes/field-tiles.utils.js +52 -0
- package/dist/esm/components/data-display/chromes/field-tiles.utils.js.map +1 -0
- package/dist/esm/components/data-display/display-field-resolved-props.d.ts +4 -0
- package/dist/esm/components/data-display/display-field-resolved-props.d.ts.map +1 -1
- package/dist/esm/components/data-display/display-field-resolved-props.js.map +1 -1
- package/dist/esm/components/data-display/display-layout-template.utils.d.ts +18 -0
- package/dist/esm/components/data-display/display-layout-template.utils.d.ts.map +1 -0
- package/dist/esm/components/data-display/display-layout-template.utils.js +18 -0
- package/dist/esm/components/data-display/display-layout-template.utils.js.map +1 -0
- package/dist/esm/components/data-display/display-value-emptiness.utils.d.ts +44 -0
- package/dist/esm/components/data-display/display-value-emptiness.utils.d.ts.map +1 -0
- package/dist/esm/components/data-display/display-value-emptiness.utils.js +61 -0
- package/dist/esm/components/data-display/display-value-emptiness.utils.js.map +1 -0
- package/dist/esm/components/data-display/empty-value-mark.d.ts +31 -0
- package/dist/esm/components/data-display/empty-value-mark.d.ts.map +1 -0
- package/dist/esm/components/data-display/empty-value-mark.js +49 -0
- package/dist/esm/components/data-display/empty-value-mark.js.map +1 -0
- package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.d.ts +3 -2
- package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.d.ts.map +1 -1
- package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.js +4 -4
- package/dist/esm/components/data-display/external-data-provenance/DisplayFieldProvenanceNote.js.map +1 -1
- package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.d.ts +6 -3
- package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.d.ts.map +1 -1
- package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.js +22 -12
- package/dist/esm/components/data-display/external-data-provenance/external-data-provenance.frontend.js.map +1 -1
- package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.js +2 -2
- package/dist/esm/components/data-display/external-data-provenance/useExternalDataFieldProvenance.js.map +1 -1
- package/dist/esm/components/data-display/reference-display-target.d.ts +98 -0
- package/dist/esm/components/data-display/reference-display-target.d.ts.map +1 -0
- package/dist/esm/components/data-display/reference-display-target.js +154 -0
- package/dist/esm/components/data-display/reference-display-target.js.map +1 -0
- package/dist/esm/components/data-display/summary-value-naming.context.d.ts +15 -0
- package/dist/esm/components/data-display/summary-value-naming.context.d.ts.map +1 -0
- package/dist/esm/components/data-display/summary-value-naming.context.js +18 -0
- package/dist/esm/components/data-display/summary-value-naming.context.js.map +1 -0
- package/dist/esm/components/data-display/tone-marker.d.ts +38 -0
- package/dist/esm/components/data-display/tone-marker.d.ts.map +1 -0
- package/dist/esm/components/data-display/tone-marker.js +56 -0
- package/dist/esm/components/data-display/tone-marker.js.map +1 -0
- package/dist/esm/components/data-display/useFileActivation.d.ts.map +1 -1
- package/dist/esm/components/data-display/useFileActivation.js +2 -9
- package/dist/esm/components/data-display/useFileActivation.js.map +1 -1
- package/dist/esm/components/feedback/features/feature-limit-indicator.d.ts.map +1 -1
- package/dist/esm/components/feedback/features/feature-limit-indicator.js +12 -4
- package/dist/esm/components/feedback/features/feature-limit-indicator.js.map +1 -1
- package/dist/esm/components/feedback/operations-confirm-critical.d.ts +8 -0
- package/dist/esm/components/feedback/operations-confirm-critical.d.ts.map +1 -1
- package/dist/esm/components/feedback/operations-confirm-critical.js.map +1 -1
- package/dist/esm/components/files/Files_UploadGrantDrop.d.ts +0 -5
- package/dist/esm/components/files/Files_UploadGrantDrop.d.ts.map +1 -1
- package/dist/esm/components/files/Files_UploadGrantDrop.js +5 -17
- package/dist/esm/components/files/Files_UploadGrantDrop.js.map +1 -1
- package/dist/esm/components/flows-actors/actor.d.ts +21 -4
- package/dist/esm/components/flows-actors/actor.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/actor.js +114 -192
- package/dist/esm/components/flows-actors/actor.js.map +1 -1
- package/dist/esm/components/flows-actors/actor.labels.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/actor.labels.js +5 -10
- package/dist/esm/components/flows-actors/actor.labels.js.map +1 -1
- package/dist/esm/components/flows-actors/agent-config.labels.js +1 -1
- package/dist/esm/components/flows-actors/agent-config.labels.js.map +1 -1
- package/dist/esm/components/flows-actors/approval-modification-refusal.utils.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/approval-modification-refusal.utils.js +1 -0
- package/dist/esm/components/flows-actors/approval-modification-refusal.utils.js.map +1 -1
- package/dist/esm/components/flows-actors/approval.d.ts +26 -16
- package/dist/esm/components/flows-actors/approval.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/approval.js +208 -70
- package/dist/esm/components/flows-actors/approval.js.map +1 -1
- package/dist/esm/components/flows-actors/approval.labels.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/approval.labels.js +67 -22
- package/dist/esm/components/flows-actors/approval.labels.js.map +1 -1
- package/dist/esm/components/flows-actors/artifact-browser.labels.js +1 -1
- package/dist/esm/components/flows-actors/artifact-browser.labels.js.map +1 -1
- package/dist/esm/components/flows-actors/execution-plan.d.ts +19 -7
- package/dist/esm/components/flows-actors/execution-plan.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/execution-plan.js +55 -41
- package/dist/esm/components/flows-actors/execution-plan.js.map +1 -1
- package/dist/esm/components/flows-actors/execution-plan.labels.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/execution-plan.labels.js +25 -8
- package/dist/esm/components/flows-actors/execution-plan.labels.js.map +1 -1
- package/dist/esm/components/flows-actors/execution-usage.d.ts +69 -0
- package/dist/esm/components/flows-actors/execution-usage.d.ts.map +1 -0
- package/dist/esm/components/flows-actors/execution-usage.js +189 -0
- package/dist/esm/components/flows-actors/execution-usage.js.map +1 -0
- package/dist/esm/components/flows-actors/execution-usage.labels.d.ts +3 -0
- package/dist/esm/components/flows-actors/execution-usage.labels.d.ts.map +1 -0
- package/dist/esm/components/flows-actors/execution-usage.labels.js +27 -0
- package/dist/esm/components/flows-actors/execution-usage.labels.js.map +1 -0
- package/dist/esm/components/flows-actors/flow-execution.d.ts +23 -6
- package/dist/esm/components/flows-actors/flow-execution.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/flow-execution.js +56 -208
- package/dist/esm/components/flows-actors/flow-execution.js.map +1 -1
- package/dist/esm/components/flows-actors/flow-execution.labels.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/flow-execution.labels.js +3 -10
- package/dist/esm/components/flows-actors/flow-execution.labels.js.map +1 -1
- package/dist/esm/components/flows-actors/flow-node-badges.d.ts +54 -21
- package/dist/esm/components/flows-actors/flow-node-badges.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/flow-node-badges.js +80 -6
- package/dist/esm/components/flows-actors/flow-node-badges.js.map +1 -1
- package/dist/esm/components/flows-actors/flow-node.labels.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/flow-node.labels.js +0 -8
- package/dist/esm/components/flows-actors/flow-node.labels.js.map +1 -1
- package/dist/esm/components/flows-actors/flow-step-visuals.d.ts +31 -0
- package/dist/esm/components/flows-actors/flow-step-visuals.d.ts.map +1 -0
- package/dist/esm/components/flows-actors/flow-step-visuals.js +98 -0
- package/dist/esm/components/flows-actors/flow-step-visuals.js.map +1 -0
- package/dist/esm/components/flows-actors/flows-actors-graph-runtime.d.ts +18 -19
- package/dist/esm/components/flows-actors/flows-actors-graph-runtime.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/flows-actors-graph-runtime.js +18 -19
- package/dist/esm/components/flows-actors/flows-actors-graph-runtime.js.map +1 -1
- package/dist/esm/components/flows-actors/flows-actors-graph.lazy.d.ts +27 -42
- package/dist/esm/components/flows-actors/flows-actors-graph.lazy.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/flows-actors-graph.lazy.js +28 -43
- package/dist/esm/components/flows-actors/flows-actors-graph.lazy.js.map +1 -1
- package/dist/esm/components/flows-actors/flows-actors-ui.utils.d.ts +15 -10
- package/dist/esm/components/flows-actors/flows-actors-ui.utils.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/flows-actors-ui.utils.js +16 -42
- package/dist/esm/components/flows-actors/flows-actors-ui.utils.js.map +1 -1
- package/dist/esm/components/flows-actors/graph-viewer.d.ts +112 -0
- package/dist/esm/components/flows-actors/graph-viewer.d.ts.map +1 -0
- package/dist/esm/components/flows-actors/graph-viewer.js +431 -0
- package/dist/esm/components/flows-actors/graph-viewer.js.map +1 -0
- package/dist/esm/components/flows-actors/graph-viewer.labels.d.ts +3 -0
- package/dist/esm/components/flows-actors/graph-viewer.labels.d.ts.map +1 -0
- package/dist/esm/components/flows-actors/graph-viewer.labels.js +67 -0
- package/dist/esm/components/flows-actors/graph-viewer.labels.js.map +1 -0
- package/dist/esm/components/flows-actors/graph-viewer.models.d.ts +16 -0
- package/dist/esm/components/flows-actors/graph-viewer.models.d.ts.map +1 -0
- package/dist/esm/components/flows-actors/graph-viewer.models.js +18 -0
- package/dist/esm/components/flows-actors/graph-viewer.models.js.map +1 -0
- package/dist/esm/components/flows-actors/human-decision-form.d.ts +57 -0
- package/dist/esm/components/flows-actors/human-decision-form.d.ts.map +1 -0
- package/dist/esm/components/flows-actors/human-decision-form.js +128 -0
- package/dist/esm/components/flows-actors/human-decision-form.js.map +1 -0
- package/dist/esm/components/flows-actors/system-catalog.d.ts +6 -1
- package/dist/esm/components/flows-actors/system-catalog.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/system-catalog.js +22 -20
- package/dist/esm/components/flows-actors/system-catalog.js.map +1 -1
- package/dist/esm/components/flows-actors/system-catalog.labels.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/system-catalog.labels.js +3 -2
- package/dist/esm/components/flows-actors/system-catalog.labels.js.map +1 -1
- package/dist/esm/components/flows-actors/task-detail.d.ts +17 -3
- package/dist/esm/components/flows-actors/task-detail.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/task-detail.js +32 -25
- package/dist/esm/components/flows-actors/task-detail.js.map +1 -1
- package/dist/esm/components/flows-actors/task-memory.d.ts.map +1 -1
- package/dist/esm/components/flows-actors/task-memory.js +3 -2
- package/dist/esm/components/flows-actors/task-memory.js.map +1 -1
- package/dist/esm/components/form/Form.d.ts +2 -0
- package/dist/esm/components/form/Form.d.ts.map +1 -1
- package/dist/esm/components/form/Form.js +4 -0
- package/dist/esm/components/form/Form.js.map +1 -1
- package/dist/esm/components/form/automated/AutomatedArrayField.d.ts +16 -1
- package/dist/esm/components/form/automated/AutomatedArrayField.d.ts.map +1 -1
- package/dist/esm/components/form/automated/AutomatedArrayField.js +101 -21
- package/dist/esm/components/form/automated/AutomatedArrayField.js.map +1 -1
- package/dist/esm/components/form/automated/AutomatedForm.d.ts +19 -2
- package/dist/esm/components/form/automated/AutomatedForm.d.ts.map +1 -1
- package/dist/esm/components/form/automated/AutomatedForm.js +40 -6
- package/dist/esm/components/form/automated/AutomatedForm.js.map +1 -1
- package/dist/esm/components/form/automated/AutosaveContext.d.ts +22 -1
- package/dist/esm/components/form/automated/AutosaveContext.d.ts.map +1 -1
- package/dist/esm/components/form/automated/AutosaveContext.js +53 -0
- package/dist/esm/components/form/automated/AutosaveContext.js.map +1 -1
- package/dist/esm/components/form/automated/FormField.d.ts +1 -1
- package/dist/esm/components/form/automated/FormField.d.ts.map +1 -1
- package/dist/esm/components/form/automated/FormField.js +127 -53
- package/dist/esm/components/form/automated/FormField.js.map +1 -1
- package/dist/esm/components/form/automated/FormFieldComposite.d.ts.map +1 -1
- package/dist/esm/components/form/automated/FormFieldComposite.js +12 -10
- package/dist/esm/components/form/automated/FormFieldComposite.js.map +1 -1
- package/dist/esm/components/form/automated/FormFieldRecord.d.ts.map +1 -1
- package/dist/esm/components/form/automated/FormFieldRecord.js +16 -7
- package/dist/esm/components/form/automated/FormFieldRecord.js.map +1 -1
- package/dist/esm/components/form/automated/FormTemplateContext.d.ts +27 -0
- package/dist/esm/components/form/automated/FormTemplateContext.d.ts.map +1 -1
- package/dist/esm/components/form/automated/FormTemplateContext.js +0 -48
- package/dist/esm/components/form/automated/FormTemplateContext.js.map +1 -1
- package/dist/esm/components/form/automated/ResourceAutomatedForm.d.ts +4 -3
- package/dist/esm/components/form/automated/ResourceAutomatedForm.d.ts.map +1 -1
- package/dist/esm/components/form/automated/ResourceAutomatedForm.js +616 -149
- package/dist/esm/components/form/automated/ResourceAutomatedForm.js.map +1 -1
- package/dist/esm/components/form/automated/automated-form-submit.utils.d.ts +105 -5
- package/dist/esm/components/form/automated/automated-form-submit.utils.d.ts.map +1 -1
- package/dist/esm/components/form/automated/automated-form-submit.utils.js +225 -6
- package/dist/esm/components/form/automated/automated-form-submit.utils.js.map +1 -1
- package/dist/esm/components/form/automated/bulk-field-clear-context.d.ts +59 -0
- package/dist/esm/components/form/automated/bulk-field-clear-context.d.ts.map +1 -0
- package/dist/esm/components/form/automated/bulk-field-clear-context.js +77 -0
- package/dist/esm/components/form/automated/bulk-field-clear-context.js.map +1 -0
- package/dist/esm/components/form/automated/generated-relationship-field.hooks.d.ts +1 -1
- package/dist/esm/components/form/automated/unplaced-request-fields.context.d.ts +19 -0
- package/dist/esm/components/form/automated/unplaced-request-fields.context.d.ts.map +1 -0
- package/dist/esm/components/form/automated/unplaced-request-fields.context.js +13 -0
- package/dist/esm/components/form/automated/unplaced-request-fields.context.js.map +1 -0
- package/dist/esm/components/form/automated/useArrayItemAutosaveField.d.ts +7 -0
- package/dist/esm/components/form/automated/useArrayItemAutosaveField.d.ts.map +1 -1
- package/dist/esm/components/form/automated/useArrayItemAutosaveField.js +10 -2
- package/dist/esm/components/form/automated/useArrayItemAutosaveField.js.map +1 -1
- package/dist/esm/components/form/automated/useReferenceRecordLabels.d.ts +16 -0
- package/dist/esm/components/form/automated/useReferenceRecordLabels.d.ts.map +1 -0
- package/dist/esm/components/form/automated/useReferenceRecordLabels.js +66 -0
- package/dist/esm/components/form/automated/useReferenceRecordLabels.js.map +1 -0
- package/dist/esm/components/form/automated/useRequestFieldOffer.d.ts +18 -0
- package/dist/esm/components/form/automated/useRequestFieldOffer.d.ts.map +1 -0
- package/dist/esm/components/form/automated/useRequestFieldOffer.js +107 -0
- package/dist/esm/components/form/automated/useRequestFieldOffer.js.map +1 -0
- package/dist/esm/components/form/chromes/FormFieldChrome.d.ts +7 -1
- package/dist/esm/components/form/chromes/FormFieldChrome.d.ts.map +1 -1
- package/dist/esm/components/form/chromes/FormFieldChrome.js +6 -3
- package/dist/esm/components/form/chromes/FormFieldChrome.js.map +1 -1
- package/dist/esm/components/form/controls/date-time/date-range-picker.d.ts +11 -0
- package/dist/esm/components/form/controls/date-time/date-range-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/date-range-picker.js.map +1 -1
- package/dist/esm/components/form/controls/date-time/datepicker.d.ts +21 -0
- package/dist/esm/components/form/controls/date-time/datepicker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datepicker.js.map +1 -1
- package/dist/esm/components/form/controls/date-time/datetime-picker.d.ts +9 -0
- package/dist/esm/components/form/controls/date-time/datetime-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datetime-picker.js.map +1 -1
- package/dist/esm/components/form/controls/date-time/datetime-range-picker.d.ts +9 -0
- package/dist/esm/components/form/controls/date-time/datetime-range-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/datetime-range-picker.js.map +1 -1
- package/dist/esm/components/form/controls/date-time/time-range-picker.d.ts +1 -0
- package/dist/esm/components/form/controls/date-time/time-range-picker.d.ts.map +1 -1
- package/dist/esm/components/form/controls/date-time/time-range-picker.js.map +1 -1
- package/dist/esm/components/form/controls/enum/radio.d.ts +10 -0
- package/dist/esm/components/form/controls/enum/radio.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/radio.js.map +1 -1
- package/dist/esm/components/form/controls/enum/toggle-group.d.ts +14 -10
- package/dist/esm/components/form/controls/enum/toggle-group.d.ts.map +1 -1
- package/dist/esm/components/form/controls/enum/toggle-group.js +14 -6
- package/dist/esm/components/form/controls/enum/toggle-group.js.map +1 -1
- package/dist/esm/components/form/controls/form-field-checkbox-group.d.ts.map +1 -1
- package/dist/esm/components/form/controls/form-field-checkbox-group.js +7 -3
- package/dist/esm/components/form/controls/form-field-checkbox-group.js.map +1 -1
- package/dist/esm/components/form/controls/string/chips-input.d.ts +65 -0
- package/dist/esm/components/form/controls/string/chips-input.d.ts.map +1 -0
- package/dist/esm/components/form/controls/string/chips-input.js +9 -0
- package/dist/esm/components/form/controls/string/chips-input.js.map +1 -0
- package/dist/esm/components/form/fields/form-field-address.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-address.js +7 -5
- package/dist/esm/components/form/fields/form-field-address.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-address.labels.js +1 -1
- package/dist/esm/components/form/fields/form-field-address.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-bigdecimal.js +2 -2
- package/dist/esm/components/form/fields/form-field-bigdecimal.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-boolean.js +2 -2
- package/dist/esm/components/form/fields/form-field-boolean.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-code.labels.js +1 -1
- package/dist/esm/components/form/fields/form-field-code.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-date.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-date.js +16 -11
- package/dist/esm/components/form/fields/form-field-date.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-datetime.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-datetime.js +10 -5
- package/dist/esm/components/form/fields/form-field-datetime.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-duration.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-duration.js +5 -7
- package/dist/esm/components/form/fields/form-field-duration.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-duration.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-duration.labels.js +8 -2
- package/dist/esm/components/form/fields/form-field-duration.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-enum.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-enum.js +31 -31
- package/dist/esm/components/form/fields/form-field-enum.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-file.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-file.js +13 -12
- package/dist/esm/components/form/fields/form-field-file.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-file.labels.js +6 -6
- package/dist/esm/components/form/fields/form-field-file.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-money.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-money.js +5 -4
- package/dist/esm/components/form/fields/form-field-money.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-money.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-money.labels.js +8 -2
- package/dist/esm/components/form/fields/form-field-money.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-number.js +2 -2
- package/dist/esm/components/form/fields/form-field-number.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-bigdecimal.js +2 -2
- package/dist/esm/components/form/fields/form-field-range-bigdecimal.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-date.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-date.js +7 -2
- package/dist/esm/components/form/fields/form-field-range-date.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-datetime.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-datetime.js +5 -2
- package/dist/esm/components/form/fields/form-field-range-datetime.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-money.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-money.js +6 -19
- package/dist/esm/components/form/fields/form-field-range-money.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-money.labels.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-money.labels.js +8 -2
- package/dist/esm/components/form/fields/form-field-range-money.labels.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-number.js +2 -2
- package/dist/esm/components/form/fields/form-field-range-number.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-range-time.js +2 -2
- package/dist/esm/components/form/fields/form-field-range-time.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-resource-reference.d.ts +56 -0
- package/dist/esm/components/form/fields/form-field-resource-reference.d.ts.map +1 -0
- package/dist/esm/components/form/fields/form-field-resource-reference.js +51 -0
- package/dist/esm/components/form/fields/form-field-resource-reference.js.map +1 -0
- package/dist/esm/components/form/fields/form-field-string-organization-role.d.ts +36 -6
- package/dist/esm/components/form/fields/form-field-string-organization-role.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-string-organization-role.js +30 -11
- package/dist/esm/components/form/fields/form-field-string-organization-role.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-string.d.ts +5 -0
- package/dist/esm/components/form/fields/form-field-string.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-string.js +9 -7
- package/dist/esm/components/form/fields/form-field-string.js.map +1 -1
- package/dist/esm/components/form/fields/form-field-time.d.ts.map +1 -1
- package/dist/esm/components/form/fields/form-field-time.js +6 -3
- package/dist/esm/components/form/fields/form-field-time.js.map +1 -1
- package/dist/esm/components/form/fields/themed-native-select.d.ts +29 -0
- package/dist/esm/components/form/fields/themed-native-select.d.ts.map +1 -0
- package/dist/esm/components/form/fields/themed-native-select.js +36 -0
- package/dist/esm/components/form/fields/themed-native-select.js.map +1 -0
- package/dist/esm/components/form/form-context.d.ts +11 -0
- package/dist/esm/components/form/form-context.d.ts.map +1 -1
- package/dist/esm/components/form/form-context.js +11 -0
- package/dist/esm/components/form/form-context.js.map +1 -1
- package/dist/esm/components/form/form-context.utils.d.ts +2 -0
- package/dist/esm/components/form/form-context.utils.d.ts.map +1 -1
- package/dist/esm/components/form/form-context.utils.js +6 -2
- package/dist/esm/components/form/form-context.utils.js.map +1 -1
- package/dist/esm/components/form/validation-errors/FormErrorSummary.d.ts.map +1 -1
- package/dist/esm/components/form/validation-errors/FormErrorSummary.js +17 -15
- package/dist/esm/components/form/validation-errors/FormErrorSummary.js.map +1 -1
- package/dist/esm/components/form/validation-errors/field-reveal.d.ts +41 -0
- package/dist/esm/components/form/validation-errors/field-reveal.d.ts.map +1 -0
- package/dist/esm/components/form/validation-errors/field-reveal.js +108 -0
- package/dist/esm/components/form/validation-errors/field-reveal.js.map +1 -0
- package/dist/esm/components/form/validation-errors/form-level-error-recheck.d.ts +3 -0
- package/dist/esm/components/form/validation-errors/form-level-error-recheck.d.ts.map +1 -0
- package/dist/esm/components/form/validation-errors/form-level-error-recheck.js +37 -0
- package/dist/esm/components/form/validation-errors/form-level-error-recheck.js.map +1 -0
- package/dist/esm/components/form/validation-errors/getFieldError.d.ts +6 -0
- package/dist/esm/components/form/validation-errors/getFieldError.d.ts.map +1 -1
- package/dist/esm/components/form/validation-errors/getFieldError.js +9 -2
- package/dist/esm/components/form/validation-errors/getFieldError.js.map +1 -1
- package/dist/esm/components/form/validation-errors/scroll-to-first-error.utils.d.ts +8 -1
- package/dist/esm/components/form/validation-errors/scroll-to-first-error.utils.d.ts.map +1 -1
- package/dist/esm/components/form/validation-errors/scroll-to-first-error.utils.js +46 -3
- package/dist/esm/components/form/validation-errors/scroll-to-first-error.utils.js.map +1 -1
- package/dist/esm/components/form/validation-errors/useServerErrorInjection.d.ts.map +1 -1
- package/dist/esm/components/form/validation-errors/useServerErrorInjection.js +8 -3
- package/dist/esm/components/form/validation-errors/useServerErrorInjection.js.map +1 -1
- package/dist/esm/components/form/validation-errors/validate-fields-and-show-errors.d.ts +32 -0
- package/dist/esm/components/form/validation-errors/validate-fields-and-show-errors.d.ts.map +1 -0
- package/dist/esm/components/form/validation-errors/validate-fields-and-show-errors.js +60 -0
- package/dist/esm/components/form/validation-errors/validate-fields-and-show-errors.js.map +1 -0
- package/dist/esm/components/form/validation-errors/zod-issue-resolver.d.ts +10 -0
- package/dist/esm/components/form/validation-errors/zod-issue-resolver.d.ts.map +1 -1
- package/dist/esm/components/form/validation-errors/zod-issue-resolver.js +12 -3
- package/dist/esm/components/form/validation-errors/zod-issue-resolver.js.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_QuickActionButton.d.ts +7 -0
- package/dist/esm/components/navigation/app-level/ApplicationLevel_QuickActionButton.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_QuickActionButton.js.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_UtilityPanel.d.ts +6 -0
- package/dist/esm/components/navigation/app-level/ApplicationLevel_UtilityPanel.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/ApplicationLevel_UtilityPanel.js.map +1 -1
- package/dist/esm/components/navigation/app-level/SidebarResourceBrowser.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/SidebarResourceBrowser.js +11 -28
- package/dist/esm/components/navigation/app-level/SidebarResourceBrowser.js.map +1 -1
- package/dist/esm/components/navigation/app-level/engine-launcher-entries.d.ts +46 -0
- package/dist/esm/components/navigation/app-level/engine-launcher-entries.d.ts.map +1 -0
- package/dist/esm/components/navigation/app-level/engine-launcher-entries.js +165 -0
- package/dist/esm/components/navigation/app-level/engine-launcher-entries.js.map +1 -0
- package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.js +8 -3
- package/dist/esm/components/navigation/app-level/useCommandMenuBehavior.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.js +41 -20
- package/dist/esm/components/navigation/app-level/useMenuUserOrgBehavior.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useNavigationBehaviors.d.ts +1 -2
- package/dist/esm/components/navigation/app-level/useNavigationBehaviors.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useNavigationBehaviors.js +1 -15
- package/dist/esm/components/navigation/app-level/useNavigationBehaviors.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useOwnOrganizationSearch.d.ts +32 -0
- package/dist/esm/components/navigation/app-level/useOwnOrganizationSearch.d.ts.map +1 -0
- package/dist/esm/components/navigation/app-level/useOwnOrganizationSearch.js +91 -0
- package/dist/esm/components/navigation/app-level/useOwnOrganizationSearch.js.map +1 -0
- package/dist/esm/components/navigation/app-level/useQuickSwitcherBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useQuickSwitcherBehavior.js +3 -1
- package/dist/esm/components/navigation/app-level/useQuickSwitcherBehavior.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useSidebarBehavior.d.ts +18 -1
- package/dist/esm/components/navigation/app-level/useSidebarBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useSidebarBehavior.js +66 -9
- package/dist/esm/components/navigation/app-level/useSidebarBehavior.js.map +1 -1
- package/dist/esm/components/navigation/app-level/useUtilityPanelBehavior.d.ts +15 -10
- package/dist/esm/components/navigation/app-level/useUtilityPanelBehavior.d.ts.map +1 -1
- package/dist/esm/components/navigation/app-level/useUtilityPanelBehavior.js +89 -12
- package/dist/esm/components/navigation/app-level/useUtilityPanelBehavior.js.map +1 -1
- package/dist/esm/components/progression/ProgressionMilestoneTracker.labels.js +2 -2
- package/dist/esm/components/progression/ProgressionMilestoneTracker.labels.js.map +1 -1
- package/dist/esm/components/resources/CollectionSelectAllCheckbox.d.ts +39 -0
- package/dist/esm/components/resources/CollectionSelectAllCheckbox.d.ts.map +1 -0
- package/dist/esm/components/resources/CollectionSelectAllCheckbox.js +21 -0
- package/dist/esm/components/resources/CollectionSelectAllCheckbox.js.map +1 -0
- package/dist/esm/components/resources/CollectionSelectionControls.d.ts +4 -3
- package/dist/esm/components/resources/CollectionSelectionControls.d.ts.map +1 -1
- package/dist/esm/components/resources/CollectionSelectionControls.js.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionBody_Table.d.ts +7 -2
- package/dist/esm/components/resources/ResourceCollectionBody_Table.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionBody_Table.js +38 -14
- package/dist/esm/components/resources/ResourceCollectionBody_Table.js.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionFilterPresets.d.ts +4 -4
- package/dist/esm/components/resources/ResourceCollectionFilterPresets.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionFilterPresets.js +20 -13
- package/dist/esm/components/resources/ResourceCollectionFilterPresets.js.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.d.ts +4 -3
- package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.js +40 -6
- package/dist/esm/components/resources/ResourceCollectionQuickFilterTabs.js.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionToolbar.d.ts +65 -23
- package/dist/esm/components/resources/ResourceCollectionToolbar.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceCollectionToolbar.js +73 -10
- package/dist/esm/components/resources/ResourceCollectionToolbar.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Action.labels.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Action.labels.js +5 -0
- package/dist/esm/components/resources/ResourceLayout_Action.labels.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Breadcrumb.d.ts +18 -0
- package/dist/esm/components/resources/ResourceLayout_Breadcrumb.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Breadcrumb.js +57 -48
- package/dist/esm/components/resources/ResourceLayout_Breadcrumb.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_CollectionActions.d.ts +1 -1
- package/dist/esm/components/resources/ResourceLayout_CollectionActions.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_CollectionActions.js +1 -1
- package/dist/esm/components/resources/ResourceLayout_CollectionActions.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ContainerNested.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ContainerNested.js +7 -1
- package/dist/esm/components/resources/ResourceLayout_ContainerNested.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Create.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Create.js +3 -4
- package/dist/esm/components/resources/ResourceLayout_Create.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Create.labels.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Create.labels.js +10 -0
- package/dist/esm/components/resources/ResourceLayout_Create.labels.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_DangerZone.d.ts +5 -3
- package/dist/esm/components/resources/ResourceLayout_DangerZone.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_DangerZone.js +4 -3
- package/dist/esm/components/resources/ResourceLayout_DangerZone.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_FilterChips.d.ts +8 -1
- package/dist/esm/components/resources/ResourceLayout_FilterChips.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_FilterChips.js +83 -11
- package/dist/esm/components/resources/ResourceLayout_FilterChips.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Filters.labels.js +1 -1
- package/dist/esm/components/resources/ResourceLayout_Filters.labels.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_FiltersControl.d.ts +5 -8
- package/dist/esm/components/resources/ResourceLayout_FiltersControl.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_FiltersControl.js +68 -19
- package/dist/esm/components/resources/ResourceLayout_FiltersControl.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Header.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Header.js +150 -44
- package/dist/esm/components/resources/ResourceLayout_Header.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_InsertedViews.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_InsertedViews.js +62 -40
- package/dist/esm/components/resources/ResourceLayout_InsertedViews.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_List.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_List.js +68 -70
- package/dist/esm/components/resources/ResourceLayout_List.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_List.labels.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_List.labels.js +4 -10
- package/dist/esm/components/resources/ResourceLayout_List.labels.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_OperationBulk.d.ts +8 -9
- package/dist/esm/components/resources/ResourceLayout_OperationBulk.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_OperationBulk.js +67 -25
- package/dist/esm/components/resources/ResourceLayout_OperationBulk.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_OperationBulk.labels.js +8 -8
- package/dist/esm/components/resources/ResourceLayout_OperationBulk.labels.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_OperationsItems.d.ts +8 -2
- package/dist/esm/components/resources/ResourceLayout_OperationsItems.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_OperationsItems.js +12 -7
- package/dist/esm/components/resources/ResourceLayout_OperationsItems.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_OperationsItems.labels.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_OperationsItems.labels.js +11 -6
- package/dist/esm/components/resources/ResourceLayout_OperationsItems.labels.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Read.d.ts +2 -0
- package/dist/esm/components/resources/ResourceLayout_Read.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Read.js +23 -5
- package/dist/esm/components/resources/ResourceLayout_Read.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ReadSummary.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ReadSummary.js +5 -3
- package/dist/esm/components/resources/ResourceLayout_ReadSummary.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.js +18 -7
- package/dist/esm/components/resources/ResourceLayout_ReadSummary_TableRow.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_RecordSharing.d.ts +56 -0
- package/dist/esm/components/resources/ResourceLayout_RecordSharing.d.ts.map +1 -0
- package/dist/esm/components/resources/ResourceLayout_RecordSharing.js +184 -0
- package/dist/esm/components/resources/ResourceLayout_RecordSharing.js.map +1 -0
- package/dist/esm/components/resources/ResourceLayout_RecordSharing.labels.d.ts +3 -0
- package/dist/esm/components/resources/ResourceLayout_RecordSharing.labels.d.ts.map +1 -0
- package/dist/esm/components/resources/ResourceLayout_RecordSharing.labels.js +106 -0
- package/dist/esm/components/resources/ResourceLayout_RecordSharing.labels.js.map +1 -0
- package/dist/esm/components/resources/ResourceLayout_Search.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Search.js +55 -42
- package/dist/esm/components/resources/ResourceLayout_Search.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Search.labels.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_Search.labels.js +0 -6
- package/dist/esm/components/resources/ResourceLayout_Search.labels.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.d.ts +8 -0
- package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.js +2 -3
- package/dist/esm/components/resources/ResourceLayout_SemanticOperationFallback.js.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_SortControl.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceLayout_SortControl.js +3 -2
- package/dist/esm/components/resources/ResourceLayout_SortControl.js.map +1 -1
- package/dist/esm/components/resources/ResourceListItemRenderer.d.ts +29 -5
- package/dist/esm/components/resources/ResourceListItemRenderer.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceListItemRenderer.js +123 -41
- package/dist/esm/components/resources/ResourceListItemRenderer.js.map +1 -1
- package/dist/esm/components/resources/ResourceViewModeToggle.d.ts +6 -1
- package/dist/esm/components/resources/ResourceViewModeToggle.d.ts.map +1 -1
- package/dist/esm/components/resources/ResourceViewModeToggle.js +9 -7
- package/dist/esm/components/resources/ResourceViewModeToggle.js.map +1 -1
- package/dist/esm/components/resources/collection-card-layout.utils.d.ts +37 -15
- package/dist/esm/components/resources/collection-card-layout.utils.d.ts.map +1 -1
- package/dist/esm/components/resources/collection-card-layout.utils.js +37 -15
- package/dist/esm/components/resources/collection-card-layout.utils.js.map +1 -1
- package/dist/esm/components/resources/collection-selection-bar-density.d.ts +113 -0
- package/dist/esm/components/resources/collection-selection-bar-density.d.ts.map +1 -0
- package/dist/esm/components/resources/collection-selection-bar-density.js +175 -0
- package/dist/esm/components/resources/collection-selection-bar-density.js.map +1 -0
- package/dist/esm/components/resources/embeds/EmbeddedResourceDescent.d.ts +2 -1
- package/dist/esm/components/resources/embeds/EmbeddedResourceDescent.d.ts.map +1 -1
- package/dist/esm/components/resources/embeds/EmbeddedResourceDescent.js.map +1 -1
- package/dist/esm/components/resources/embeds/RelatedResourceSections.d.ts.map +1 -1
- package/dist/esm/components/resources/embeds/RelatedResourceSections.js +14 -2
- package/dist/esm/components/resources/embeds/RelatedResourceSections.js.map +1 -1
- package/dist/esm/components/resources/embeds/ResourceEmbeds.d.ts +61 -1
- package/dist/esm/components/resources/embeds/ResourceEmbeds.d.ts.map +1 -1
- package/dist/esm/components/resources/embeds/ResourceEmbeds.js +151 -15
- package/dist/esm/components/resources/embeds/ResourceEmbeds.js.map +1 -1
- package/dist/esm/components/resources/embeds/child-operation-addressability.utils.d.ts +11 -0
- package/dist/esm/components/resources/embeds/child-operation-addressability.utils.d.ts.map +1 -1
- package/dist/esm/components/resources/embeds/child-operation-addressability.utils.js +13 -0
- package/dist/esm/components/resources/embeds/child-operation-addressability.utils.js.map +1 -1
- package/dist/esm/components/resources/embeds/useEmbeddedResourceContext.d.ts +24 -1
- package/dist/esm/components/resources/embeds/useEmbeddedResourceContext.d.ts.map +1 -1
- package/dist/esm/components/resources/embeds/useEmbeddedResourceContext.js +47 -3
- package/dist/esm/components/resources/embeds/useEmbeddedResourceContext.js.map +1 -1
- package/dist/esm/components/resources/resource-filter-field-type.frontend.schemas.d.ts +35 -0
- package/dist/esm/components/resources/resource-filter-field-type.frontend.schemas.d.ts.map +1 -0
- package/dist/esm/components/resources/resource-filter-field-type.frontend.schemas.js +36 -0
- package/dist/esm/components/resources/resource-filter-field-type.frontend.schemas.js.map +1 -0
- package/dist/esm/components/resources/resource-header-geometry.d.ts +19 -0
- package/dist/esm/components/resources/resource-header-geometry.d.ts.map +1 -0
- package/dist/esm/components/resources/resource-header-geometry.js +19 -0
- package/dist/esm/components/resources/resource-header-geometry.js.map +1 -0
- package/dist/esm/components/resources/resourceLayout.utils.d.ts +28 -2
- package/dist/esm/components/resources/resourceLayout.utils.d.ts.map +1 -1
- package/dist/esm/components/resources/resourceLayout.utils.js +45 -12
- package/dist/esm/components/resources/resourceLayout.utils.js.map +1 -1
- package/dist/esm/components/resources/skeleton/ArrayField.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/ArrayField.js +10 -0
- package/dist/esm/components/resources/skeleton/ArrayField.js.map +1 -1
- package/dist/esm/components/resources/skeleton/DisplayLayout.d.ts +20 -4
- package/dist/esm/components/resources/skeleton/DisplayLayout.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/DisplayLayout.js +19 -2
- package/dist/esm/components/resources/skeleton/DisplayLayout.js.map +1 -1
- package/dist/esm/components/resources/skeleton/FieldTiles.d.ts +48 -0
- package/dist/esm/components/resources/skeleton/FieldTiles.d.ts.map +1 -0
- package/dist/esm/components/resources/skeleton/FieldTiles.js +51 -0
- package/dist/esm/components/resources/skeleton/FieldTiles.js.map +1 -0
- package/dist/esm/components/resources/skeleton/FormLayout.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/FormLayout.js +2 -1
- package/dist/esm/components/resources/skeleton/FormLayout.js.map +1 -1
- package/dist/esm/components/resources/skeleton/Group.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/Group.js +5 -2
- package/dist/esm/components/resources/skeleton/Group.js.map +1 -1
- package/dist/esm/components/resources/skeleton/ResourceHeaderTitle.d.ts +77 -14
- package/dist/esm/components/resources/skeleton/ResourceHeaderTitle.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/ResourceHeaderTitle.js +98 -25
- package/dist/esm/components/resources/skeleton/ResourceHeaderTitle.js.map +1 -1
- package/dist/esm/components/resources/skeleton/Section.d.ts +7 -0
- package/dist/esm/components/resources/skeleton/Section.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/Section.js +9 -3
- package/dist/esm/components/resources/skeleton/Section.js.map +1 -1
- package/dist/esm/components/resources/skeleton/SummaryLayout.d.ts +3 -3
- package/dist/esm/components/resources/skeleton/SummaryLayout.js +3 -3
- package/dist/esm/components/resources/skeleton/SummaryLayout.js.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardLayout.d.ts +7 -5
- package/dist/esm/components/resources/skeleton/WizardLayout.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardLayout.js +176 -65
- package/dist/esm/components/resources/skeleton/WizardLayout.js.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardLayoutContext.d.ts +9 -1
- package/dist/esm/components/resources/skeleton/WizardLayoutContext.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardLayoutContext.js +7 -0
- package/dist/esm/components/resources/skeleton/WizardLayoutContext.js.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardStep.d.ts +1 -1
- package/dist/esm/components/resources/skeleton/WizardStep.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/WizardStep.js +9 -5
- package/dist/esm/components/resources/skeleton/WizardStep.js.map +1 -1
- package/dist/esm/components/resources/skeleton/section-consolidation.utils.d.ts.map +1 -1
- package/dist/esm/components/resources/skeleton/section-consolidation.utils.js +31 -2
- package/dist/esm/components/resources/skeleton/section-consolidation.utils.js.map +1 -1
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.d.ts.map +1 -1
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.js +176 -61
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldDisplayPreset_ResourceReference_Default.js.map +1 -1
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldEditPreset_ResourceReference_Default.d.ts.map +1 -1
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldEditPreset_ResourceReference_Default.js +14 -7
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldEditPreset_ResourceReference_Default.js.map +1 -1
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldEditPreset_ResourceReference_Default.labels.d.ts.map +1 -1
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldEditPreset_ResourceReference_Default.labels.js +18 -1
- package/dist/esm/components/resources-fields/_presets/resource-reference/ResourceFieldEditPreset_ResourceReference_Default.labels.js.map +1 -1
- package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.d.ts +8 -0
- package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.d.ts.map +1 -1
- package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.js +3 -0
- package/dist/esm/components/resources-fields/resource-reference/resource-reference.shared.utils.js.map +1 -1
- package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.d.ts.map +1 -1
- package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.js +48 -17
- package/dist/esm/components/resources-fields/resource-reference/useResourceSearch.js.map +1 -1
- package/dist/esm/components/sections/ContentSectionContainer.d.ts.map +1 -1
- package/dist/esm/components/sections/ContentSectionContainer.js +226 -74
- package/dist/esm/components/sections/ContentSectionContainer.js.map +1 -1
- package/dist/esm/components/sections/ContentSectionContainer.labels.d.ts.map +1 -1
- package/dist/esm/components/sections/ContentSectionContainer.labels.js +2 -3
- package/dist/esm/components/sections/ContentSectionContainer.labels.js.map +1 -1
- package/dist/esm/components/sections/content-section.d.ts +2 -2
- package/dist/esm/components/sections/content-section.js.map +1 -1
- package/dist/esm/components/sections/section-grouping.shared.d.ts +19 -0
- package/dist/esm/components/sections/section-grouping.shared.d.ts.map +1 -1
- package/dist/esm/components/sections/section-grouping.shared.js +24 -0
- package/dist/esm/components/sections/section-grouping.shared.js.map +1 -1
- package/dist/esm/components/sections/section-legend-voice.context.d.ts +19 -0
- package/dist/esm/components/sections/section-legend-voice.context.d.ts.map +1 -0
- package/dist/esm/components/sections/section-legend-voice.context.js +21 -0
- package/dist/esm/components/sections/section-legend-voice.context.js.map +1 -0
- package/dist/esm/components/sections/section-legend-voice.d.ts +41 -0
- package/dist/esm/components/sections/section-legend-voice.d.ts.map +1 -0
- package/dist/esm/components/sections/section-legend-voice.js +67 -0
- package/dist/esm/components/sections/section-legend-voice.js.map +1 -0
- package/dist/esm/components/sections/stepper.d.ts +14 -0
- package/dist/esm/components/sections/stepper.d.ts.map +1 -1
- package/dist/esm/components/sections/stepper.js.map +1 -1
- package/dist/esm/components/sections/surface.d.ts.map +1 -1
- package/dist/esm/components/sections/surface.js +10 -2
- package/dist/esm/components/sections/surface.js.map +1 -1
- package/dist/esm/components/settings/AppPage_AgentWorkEvaluationExportSettings.d.ts +39 -0
- package/dist/esm/components/settings/AppPage_AgentWorkEvaluationExportSettings.d.ts.map +1 -0
- package/dist/esm/components/settings/AppPage_AgentWorkEvaluationExportSettings.js +187 -0
- package/dist/esm/components/settings/AppPage_AgentWorkEvaluationExportSettings.js.map +1 -0
- package/dist/esm/components/settings/AppPage_AgentWorkEvaluationExportSettings.labels.d.ts +3 -0
- package/dist/esm/components/settings/AppPage_AgentWorkEvaluationExportSettings.labels.d.ts.map +1 -0
- package/dist/esm/components/settings/AppPage_AgentWorkEvaluationExportSettings.labels.js +34 -0
- package/dist/esm/components/settings/AppPage_AgentWorkEvaluationExportSettings.labels.js.map +1 -0
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.d.ts +1 -1
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.js +1 -1
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.js.map +1 -1
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.js +8 -8
- package/dist/esm/components/settings/AppPage_AgentWorkOverrideRateSettings.labels.js.map +1 -1
- package/dist/esm/components/settings/AppPage_AutonomousAgentsSettings.d.ts +43 -0
- package/dist/esm/components/settings/AppPage_AutonomousAgentsSettings.d.ts.map +1 -0
- package/dist/esm/components/settings/AppPage_AutonomousAgentsSettings.js +142 -0
- package/dist/esm/components/settings/AppPage_AutonomousAgentsSettings.js.map +1 -0
- package/dist/esm/components/settings/AppPage_AutonomousAgentsSettings.labels.d.ts +3 -0
- package/dist/esm/components/settings/AppPage_AutonomousAgentsSettings.labels.d.ts.map +1 -0
- package/dist/esm/components/settings/AppPage_AutonomousAgentsSettings.labels.js +62 -0
- package/dist/esm/components/settings/AppPage_AutonomousAgentsSettings.labels.js.map +1 -0
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.d.ts +25 -8
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.js +275 -71
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.js.map +1 -1
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.js +91 -14
- package/dist/esm/components/settings/AppPage_ConnectedAccountsSettings.labels.js.map +1 -1
- package/dist/esm/components/settings/AppPage_InvitationsSettings.d.ts +13 -8
- package/dist/esm/components/settings/AppPage_InvitationsSettings.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_InvitationsSettings.js +95 -23
- package/dist/esm/components/settings/AppPage_InvitationsSettings.js.map +1 -1
- package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.d.ts.map +1 -1
- package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.js +25 -2
- package/dist/esm/components/settings/AppPage_InvitationsSettings.labels.js.map +1 -1
- package/dist/esm/components/settings/AppPage_ModelCostBreakdownSettings.d.ts +67 -0
- package/dist/esm/components/settings/AppPage_ModelCostBreakdownSettings.d.ts.map +1 -0
- package/dist/esm/components/settings/AppPage_ModelCostBreakdownSettings.js +177 -0
- package/dist/esm/components/settings/AppPage_ModelCostBreakdownSettings.js.map +1 -0
- package/dist/esm/components/settings/AppPage_ModelCostBreakdownSettings.labels.d.ts +3 -0
- package/dist/esm/components/settings/AppPage_ModelCostBreakdownSettings.labels.d.ts.map +1 -0
- package/dist/esm/components/settings/AppPage_ModelCostBreakdownSettings.labels.js +45 -0
- package/dist/esm/components/settings/AppPage_ModelCostBreakdownSettings.labels.js.map +1 -0
- package/dist/esm/components/settings/AppPage_RepresentativeActivitySettings.d.ts +35 -0
- package/dist/esm/components/settings/AppPage_RepresentativeActivitySettings.d.ts.map +1 -0
- package/dist/esm/components/settings/AppPage_RepresentativeActivitySettings.js +137 -0
- package/dist/esm/components/settings/AppPage_RepresentativeActivitySettings.js.map +1 -0
- package/dist/esm/components/settings/AppPage_RepresentativeActivitySettings.labels.d.ts +3 -0
- package/dist/esm/components/settings/AppPage_RepresentativeActivitySettings.labels.d.ts.map +1 -0
- package/dist/esm/components/settings/AppPage_RepresentativeActivitySettings.labels.js +38 -0
- package/dist/esm/components/settings/AppPage_RepresentativeActivitySettings.labels.js.map +1 -0
- package/dist/esm/components/settings/SettingsHub.d.ts +3 -3
- package/dist/esm/components/settings/SettingsHub.d.ts.map +1 -1
- package/dist/esm/components/settings/SettingsHub.js +98 -48
- package/dist/esm/components/settings/SettingsHub.js.map +1 -1
- package/dist/esm/components/settings/SettingsHub.labels.d.ts.map +1 -1
- package/dist/esm/components/settings/SettingsHub.labels.js +2 -0
- package/dist/esm/components/settings/SettingsHub.labels.js.map +1 -1
- package/dist/esm/components/settings/SettingsResourceOperationPanel.d.ts.map +1 -1
- package/dist/esm/components/settings/SettingsResourceOperationPanel.js +21 -1
- package/dist/esm/components/settings/SettingsResourceOperationPanel.js.map +1 -1
- package/dist/esm/components/settings/useOwnerProviderConnections.d.ts +24 -5
- package/dist/esm/components/settings/useOwnerProviderConnections.d.ts.map +1 -1
- package/dist/esm/components/settings/useOwnerProviderConnections.js +67 -9
- package/dist/esm/components/settings/useOwnerProviderConnections.js.map +1 -1
- package/dist/esm/components/views/chart-view/ChartView.js +3 -3
- package/dist/esm/components/views/chart-view/ChartView.js.map +1 -1
- package/dist/esm/components/views/chart-view/chart-export.utils.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/chart-export.utils.js +2 -9
- package/dist/esm/components/views/chart-view/chart-export.utils.js.map +1 -1
- package/dist/esm/components/views/chart-view/enum-color-bridge.d.ts +1 -0
- package/dist/esm/components/views/chart-view/enum-color-bridge.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/enum-color-bridge.js +10 -1
- package/dist/esm/components/views/chart-view/enum-color-bridge.js.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builder-utils.d.ts +8 -6
- package/dist/esm/components/views/chart-view/option-builder/builder-utils.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builder-utils.js +10 -8
- package/dist/esm/components/views/chart-view/option-builder/builder-utils.js.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/bar-family.builder.js +2 -2
- package/dist/esm/components/views/chart-view/option-builder/builders/bar-family.builder.js.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/composed.builder.js +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/composed.builder.js.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/line-family.builder.js +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/line-family.builder.js.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/scatter-family.builder.js +1 -1
- package/dist/esm/components/views/chart-view/option-builder/builders/scatter-family.builder.js.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/chart-type-builder.interface.d.ts +6 -0
- package/dist/esm/components/views/chart-view/option-builder/chart-type-builder.interface.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/chart-type-builder.interface.js.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/echarts-option-builder.d.ts +3 -1
- package/dist/esm/components/views/chart-view/option-builder/echarts-option-builder.d.ts.map +1 -1
- package/dist/esm/components/views/chart-view/option-builder/echarts-option-builder.js +4 -1
- package/dist/esm/components/views/chart-view/option-builder/echarts-option-builder.js.map +1 -1
- package/dist/esm/components/views/composite-view/CompositeLayout.d.ts +0 -1
- package/dist/esm/components/views/composite-view/CompositeLayout.d.ts.map +1 -1
- package/dist/esm/components/views/composite-view/CompositeLayout.js.map +1 -1
- package/dist/esm/components/views/composite-view/useCompositeResourceOperationContextBuilder.d.ts.map +1 -1
- package/dist/esm/components/views/composite-view/useCompositeResourceOperationContextBuilder.js +24 -1
- package/dist/esm/components/views/composite-view/useCompositeResourceOperationContextBuilder.js.map +1 -1
- package/dist/esm/components/views/flows-actors-view/AgentReplyReportAction.d.ts +29 -0
- package/dist/esm/components/views/flows-actors-view/AgentReplyReportAction.d.ts.map +1 -0
- package/dist/esm/components/views/flows-actors-view/AgentReplyReportAction.js +104 -0
- package/dist/esm/components/views/flows-actors-view/AgentReplyReportAction.js.map +1 -0
- package/dist/esm/components/views/flows-actors-view/FlowsActorsView.d.ts +16 -5
- package/dist/esm/components/views/flows-actors-view/FlowsActorsView.d.ts.map +1 -1
- package/dist/esm/components/views/flows-actors-view/FlowsActorsView.js +219 -230
- package/dist/esm/components/views/flows-actors-view/FlowsActorsView.js.map +1 -1
- package/dist/esm/components/views/flows-actors-view/FlowsActorsView.labels.d.ts +5 -0
- package/dist/esm/components/views/flows-actors-view/FlowsActorsView.labels.d.ts.map +1 -1
- package/dist/esm/components/views/flows-actors-view/FlowsActorsView.labels.js +15 -13
- package/dist/esm/components/views/flows-actors-view/FlowsActorsView.labels.js.map +1 -1
- package/dist/esm/components/views/flows-actors-view/held-conversation-selection.d.ts +13 -0
- package/dist/esm/components/views/flows-actors-view/held-conversation-selection.d.ts.map +1 -0
- package/dist/esm/components/views/flows-actors-view/held-conversation-selection.js +44 -0
- package/dist/esm/components/views/flows-actors-view/held-conversation-selection.js.map +1 -0
- package/dist/esm/core/app-shell/AppShellBuildingBlocks.d.ts.map +1 -1
- package/dist/esm/core/app-shell/AppShellBuildingBlocks.js +6 -2
- package/dist/esm/core/app-shell/AppShellBuildingBlocks.js.map +1 -1
- package/dist/esm/core/app-shell/app-shell.schemas.d.ts +64 -9
- package/dist/esm/core/app-shell/app-shell.schemas.d.ts.map +1 -1
- package/dist/esm/core/app-shell/app-shell.schemas.js.map +1 -1
- package/dist/esm/core/app-shell/hosted-components.utils.d.ts +11 -1
- package/dist/esm/core/app-shell/hosted-components.utils.d.ts.map +1 -1
- package/dist/esm/core/app-shell/hosted-components.utils.js +25 -0
- package/dist/esm/core/app-shell/hosted-components.utils.js.map +1 -1
- package/dist/esm/core/app-shell/shell-layout.d.ts +138 -0
- package/dist/esm/core/app-shell/shell-layout.d.ts.map +1 -0
- package/dist/esm/core/app-shell/shell-layout.js +143 -0
- package/dist/esm/core/app-shell/shell-layout.js.map +1 -0
- package/dist/esm/core/app-shell/shell-motion/shell-layout-stylesheet.d.ts +13 -0
- package/dist/esm/core/app-shell/shell-motion/shell-layout-stylesheet.d.ts.map +1 -0
- package/dist/esm/core/app-shell/shell-motion/shell-layout-stylesheet.js +49 -0
- package/dist/esm/core/app-shell/shell-motion/shell-layout-stylesheet.js.map +1 -0
- package/dist/esm/core/app-shell/shell-motion/shell-motion-origins.d.ts +95 -0
- package/dist/esm/core/app-shell/shell-motion/shell-motion-origins.d.ts.map +1 -0
- package/dist/esm/core/app-shell/shell-motion/shell-motion-origins.js +316 -0
- package/dist/esm/core/app-shell/shell-motion/shell-motion-origins.js.map +1 -0
- package/dist/esm/core/app-shell/shell-motion/shell-motion-vocabulary.d.ts +217 -0
- package/dist/esm/core/app-shell/shell-motion/shell-motion-vocabulary.d.ts.map +1 -0
- package/dist/esm/core/app-shell/shell-motion/shell-motion-vocabulary.js +197 -0
- package/dist/esm/core/app-shell/shell-motion/shell-motion-vocabulary.js.map +1 -0
- package/dist/esm/core/app-shell/shell-motion/shell-view-transition.d.ts +46 -0
- package/dist/esm/core/app-shell/shell-motion/shell-view-transition.d.ts.map +1 -0
- package/dist/esm/core/app-shell/shell-motion/shell-view-transition.js +139 -0
- package/dist/esm/core/app-shell/shell-motion/shell-view-transition.js.map +1 -0
- package/dist/esm/core/app-shell/shell-motion/use-shell-motion.d.ts +108 -0
- package/dist/esm/core/app-shell/shell-motion/use-shell-motion.d.ts.map +1 -0
- package/dist/esm/core/app-shell/shell-motion/use-shell-motion.js +423 -0
- package/dist/esm/core/app-shell/shell-motion/use-shell-motion.js.map +1 -0
- package/dist/esm/core/app-shell/useAppShellLayout.d.ts.map +1 -1
- package/dist/esm/core/app-shell/useAppShellLayout.js +6 -1
- package/dist/esm/core/app-shell/useAppShellLayout.js.map +1 -1
- package/dist/esm/core/app-shell/usePublicShellLayout.d.ts.map +1 -1
- package/dist/esm/core/app-shell/usePublicShellLayout.js +11 -4
- package/dist/esm/core/app-shell/usePublicShellLayout.js.map +1 -1
- package/dist/esm/core/automated-layout/automated-layout.frontend.utils.d.ts +18 -1
- package/dist/esm/core/automated-layout/automated-layout.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/automated-layout/automated-layout.frontend.utils.js +26 -4
- package/dist/esm/core/automated-layout/automated-layout.frontend.utils.js.map +1 -1
- package/dist/esm/core/automated-layout/composite-value-defaults.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/automated-layout/composite-value-defaults.frontend.utils.js +3 -22
- package/dist/esm/core/automated-layout/composite-value-defaults.frontend.utils.js.map +1 -1
- package/dist/esm/core/automated-layout/default-layout-generator.frontend.utils.d.ts +19 -3
- package/dist/esm/core/automated-layout/default-layout-generator.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/automated-layout/default-layout-generator.frontend.utils.js +100 -13
- package/dist/esm/core/automated-layout/default-layout-generator.frontend.utils.js.map +1 -1
- package/dist/esm/core/automated-layout/summary-value-naming.utils.d.ts +67 -0
- package/dist/esm/core/automated-layout/summary-value-naming.utils.d.ts.map +1 -0
- package/dist/esm/core/automated-layout/summary-value-naming.utils.js +100 -0
- package/dist/esm/core/automated-layout/summary-value-naming.utils.js.map +1 -0
- package/dist/esm/core/billing/BillingContext.d.ts +0 -17
- package/dist/esm/core/billing/BillingContext.d.ts.map +1 -1
- package/dist/esm/core/billing/BillingContext.js +6 -1
- package/dist/esm/core/billing/BillingContext.js.map +1 -1
- package/dist/esm/core/branding/OrganizationBrandingPublisher.d.ts +2 -0
- package/dist/esm/core/branding/OrganizationBrandingPublisher.d.ts.map +1 -0
- package/dist/esm/core/branding/OrganizationBrandingPublisher.js +78 -0
- package/dist/esm/core/branding/OrganizationBrandingPublisher.js.map +1 -0
- package/dist/esm/core/branding/useBrandIdentity.d.ts +21 -0
- package/dist/esm/core/branding/useBrandIdentity.d.ts.map +1 -1
- package/dist/esm/core/branding/useBrandIdentity.js +31 -5
- package/dist/esm/core/branding/useBrandIdentity.js.map +1 -1
- package/dist/esm/core/branding/useBrandPresentation.d.ts +5 -0
- package/dist/esm/core/branding/useBrandPresentation.d.ts.map +1 -1
- package/dist/esm/core/branding/useBrandPresentation.js +1 -0
- package/dist/esm/core/branding/useBrandPresentation.js.map +1 -1
- package/dist/esm/core/branding/useDisplayableImageUrl.d.ts +4 -0
- package/dist/esm/core/branding/useDisplayableImageUrl.d.ts.map +1 -0
- package/dist/esm/core/branding/useDisplayableImageUrl.js +66 -0
- package/dist/esm/core/branding/useDisplayableImageUrl.js.map +1 -0
- package/dist/esm/core/branding/useOrganizationDocumentTitle.d.ts +2 -0
- package/dist/esm/core/branding/useOrganizationDocumentTitle.d.ts.map +1 -0
- package/dist/esm/core/branding/useOrganizationDocumentTitle.js +23 -0
- package/dist/esm/core/branding/useOrganizationDocumentTitle.js.map +1 -0
- package/dist/esm/core/commons/save-blob-as-file.frontend.utils.d.ts +16 -0
- package/dist/esm/core/commons/save-blob-as-file.frontend.utils.d.ts.map +1 -0
- package/dist/esm/core/commons/save-blob-as-file.frontend.utils.js +35 -0
- package/dist/esm/core/commons/save-blob-as-file.frontend.utils.js.map +1 -0
- package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.d.ts.map +1 -1
- package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.js +8 -0
- package/dist/esm/core/components-registry/assert-registry-completeness.frontend.helper.js.map +1 -1
- package/dist/esm/core/components-registry/component-resolver.frontend.helper.d.ts.map +1 -1
- package/dist/esm/core/components-registry/component-resolver.frontend.helper.js +34 -5
- package/dist/esm/core/components-registry/component-resolver.frontend.helper.js.map +1 -1
- package/dist/esm/core/components-registry/register-framework-layouts.d.ts.map +1 -1
- package/dist/esm/core/components-registry/register-framework-layouts.js +4 -0
- package/dist/esm/core/components-registry/register-framework-layouts.js.map +1 -1
- package/dist/esm/core/config/app-configuration-frontend.schemas.d.ts +36 -0
- package/dist/esm/core/config/app-configuration-frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/app-configuration-frontend.schemas.js +29 -2
- package/dist/esm/core/config/app-configuration-frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/app-level-components.frontend.schemas.d.ts +10 -16
- package/dist/esm/core/config/app-level-components.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/app-level-components.frontend.schemas.js +10 -16
- package/dist/esm/core/config/app-level-components.frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/chart-view.frontend.schemas.d.ts +12 -8
- package/dist/esm/core/config/chart-view.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/chart-view.frontend.schemas.js +10 -0
- package/dist/esm/core/config/chart-view.frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/composite-view.schemas.d.ts +2 -2
- package/dist/esm/core/config/config-merge-utilities.d.ts +31 -3
- package/dist/esm/core/config/config-merge-utilities.d.ts.map +1 -1
- package/dist/esm/core/config/config-merge-utilities.js +61 -7
- package/dist/esm/core/config/config-merge-utilities.js.map +1 -1
- package/dist/esm/core/config/decision-inbox-capability.frontend.utils.d.ts +83 -0
- package/dist/esm/core/config/decision-inbox-capability.frontend.utils.d.ts.map +1 -0
- package/dist/esm/core/config/decision-inbox-capability.frontend.utils.js +100 -0
- package/dist/esm/core/config/decision-inbox-capability.frontend.utils.js.map +1 -0
- package/dist/esm/core/config/directory-provisioning-capabilities.frontend.utils.d.ts +69 -0
- package/dist/esm/core/config/directory-provisioning-capabilities.frontend.utils.d.ts.map +1 -0
- package/dist/esm/core/config/directory-provisioning-capabilities.frontend.utils.js +65 -0
- package/dist/esm/core/config/directory-provisioning-capabilities.frontend.utils.js.map +1 -0
- package/dist/esm/core/config/engine-settings-destinations.d.ts +13 -1
- package/dist/esm/core/config/engine-settings-destinations.d.ts.map +1 -1
- package/dist/esm/core/config/engine-settings-destinations.js +588 -155
- package/dist/esm/core/config/engine-settings-destinations.js.map +1 -1
- package/dist/esm/core/config/execution-view.schemas.d.ts +17 -3
- package/dist/esm/core/config/execution-view.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/execution-view.schemas.js +1 -1
- package/dist/esm/core/config/execution-view.schemas.js.map +1 -1
- package/dist/esm/core/config/flows-actors-view.schemas.d.ts +12 -2
- package/dist/esm/core/config/flows-actors-view.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/flows-actors-view.schemas.js +13 -1
- package/dist/esm/core/config/flows-actors-view.schemas.js.map +1 -1
- package/dist/esm/core/config/inserted-view-launcher.schemas.d.ts +12 -11
- package/dist/esm/core/config/inserted-view-launcher.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/inserted-view-launcher.schemas.js +14 -13
- package/dist/esm/core/config/inserted-view-launcher.schemas.js.map +1 -1
- package/dist/esm/core/config/launcher-items.frontend.schemas.d.ts +77 -27
- package/dist/esm/core/config/launcher-items.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/launcher-items.frontend.schemas.js +18 -13
- package/dist/esm/core/config/launcher-items.frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/relationship-side-capabilities.frontend.utils.d.ts +79 -0
- package/dist/esm/core/config/relationship-side-capabilities.frontend.utils.d.ts.map +1 -0
- package/dist/esm/core/config/relationship-side-capabilities.frontend.utils.js +95 -0
- package/dist/esm/core/config/relationship-side-capabilities.frontend.utils.js.map +1 -0
- package/dist/esm/core/config/settings-hub-gating.frontend.utils.d.ts +19 -7
- package/dist/esm/core/config/settings-hub-gating.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/config/settings-hub-gating.frontend.utils.js +45 -10
- package/dist/esm/core/config/settings-hub-gating.frontend.utils.js.map +1 -1
- package/dist/esm/core/config/settings-hub-presentation.frontend.utils.d.ts +2 -2
- package/dist/esm/core/config/settings-hub-presentation.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/config/settings-hub-presentation.frontend.utils.js +38 -5
- package/dist/esm/core/config/settings-hub-presentation.frontend.utils.js.map +1 -1
- package/dist/esm/core/config/settings-hub.frontend.schemas.d.ts +94 -10
- package/dist/esm/core/config/settings-hub.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/config/settings-hub.frontend.schemas.js +40 -3
- package/dist/esm/core/config/settings-hub.frontend.schemas.js.map +1 -1
- package/dist/esm/core/config/useSettingsHubConfig.d.ts.map +1 -1
- package/dist/esm/core/config/useSettingsHubConfig.js +4 -1
- package/dist/esm/core/config/useSettingsHubConfig.js.map +1 -1
- package/dist/esm/core/config/useVisibleSettingsHubConfig.d.ts +2 -2
- package/dist/esm/core/config/useVisibleSettingsHubConfig.d.ts.map +1 -1
- package/dist/esm/core/config/useVisibleSettingsHubConfig.js +7 -8
- package/dist/esm/core/config/useVisibleSettingsHubConfig.js.map +1 -1
- package/dist/esm/core/config/verify-launcher-content.d.ts +16 -2
- package/dist/esm/core/config/verify-launcher-content.d.ts.map +1 -1
- package/dist/esm/core/config/verify-launcher-content.js +64 -4
- package/dist/esm/core/config/verify-launcher-content.js.map +1 -1
- package/dist/esm/core/config/verify-settings-hub-content.d.ts +4 -0
- package/dist/esm/core/config/verify-settings-hub-content.d.ts.map +1 -1
- package/dist/esm/core/config/verify-settings-hub-content.js +34 -0
- package/dist/esm/core/config/verify-settings-hub-content.js.map +1 -1
- package/dist/esm/core/enums/common-enum-registry.d.ts +16 -23
- package/dist/esm/core/enums/common-enum-registry.d.ts.map +1 -1
- package/dist/esm/core/enums/common-enum-registry.js +26 -29
- package/dist/esm/core/enums/common-enum-registry.js.map +1 -1
- package/dist/esm/core/errors/GlobalErrorHandler.d.ts.map +1 -1
- package/dist/esm/core/errors/GlobalErrorHandler.js +71 -9
- package/dist/esm/core/errors/GlobalErrorHandler.js.map +1 -1
- package/dist/esm/core/errors/error-management.frontend.service.d.ts +0 -4
- package/dist/esm/core/errors/error-management.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/errors/error-management.frontend.service.js +5 -8
- package/dist/esm/core/errors/error-management.frontend.service.js.map +1 -1
- package/dist/esm/core/errors/errors.frontend.schemas.d.ts +21 -10
- package/dist/esm/core/errors/errors.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/errors/errors.frontend.schemas.js.map +1 -1
- package/dist/esm/core/errors/user-facing-error-message.frontend.utils.d.ts +35 -0
- package/dist/esm/core/errors/user-facing-error-message.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/errors/user-facing-error-message.frontend.utils.js +44 -5
- package/dist/esm/core/errors/user-facing-error-message.frontend.utils.js.map +1 -1
- package/dist/esm/core/events/EventBusContext.js.map +1 -1
- package/dist/esm/core/events/NotificationContext.d.ts +13 -1
- package/dist/esm/core/events/NotificationContext.d.ts.map +1 -1
- package/dist/esm/core/events/NotificationContext.js +89 -22
- package/dist/esm/core/events/NotificationContext.js.map +1 -1
- package/dist/esm/core/events/events.frontend.schemas.d.ts +68 -4
- package/dist/esm/core/events/events.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/events/events.frontend.schemas.js +67 -3
- package/dist/esm/core/events/events.frontend.schemas.js.map +1 -1
- package/dist/esm/core/events/useNotificationPreferenceKinds.d.ts +9 -0
- package/dist/esm/core/events/useNotificationPreferenceKinds.d.ts.map +1 -0
- package/dist/esm/core/events/useNotificationPreferenceKinds.js +50 -0
- package/dist/esm/core/events/useNotificationPreferenceKinds.js.map +1 -0
- package/dist/esm/core/execution/useExecution.js +1 -1
- package/dist/esm/core/execution/useExecution.js.map +1 -1
- package/dist/esm/core/execution/useExecutionParticipationRMM.d.ts.map +1 -1
- package/dist/esm/core/execution/useExecutionParticipationRMM.js +4 -0
- package/dist/esm/core/execution/useExecutionParticipationRMM.js.map +1 -1
- package/dist/esm/core/execution/useExecutionResourceOperationSurface.d.ts.map +1 -1
- package/dist/esm/core/execution/useExecutionResourceOperationSurface.js +3 -3
- package/dist/esm/core/execution/useExecutionResourceOperationSurface.js.map +1 -1
- package/dist/esm/core/external-providers/chat-sign-in-completion.frontend.d.ts +52 -0
- package/dist/esm/core/external-providers/chat-sign-in-completion.frontend.d.ts.map +1 -0
- package/dist/esm/core/external-providers/chat-sign-in-completion.frontend.js +88 -0
- package/dist/esm/core/external-providers/chat-sign-in-completion.frontend.js.map +1 -0
- package/dist/esm/core/external-providers/frontend-provider-registry.frontend.service.d.ts +20 -2
- package/dist/esm/core/external-providers/frontend-provider-registry.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/external-providers/frontend-provider-registry.frontend.service.js +18 -1
- package/dist/esm/core/external-providers/frontend-provider-registry.frontend.service.js.map +1 -1
- package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.d.ts +7 -5
- package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.d.ts.map +1 -1
- package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.js +9 -6
- package/dist/esm/core/external-providers/provider-scope-reauthorization-offers.frontend.js.map +1 -1
- package/dist/esm/core/features/FeaturesContext.d.ts +9 -1
- package/dist/esm/core/features/FeaturesContext.d.ts.map +1 -1
- package/dist/esm/core/features/FeaturesContext.js +38 -12
- package/dist/esm/core/features/FeaturesContext.js.map +1 -1
- package/dist/esm/core/features/useOperationFeatureAvailability.d.ts.map +1 -1
- package/dist/esm/core/features/useOperationFeatureAvailability.js +4 -0
- package/dist/esm/core/features/useOperationFeatureAvailability.js.map +1 -1
- package/dist/esm/core/flows-actors/FlowsActorsContext.d.ts +90 -33
- package/dist/esm/core/flows-actors/FlowsActorsContext.d.ts.map +1 -1
- package/dist/esm/core/flows-actors/FlowsActorsContext.js +153 -100
- package/dist/esm/core/flows-actors/FlowsActorsContext.js.map +1 -1
- package/dist/esm/core/flows-actors/conversation-history.model.d.ts +41 -0
- package/dist/esm/core/flows-actors/conversation-history.model.d.ts.map +1 -0
- package/dist/esm/core/flows-actors/conversation-history.model.js +65 -0
- package/dist/esm/core/flows-actors/conversation-history.model.js.map +1 -0
- package/dist/esm/core/flows-actors/conversation-thread.model.d.ts +144 -0
- package/dist/esm/core/flows-actors/conversation-thread.model.d.ts.map +1 -0
- package/dist/esm/core/flows-actors/conversation-thread.model.js +315 -0
- package/dist/esm/core/flows-actors/conversation-thread.model.js.map +1 -0
- package/dist/esm/core/flows-actors/execution-usages-batch.frontend.utils.d.ts +29 -0
- package/dist/esm/core/flows-actors/execution-usages-batch.frontend.utils.d.ts.map +1 -0
- package/dist/esm/core/flows-actors/execution-usages-batch.frontend.utils.js +67 -0
- package/dist/esm/core/flows-actors/execution-usages-batch.frontend.utils.js.map +1 -0
- package/dist/esm/core/flows-actors/graph-view.layout.d.ts +77 -0
- package/dist/esm/core/flows-actors/graph-view.layout.d.ts.map +1 -0
- package/dist/esm/core/flows-actors/graph-view.layout.js +169 -0
- package/dist/esm/core/flows-actors/graph-view.layout.js.map +1 -0
- package/dist/esm/core/flows-actors/graph-view.model.d.ts +245 -0
- package/dist/esm/core/flows-actors/graph-view.model.d.ts.map +1 -0
- package/dist/esm/core/flows-actors/graph-view.model.js +414 -0
- package/dist/esm/core/flows-actors/graph-view.model.js.map +1 -0
- package/dist/esm/core/flows-actors/model-cost-money.frontend.utils.d.ts +12 -0
- package/dist/esm/core/flows-actors/model-cost-money.frontend.utils.d.ts.map +1 -0
- package/dist/esm/core/flows-actors/model-cost-money.frontend.utils.js +20 -0
- package/dist/esm/core/flows-actors/model-cost-money.frontend.utils.js.map +1 -0
- package/dist/esm/core/flows-actors/usePendingDecisions.d.ts +36 -11
- package/dist/esm/core/flows-actors/usePendingDecisions.d.ts.map +1 -1
- package/dist/esm/core/flows-actors/usePendingDecisions.js +114 -29
- package/dist/esm/core/flows-actors/usePendingDecisions.js.map +1 -1
- package/dist/esm/core/guidance/GuidanceContext.d.ts.map +1 -1
- package/dist/esm/core/guidance/GuidanceContext.js +1 -2
- package/dist/esm/core/guidance/GuidanceContext.js.map +1 -1
- package/dist/esm/core/guidance/renderers/GuidanceChecklist.labels.js +2 -2
- package/dist/esm/core/guidance/renderers/GuidanceChecklist.labels.js.map +1 -1
- package/dist/esm/core/hotkey/DefaultHotkeyHandler.d.ts +3 -9
- package/dist/esm/core/hotkey/DefaultHotkeyHandler.d.ts.map +1 -1
- package/dist/esm/core/hotkey/DefaultHotkeyHandler.js +3 -15
- package/dist/esm/core/hotkey/DefaultHotkeyHandler.js.map +1 -1
- package/dist/esm/core/hotkey/merge-hotkey-emit-shortcuts.d.ts +2 -2
- package/dist/esm/core/hotkey/merge-hotkey-emit-shortcuts.js +2 -2
- package/dist/esm/core/hotkey/merge-hotkey-emit-shortcuts.js.map +1 -1
- package/dist/esm/core/i18n/I18nContext.d.ts +52 -3
- package/dist/esm/core/i18n/I18nContext.d.ts.map +1 -1
- package/dist/esm/core/i18n/I18nContext.js +80 -7
- package/dist/esm/core/i18n/I18nContext.js.map +1 -1
- package/dist/esm/core/i18n/regional-preference-resolution.frontend.utils.d.ts +82 -1
- package/dist/esm/core/i18n/regional-preference-resolution.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/i18n/regional-preference-resolution.frontend.utils.js +121 -6
- package/dist/esm/core/i18n/regional-preference-resolution.frontend.utils.js.map +1 -1
- package/dist/esm/core/i18n/useI18n.d.ts +3 -1
- package/dist/esm/core/i18n/useI18n.d.ts.map +1 -1
- package/dist/esm/core/i18n/useI18n.js +3 -1
- package/dist/esm/core/i18n/useI18n.js.map +1 -1
- package/dist/esm/core/icons/IconRegistryBridge.d.ts +38 -4
- package/dist/esm/core/icons/IconRegistryBridge.d.ts.map +1 -1
- package/dist/esm/core/icons/IconRegistryBridge.js +103 -63
- package/dist/esm/core/icons/IconRegistryBridge.js.map +1 -1
- package/dist/esm/core/icons/IconRegistryContext.d.ts.map +1 -1
- package/dist/esm/core/icons/IconRegistryContext.js +41 -0
- package/dist/esm/core/icons/IconRegistryContext.js.map +1 -1
- package/dist/esm/core/icons/icon-registry.frontend.schemas.d.ts +44 -0
- package/dist/esm/core/icons/icon-registry.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/icons/icon-registry.frontend.schemas.js +46 -0
- package/dist/esm/core/icons/icon-registry.frontend.schemas.js.map +1 -1
- package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.js +2 -2
- package/dist/esm/core/monitoring/analytics/providers/backend-proxy-analytics.provider.js.map +1 -1
- package/dist/esm/core/navigation/NavigationContentAreas.d.ts +64 -20
- package/dist/esm/core/navigation/NavigationContentAreas.d.ts.map +1 -1
- package/dist/esm/core/navigation/NavigationContentAreas.js +82 -51
- package/dist/esm/core/navigation/NavigationContentAreas.js.map +1 -1
- package/dist/esm/core/navigation/NavigationContext.d.ts.map +1 -1
- package/dist/esm/core/navigation/NavigationContext.js +130 -23
- package/dist/esm/core/navigation/NavigationContext.js.map +1 -1
- package/dist/esm/core/navigation/NavigationRequestBridge.d.ts +4 -0
- package/dist/esm/core/navigation/NavigationRequestBridge.d.ts.map +1 -1
- package/dist/esm/core/navigation/NavigationRequestBridge.js +17 -1
- package/dist/esm/core/navigation/NavigationRequestBridge.js.map +1 -1
- package/dist/esm/core/navigation/ZoneChromeContext.d.ts +80 -0
- package/dist/esm/core/navigation/ZoneChromeContext.d.ts.map +1 -0
- package/dist/esm/core/navigation/ZoneChromeContext.js +130 -0
- package/dist/esm/core/navigation/ZoneChromeContext.js.map +1 -0
- package/dist/esm/core/navigation/launcher-resolution.d.ts +102 -2
- package/dist/esm/core/navigation/launcher-resolution.d.ts.map +1 -1
- package/dist/esm/core/navigation/launcher-resolution.js +194 -9
- package/dist/esm/core/navigation/launcher-resolution.js.map +1 -1
- package/dist/esm/core/navigation/launcher-runtime-availability.d.ts +35 -5
- package/dist/esm/core/navigation/launcher-runtime-availability.d.ts.map +1 -1
- package/dist/esm/core/navigation/launcher-runtime-availability.js +147 -18
- package/dist/esm/core/navigation/launcher-runtime-availability.js.map +1 -1
- package/dist/esm/core/navigation/navigation-cascade.d.ts +44 -14
- package/dist/esm/core/navigation/navigation-cascade.d.ts.map +1 -1
- package/dist/esm/core/navigation/navigation-cascade.js +87 -19
- package/dist/esm/core/navigation/navigation-cascade.js.map +1 -1
- package/dist/esm/core/navigation/navigation-commit.d.ts +45 -0
- package/dist/esm/core/navigation/navigation-commit.d.ts.map +1 -0
- package/dist/esm/core/navigation/navigation-commit.js +68 -0
- package/dist/esm/core/navigation/navigation-commit.js.map +1 -0
- package/dist/esm/core/navigation/navigation-controller-internals.d.ts +54 -3
- package/dist/esm/core/navigation/navigation-controller-internals.d.ts.map +1 -1
- package/dist/esm/core/navigation/navigation-controller-internals.js +91 -3
- package/dist/esm/core/navigation/navigation-controller-internals.js.map +1 -1
- package/dist/esm/core/navigation/navigation-policy-resolver.service.d.ts +3 -3
- package/dist/esm/core/navigation/navigation-policy-resolver.service.js +3 -3
- package/dist/esm/core/navigation/navigation-policy-resolver.service.js.map +1 -1
- package/dist/esm/core/navigation/navigation.utils.d.ts +95 -22
- package/dist/esm/core/navigation/navigation.utils.d.ts.map +1 -1
- package/dist/esm/core/navigation/navigation.utils.js +190 -63
- package/dist/esm/core/navigation/navigation.utils.js.map +1 -1
- package/dist/esm/core/navigation/sidebar-resource-browser-operation.d.ts +8 -0
- package/dist/esm/core/navigation/sidebar-resource-browser-operation.d.ts.map +1 -0
- package/dist/esm/core/navigation/sidebar-resource-browser-operation.js +27 -0
- package/dist/esm/core/navigation/sidebar-resource-browser-operation.js.map +1 -0
- package/dist/esm/core/navigation/useCurrentOrganizationHoldsUnrevokedScimToken.d.ts +64 -0
- package/dist/esm/core/navigation/useCurrentOrganizationHoldsUnrevokedScimToken.d.ts.map +1 -0
- package/dist/esm/core/navigation/useCurrentOrganizationHoldsUnrevokedScimToken.js +212 -0
- package/dist/esm/core/navigation/useCurrentOrganizationHoldsUnrevokedScimToken.js.map +1 -0
- package/dist/esm/core/navigation/useLauncherResolutionContext.d.ts +1 -1
- package/dist/esm/core/navigation/useLauncherResolutionContext.d.ts.map +1 -1
- package/dist/esm/core/navigation/useLauncherResolutionContext.js +17 -2
- package/dist/esm/core/navigation/useLauncherResolutionContext.js.map +1 -1
- package/dist/esm/core/navigation/useNavigationController.d.ts +1 -0
- package/dist/esm/core/navigation/useNavigationController.d.ts.map +1 -1
- package/dist/esm/core/navigation/useNavigationController.js +51 -67
- package/dist/esm/core/navigation/useNavigationController.js.map +1 -1
- package/dist/esm/core/navigation/useNavigationRouterSync.d.ts.map +1 -1
- package/dist/esm/core/navigation/useNavigationRouterSync.js +17 -1
- package/dist/esm/core/navigation/useNavigationRouterSync.js.map +1 -1
- package/dist/esm/core/navigation/useZoneEntryOrganizationHold.d.ts +17 -0
- package/dist/esm/core/navigation/useZoneEntryOrganizationHold.d.ts.map +1 -0
- package/dist/esm/core/navigation/useZoneEntryOrganizationHold.js +32 -0
- package/dist/esm/core/navigation/useZoneEntryOrganizationHold.js.map +1 -0
- package/dist/esm/core/navigation/zone-collapse.d.ts +2 -1
- package/dist/esm/core/navigation/zone-collapse.d.ts.map +1 -1
- package/dist/esm/core/navigation/zone-collapse.js +2 -1
- package/dist/esm/core/navigation/zone-collapse.js.map +1 -1
- package/dist/esm/core/navigation/zone-entry-organization.d.ts +34 -0
- package/dist/esm/core/navigation/zone-entry-organization.d.ts.map +1 -0
- package/dist/esm/core/navigation/zone-entry-organization.js +77 -0
- package/dist/esm/core/navigation/zone-entry-organization.js.map +1 -0
- package/dist/esm/core/requests/auth-refresh-resilience.frontend.d.ts +15 -0
- package/dist/esm/core/requests/auth-refresh-resilience.frontend.d.ts.map +1 -1
- package/dist/esm/core/requests/auth-refresh-resilience.frontend.js +24 -0
- package/dist/esm/core/requests/auth-refresh-resilience.frontend.js.map +1 -1
- package/dist/esm/core/requests/automatic-resend-safety.frontend.d.ts +74 -0
- package/dist/esm/core/requests/automatic-resend-safety.frontend.d.ts.map +1 -0
- package/dist/esm/core/requests/automatic-resend-safety.frontend.js +52 -0
- package/dist/esm/core/requests/automatic-resend-safety.frontend.js.map +1 -0
- package/dist/esm/core/requests/websockets/WebSocketContext.d.ts.map +1 -1
- package/dist/esm/core/requests/websockets/WebSocketContext.js +31 -0
- package/dist/esm/core/requests/websockets/WebSocketContext.js.map +1 -1
- package/dist/esm/core/requests/websockets/WebSocketEventBridge.d.ts.map +1 -1
- package/dist/esm/core/requests/websockets/WebSocketEventBridge.js +2 -0
- package/dist/esm/core/requests/websockets/WebSocketEventBridge.js.map +1 -1
- package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.d.ts +162 -98
- package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.js +283 -157
- package/dist/esm/core/requests/wildo-http-client-manual-calls.frontend.service.js.map +1 -1
- package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.d.ts +9 -13
- package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.js +45 -97
- package/dist/esm/core/requests/wildo-http-client-resources.frontend.service.js.map +1 -1
- package/dist/esm/core/requests/wildo-http-client.frontend.service.d.ts +25 -5
- package/dist/esm/core/requests/wildo-http-client.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/requests/wildo-http-client.frontend.service.js +56 -11
- package/dist/esm/core/requests/wildo-http-client.frontend.service.js.map +1 -1
- package/dist/esm/core/resources/ScopedResourceRegistryProvider.d.ts.map +1 -1
- package/dist/esm/core/resources/ScopedResourceRegistryProvider.js +1 -2
- package/dist/esm/core/resources/ScopedResourceRegistryProvider.js.map +1 -1
- package/dist/esm/core/resources/calendar-date-fields.frontend.utils.d.ts +14 -0
- package/dist/esm/core/resources/calendar-date-fields.frontend.utils.d.ts.map +1 -0
- package/dist/esm/core/resources/calendar-date-fields.frontend.utils.js +29 -0
- package/dist/esm/core/resources/calendar-date-fields.frontend.utils.js.map +1 -0
- package/dist/esm/core/resources/caller-identity-record.frontend.utils.d.ts +23 -0
- package/dist/esm/core/resources/caller-identity-record.frontend.utils.d.ts.map +1 -0
- package/dist/esm/core/resources/caller-identity-record.frontend.utils.js +26 -0
- package/dist/esm/core/resources/caller-identity-record.frontend.utils.js.map +1 -0
- package/dist/esm/core/resources/collection-export-url.frontend.utils.d.ts +1 -1
- package/dist/esm/core/resources/collection-export-url.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/collection-export-url.frontend.utils.js +34 -16
- package/dist/esm/core/resources/collection-export-url.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/collection-filter-presets.frontend.utils.d.ts +54 -11
- package/dist/esm/core/resources/collection-filter-presets.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/collection-filter-presets.frontend.utils.js +131 -63
- package/dist/esm/core/resources/collection-filter-presets.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/date-filter-window.frontend.utils.d.ts +58 -0
- package/dist/esm/core/resources/date-filter-window.frontend.utils.d.ts.map +1 -0
- package/dist/esm/core/resources/date-filter-window.frontend.utils.js +70 -0
- package/dist/esm/core/resources/date-filter-window.frontend.utils.js.map +1 -0
- package/dist/esm/core/resources/frontend-resource.utils.d.ts +146 -7
- package/dist/esm/core/resources/frontend-resource.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/frontend-resource.utils.js +194 -22
- package/dist/esm/core/resources/frontend-resource.utils.js.map +1 -1
- package/dist/esm/core/resources/hooks/useOperationEnabled.d.ts +18 -4
- package/dist/esm/core/resources/hooks/useOperationEnabled.d.ts.map +1 -1
- package/dist/esm/core/resources/hooks/useOperationEnabled.js +26 -6
- package/dist/esm/core/resources/hooks/useOperationEnabled.js.map +1 -1
- package/dist/esm/core/resources/operation-semantics.frontend.utils.d.ts +95 -2
- package/dist/esm/core/resources/operation-semantics.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/operation-semantics.frontend.utils.js +126 -13
- package/dist/esm/core/resources/operation-semantics.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/read-through-organization-unit.frontend.utils.d.ts +45 -0
- package/dist/esm/core/resources/read-through-organization-unit.frontend.utils.d.ts.map +1 -0
- package/dist/esm/core/resources/read-through-organization-unit.frontend.utils.js +46 -0
- package/dist/esm/core/resources/read-through-organization-unit.frontend.utils.js.map +1 -0
- package/dist/esm/core/resources/referenced-record-scope.frontend.utils.d.ts +46 -0
- package/dist/esm/core/resources/referenced-record-scope.frontend.utils.d.ts.map +1 -0
- package/dist/esm/core/resources/referenced-record-scope.frontend.utils.js +86 -0
- package/dist/esm/core/resources/referenced-record-scope.frontend.utils.js.map +1 -0
- package/dist/esm/core/resources/relationship-quick-create.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/relationship-quick-create.frontend.utils.js +5 -1
- package/dist/esm/core/resources/relationship-quick-create.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/resource-addressability.frontend.utils.d.ts +28 -1
- package/dist/esm/core/resources/resource-addressability.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/resource-addressability.frontend.utils.js +43 -3
- package/dist/esm/core/resources/resource-addressability.frontend.utils.js.map +1 -1
- package/dist/esm/core/resources/resource-discriminators.frontend.utils.d.ts +26 -0
- package/dist/esm/core/resources/resource-discriminators.frontend.utils.d.ts.map +1 -0
- package/dist/esm/core/resources/resource-discriminators.frontend.utils.js +37 -0
- package/dist/esm/core/resources/resource-discriminators.frontend.utils.js.map +1 -0
- package/dist/esm/core/resources/resources-repository.frontend.service.d.ts +40 -8
- package/dist/esm/core/resources/resources-repository.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/resources/resources-repository.frontend.service.js +333 -73
- package/dist/esm/core/resources/resources-repository.frontend.service.js.map +1 -1
- package/dist/esm/core/resources/resources.frontend.schemas.d.ts +175 -65
- package/dist/esm/core/resources/resources.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/resources/resources.frontend.schemas.js +245 -75
- package/dist/esm/core/resources/resources.frontend.schemas.js.map +1 -1
- package/dist/esm/core/resources/rmm/HttpTransportAdapter.d.ts +9 -1
- package/dist/esm/core/resources/rmm/HttpTransportAdapter.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/HttpTransportAdapter.js +57 -22
- package/dist/esm/core/resources/rmm/HttpTransportAdapter.js.map +1 -1
- package/dist/esm/core/resources/rmm/RMMRegistry.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/RMMRegistry.js +1 -0
- package/dist/esm/core/resources/rmm/RMMRegistry.js.map +1 -1
- package/dist/esm/core/resources/rmm/ResourceMutationManager.d.ts +3 -0
- package/dist/esm/core/resources/rmm/ResourceMutationManager.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/ResourceMutationManager.js +94 -35
- package/dist/esm/core/resources/rmm/ResourceMutationManager.js.map +1 -1
- package/dist/esm/core/resources/rmm/types.d.ts +58 -6
- package/dist/esm/core/resources/rmm/types.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/types.js +17 -0
- package/dist/esm/core/resources/rmm/types.js.map +1 -1
- package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.d.ts +43 -6
- package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.js +49 -6
- package/dist/esm/core/resources/rmm/update-like-mutation-fallback.frontend.js.map +1 -1
- package/dist/esm/core/resources/rmm/useResourceMutationManager.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/useResourceMutationManager.js +2 -0
- package/dist/esm/core/resources/rmm/useResourceMutationManager.js.map +1 -1
- package/dist/esm/core/resources/rmm/useResourceRMM.d.ts +2 -0
- package/dist/esm/core/resources/rmm/useResourceRMM.d.ts.map +1 -1
- package/dist/esm/core/resources/rmm/useResourceRMM.js +10 -3
- package/dist/esm/core/resources/rmm/useResourceRMM.js.map +1 -1
- package/dist/esm/core/resources/temporal-day-groups.frontend.utils.d.ts +22 -0
- package/dist/esm/core/resources/temporal-day-groups.frontend.utils.d.ts.map +1 -0
- package/dist/esm/core/resources/temporal-day-groups.frontend.utils.js +31 -0
- package/dist/esm/core/resources/temporal-day-groups.frontend.utils.js.map +1 -0
- package/dist/esm/core/resources/ui-behavior-presentation.frontend.utils.d.ts +36 -0
- package/dist/esm/core/resources/ui-behavior-presentation.frontend.utils.d.ts.map +1 -0
- package/dist/esm/core/resources/ui-behavior-presentation.frontend.utils.js +88 -0
- package/dist/esm/core/resources/ui-behavior-presentation.frontend.utils.js.map +1 -0
- package/dist/esm/core/resources/useBulkJobProgress.d.ts +6 -0
- package/dist/esm/core/resources/useBulkJobProgress.d.ts.map +1 -1
- package/dist/esm/core/resources/useBulkJobProgress.js +1 -0
- package/dist/esm/core/resources/useBulkJobProgress.js.map +1 -1
- package/dist/esm/core/resources/useCollectionFilterPresetScope.d.ts +14 -0
- package/dist/esm/core/resources/useCollectionFilterPresetScope.d.ts.map +1 -0
- package/dist/esm/core/resources/useCollectionFilterPresetScope.js +29 -0
- package/dist/esm/core/resources/useCollectionFilterPresetScope.js.map +1 -0
- package/dist/esm/core/resources/useHostlessResourceNavigation.d.ts +7 -6
- package/dist/esm/core/resources/useHostlessResourceNavigation.d.ts.map +1 -1
- package/dist/esm/core/resources/useHostlessResourceNavigation.js +35 -21
- package/dist/esm/core/resources/useHostlessResourceNavigation.js.map +1 -1
- package/dist/esm/core/resources/useOperationDirectExecution.d.ts.map +1 -1
- package/dist/esm/core/resources/useOperationDirectExecution.js +25 -10
- package/dist/esm/core/resources/useOperationDirectExecution.js.map +1 -1
- package/dist/esm/core/resources/useRecordSharing.d.ts +58 -0
- package/dist/esm/core/resources/useRecordSharing.d.ts.map +1 -0
- package/dist/esm/core/resources/useRecordSharing.js +220 -0
- package/dist/esm/core/resources/useRecordSharing.js.map +1 -0
- package/dist/esm/core/resources/useResourceLabels.d.ts +4 -1
- package/dist/esm/core/resources/useResourceLabels.d.ts.map +1 -1
- package/dist/esm/core/resources/useResourceLabels.js +31 -32
- package/dist/esm/core/resources/useResourceLabels.js.map +1 -1
- package/dist/esm/core/resources/useResourceOperationActions.d.ts +23 -4
- package/dist/esm/core/resources/useResourceOperationActions.d.ts.map +1 -1
- package/dist/esm/core/resources/useResourceOperationActions.js +219 -51
- package/dist/esm/core/resources/useResourceOperationActions.js.map +1 -1
- package/dist/esm/core/resources/useResourceOperationOutcomeEmitter.d.ts +10 -1
- package/dist/esm/core/resources/useResourceOperationOutcomeEmitter.d.ts.map +1 -1
- package/dist/esm/core/resources/useResourceOperationOutcomeEmitter.js +7 -2
- package/dist/esm/core/resources/useResourceOperationOutcomeEmitter.js.map +1 -1
- package/dist/esm/core/resources/useResourceOperationSurface.d.ts +5 -5
- package/dist/esm/core/resources/useResourceOperationSurface.d.ts.map +1 -1
- package/dist/esm/core/resources/useResourceOperationSurface.js +5 -4
- package/dist/esm/core/resources/useResourceOperationSurface.js.map +1 -1
- package/dist/esm/core/resources/useResourceSelection.d.ts +6 -0
- package/dist/esm/core/resources/useResourceSelection.d.ts.map +1 -1
- package/dist/esm/core/resources/useResourceSelection.js.map +1 -1
- package/dist/esm/core/resources/utils/operation-enabled-condition.frontend.utils.d.ts +47 -0
- package/dist/esm/core/resources/utils/operation-enabled-condition.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/resources/utils/operation-enabled-condition.frontend.utils.js +117 -4
- package/dist/esm/core/resources/utils/operation-enabled-condition.frontend.utils.js.map +1 -1
- package/dist/esm/core/runtime/AppRouter.d.ts.map +1 -1
- package/dist/esm/core/runtime/AppRouter.js +5 -2
- package/dist/esm/core/runtime/AppRouter.js.map +1 -1
- package/dist/esm/core/runtime/ApplicationMainContext.d.ts +10 -1
- package/dist/esm/core/runtime/ApplicationMainContext.d.ts.map +1 -1
- package/dist/esm/core/runtime/ApplicationMainContext.js +17 -2
- package/dist/esm/core/runtime/ApplicationMainContext.js.map +1 -1
- package/dist/esm/core/runtime/domain-module.frontend.definitions.d.ts +5 -0
- package/dist/esm/core/runtime/domain-module.frontend.definitions.d.ts.map +1 -1
- package/dist/esm/core/runtime/domain-module.frontend.definitions.js +4 -2
- package/dist/esm/core/runtime/domain-module.frontend.definitions.js.map +1 -1
- package/dist/esm/core/runtime/routes.frontend.definitions.d.ts +19 -3
- package/dist/esm/core/runtime/routes.frontend.definitions.d.ts.map +1 -1
- package/dist/esm/core/runtime/routes.frontend.definitions.js +23 -7
- package/dist/esm/core/runtime/routes.frontend.definitions.js.map +1 -1
- package/dist/esm/core/runtime/start-application.frontend.service.d.ts.map +1 -1
- package/dist/esm/core/runtime/start-application.frontend.service.js +3 -1
- package/dist/esm/core/runtime/start-application.frontend.service.js.map +1 -1
- package/dist/esm/core/scope/AppScopeContext.d.ts +7 -2
- package/dist/esm/core/scope/AppScopeContext.d.ts.map +1 -1
- package/dist/esm/core/scope/AppScopeContext.js +56 -10
- package/dist/esm/core/scope/AppScopeContext.js.map +1 -1
- package/dist/esm/core/security/ApplicationRoleTablesContext.d.ts +23 -0
- package/dist/esm/core/security/ApplicationRoleTablesContext.d.ts.map +1 -0
- package/dist/esm/core/security/ApplicationRoleTablesContext.js +27 -0
- package/dist/esm/core/security/ApplicationRoleTablesContext.js.map +1 -0
- package/dist/esm/core/security/AuthSessionContext.d.ts +26 -8
- package/dist/esm/core/security/AuthSessionContext.d.ts.map +1 -1
- package/dist/esm/core/security/AuthSessionContext.js +81 -17
- package/dist/esm/core/security/AuthSessionContext.js.map +1 -1
- package/dist/esm/core/security/RouteOrganizationDecisionContext.d.ts +13 -0
- package/dist/esm/core/security/RouteOrganizationDecisionContext.d.ts.map +1 -0
- package/dist/esm/core/security/RouteOrganizationDecisionContext.js +12 -0
- package/dist/esm/core/security/RouteOrganizationDecisionContext.js.map +1 -0
- package/dist/esm/core/security/StepUpAuthContext.js +5 -5
- package/dist/esm/core/security/StepUpAuthContext.js.map +1 -1
- package/dist/esm/core/security/UserOrgsContext.d.ts +13 -0
- package/dist/esm/core/security/UserOrgsContext.d.ts.map +1 -1
- package/dist/esm/core/security/UserOrgsContext.js +272 -103
- package/dist/esm/core/security/UserOrgsContext.js.map +1 -1
- package/dist/esm/core/security/auth-redirect.frontend.utils.d.ts +1 -0
- package/dist/esm/core/security/auth-redirect.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/security/auth-redirect.frontend.utils.js +3 -2
- package/dist/esm/core/security/auth-redirect.frontend.utils.js.map +1 -1
- package/dist/esm/core/security/effective-permissions.frontend.utils.d.ts +43 -0
- package/dist/esm/core/security/effective-permissions.frontend.utils.d.ts.map +1 -0
- package/dist/esm/core/security/effective-permissions.frontend.utils.js +73 -0
- package/dist/esm/core/security/effective-permissions.frontend.utils.js.map +1 -0
- package/dist/esm/core/security/route-organization-access.frontend.utils.d.ts +175 -5
- package/dist/esm/core/security/route-organization-access.frontend.utils.d.ts.map +1 -1
- package/dist/esm/core/security/route-organization-access.frontend.utils.js +147 -6
- package/dist/esm/core/security/route-organization-access.frontend.utils.js.map +1 -1
- package/dist/esm/core/security/security.frontend.schemas.d.ts +17 -5
- package/dist/esm/core/security/security.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/security/security.frontend.schemas.js +0 -5
- package/dist/esm/core/security/security.frontend.schemas.js.map +1 -1
- package/dist/esm/core/security/useApplicationRoleTables.d.ts +3 -0
- package/dist/esm/core/security/useApplicationRoleTables.d.ts.map +1 -0
- package/dist/esm/core/security/useApplicationRoleTables.js +11 -0
- package/dist/esm/core/security/useApplicationRoleTables.js.map +1 -0
- package/dist/esm/core/security/useRouteOrganizationAccess.d.ts +9 -0
- package/dist/esm/core/security/useRouteOrganizationAccess.d.ts.map +1 -1
- package/dist/esm/core/security/useRouteOrganizationAccess.js +31 -10
- package/dist/esm/core/security/useRouteOrganizationAccess.js.map +1 -1
- package/dist/esm/core/security/useRouteOrganizationFollow.d.ts +24 -0
- package/dist/esm/core/security/useRouteOrganizationFollow.d.ts.map +1 -0
- package/dist/esm/core/security/useRouteOrganizationFollow.js +76 -0
- package/dist/esm/core/security/useRouteOrganizationFollow.js.map +1 -0
- package/dist/esm/core/ui/UIContext.d.ts +25 -2
- package/dist/esm/core/ui/UIContext.d.ts.map +1 -1
- package/dist/esm/core/ui/UIContext.js +49 -37
- package/dist/esm/core/ui/UIContext.js.map +1 -1
- package/dist/esm/core/ui/design-token.utils.d.ts +0 -11
- package/dist/esm/core/ui/design-token.utils.d.ts.map +1 -1
- package/dist/esm/core/ui/design-token.utils.js +51 -83
- package/dist/esm/core/ui/design-token.utils.js.map +1 -1
- package/dist/esm/core/ui/themes/default.theme.d.ts.map +1 -1
- package/dist/esm/core/ui/themes/default.theme.js +151 -59
- package/dist/esm/core/ui/themes/default.theme.js.map +1 -1
- package/dist/esm/core/ui/themes/focus-indicator.d.ts +221 -0
- package/dist/esm/core/ui/themes/focus-indicator.d.ts.map +1 -0
- package/dist/esm/core/ui/themes/focus-indicator.js +229 -0
- package/dist/esm/core/ui/themes/focus-indicator.js.map +1 -0
- package/dist/esm/core/ui/ui.frontend.schemas.d.ts +7 -0
- package/dist/esm/core/ui/ui.frontend.schemas.d.ts.map +1 -1
- package/dist/esm/core/ui/useThemePreferenceControl.d.ts.map +1 -1
- package/dist/esm/core/ui/useThemePreferenceControl.js +1 -2
- package/dist/esm/core/ui/useThemePreferenceControl.js.map +1 -1
- package/dist/esm/index.d.ts +34 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +45 -7
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/tailwind/index.d.ts.map +1 -1
- package/dist/esm/tailwind/index.js +3 -0
- package/dist/esm/tailwind/index.js.map +1 -1
- package/dist/esm/testing/app-shell-placement-coverage.d.ts.map +1 -1
- package/dist/esm/testing/app-shell-placement-coverage.js +6 -2
- package/dist/esm/testing/app-shell-placement-coverage.js.map +1 -1
- package/dist/esm/testing/mock-builders.d.ts +13 -1
- package/dist/esm/testing/mock-builders.d.ts.map +1 -1
- package/dist/esm/testing/mock-builders.js +35 -1
- package/dist/esm/testing/mock-builders.js.map +1 -1
- package/dist/esm/testing/rmm-helpers.d.ts +5 -3
- package/dist/esm/testing/rmm-helpers.d.ts.map +1 -1
- package/dist/esm/testing/rmm-helpers.js +3 -0
- package/dist/esm/testing/rmm-helpers.js.map +1 -1
- package/dist/esm/testing/test-providers.d.ts.map +1 -1
- package/dist/esm/testing/test-providers.js +3 -0
- package/dist/esm/testing/test-providers.js.map +1 -1
- package/package.json +7 -6
- package/dist/esm/components/flows-actors/flow-node.d.ts +0 -28
- package/dist/esm/components/flows-actors/flow-node.d.ts.map +0 -1
- package/dist/esm/components/flows-actors/flow-node.js +0 -115
- package/dist/esm/components/flows-actors/flow-node.js.map +0 -1
- package/dist/esm/components/resources/CollectionSelectionHeaderRail.d.ts +0 -30
- package/dist/esm/components/resources/CollectionSelectionHeaderRail.d.ts.map +0 -1
- package/dist/esm/components/resources/CollectionSelectionHeaderRail.js +0 -17
- package/dist/esm/components/resources/CollectionSelectionHeaderRail.js.map +0 -1
- package/dist/tsconfig.build.tsbuildinfo +0 -1
|
@@ -7,7 +7,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
7
7
|
* Responsibilities:
|
|
8
8
|
* - Receives the merged FeatureConfiguration (core + custom) from app initialization
|
|
9
9
|
* - Builds a definitions map for fast lookup
|
|
10
|
-
* - Fetches resolved features from backend API: GET /api/v1/features/resolved
|
|
10
|
+
* - Fetches resolved features from backend API: GET /api/v1/features/resolved, FOR the organization the
|
|
11
|
+
* person is currently in (`?organizationId=`, see `fetchResolvedFeatures`)
|
|
11
12
|
* - Caches resolved features in context state
|
|
12
13
|
* - Invalidates on WebSocket events (FEATURES_CHANGED, BILLING_STATUS_CHANGED, etc.)
|
|
13
14
|
* - Exposes raw resolved features + definitions + unavailability policy
|
|
@@ -53,10 +54,13 @@ export const FeaturesContext = createContext(undefined);
|
|
|
53
54
|
export function FeaturesProvider({ featureConfiguration, children }) {
|
|
54
55
|
// ── State ──
|
|
55
56
|
const [resolvedFeaturesResponse, setResolvedFeaturesResponse] = useState(null);
|
|
57
|
+
const [resolvedForOrganizationId, setResolvedForOrganizationId] = useState(null);
|
|
56
58
|
const [isLoading, setIsLoading] = useState(true);
|
|
57
59
|
const [error, setError] = useState(null);
|
|
58
60
|
// ── Refs for stable callbacks ──
|
|
59
|
-
|
|
61
|
+
// Sequence of the most recent fetch. Only the LATEST fetch may write state: an answer for an organization the
|
|
62
|
+
// person has since left must never land over the answer for the one they are in (see `fetchResolvedFeatures`).
|
|
63
|
+
const latestFetchSequenceRef = useRef(0);
|
|
60
64
|
const mountedRef = useRef(true);
|
|
61
65
|
const debounceTimerRef = useRef(null);
|
|
62
66
|
// ── Auth — features are user-scoped, only fetch when authenticated ──
|
|
@@ -96,21 +100,42 @@ export function FeaturesProvider({ featureConfiguration, children }) {
|
|
|
96
100
|
};
|
|
97
101
|
}, [resolvedFeaturesResponse]);
|
|
98
102
|
const clearResolvedFeatures = useCallback(() => {
|
|
103
|
+
// Supersede any fetch still in flight, so an answer for the session that just ended cannot land after it.
|
|
104
|
+
latestFetchSequenceRef.current += 1;
|
|
99
105
|
setResolvedFeaturesResponse(null);
|
|
106
|
+
setResolvedForOrganizationId(null);
|
|
100
107
|
setError(null);
|
|
101
108
|
setIsLoading(false);
|
|
102
109
|
}, []);
|
|
103
110
|
// ── Fetch resolved features from backend ──
|
|
111
|
+
/**
|
|
112
|
+
* Ask the backend which features the person has IN THE ORGANIZATION THEY ARE IN (#2061).
|
|
113
|
+
*
|
|
114
|
+
* `/features/resolved` is a manual route: no organization in its URL, so the backend resolves one from the
|
|
115
|
+
* `organizationId` query parameter, checked against the caller's memberships, and otherwise infers it ONLY
|
|
116
|
+
* when the caller belongs to exactly one organization (`resolveManualControllerOrganizationId`). Before this
|
|
117
|
+
* the request carried none, so a member of several organizations — an administrator, typically — was answered
|
|
118
|
+
* for no organization at all: `["M2M_WEBHOOK_DELIVERY"]` instead of a set holding `SINGLE_SIGN_ON`,
|
|
119
|
+
* `DIRECTORY_PROVISIONING` and `SECURITY_EVENT_EXPORT`. The launcher's availability is derived from this set,
|
|
120
|
+
* so the organization's SSO, SCIM and SIEM settings disappeared from its own settings rail.
|
|
121
|
+
*
|
|
122
|
+
* At application scope (no current organization) the parameter is omitted on purpose: that is a genuine
|
|
123
|
+
* question about no organization, and the backend's single-membership inference is the right answer to it.
|
|
124
|
+
*
|
|
125
|
+
* The latest fetch wins, by sequence. The previous guard SKIPPED a fetch while another was in flight, so the
|
|
126
|
+
* organization arriving shortly after sign-in — the common order — was dropped and the stale answer kept.
|
|
127
|
+
* Identical concurrent requests are still one network call: the HTTP client shares identical in-flight GETs.
|
|
128
|
+
*/
|
|
104
129
|
const fetchResolvedFeatures = useCallback(async () => {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
fetchInFlightRef.current = true;
|
|
130
|
+
const sequence = ++latestFetchSequenceRef.current;
|
|
131
|
+
const isLatest = () => mountedRef.current && sequence === latestFetchSequenceRef.current;
|
|
108
132
|
try {
|
|
109
|
-
logDebug('Fetching resolved features from backend');
|
|
133
|
+
logDebug('Fetching resolved features from backend', { organizationId: currentOrganizationId });
|
|
110
134
|
const httpClient = getManualCallsHttpClient();
|
|
111
|
-
const response = await httpClient.get(FEATURES_API_URL);
|
|
112
|
-
if (
|
|
135
|
+
const response = await httpClient.get(FEATURES_API_URL, currentOrganizationId ? { params: { organizationId: currentOrganizationId } } : undefined);
|
|
136
|
+
if (isLatest()) {
|
|
113
137
|
setResolvedFeaturesResponse(response);
|
|
138
|
+
setResolvedForOrganizationId(currentOrganizationId ?? null);
|
|
114
139
|
setError(null);
|
|
115
140
|
logDebug('Resolved features fetched', {
|
|
116
141
|
featureCount: response.features.length,
|
|
@@ -120,18 +145,17 @@ export function FeaturesProvider({ featureConfiguration, children }) {
|
|
|
120
145
|
}
|
|
121
146
|
}
|
|
122
147
|
catch (err) {
|
|
123
|
-
if (
|
|
148
|
+
if (isLatest()) {
|
|
124
149
|
setError(err instanceof Error ? err : new Error(err?.message ?? 'Failed to fetch features'));
|
|
125
150
|
logDebug('Failed to fetch resolved features', { error: err?.message });
|
|
126
151
|
}
|
|
127
152
|
}
|
|
128
153
|
finally {
|
|
129
|
-
if (
|
|
154
|
+
if (isLatest()) {
|
|
130
155
|
setIsLoading(false);
|
|
131
156
|
}
|
|
132
|
-
fetchInFlightRef.current = false;
|
|
133
157
|
}
|
|
134
|
-
}, []);
|
|
158
|
+
}, [currentOrganizationId]);
|
|
135
159
|
// ── Fetch when authenticated (and refetch on auth change) ──
|
|
136
160
|
useEffect(() => {
|
|
137
161
|
mountedRef.current = true;
|
|
@@ -234,6 +258,7 @@ export function FeaturesProvider({ featureConfiguration, children }) {
|
|
|
234
258
|
const contextValue = useMemo(() => ({
|
|
235
259
|
resolvedFeatures,
|
|
236
260
|
resolvedFeaturesResponse,
|
|
261
|
+
resolvedForOrganizationId,
|
|
237
262
|
featureDefinitions,
|
|
238
263
|
unavailabilityPolicy,
|
|
239
264
|
isFeatureEnabled,
|
|
@@ -247,6 +272,7 @@ export function FeaturesProvider({ featureConfiguration, children }) {
|
|
|
247
272
|
}), [
|
|
248
273
|
resolvedFeatures,
|
|
249
274
|
resolvedFeaturesResponse,
|
|
275
|
+
resolvedForOrganizationId,
|
|
250
276
|
featureDefinitions,
|
|
251
277
|
unavailabilityPolicy,
|
|
252
278
|
isFeatureEnabled,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FeaturesContext.js","sourceRoot":"","sources":["../../../../../src/core/features/FeaturesContext.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * FeaturesContext\n *\n * Central context for feature gating on the frontend.\n *\n * Responsibilities:\n * - Receives the merged FeatureConfiguration (core + custom) from app initialization\n * - Builds a definitions map for fast lookup\n * - Fetches resolved features from backend API: GET /api/v1/features/resolved\n * - Caches resolved features in context state\n * - Invalidates on WebSocket events (FEATURES_CHANGED, BILLING_STATUS_CHANGED, etc.)\n * - Exposes raw resolved features + definitions + unavailability policy\n *\n * Frontend limit checking is ADVISORY — backend gate is authoritative.\n * Stale usage data means the frontend might allow a click that the backend rejects\n * (which is acceptable — the error is caught and displayed).\n */\n\nimport React, { createContext, useContext, useEffect, useState, useCallback, useMemo, useRef } from 'react';\nimport {\n CoreResourceType,\n CoreWebSocketEvent,\n FEATURES_UNLIMITED,\n MAIN_API_BASE_PATH,\n type FeatureConfiguration,\n type FeatureDefinition,\n type ResolvedFeaturesResponse,\n type ResolvedFeaturesWithUsage,\n} from '@wildo-ai/saas-models';\nimport { useWebSocket } from '~wildo-frontend-lib/core/requests/websockets/useWebSocket';\nimport { EventBusContext } from '~wildo-frontend-lib/core/events/EventBusContext';\nimport { FrontendEvents } from '~wildo-frontend-lib/core/events/events.frontend.schemas';\nimport { useResourceReachability } from '~wildo-frontend-lib/core/resources/useResourceRegistry';\nimport { useAuthSession } from '~wildo-frontend-lib/core/security/useAuthSession';\nimport { LoggerFrontendService } from '~wildo-frontend-lib/core/monitoring/logger.frontend.service';\nimport { getManualCallsHttpClient } from '~wildo-frontend-lib/core/requests/wildo-http-client-manual-calls.frontend.service';\nimport { useAppScopeSafe } from '~wildo-frontend-lib/core/scope/useAppScope';\n\n// ================================\n// Logger\n// ================================\n\nconst featuresLogger: LoggerFrontendService = LoggerFrontendService.getLogger();\nconst logDebug: (message: string, context?: Record<string, unknown>) => void = featuresLogger.debugByType('FeaturesContext');\nfeaturesLogger.setDebugTypeLogging('FeaturesContext', false);\n\n// ================================\n// Constants\n// ================================\n\nconst FEATURES_API_URL = `${MAIN_API_BASE_PATH}/features/resolved`;\n\n/** WebSocket events that trigger a refetch of resolved features */\nconst INVALIDATION_EVENTS = [\n CoreWebSocketEvent.BILLING_STATUS_CHANGED,\n CoreWebSocketEvent.BILLING_SUBSCRIPTION_UPDATED,\n CoreWebSocketEvent.BILLING_ACCOUNT_CHANGED,\n CoreWebSocketEvent.BILLING_FEATURES_UPDATED,\n] as const;\n\n// ================================\n// Context Type\n// ================================\n\nexport interface FeaturesContextType {\n // ── Resolved features from backend ──\n /** Raw resolved features with usage data (from backend API) */\n resolvedFeatures: ResolvedFeaturesWithUsage;\n /** Full response including upgrade options */\n resolvedFeaturesResponse: ResolvedFeaturesResponse | null;\n\n // ── Feature definitions (from configuration) ──\n /** Feature definitions map (built from featureConfiguration.definitions) */\n featureDefinitions: Map<string, FeatureDefinition>;\n\n // ── Policy ──\n /** The unavailability policy (from featureConfiguration.unavailabilityPolicy) */\n unavailabilityPolicy: FeatureConfiguration['unavailabilityPolicy'];\n\n // ── Convenience accessors ──\n /** Check if a boolean feature is ENTITLED for the current scope (plan/profile). */\n isFeatureEnabled: (featureId: string) => boolean;\n /**\n * Check if the app OFFERS a feature for the current scope — entitled now, or\n * reachable via an upgrade/add-on. Plan-independent survival signal, distinct\n * from `isFeatureEnabled` (entitlement). See the impl for the two-axis rationale.\n */\n isFeatureOffered: (featureId: string) => boolean;\n /** Get a limit value (FEATURES_UNLIMITED = unlimited). Returns undefined if feature not found. */\n getLimit: (featureId: string) => number | undefined;\n /** Get current usage for a limit feature. undefined if no usage data. */\n getCurrentUsage: (featureId: string) => number | undefined;\n /** Get remaining capacity (limit - current). undefined if unlimited or no counting. */\n getRemainingCapacity: (featureId: string) => number | undefined;\n\n // ── State ──\n isLoading: boolean;\n error: Error | null;\n\n // ── Actions ──\n /** Force refetch of resolved features (e.g., after a mutation on a counted resource) */\n refetch: () => void;\n}\n\n// ── Default empty state ──\nconst EMPTY_RESOLVED: ResolvedFeaturesWithUsage = {\n features: [],\n limits: {},\n currentUsage: {},\n};\n\nexport const FeaturesContext: React.Context<FeaturesContextType | undefined> = createContext<FeaturesContextType | undefined>(undefined);\n\n// ================================\n// Provider\n// ================================\n\ninterface FeaturesProviderProps {\n /** Merged FeatureConfiguration (core + custom) — passed from app initialization */\n featureConfiguration: FeatureConfiguration;\n children: React.ReactNode;\n}\n\nexport function FeaturesProvider({ featureConfiguration, children }: FeaturesProviderProps): React.ReactElement {\n // ── State ──\n const [resolvedFeaturesResponse, setResolvedFeaturesResponse] = useState<ResolvedFeaturesResponse | null>(null);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [error, setError] = useState<Error | null>(null);\n\n // ── Refs for stable callbacks ──\n const fetchInFlightRef = useRef<boolean>(false);\n const mountedRef = useRef<boolean>(true);\n const debounceTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // ── Auth — features are user-scoped, only fetch when authenticated ──\n const { isAuthenticated } = useAuthSession();\n // Fetch only when this consumer can REACH the features route: configured-and-authenticated is half\n // the answer (#1069, the #268 rule). The resolved features are derived from the per-user ledger, so\n // a consumer whose registry excludes it — the application-creation workbench — has no route to ask.\n const featuresReachable = useResourceReachability(CoreResourceType.USER_FEATURES);\n const authenticated = isAuthenticated() && featuresReachable;\n const appScope = useAppScopeSafe();\n const currentOrganizationId = appScope?.currentOrganizationId ?? null;\n\n // ── WebSocket ──\n const { on } = useWebSocket();\n\n // ── Frontend event bus (preference changes) ──\n // Read from the context directly: `useEventBus().bus` is typed as the React context object, not the bus.\n const bus = useContext(EventBusContext);\n const errorRef = useRef<Error | null>(null);\n\n // ── Build definitions map from configuration ──\n const featureDefinitions = useMemo(() => {\n const map = new Map<string, FeatureDefinition>();\n for (const def of featureConfiguration.definitions) {\n map.set(def.identifier, def);\n }\n logDebug('Feature definitions map built', { count: map.size });\n return map;\n }, [featureConfiguration.definitions]);\n\n // ── Unavailability policy ──\n const unavailabilityPolicy = useMemo(\n () => featureConfiguration.unavailabilityPolicy,\n [featureConfiguration.unavailabilityPolicy],\n );\n\n // ── Derived resolved features ──\n const resolvedFeatures: ResolvedFeaturesWithUsage = useMemo(() => {\n if (!resolvedFeaturesResponse) return EMPTY_RESOLVED;\n return {\n features: resolvedFeaturesResponse.features,\n limits: resolvedFeaturesResponse.limits,\n currentUsage: resolvedFeaturesResponse.currentUsage,\n };\n }, [resolvedFeaturesResponse]);\n\n const clearResolvedFeatures = useCallback(() => {\n setResolvedFeaturesResponse(null);\n setError(null);\n setIsLoading(false);\n }, []);\n\n // ── Fetch resolved features from backend ──\n const fetchResolvedFeatures = useCallback(async () => {\n if (fetchInFlightRef.current) return;\n fetchInFlightRef.current = true;\n\n try {\n logDebug('Fetching resolved features from backend');\n const httpClient = getManualCallsHttpClient();\n const response = await httpClient.get<ResolvedFeaturesResponse>(FEATURES_API_URL);\n\n if (mountedRef.current) {\n setResolvedFeaturesResponse(response);\n setError(null);\n logDebug('Resolved features fetched', {\n featureCount: response.features.length,\n limitCount: Object.keys(response.limits).length,\n usageCount: Object.keys(response.currentUsage).length,\n });\n }\n } catch (err: any) {\n if (mountedRef.current) {\n setError(err instanceof Error ? err : new Error(err?.message ?? 'Failed to fetch features'));\n logDebug('Failed to fetch resolved features', { error: err?.message });\n }\n } finally {\n if (mountedRef.current) {\n setIsLoading(false);\n }\n fetchInFlightRef.current = false;\n }\n }, []);\n\n // ── Fetch when authenticated (and refetch on auth change) ──\n useEffect(() => {\n mountedRef.current = true;\n if (authenticated) {\n setIsLoading(true);\n fetchResolvedFeatures();\n } else {\n clearResolvedFeatures();\n }\n return () => {\n mountedRef.current = false;\n };\n }, [authenticated, currentOrganizationId, fetchResolvedFeatures, clearResolvedFeatures]);\n\n useEffect(() => {\n errorRef.current = error;\n }, [error]);\n\n // ── Retry a FAILED fetch when the person's preferences change (#534) ──\n // A declared service consent requirement refuses this read until the person grants it, so the fetch that ran at\n // sign-in can fail — and while the organization stays the same nothing else would retry it, leaving features\n // unresolved until a reload. A preferences change is how a consent decision reaches the rest of the application,\n // so it retries a failed fetch. Only a failed one: a theme or language change does not invalidate a good set.\n useEffect(() => {\n if (!authenticated) return;\n return bus.on(FrontendEvents.USER_PREFERENCES_CHANGED, () => {\n if (errorRef.current) fetchResolvedFeatures();\n });\n }, [authenticated, bus, fetchResolvedFeatures]);\n\n // ── WebSocket invalidation (debounced to coalesce rapid events) ──\n useEffect(() => {\n if (!authenticated) return;\n\n const unsubscribers: Array<() => void> = [];\n\n const debouncedRefetch = () => {\n if (debounceTimerRef.current) {\n clearTimeout(debounceTimerRef.current);\n }\n debounceTimerRef.current = setTimeout(() => {\n debounceTimerRef.current = null;\n fetchResolvedFeatures();\n }, 300);\n };\n\n for (const event of INVALIDATION_EVENTS) {\n const unsub = on(event, () => {\n logDebug('WebSocket invalidation event received, scheduling refetch', { event });\n debouncedRefetch();\n });\n unsubscribers.push(unsub);\n }\n\n return () => {\n if (debounceTimerRef.current) {\n clearTimeout(debounceTimerRef.current);\n }\n for (const unsub of unsubscribers) {\n unsub();\n }\n };\n }, [authenticated, on, fetchResolvedFeatures]);\n\n // ── Derived features set for O(1) lookups ──\n const resolvedFeaturesSet = useMemo(\n () => new Set(resolvedFeatures.features),\n [resolvedFeatures.features],\n );\n\n // ── Convenience accessors ──\n const isFeatureEnabled = useCallback(\n (featureId: string): boolean => {\n return resolvedFeaturesSet.has(featureId);\n },\n [resolvedFeaturesSet],\n );\n\n const isFeatureOffered = useCallback(\n (featureId: string): boolean => {\n // \"Offered\" = the app makes this feature available for the current scope,\n // INDEPENDENT of whether the current plan/profile currently ENTITLES it:\n // - entitled now (in `resolvedFeatures`), OR\n // - not entitled but reachable via an upgrade/add-on the backend surfaced\n // in `upgradeOptions`.\n // This is the plan-independent \"does this app offer feature X\" axis, distinct\n // from `isFeatureEnabled` (the entitlement axis). Consumers gate SURVIVAL\n // (should the surface exist at all) on `isFeatureOffered`, then render the\n // entitlement state via {@link FeatureGate} (content vs upgrade/add-on prompt).\n // Billing OFF → `upgradeOptions` is empty, so offered == entitled (no\n // \"offered-but-locked\" state exists without a plan to upgrade to). Billing ON\n // → `upgradeOptions` carries the sellable-but-not-yet-owned features.\n if (resolvedFeaturesSet.has(featureId)) return true;\n return Boolean(resolvedFeaturesResponse?.upgradeOptions?.[featureId]);\n },\n [resolvedFeaturesSet, resolvedFeaturesResponse],\n );\n\n const getLimit = useCallback(\n (featureId: string): number | undefined => {\n return resolvedFeatures.limits[featureId];\n },\n [resolvedFeatures.limits],\n );\n\n const getCurrentUsage = useCallback(\n (featureId: string): number | undefined => {\n return resolvedFeatures.currentUsage[featureId];\n },\n [resolvedFeatures.currentUsage],\n );\n\n const getRemainingCapacity = useCallback(\n (featureId: string): number | undefined => {\n const limit = resolvedFeatures.limits[featureId];\n if (limit === undefined) return undefined;\n if (limit === FEATURES_UNLIMITED) return undefined; // unlimited → no meaningful remaining\n const usage = resolvedFeatures.currentUsage[featureId] ?? 0;\n return Math.max(0, limit - usage);\n },\n [resolvedFeatures.limits, resolvedFeatures.currentUsage],\n );\n\n // ── Context value (memoized for stable reference) ──\n const contextValue: FeaturesContextType = useMemo(\n () => ({\n resolvedFeatures,\n resolvedFeaturesResponse,\n featureDefinitions,\n unavailabilityPolicy,\n isFeatureEnabled,\n isFeatureOffered,\n getLimit,\n getCurrentUsage,\n getRemainingCapacity,\n isLoading,\n error,\n refetch: fetchResolvedFeatures,\n }),\n [\n resolvedFeatures,\n resolvedFeaturesResponse,\n featureDefinitions,\n unavailabilityPolicy,\n isFeatureEnabled,\n isFeatureOffered,\n getLimit,\n getCurrentUsage,\n getRemainingCapacity,\n isLoading,\n error,\n fetchResolvedFeatures,\n ],\n );\n\n return (\n <FeaturesContext.Provider value={contextValue}>\n {children}\n </FeaturesContext.Provider>\n );\n}\n\n// Note: useFeatures hook is in a separate file (useFeatures.ts) for React Fast Refresh compatibility.\n"]}
|
|
1
|
+
{"version":3,"file":"FeaturesContext.js","sourceRoot":"","sources":["../../../../../src/core/features/FeaturesContext.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * FeaturesContext\n *\n * Central context for feature gating on the frontend.\n *\n * Responsibilities:\n * - Receives the merged FeatureConfiguration (core + custom) from app initialization\n * - Builds a definitions map for fast lookup\n * - Fetches resolved features from backend API: GET /api/v1/features/resolved, FOR the organization the\n * person is currently in (`?organizationId=`, see `fetchResolvedFeatures`)\n * - Caches resolved features in context state\n * - Invalidates on WebSocket events (FEATURES_CHANGED, BILLING_STATUS_CHANGED, etc.)\n * - Exposes raw resolved features + definitions + unavailability policy\n *\n * Frontend limit checking is ADVISORY — backend gate is authoritative.\n * Stale usage data means the frontend might allow a click that the backend rejects\n * (which is acceptable — the error is caught and displayed).\n */\n\nimport React, { createContext, useContext, useEffect, useState, useCallback, useMemo, useRef } from 'react';\nimport {\n CoreResourceType,\n CoreWebSocketEvent,\n FEATURES_UNLIMITED,\n MAIN_API_BASE_PATH,\n type FeatureConfiguration,\n type FeatureDefinition,\n type ResolvedFeaturesResponse,\n type ResolvedFeaturesWithUsage,\n} from '@wildo-ai/saas-models';\nimport { useWebSocket } from '~wildo-frontend-lib/core/requests/websockets/useWebSocket';\nimport { EventBusContext } from '~wildo-frontend-lib/core/events/EventBusContext';\nimport { FrontendEvents } from '~wildo-frontend-lib/core/events/events.frontend.schemas';\nimport { useResourceReachability } from '~wildo-frontend-lib/core/resources/useResourceRegistry';\nimport { useAuthSession } from '~wildo-frontend-lib/core/security/useAuthSession';\nimport { LoggerFrontendService } from '~wildo-frontend-lib/core/monitoring/logger.frontend.service';\nimport { getManualCallsHttpClient } from '~wildo-frontend-lib/core/requests/wildo-http-client-manual-calls.frontend.service';\nimport { useAppScopeSafe } from '~wildo-frontend-lib/core/scope/useAppScope';\n\n// ================================\n// Logger\n// ================================\n\nconst featuresLogger: LoggerFrontendService = LoggerFrontendService.getLogger();\nconst logDebug: (message: string, context?: Record<string, unknown>) => void = featuresLogger.debugByType('FeaturesContext');\nfeaturesLogger.setDebugTypeLogging('FeaturesContext', false);\n\n// ================================\n// Constants\n// ================================\n\nconst FEATURES_API_URL = `${MAIN_API_BASE_PATH}/features/resolved`;\n\n/** WebSocket events that trigger a refetch of resolved features */\nconst INVALIDATION_EVENTS = [\n CoreWebSocketEvent.BILLING_STATUS_CHANGED,\n CoreWebSocketEvent.BILLING_SUBSCRIPTION_UPDATED,\n CoreWebSocketEvent.BILLING_ACCOUNT_CHANGED,\n CoreWebSocketEvent.BILLING_FEATURES_UPDATED,\n] as const;\n\n// ================================\n// Context Type\n// ================================\n\nexport interface FeaturesContextType {\n // ── Resolved features from backend ──\n /** Raw resolved features with usage data (from backend API) */\n resolvedFeatures: ResolvedFeaturesWithUsage;\n /** Full response including upgrade options */\n resolvedFeaturesResponse: ResolvedFeaturesResponse | null;\n /**\n * The organization the CURRENT response was resolved for, `null` for one resolved at application scope or none yet\n * (#2464 review L1). The response is kept across an organization switch until the next one lands, so features do not\n * flicker; a surface showing a number ABOUT one organization (usage beside a limit) compares this, not the current\n * organization, or it shows the previous organization's numbers for one fetch.\n */\n resolvedForOrganizationId: string | null;\n\n // ── Feature definitions (from configuration) ──\n /** Feature definitions map (built from featureConfiguration.definitions) */\n featureDefinitions: Map<string, FeatureDefinition>;\n\n // ── Policy ──\n /** The unavailability policy (from featureConfiguration.unavailabilityPolicy) */\n unavailabilityPolicy: FeatureConfiguration['unavailabilityPolicy'];\n\n // ── Convenience accessors ──\n /** Check if a boolean feature is ENTITLED for the current scope (plan/profile). */\n isFeatureEnabled: (featureId: string) => boolean;\n /**\n * Check if the app OFFERS a feature for the current scope — entitled now, or\n * reachable via an upgrade/add-on. Plan-independent survival signal, distinct\n * from `isFeatureEnabled` (entitlement). See the impl for the two-axis rationale.\n */\n isFeatureOffered: (featureId: string) => boolean;\n /** Get a limit value (FEATURES_UNLIMITED = unlimited). Returns undefined if feature not found. */\n getLimit: (featureId: string) => number | undefined;\n /** Get current usage for a limit feature. undefined if no usage data. */\n getCurrentUsage: (featureId: string) => number | undefined;\n /** Get remaining capacity (limit - current). undefined if unlimited or no counting. */\n getRemainingCapacity: (featureId: string) => number | undefined;\n\n // ── State ──\n isLoading: boolean;\n error: Error | null;\n\n // ── Actions ──\n /** Force refetch of resolved features (e.g., after a mutation on a counted resource) */\n refetch: () => void;\n}\n\n// ── Default empty state ──\nconst EMPTY_RESOLVED: ResolvedFeaturesWithUsage = {\n features: [],\n limits: {},\n currentUsage: {},\n};\n\nexport const FeaturesContext: React.Context<FeaturesContextType | undefined> = createContext<FeaturesContextType | undefined>(undefined);\n\n// ================================\n// Provider\n// ================================\n\ninterface FeaturesProviderProps {\n /** Merged FeatureConfiguration (core + custom) — passed from app initialization */\n featureConfiguration: FeatureConfiguration;\n children: React.ReactNode;\n}\n\nexport function FeaturesProvider({ featureConfiguration, children }: FeaturesProviderProps): React.ReactElement {\n // ── State ──\n const [resolvedFeaturesResponse, setResolvedFeaturesResponse] = useState<ResolvedFeaturesResponse | null>(null);\n const [resolvedForOrganizationId, setResolvedForOrganizationId] = useState<string | null>(null);\n const [isLoading, setIsLoading] = useState<boolean>(true);\n const [error, setError] = useState<Error | null>(null);\n\n // ── Refs for stable callbacks ──\n // Sequence of the most recent fetch. Only the LATEST fetch may write state: an answer for an organization the\n // person has since left must never land over the answer for the one they are in (see `fetchResolvedFeatures`).\n const latestFetchSequenceRef = useRef<number>(0);\n const mountedRef = useRef<boolean>(true);\n const debounceTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // ── Auth — features are user-scoped, only fetch when authenticated ──\n const { isAuthenticated } = useAuthSession();\n // Fetch only when this consumer can REACH the features route: configured-and-authenticated is half\n // the answer (#1069, the #268 rule). The resolved features are derived from the per-user ledger, so\n // a consumer whose registry excludes it — the application-creation workbench — has no route to ask.\n const featuresReachable = useResourceReachability(CoreResourceType.USER_FEATURES);\n const authenticated = isAuthenticated() && featuresReachable;\n const appScope = useAppScopeSafe();\n const currentOrganizationId = appScope?.currentOrganizationId ?? null;\n\n // ── WebSocket ──\n const { on } = useWebSocket();\n\n // ── Frontend event bus (preference changes) ──\n // Read from the context directly: `useEventBus().bus` is typed as the React context object, not the bus.\n const bus = useContext(EventBusContext);\n const errorRef = useRef<Error | null>(null);\n\n // ── Build definitions map from configuration ──\n const featureDefinitions = useMemo(() => {\n const map = new Map<string, FeatureDefinition>();\n for (const def of featureConfiguration.definitions) {\n map.set(def.identifier, def);\n }\n logDebug('Feature definitions map built', { count: map.size });\n return map;\n }, [featureConfiguration.definitions]);\n\n // ── Unavailability policy ──\n const unavailabilityPolicy = useMemo(\n () => featureConfiguration.unavailabilityPolicy,\n [featureConfiguration.unavailabilityPolicy],\n );\n\n // ── Derived resolved features ──\n const resolvedFeatures: ResolvedFeaturesWithUsage = useMemo(() => {\n if (!resolvedFeaturesResponse) return EMPTY_RESOLVED;\n return {\n features: resolvedFeaturesResponse.features,\n limits: resolvedFeaturesResponse.limits,\n currentUsage: resolvedFeaturesResponse.currentUsage,\n };\n }, [resolvedFeaturesResponse]);\n\n const clearResolvedFeatures = useCallback(() => {\n // Supersede any fetch still in flight, so an answer for the session that just ended cannot land after it.\n latestFetchSequenceRef.current += 1;\n setResolvedFeaturesResponse(null);\n setResolvedForOrganizationId(null);\n setError(null);\n setIsLoading(false);\n }, []);\n\n // ── Fetch resolved features from backend ──\n /**\n * Ask the backend which features the person has IN THE ORGANIZATION THEY ARE IN (#2061).\n *\n * `/features/resolved` is a manual route: no organization in its URL, so the backend resolves one from the\n * `organizationId` query parameter, checked against the caller's memberships, and otherwise infers it ONLY\n * when the caller belongs to exactly one organization (`resolveManualControllerOrganizationId`). Before this\n * the request carried none, so a member of several organizations — an administrator, typically — was answered\n * for no organization at all: `[\"M2M_WEBHOOK_DELIVERY\"]` instead of a set holding `SINGLE_SIGN_ON`,\n * `DIRECTORY_PROVISIONING` and `SECURITY_EVENT_EXPORT`. The launcher's availability is derived from this set,\n * so the organization's SSO, SCIM and SIEM settings disappeared from its own settings rail.\n *\n * At application scope (no current organization) the parameter is omitted on purpose: that is a genuine\n * question about no organization, and the backend's single-membership inference is the right answer to it.\n *\n * The latest fetch wins, by sequence. The previous guard SKIPPED a fetch while another was in flight, so the\n * organization arriving shortly after sign-in — the common order — was dropped and the stale answer kept.\n * Identical concurrent requests are still one network call: the HTTP client shares identical in-flight GETs.\n */\n const fetchResolvedFeatures = useCallback(async () => {\n const sequence = ++latestFetchSequenceRef.current;\n const isLatest = (): boolean => mountedRef.current && sequence === latestFetchSequenceRef.current;\n\n try {\n logDebug('Fetching resolved features from backend', { organizationId: currentOrganizationId });\n const httpClient = getManualCallsHttpClient();\n const response = await httpClient.get<ResolvedFeaturesResponse>(\n FEATURES_API_URL,\n currentOrganizationId ? { params: { organizationId: currentOrganizationId } } : undefined,\n );\n\n if (isLatest()) {\n setResolvedFeaturesResponse(response);\n setResolvedForOrganizationId(currentOrganizationId ?? null);\n setError(null);\n logDebug('Resolved features fetched', {\n featureCount: response.features.length,\n limitCount: Object.keys(response.limits).length,\n usageCount: Object.keys(response.currentUsage).length,\n });\n }\n } catch (err: any) {\n if (isLatest()) {\n setError(err instanceof Error ? err : new Error(err?.message ?? 'Failed to fetch features'));\n logDebug('Failed to fetch resolved features', { error: err?.message });\n }\n } finally {\n if (isLatest()) {\n setIsLoading(false);\n }\n }\n }, [currentOrganizationId]);\n\n // ── Fetch when authenticated (and refetch on auth change) ──\n useEffect(() => {\n mountedRef.current = true;\n if (authenticated) {\n setIsLoading(true);\n fetchResolvedFeatures();\n } else {\n clearResolvedFeatures();\n }\n return () => {\n mountedRef.current = false;\n };\n }, [authenticated, currentOrganizationId, fetchResolvedFeatures, clearResolvedFeatures]);\n\n useEffect(() => {\n errorRef.current = error;\n }, [error]);\n\n // ── Retry a FAILED fetch when the person's preferences change (#534) ──\n // A declared service consent requirement refuses this read until the person grants it, so the fetch that ran at\n // sign-in can fail — and while the organization stays the same nothing else would retry it, leaving features\n // unresolved until a reload. A preferences change is how a consent decision reaches the rest of the application,\n // so it retries a failed fetch. Only a failed one: a theme or language change does not invalidate a good set.\n useEffect(() => {\n if (!authenticated) return;\n return bus.on(FrontendEvents.USER_PREFERENCES_CHANGED, () => {\n if (errorRef.current) fetchResolvedFeatures();\n });\n }, [authenticated, bus, fetchResolvedFeatures]);\n\n // ── WebSocket invalidation (debounced to coalesce rapid events) ──\n useEffect(() => {\n if (!authenticated) return;\n\n const unsubscribers: Array<() => void> = [];\n\n const debouncedRefetch = () => {\n if (debounceTimerRef.current) {\n clearTimeout(debounceTimerRef.current);\n }\n debounceTimerRef.current = setTimeout(() => {\n debounceTimerRef.current = null;\n fetchResolvedFeatures();\n }, 300);\n };\n\n for (const event of INVALIDATION_EVENTS) {\n const unsub = on(event, () => {\n logDebug('WebSocket invalidation event received, scheduling refetch', { event });\n debouncedRefetch();\n });\n unsubscribers.push(unsub);\n }\n\n return () => {\n if (debounceTimerRef.current) {\n clearTimeout(debounceTimerRef.current);\n }\n for (const unsub of unsubscribers) {\n unsub();\n }\n };\n }, [authenticated, on, fetchResolvedFeatures]);\n\n // ── Derived features set for O(1) lookups ──\n const resolvedFeaturesSet = useMemo(\n () => new Set(resolvedFeatures.features),\n [resolvedFeatures.features],\n );\n\n // ── Convenience accessors ──\n const isFeatureEnabled = useCallback(\n (featureId: string): boolean => {\n return resolvedFeaturesSet.has(featureId);\n },\n [resolvedFeaturesSet],\n );\n\n const isFeatureOffered = useCallback(\n (featureId: string): boolean => {\n // \"Offered\" = the app makes this feature available for the current scope,\n // INDEPENDENT of whether the current plan/profile currently ENTITLES it:\n // - entitled now (in `resolvedFeatures`), OR\n // - not entitled but reachable via an upgrade/add-on the backend surfaced\n // in `upgradeOptions`.\n // This is the plan-independent \"does this app offer feature X\" axis, distinct\n // from `isFeatureEnabled` (the entitlement axis). Consumers gate SURVIVAL\n // (should the surface exist at all) on `isFeatureOffered`, then render the\n // entitlement state via {@link FeatureGate} (content vs upgrade/add-on prompt).\n // Billing OFF → `upgradeOptions` is empty, so offered == entitled (no\n // \"offered-but-locked\" state exists without a plan to upgrade to). Billing ON\n // → `upgradeOptions` carries the sellable-but-not-yet-owned features.\n if (resolvedFeaturesSet.has(featureId)) return true;\n return Boolean(resolvedFeaturesResponse?.upgradeOptions?.[featureId]);\n },\n [resolvedFeaturesSet, resolvedFeaturesResponse],\n );\n\n const getLimit = useCallback(\n (featureId: string): number | undefined => {\n return resolvedFeatures.limits[featureId];\n },\n [resolvedFeatures.limits],\n );\n\n const getCurrentUsage = useCallback(\n (featureId: string): number | undefined => {\n return resolvedFeatures.currentUsage[featureId];\n },\n [resolvedFeatures.currentUsage],\n );\n\n const getRemainingCapacity = useCallback(\n (featureId: string): number | undefined => {\n const limit = resolvedFeatures.limits[featureId];\n if (limit === undefined) return undefined;\n if (limit === FEATURES_UNLIMITED) return undefined; // unlimited → no meaningful remaining\n const usage = resolvedFeatures.currentUsage[featureId] ?? 0;\n return Math.max(0, limit - usage);\n },\n [resolvedFeatures.limits, resolvedFeatures.currentUsage],\n );\n\n // ── Context value (memoized for stable reference) ──\n const contextValue: FeaturesContextType = useMemo(\n () => ({\n resolvedFeatures,\n resolvedFeaturesResponse,\n resolvedForOrganizationId,\n featureDefinitions,\n unavailabilityPolicy,\n isFeatureEnabled,\n isFeatureOffered,\n getLimit,\n getCurrentUsage,\n getRemainingCapacity,\n isLoading,\n error,\n refetch: fetchResolvedFeatures,\n }),\n [\n resolvedFeatures,\n resolvedFeaturesResponse,\n resolvedForOrganizationId,\n featureDefinitions,\n unavailabilityPolicy,\n isFeatureEnabled,\n isFeatureOffered,\n getLimit,\n getCurrentUsage,\n getRemainingCapacity,\n isLoading,\n error,\n fetchResolvedFeatures,\n ],\n );\n\n return (\n <FeaturesContext.Provider value={contextValue}>\n {children}\n </FeaturesContext.Provider>\n );\n}\n\n// Note: useFeatures hook is in a separate file (useFeatures.ts) for React Fast Refresh compatibility.\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOperationFeatureAvailability.d.ts","sourceRoot":"","sources":["../../../../../src/core/features/useOperationFeatureAvailability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAML,KAAK,sBAAsB,EAE3B,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,+DAA+D,CAAC;AAC7H,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AASpE,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAEpC;;;;;;;GAOG;AACH,MAAM,WAAW,yBAAyB;IACxC,gBAAgB,EAAE,sBAAsB,CAAC;IACzC,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAMD;;;GAGG;AACH,MAAM,WAAW,0CAA0C;IACzD,gBAAgB,EAAE;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IAC/G,wBAAwB,EAAE;QAAE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,YAAY,EAAE,oBAAoB,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9G,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACnD,oBAAoB,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,sBAAsB,CAAC,CAAC;IAC7E,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,mCAAmC,CACjD,SAAS,EAAE,uCAAuC,GAAG,IAAI,GAAG,SAAS,EACrE,GAAG,EAAE,0CAA0C,GAC9C,mBAAmB,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"useOperationFeatureAvailability.d.ts","sourceRoot":"","sources":["../../../../../src/core/features/useOperationFeatureAvailability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EAML,KAAK,sBAAsB,EAE3B,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,+DAA+D,CAAC;AAC7H,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AASpE,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAEpC;;;;;;;GAOG;AACH,MAAM,WAAW,yBAAyB;IACxC,gBAAgB,EAAE,sBAAsB,CAAC;IACzC,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAMD;;;GAGG;AACH,MAAM,WAAW,0CAA0C;IACzD,gBAAgB,EAAE;QAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IAC/G,wBAAwB,EAAE;QAAE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,YAAY,EAAE,oBAAoB,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9G,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACnD,oBAAoB,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,sBAAsB,CAAC,CAAC;IAC7E,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,wBAAgB,mCAAmC,CACjD,SAAS,EAAE,uCAAuC,GAAG,IAAI,GAAG,SAAS,EACrE,GAAG,EAAE,0CAA0C,GAC9C,mBAAmB,GAAG,SAAS,CA4IjC;AAMD;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,uCAAuC,GAAG,IAAI,GAAG,SAAS,GACpE,mBAAmB,GAAG,SAAS,CA8CjC"}
|
|
@@ -40,6 +40,10 @@ export function resolveOperationFeatureAvailability(operation, ctx) {
|
|
|
40
40
|
const normalized = Array.isArray(raw)
|
|
41
41
|
? { features: raw, mode: 'OR' }
|
|
42
42
|
: raw;
|
|
43
|
+
// A conditional requirement depends on the request body, which does not exist until the form is submitted, so it
|
|
44
|
+
// never makes an action unavailable here: the backend gate decides when the request arrives (`appliesWhen`).
|
|
45
|
+
if (normalized.appliesWhen)
|
|
46
|
+
return undefined;
|
|
43
47
|
const { resolvedFeatures, resolvedFeaturesResponse, featureDefinitions, unavailabilityPolicy, userRoles, billingEnabled, } = ctx;
|
|
44
48
|
const resolvedSet = new Set(resolvedFeatures.features);
|
|
45
49
|
// ── Phase 1: Boolean features ──
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOperationFeatureAvailability.js","sourceRoot":"","sources":["../../../../../src/core/features/useOperationFeatureAvailability.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * useOperationFeatureAvailability Hook\n * \n * Resolves feature availability for an operation's `requiredFeatures` config.\n * Evaluates both boolean features (OR/AND mode) and limit checks.\n * \n * For boolean features:\n * - OR mode: any single enabled feature is enough\n * - AND mode: all features must be enabled\n * \n * For limit features:\n * - CREATE operations: checks currentUsage + 1 <= limit\n * - CREATE_MANY: checks currentUsage < limit (conservative — backend does exact check)\n * - Other operations: increment = 0, so limits are not checked\n * \n * Returns the \"worst\" availability result (boolean failure takes precedence over limit failure).\n */\n\nimport { useMemo } from 'react';\nimport {\n FEATURES_UNLIMITED,\n FeatureValueType,\n FeatureUnavailabilityBehavior,\n FeatureUnavailabilityReason,\n CoreResourceOperation,\n type RequiredFeaturesConfig,\n type RequiredFeaturesFullConfig,\n type FeatureUpgradeOption,\n type FeatureDefinition,\n} from '@wildo-ai/saas-models';\nimport type { FrontendResourceConfiguration_Operation } from '~wildo-frontend-lib/core/resources/resources.frontend.schemas';\nimport { useFeatures } from './useFeatures';\nimport { useUserOrgs } from '~wildo-frontend-lib/core/security/useUserOrgs';\nimport type { FeatureAvailability } from './useFeatureAvailability';\nimport { useBillingSafe } from '~wildo-frontend-lib/core/billing/useBilling';\nimport { useAppScopeSafe } from '~wildo-frontend-lib/core/scope/useAppScope';\nimport {\n buildFeaturePolicyRoles,\n resolveFeatureUnavailabilityBehavior,\n} from './feature-unavailability.frontend.utils';\n\n// Re-export the FeatureAvailability type for convenience\nexport type { FeatureAvailability };\n\n/**\n * Minimal operation-like shape accepted by resolveOperationFeatureAvailability.\n * Used to wrap view-level requiredFeatures or standalone feature checks\n * without needing the full FrontendResourceConfiguration_Operation type.\n * \n * Cast to FrontendResourceConfiguration_Operation when calling resolveOperationFeatureAvailability:\n * `viewCheckable as RequiredFeaturesCheckable as FrontendResourceConfiguration_Operation`\n */\nexport interface RequiredFeaturesCheckable {\n requiredFeatures: RequiredFeaturesConfig;\n operationIdentifier: string;\n}\n\n// ================================\n// Pure Resolution Function (for batch + hook use)\n// ================================\n\n/**\n * Parameters for the pure resolution function.\n * Contains all the context needed to resolve feature availability without hooks.\n */\nexport interface ResolveOperationFeatureAvailabilityContext {\n resolvedFeatures: { features: string[]; limits: Record<string, number>; currentUsage: Record<string, number> };\n resolvedFeaturesResponse: { upgradeOptions: Record<string, { availableVia: FeatureUpgradeOption[] }> } | null;\n featureDefinitions: Map<string, FeatureDefinition>;\n unavailabilityPolicy: ReturnType<typeof useFeatures>['unavailabilityPolicy'];\n userRoles: string[];\n billingEnabled: boolean;\n}\n\n/**\n * Pure function to resolve feature availability for an operation's requiredFeatures.\n * Can be called from hooks (via useMemo) or from batch evaluation effects.\n * \n * @param operation - The frontend resource operation configuration\n * @param ctx - Resolution context (resolved features, definitions, policy, roles)\n * @returns FeatureAvailability — undefined if no requiredFeatures on the operation\n */\nexport function resolveOperationFeatureAvailability(\n operation: FrontendResourceConfiguration_Operation | null | undefined,\n ctx: ResolveOperationFeatureAvailabilityContext,\n): FeatureAvailability | undefined {\n if (!operation) return undefined;\n\n // Normalize requiredFeatures (may be string[] or RequiredFeaturesFullConfig)\n const raw = operation.requiredFeatures;\n if (!raw) return undefined;\n\n const normalized: RequiredFeaturesFullConfig = Array.isArray(raw)\n ? { features: raw, mode: 'OR' }\n : raw;\n\n const {\n resolvedFeatures,\n resolvedFeaturesResponse,\n featureDefinitions,\n unavailabilityPolicy,\n userRoles,\n billingEnabled,\n } = ctx;\n const resolvedSet = new Set(resolvedFeatures.features);\n\n // ── Phase 1: Boolean features ──\n if (normalized.features && normalized.features.length > 0) {\n const mode = normalized.mode ?? 'OR';\n\n if (mode === 'OR') {\n // OR: at least one boolean feature must be enabled\n const booleanFeatures = normalized.features.filter(fId => {\n const def = featureDefinitions.get(fId);\n return !def || def.valueType === FeatureValueType.BOOLEAN;\n });\n\n const anyEnabled = booleanFeatures.some(fId => resolvedSet.has(fId));\n if (booleanFeatures.length > 0 && !anyEnabled) {\n const missingFeatures = booleanFeatures.filter(fId => !resolvedSet.has(fId));\n const firstMissing = featureDefinitions.get(missingFeatures[0]);\n const reason = FeatureUnavailabilityReason.FEATURE_NOT_ENABLED;\n const { behavior } = resolveFeatureUnavailabilityBehavior({\n reason,\n featureDef: firstMissing,\n policy: unavailabilityPolicy,\n userRoles,\n billingEnabled,\n });\n const upgradeOptions = resolvedFeaturesResponse?.upgradeOptions?.[missingFeatures[0]]?.availableVia;\n\n return {\n isAvailable: false,\n reason,\n behavior,\n missingFeatures,\n upgradeOptions,\n suggestedProductRef: firstMissing?.unavailability?.suggestedProductRef,\n };\n }\n } else {\n // AND: all boolean features must be enabled\n for (const featureId of normalized.features) {\n const def = featureDefinitions.get(featureId);\n if (def && def.valueType !== FeatureValueType.BOOLEAN) continue;\n\n if (!resolvedSet.has(featureId)) {\n const reason = FeatureUnavailabilityReason.FEATURE_NOT_ENABLED;\n const { behavior } = resolveFeatureUnavailabilityBehavior({\n reason,\n featureDef: def,\n policy: unavailabilityPolicy,\n userRoles,\n billingEnabled,\n });\n const upgradeOptions = resolvedFeaturesResponse?.upgradeOptions?.[featureId]?.availableVia;\n\n return {\n isAvailable: false,\n reason,\n behavior,\n missingFeatures: [featureId],\n upgradeOptions,\n suggestedProductRef: def?.unavailability?.suggestedProductRef,\n };\n }\n }\n }\n }\n\n // ── Phase 2: Limit checks ──\n if (normalized.limitChecks && normalized.limitChecks.length > 0) {\n const operationId = operation.operationIdentifier as string;\n\n for (const check of normalized.limitChecks) {\n const limit = resolvedFeatures.limits[check.featureId];\n\n // No limit or unlimited → pass\n if (limit === undefined || limit === FEATURES_UNLIMITED) continue;\n\n const currentUsage = resolvedFeatures.currentUsage[check.featureId] ?? 0;\n\n // Infer increment (frontend-side: same logic as backend, conservative for CREATE_MANY)\n let increment: number;\n if (check.increment !== undefined) {\n increment = check.increment;\n } else if (operationId === CoreResourceOperation.CREATE) {\n increment = 1;\n } else if (operationId === CoreResourceOperation.CREATE_MANY) {\n increment = 1; // Conservative — backend does exact check\n } else {\n increment = 0;\n }\n\n if (increment === 0) continue;\n\n if (currentUsage + increment > limit) {\n const reason = FeatureUnavailabilityReason.LIMIT_EXCEEDED;\n const featureDef = featureDefinitions.get(check.featureId);\n const { behavior } = resolveFeatureUnavailabilityBehavior({\n reason,\n featureDef,\n policy: unavailabilityPolicy,\n userRoles,\n billingEnabled,\n });\n const upgradeOptions = resolvedFeaturesResponse?.upgradeOptions?.[check.featureId]?.availableVia;\n\n return {\n isAvailable: false,\n reason,\n behavior,\n limitInfo: { featureId: check.featureId, current: currentUsage, limit },\n upgradeOptions,\n suggestedProductRef: featureDef?.unavailability?.suggestedProductRef,\n };\n }\n }\n }\n\n // All checks passed\n return { isAvailable: true, behavior: FeatureUnavailabilityBehavior.DISABLE };\n}\n\n// ================================\n// Hook (convenience wrapper over pure function)\n// ================================\n\n/**\n * Resolve feature availability for an operation's requiredFeatures.\n * \n * @param operation - The frontend resource operation configuration\n * @returns FeatureAvailability — undefined if no requiredFeatures on the operation\n */\nexport function useOperationFeatureAvailability(\n operation: FrontendResourceConfiguration_Operation | null | undefined,\n): FeatureAvailability | undefined {\n const {\n resolvedFeatures,\n resolvedFeaturesResponse,\n featureDefinitions,\n unavailabilityPolicy,\n isLoading,\n } = useFeatures();\n\n const { permissions } = useUserOrgs();\n const billing = useBillingSafe();\n const appScope = useAppScopeSafe();\n\n return useMemo((): FeatureAvailability | undefined => {\n // While loading, treat as available (optimistic — prevents flash of locked UI)\n if (isLoading) {\n return operation?.requiredFeatures\n ? { isAvailable: true, behavior: FeatureUnavailabilityBehavior.DISABLE }\n : undefined;\n }\n\n // Build user roles for policy resolution\n const userRoles = buildFeaturePolicyRoles(\n permissions,\n appScope?.currentOrganizationId ?? null,\n );\n\n return resolveOperationFeatureAvailability(operation, {\n resolvedFeatures,\n resolvedFeaturesResponse,\n featureDefinitions,\n unavailabilityPolicy,\n userRoles,\n billingEnabled: billing?.isEnabled ?? false,\n });\n }, [\n operation,\n isLoading,\n resolvedFeatures,\n resolvedFeaturesResponse,\n featureDefinitions,\n unavailabilityPolicy,\n permissions,\n appScope?.currentOrganizationId,\n billing?.isEnabled,\n ]);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"useOperationFeatureAvailability.js","sourceRoot":"","sources":["../../../../../src/core/features/useOperationFeatureAvailability.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * useOperationFeatureAvailability Hook\n * \n * Resolves feature availability for an operation's `requiredFeatures` config.\n * Evaluates both boolean features (OR/AND mode) and limit checks.\n * \n * For boolean features:\n * - OR mode: any single enabled feature is enough\n * - AND mode: all features must be enabled\n * \n * For limit features:\n * - CREATE operations: checks currentUsage + 1 <= limit\n * - CREATE_MANY: checks currentUsage < limit (conservative — backend does exact check)\n * - Other operations: increment = 0, so limits are not checked\n * \n * Returns the \"worst\" availability result (boolean failure takes precedence over limit failure).\n */\n\nimport { useMemo } from 'react';\nimport {\n FEATURES_UNLIMITED,\n FeatureValueType,\n FeatureUnavailabilityBehavior,\n FeatureUnavailabilityReason,\n CoreResourceOperation,\n type RequiredFeaturesConfig,\n type RequiredFeaturesFullConfig,\n type FeatureUpgradeOption,\n type FeatureDefinition,\n} from '@wildo-ai/saas-models';\nimport type { FrontendResourceConfiguration_Operation } from '~wildo-frontend-lib/core/resources/resources.frontend.schemas';\nimport { useFeatures } from './useFeatures';\nimport { useUserOrgs } from '~wildo-frontend-lib/core/security/useUserOrgs';\nimport type { FeatureAvailability } from './useFeatureAvailability';\nimport { useBillingSafe } from '~wildo-frontend-lib/core/billing/useBilling';\nimport { useAppScopeSafe } from '~wildo-frontend-lib/core/scope/useAppScope';\nimport {\n buildFeaturePolicyRoles,\n resolveFeatureUnavailabilityBehavior,\n} from './feature-unavailability.frontend.utils';\n\n// Re-export the FeatureAvailability type for convenience\nexport type { FeatureAvailability };\n\n/**\n * Minimal operation-like shape accepted by resolveOperationFeatureAvailability.\n * Used to wrap view-level requiredFeatures or standalone feature checks\n * without needing the full FrontendResourceConfiguration_Operation type.\n * \n * Cast to FrontendResourceConfiguration_Operation when calling resolveOperationFeatureAvailability:\n * `viewCheckable as RequiredFeaturesCheckable as FrontendResourceConfiguration_Operation`\n */\nexport interface RequiredFeaturesCheckable {\n requiredFeatures: RequiredFeaturesConfig;\n operationIdentifier: string;\n}\n\n// ================================\n// Pure Resolution Function (for batch + hook use)\n// ================================\n\n/**\n * Parameters for the pure resolution function.\n * Contains all the context needed to resolve feature availability without hooks.\n */\nexport interface ResolveOperationFeatureAvailabilityContext {\n resolvedFeatures: { features: string[]; limits: Record<string, number>; currentUsage: Record<string, number> };\n resolvedFeaturesResponse: { upgradeOptions: Record<string, { availableVia: FeatureUpgradeOption[] }> } | null;\n featureDefinitions: Map<string, FeatureDefinition>;\n unavailabilityPolicy: ReturnType<typeof useFeatures>['unavailabilityPolicy'];\n userRoles: string[];\n billingEnabled: boolean;\n}\n\n/**\n * Pure function to resolve feature availability for an operation's requiredFeatures.\n * Can be called from hooks (via useMemo) or from batch evaluation effects.\n * \n * @param operation - The frontend resource operation configuration\n * @param ctx - Resolution context (resolved features, definitions, policy, roles)\n * @returns FeatureAvailability — undefined if no requiredFeatures on the operation\n */\nexport function resolveOperationFeatureAvailability(\n operation: FrontendResourceConfiguration_Operation | null | undefined,\n ctx: ResolveOperationFeatureAvailabilityContext,\n): FeatureAvailability | undefined {\n if (!operation) return undefined;\n\n // Normalize requiredFeatures (may be string[] or RequiredFeaturesFullConfig)\n const raw = operation.requiredFeatures;\n if (!raw) return undefined;\n\n const normalized: RequiredFeaturesFullConfig = Array.isArray(raw)\n ? { features: raw, mode: 'OR' }\n : raw;\n // A conditional requirement depends on the request body, which does not exist until the form is submitted, so it\n // never makes an action unavailable here: the backend gate decides when the request arrives (`appliesWhen`).\n if (normalized.appliesWhen) return undefined;\n\n const {\n resolvedFeatures,\n resolvedFeaturesResponse,\n featureDefinitions,\n unavailabilityPolicy,\n userRoles,\n billingEnabled,\n } = ctx;\n const resolvedSet = new Set(resolvedFeatures.features);\n\n // ── Phase 1: Boolean features ──\n if (normalized.features && normalized.features.length > 0) {\n const mode = normalized.mode ?? 'OR';\n\n if (mode === 'OR') {\n // OR: at least one boolean feature must be enabled\n const booleanFeatures = normalized.features.filter(fId => {\n const def = featureDefinitions.get(fId);\n return !def || def.valueType === FeatureValueType.BOOLEAN;\n });\n\n const anyEnabled = booleanFeatures.some(fId => resolvedSet.has(fId));\n if (booleanFeatures.length > 0 && !anyEnabled) {\n const missingFeatures = booleanFeatures.filter(fId => !resolvedSet.has(fId));\n const firstMissing = featureDefinitions.get(missingFeatures[0]);\n const reason = FeatureUnavailabilityReason.FEATURE_NOT_ENABLED;\n const { behavior } = resolveFeatureUnavailabilityBehavior({\n reason,\n featureDef: firstMissing,\n policy: unavailabilityPolicy,\n userRoles,\n billingEnabled,\n });\n const upgradeOptions = resolvedFeaturesResponse?.upgradeOptions?.[missingFeatures[0]]?.availableVia;\n\n return {\n isAvailable: false,\n reason,\n behavior,\n missingFeatures,\n upgradeOptions,\n suggestedProductRef: firstMissing?.unavailability?.suggestedProductRef,\n };\n }\n } else {\n // AND: all boolean features must be enabled\n for (const featureId of normalized.features) {\n const def = featureDefinitions.get(featureId);\n if (def && def.valueType !== FeatureValueType.BOOLEAN) continue;\n\n if (!resolvedSet.has(featureId)) {\n const reason = FeatureUnavailabilityReason.FEATURE_NOT_ENABLED;\n const { behavior } = resolveFeatureUnavailabilityBehavior({\n reason,\n featureDef: def,\n policy: unavailabilityPolicy,\n userRoles,\n billingEnabled,\n });\n const upgradeOptions = resolvedFeaturesResponse?.upgradeOptions?.[featureId]?.availableVia;\n\n return {\n isAvailable: false,\n reason,\n behavior,\n missingFeatures: [featureId],\n upgradeOptions,\n suggestedProductRef: def?.unavailability?.suggestedProductRef,\n };\n }\n }\n }\n }\n\n // ── Phase 2: Limit checks ──\n if (normalized.limitChecks && normalized.limitChecks.length > 0) {\n const operationId = operation.operationIdentifier as string;\n\n for (const check of normalized.limitChecks) {\n const limit = resolvedFeatures.limits[check.featureId];\n\n // No limit or unlimited → pass\n if (limit === undefined || limit === FEATURES_UNLIMITED) continue;\n\n const currentUsage = resolvedFeatures.currentUsage[check.featureId] ?? 0;\n\n // Infer increment (frontend-side: same logic as backend, conservative for CREATE_MANY)\n let increment: number;\n if (check.increment !== undefined) {\n increment = check.increment;\n } else if (operationId === CoreResourceOperation.CREATE) {\n increment = 1;\n } else if (operationId === CoreResourceOperation.CREATE_MANY) {\n increment = 1; // Conservative — backend does exact check\n } else {\n increment = 0;\n }\n\n if (increment === 0) continue;\n\n if (currentUsage + increment > limit) {\n const reason = FeatureUnavailabilityReason.LIMIT_EXCEEDED;\n const featureDef = featureDefinitions.get(check.featureId);\n const { behavior } = resolveFeatureUnavailabilityBehavior({\n reason,\n featureDef,\n policy: unavailabilityPolicy,\n userRoles,\n billingEnabled,\n });\n const upgradeOptions = resolvedFeaturesResponse?.upgradeOptions?.[check.featureId]?.availableVia;\n\n return {\n isAvailable: false,\n reason,\n behavior,\n limitInfo: { featureId: check.featureId, current: currentUsage, limit },\n upgradeOptions,\n suggestedProductRef: featureDef?.unavailability?.suggestedProductRef,\n };\n }\n }\n }\n\n // All checks passed\n return { isAvailable: true, behavior: FeatureUnavailabilityBehavior.DISABLE };\n}\n\n// ================================\n// Hook (convenience wrapper over pure function)\n// ================================\n\n/**\n * Resolve feature availability for an operation's requiredFeatures.\n * \n * @param operation - The frontend resource operation configuration\n * @returns FeatureAvailability — undefined if no requiredFeatures on the operation\n */\nexport function useOperationFeatureAvailability(\n operation: FrontendResourceConfiguration_Operation | null | undefined,\n): FeatureAvailability | undefined {\n const {\n resolvedFeatures,\n resolvedFeaturesResponse,\n featureDefinitions,\n unavailabilityPolicy,\n isLoading,\n } = useFeatures();\n\n const { permissions } = useUserOrgs();\n const billing = useBillingSafe();\n const appScope = useAppScopeSafe();\n\n return useMemo((): FeatureAvailability | undefined => {\n // While loading, treat as available (optimistic — prevents flash of locked UI)\n if (isLoading) {\n return operation?.requiredFeatures\n ? { isAvailable: true, behavior: FeatureUnavailabilityBehavior.DISABLE }\n : undefined;\n }\n\n // Build user roles for policy resolution\n const userRoles = buildFeaturePolicyRoles(\n permissions,\n appScope?.currentOrganizationId ?? null,\n );\n\n return resolveOperationFeatureAvailability(operation, {\n resolvedFeatures,\n resolvedFeaturesResponse,\n featureDefinitions,\n unavailabilityPolicy,\n userRoles,\n billingEnabled: billing?.isEnabled ?? false,\n });\n }, [\n operation,\n isLoading,\n resolvedFeatures,\n resolvedFeaturesResponse,\n featureDefinitions,\n unavailabilityPolicy,\n permissions,\n appScope?.currentOrganizationId,\n billing?.isEnabled,\n ]);\n}\n"]}
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
import React, { ReactNode } from 'react';
|
|
2
|
-
import { FlowActorSystem_FrontendInfo, type FlowsActors_AutonomousAgent_FrontendInfo, type FlowsActors_ConversationHistoryResponse, type WS_FlowsActorsApprovalModificationRefusal, type HumanDecision_RouteKind, type WorkUnitRef } from '@wildo-ai/saas-models';
|
|
2
|
+
import { FlowActorSystem_FrontendInfo, type FlowsActors_AutonomousAgent_FrontendInfo, type FlowsActors_ChatAgent_FrontendInfo, type FlowsActors_ConversationHistoryResponse, type WS_FlowsActorsApprovalModificationRefusal, type WS_FlowsActorsTurnUsage, FlowsActors_Status, type FlowsActors_MessageContentType, type HumanDecision_RouteKind, type HumanDecision_Presentation, type HumanDecision_Request, type HumanDecision_AnswerValue, type WorkUnitRef, type ResourceOperationRiskLevel } from '@wildo-ai/saas-models';
|
|
3
3
|
import type { SerializableZodSchema } from '@wildo-ai/zod-decorators';
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* How a turn stands in THIS CLIENT — its view of a turn, which is not the server's run status.
|
|
6
|
+
*
|
|
7
|
+
* Kept distinct on purpose (#2524): the client knows states the server never holds — STARTING (the start is sent and
|
|
8
|
+
* not yet acknowledged), and an ERROR it detects itself when the socket drops — and the server knows states the
|
|
9
|
+
* client never shows (READY, ABORTED). The WIRE speaks the server's vocabulary (`FlowsActors_Status` on
|
|
10
|
+
* `FLOWS_ACTORS_COMPLETED`), and {@link turnStatusFromServer} is the ONE place that reads it into this one.
|
|
6
11
|
*/
|
|
7
12
|
export declare enum FlowsActorsExecutionStatus {
|
|
8
13
|
IDLE = "idle",
|
|
@@ -10,8 +15,12 @@ export declare enum FlowsActorsExecutionStatus {
|
|
|
10
15
|
RUNNING = "running",
|
|
11
16
|
AWAITING_APPROVAL = "awaiting_approval",
|
|
12
17
|
COMPLETED = "completed",
|
|
18
|
+
/** The person stopped the turn (#2524). Not an error: nothing failed, and the turn's thread continues. */
|
|
19
|
+
CANCELLED = "cancelled",
|
|
13
20
|
ERROR = "error"
|
|
14
21
|
}
|
|
22
|
+
/** Read a server run status into the client's turn status — the one mapping (#2524). */
|
|
23
|
+
export declare function turnStatusFromServer(status: FlowsActors_Status): FlowsActorsExecutionStatus;
|
|
15
24
|
/**
|
|
16
25
|
* Active Execution State
|
|
17
26
|
*/
|
|
@@ -19,10 +28,9 @@ export interface FlowsActorsExecution {
|
|
|
19
28
|
executionId: string;
|
|
20
29
|
systemRef: string;
|
|
21
30
|
status: FlowsActorsExecutionStatus;
|
|
22
|
-
progress?: number;
|
|
23
|
-
currentStep?: string;
|
|
24
31
|
messages: Array<{
|
|
25
|
-
|
|
32
|
+
/** The message vocabulary's VALUE (`FlowsActors_MessageContentType`), the wire's `messageType`. */
|
|
33
|
+
type: `${FlowsActors_MessageContentType}`;
|
|
26
34
|
content: string;
|
|
27
35
|
data?: Record<string, unknown>;
|
|
28
36
|
timestamp: Date;
|
|
@@ -35,20 +43,19 @@ export interface FlowsActorsExecution {
|
|
|
35
43
|
messageId?: string;
|
|
36
44
|
}>;
|
|
37
45
|
/**
|
|
38
|
-
* The decision a paused turn is waiting on
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* `WS_FlowsActorsApprovalRequestPayload`, a payload no code has ever emitted. What the server
|
|
42
|
-
* actually announces is `WS_FlowsActorsApprovalAnnouncementData`, carried in the `data` bag of a
|
|
43
|
-
* PROGRESS message — tool name, tool arguments, timing, and the isolation axis (#528). Typing
|
|
44
|
-
* them as required would let a surface render a risk claim nothing declared.
|
|
46
|
+
* The decision a paused turn is waiting on, read from `WS_FlowsActorsApprovalAnnouncementData` — carried in the `data`
|
|
47
|
+
* bag of a PROGRESS message: tool name, tool arguments, timing, the isolation axis (#528), and the risk the call's
|
|
48
|
+
* approval gate declares (#2526).
|
|
45
49
|
*/
|
|
46
50
|
pendingApproval?: {
|
|
47
51
|
approvalId: string;
|
|
48
52
|
actionDescription: string;
|
|
49
|
-
|
|
53
|
+
/**
|
|
54
|
+
* The risk the call's approval gate DECLARES (`humanApproval.riskLevel`), as the decision's inbox card carries it
|
|
55
|
+
* (#2526). Absent when the gate declares none; a surface then shows no risk claim, because nothing declared one.
|
|
56
|
+
*/
|
|
57
|
+
riskLevel?: ResourceOperationRiskLevel;
|
|
50
58
|
expiresAt?: Date;
|
|
51
|
-
requiredRoles?: string[];
|
|
52
59
|
/** The tool call being gated, and its arguments — the structured thing being approved. */
|
|
53
60
|
toolName?: string;
|
|
54
61
|
toolArgs?: Record<string, unknown>;
|
|
@@ -69,6 +76,13 @@ export interface FlowsActorsExecution {
|
|
|
69
76
|
modificationRefusal?: WS_FlowsActorsApprovalModificationRefusal;
|
|
70
77
|
/** The arguments the approver submitted in that refused edit, so the editor reopens on them (#587). */
|
|
71
78
|
rejectedToolArgs?: Record<string, unknown>;
|
|
79
|
+
/**
|
|
80
|
+
* What the server built for the person to read (#2903): the arguments as strings it already projected, which the card
|
|
81
|
+
* renders verbatim. Absent on a turn paused before decisions were routed.
|
|
82
|
+
*/
|
|
83
|
+
presentation?: HumanDecision_Presentation;
|
|
84
|
+
/** The presentation's id, echoed on the answer: the server refuses an answer that does not name what it was given on. */
|
|
85
|
+
presentationId?: string;
|
|
72
86
|
requestedAt?: Date;
|
|
73
87
|
/**
|
|
74
88
|
* The decision's one id (#1594), ECHOED back on the answer. The server addresses the decision by
|
|
@@ -91,6 +105,11 @@ export interface FlowsActorsExecution {
|
|
|
91
105
|
* screen, and the card says the reason was not one the application offers. Cleared by the next answer.
|
|
92
106
|
*/
|
|
93
107
|
reasonCodeRefused?: boolean;
|
|
108
|
+
/**
|
|
109
|
+
* The QUESTION, when the paused call is the agent asking its person (#2720): its questions, its two answers and the
|
|
110
|
+
* form they are asked through. Answered with `answerQuestion`, never approved.
|
|
111
|
+
*/
|
|
112
|
+
question?: HumanDecision_Request;
|
|
94
113
|
};
|
|
95
114
|
/** Set when the last error is recoverable (UI can offer a retry action) */
|
|
96
115
|
recoverable?: boolean;
|
|
@@ -106,8 +125,9 @@ export interface FlowsActorsExecution {
|
|
|
106
125
|
approval: NonNullable<FlowsActorsExecution['pendingApproval']>;
|
|
107
126
|
submittedToolArgs?: Record<string, unknown>;
|
|
108
127
|
};
|
|
109
|
-
result?: Record<string, unknown>;
|
|
110
128
|
duration?: number;
|
|
129
|
+
/** The tokens the turn spent — present only for a person who may read model cost (#2524). */
|
|
130
|
+
usage?: WS_FlowsActorsTurnUsage;
|
|
111
131
|
errorCode?: string;
|
|
112
132
|
}
|
|
113
133
|
/**
|
|
@@ -123,15 +143,26 @@ export interface FlowsActorsContextType {
|
|
|
123
143
|
*/
|
|
124
144
|
autonomousAgents: FlowsActors_AutonomousAgent_FrontendInfo[];
|
|
125
145
|
/**
|
|
126
|
-
*
|
|
146
|
+
* The chat agents the application declares (#2665), in declaration order — the closed set an organization's chat
|
|
147
|
+
* setting may name. Empty until the first fetch settles, and when the application declares none.
|
|
148
|
+
*/
|
|
149
|
+
chatAgents: FlowsActors_ChatAgent_FrontendInfo[];
|
|
150
|
+
/**
|
|
151
|
+
* The chat connections an organization may choose an agent for (#2665): the application's providers enabled here
|
|
152
|
+
* with a chat endpoint (`slack`, `microsoft-teams-bot`). Empty until the first fetch settles, and when there is none.
|
|
153
|
+
*/
|
|
154
|
+
chatConnectionRefs: string[];
|
|
155
|
+
/**
|
|
156
|
+
* Ask for the agent declarations — {@link autonomousAgents}, {@link chatAgents} and {@link chatConnectionRefs} — to be
|
|
157
|
+
* loaded, whatever else this application renders.
|
|
127
158
|
*
|
|
128
159
|
* The provider bootstraps `/flows-actors/frontend-info` only when the application configures a flows/actors
|
|
129
|
-
* VIEW (pinned: an application with no chat surface makes no such request).
|
|
130
|
-
*
|
|
131
|
-
* this instead. It fetches once per sign-in, and does nothing when a fetch already ran or
|
|
132
|
-
* (signed out, no backend endpoint, no http client). Idempotent, so call it from an effect.
|
|
160
|
+
* VIEW (pinned: an application with no chat surface makes no such request). Neither an autonomous agent nor a chat
|
|
161
|
+
* agent needs a view, so a surface that needs the declarations (the OAuth client binding form, #1812; the chat
|
|
162
|
+
* settings form, #2665) calls this instead. It fetches once per sign-in, and does nothing when a fetch already ran or
|
|
163
|
+
* cannot run yet (signed out, no backend endpoint, no http client). Idempotent, so call it from an effect.
|
|
133
164
|
*/
|
|
134
|
-
|
|
165
|
+
requestAgentDeclarations: () => void;
|
|
135
166
|
/** Loading state */
|
|
136
167
|
isLoading: boolean;
|
|
137
168
|
/** Error state */
|
|
@@ -147,8 +178,14 @@ export interface FlowsActorsContextType {
|
|
|
147
178
|
* so the model calls it makes are attributed to that case. Read when the thread OPENS; a later turn keeps the
|
|
148
179
|
* thread's case. The server admits it only if the caller can read that row.
|
|
149
180
|
*/
|
|
150
|
-
startExecution: (systemRef: string, initialInput?: Record<string, unknown>, existingExecutionId?: string, extraContextResourceIdentifiers?: Record<string, string>,
|
|
181
|
+
startExecution: (systemRef: string, initialInput?: Record<string, unknown>, existingExecutionId?: string, extraContextResourceIdentifiers?: Record<string, string>,
|
|
182
|
+
/**
|
|
183
|
+
* `messageId`: the id the person's message is stored under (#2525 review N1). A page drawing the message before the
|
|
184
|
+
* record holds it mints one, and recognises the stored message by it.
|
|
185
|
+
*/
|
|
186
|
+
options?: {
|
|
151
187
|
caseRef?: WorkUnitRef;
|
|
188
|
+
messageId?: string;
|
|
152
189
|
}) => string | null;
|
|
153
190
|
/** Respond to an approval request (fire-and-forget via WebSocket) */
|
|
154
191
|
/**
|
|
@@ -158,6 +195,21 @@ export interface FlowsActorsContextType {
|
|
|
158
195
|
*/
|
|
159
196
|
/** `reasonCode` is one of the approval's `reasonCodes` (#1921), given when the approver changes or rejects the call. */
|
|
160
197
|
respondToApproval: (executionId: string, approvalId: string, approved: boolean, comment?: string, modifiedToolArgs?: Record<string, unknown>, reasonCode?: string) => void;
|
|
198
|
+
/**
|
|
199
|
+
* Answer the paused turn's QUESTION (#2720): the option chosen and, when it sends answers, one value per question as
|
|
200
|
+
* its JSON (what `HumanDecisionForm` reads). The server checks the values with the question's own form and refuses
|
|
201
|
+
* through `FLOWS_ACTORS_ERROR` with the question left pending.
|
|
202
|
+
*/
|
|
203
|
+
answerQuestion: (executionId: string, optionRef: string, values: readonly {
|
|
204
|
+
ref: string;
|
|
205
|
+
value: HumanDecision_AnswerValue;
|
|
206
|
+
}[], comment?: string) => void;
|
|
207
|
+
/**
|
|
208
|
+
* Stop the person's own running turn (#2524). The server ends it CANCELLED, keeping what it had produced, and the
|
|
209
|
+
* turn settles on `FLOWS_ACTORS_COMPLETED` like any other — nothing is settled here, so a stop that races the turn's
|
|
210
|
+
* own end cannot leave the two disagreeing.
|
|
211
|
+
*/
|
|
212
|
+
cancelExecution: (executionId: string) => void;
|
|
161
213
|
/** Remove a completed/errored execution from state */
|
|
162
214
|
clearExecution: (executionId: string) => void;
|
|
163
215
|
/** Get execution by ID (reads from ref; consume `executions` to re-render on changes) */
|
|
@@ -167,18 +219,23 @@ export interface FlowsActorsContextType {
|
|
|
167
219
|
/** Refresh systems from backend */
|
|
168
220
|
refreshSystems: () => Promise<void>;
|
|
169
221
|
/**
|
|
170
|
-
*
|
|
171
|
-
*
|
|
172
|
-
*
|
|
173
|
-
*
|
|
174
|
-
*
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
*
|
|
178
|
-
*
|
|
179
|
-
*
|
|
222
|
+
* The caller's OWN persisted threads for a system, server-authoritative (the executions resource, USER_SELF-scoped to
|
|
223
|
+
* the caller): what repopulates the discussion list and the transcripts on a fresh page load. With
|
|
224
|
+
* `contextResourceIdentifiers`, only the threads opened in that context — the same identifiers passed to
|
|
225
|
+
* `startExecution`, canonicalised the same way — which is how a surface hosting one system for several subjects keeps
|
|
226
|
+
* them apart.
|
|
227
|
+
*
|
|
228
|
+
* Reads a PAGE (#2528): the newest threads, or with `before` (the oldest `createdAt` a host already holds) the ones
|
|
229
|
+
* before it, inclusive — so a host keeps each `executionId` once. `hasOlder` says whether another page remains.
|
|
230
|
+
*
|
|
231
|
+
* Resolves an empty page when there are none, or when the backend has no flows-actors history surface (feature
|
|
232
|
+
* absent), and `undefined` when the read FAILED (#2525 review M4). The two must not look alike: a host re-reads after
|
|
233
|
+
* every turn, and treating a failure as "no threads" emptied its discussion list and transcript — under the very
|
|
234
|
+
* outage that had just ended the turn. Keep the last good list on `undefined`.
|
|
180
235
|
*/
|
|
181
|
-
fetchConversationHistory: (systemRef: string, contextResourceIdentifiers?: Record<string, string
|
|
236
|
+
fetchConversationHistory: (systemRef: string, contextResourceIdentifiers?: Record<string, string>, page?: {
|
|
237
|
+
readonly before?: string;
|
|
238
|
+
}) => Promise<FlowsActors_ConversationHistoryResponse | undefined>;
|
|
182
239
|
/**
|
|
183
240
|
* Delete ONE of the caller's own persisted conversations (a discussion). Runs
|
|
184
241
|
* under the caller's auth, so the executions resource's USER_SELF owner filter
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlowsActorsContext.d.ts","sourceRoot":"","sources":["../../../../../src/core/flows-actors/FlowsActorsContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAA2B,SAAS,EAA2C,MAAM,OAAO,CAAC;AAC3G,OAAO,EACL,4BAA4B,EAE5B,KAAK,wCAAwC,
|
|
1
|
+
{"version":3,"file":"FlowsActorsContext.d.ts","sourceRoot":"","sources":["../../../../../src/core/flows-actors/FlowsActorsContext.tsx"],"names":[],"mappings":"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"}
|