@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
|
@@ -31,7 +31,11 @@ export declare enum RouteOrganizationAccess {
|
|
|
31
31
|
* context from the previous account). The route renders as it would without this check.
|
|
32
32
|
*/
|
|
33
33
|
UNDECIDABLE = "UNDECIDABLE",
|
|
34
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* The loaded user context carries an ACTIVE membership in the addressed organization. No request is made. Given as
|
|
36
|
+
* soon as the token subject's context has loaded, before the restore concludes (#2247), because the session
|
|
37
|
+
* follows this organization and must do so before the restore commits the stored one.
|
|
38
|
+
*/
|
|
35
39
|
ACTIVE_MEMBERSHIP = "ACTIVE_MEMBERSHIP",
|
|
36
40
|
/** No active membership is known, and the server is being asked. The page must not load meanwhile. */
|
|
37
41
|
VERIFYING = "VERIFYING",
|
|
@@ -56,9 +60,9 @@ export declare enum RouteOrganizationAccess {
|
|
|
56
60
|
export interface RouteOrganizationMembershipFacts {
|
|
57
61
|
organizationId?: string | null;
|
|
58
62
|
status?: OrganizationMemberStatus | string | null;
|
|
59
|
-
/** Present on a
|
|
60
|
-
|
|
61
|
-
|
|
63
|
+
/** Present on a representative membership (#1597). */
|
|
64
|
+
organizationRelationshipId?: string | null;
|
|
65
|
+
representingOrganizationId?: string | null;
|
|
62
66
|
}
|
|
63
67
|
/**
|
|
64
68
|
* True when the memberships carry an ACTIVE membership in `organizationId`.
|
|
@@ -67,7 +71,7 @@ export interface RouteOrganizationMembershipFacts {
|
|
|
67
71
|
* treating it as a pass would let exactly the refused reads through. Such a membership falls through to
|
|
68
72
|
* the server probe instead, which answers correctly either way.
|
|
69
73
|
*
|
|
70
|
-
* A
|
|
74
|
+
* A REPRESENTATIVE membership never counts (#1597, review 6): its status is a mirror of the relationship, which
|
|
71
75
|
* the server re-checks on every request — a suspended relationship, or one past its term, still shows an ACTIVE row
|
|
72
76
|
* here. It falls through to the server probe like any other membership the client cannot vouch for.
|
|
73
77
|
*/
|
|
@@ -79,4 +83,170 @@ export declare function hasActiveMembershipInOrganization(memberships: ReadonlyA
|
|
|
79
83
|
* operation: if they disagreed, the probe could admit an organization the session cannot load.
|
|
80
84
|
*/
|
|
81
85
|
export declare function findDefaultApiReadOperation(resourceConfiguration: AnyFrontendResourceConfiguration | undefined): FrontendResourceConfiguration_Operation | undefined;
|
|
86
|
+
/**
|
|
87
|
+
* Whether the session's current organization follows the organization the route names (#2247).
|
|
88
|
+
*
|
|
89
|
+
* ## The decision: the route is the authority, and the session follows it
|
|
90
|
+
*
|
|
91
|
+
* Workspace products that name the tenant in the URL (GitHub organizations, Linear workspaces, Vercel teams,
|
|
92
|
+
* Slack workspaces) all answer the same way: opening a link into another workspace switches to it. The URL is
|
|
93
|
+
* the page the person asked for, and the session's "current" workspace is the one they are looking at. Here
|
|
94
|
+
* the two used to disagree. The session kept whatever organization it had settled on (the stored one, else the
|
|
95
|
+
* first membership), and only the organization switcher moved it. On `/organizations/A/…` with B current, every
|
|
96
|
+
* request that did not name its own `organizationId` went to B, and every reader of the current organization
|
|
97
|
+
* (feature-policy roles, resolved features, billing, the settings hub, guidance, the single-operation enabled
|
|
98
|
+
* check) judged A's page with B's answers. #2198 and #1461 were two such pages, each fixed at its own site.
|
|
99
|
+
*
|
|
100
|
+
* So the current organization FOLLOWS the route: when the route names an organization the session can be IN,
|
|
101
|
+
* `AppLayout_AuthenticatedRoute` commits it as current (and the stored value follows, so a new session started
|
|
102
|
+
* on a page that names no organization begins in the one the person was last in, as those products do). Every
|
|
103
|
+
* reader keeps reading the one source, `AppScope.currentOrganizationId`, and agrees with the page.
|
|
104
|
+
*
|
|
105
|
+
* "Can be IN" means the person holds standing in the organization: an ACTIVE membership this frontend vouches for
|
|
106
|
+
* (`ACTIVE_MEMBERSHIP`), or an organization the server ADMITTED that is the session's own — loaded as one of its
|
|
107
|
+
* organizations, or one the backend's access profile confers entries in. The loaded case is a representative (#1597)
|
|
108
|
+
* in a granting organization: this frontend never vouches for that membership (its status mirrors a relationship only
|
|
109
|
+
* the server re-checks), so the route asks the server, while the switcher offers the organization all the same. The
|
|
110
|
+
* conferred case is a membership past the user context's cap (#2275): the context embeds only the newest 20
|
|
111
|
+
* memberships, so the 21st is neither vouched for nor loaded, while the access profile, which the backend builds from
|
|
112
|
+
* every membership, carries its roles. The session loads such an organization when it follows it
|
|
113
|
+
* (`UserOrgsContext.followRouteOrganization`), so the switcher shows the organization the person is in.
|
|
114
|
+
*
|
|
115
|
+
* ## What it does NOT follow, on purpose
|
|
116
|
+
*
|
|
117
|
+
* - **An organization the session cannot be in** (`VERIFYING`, `REFUSED`, `INCONCLUSIVE`, `UNDECIDABLE`, and an
|
|
118
|
+
* `ADMITTED` organization the session neither loaded nor holds access-profile entries in). A link to an organization the account is not a member
|
|
119
|
+
* of never switches the session: `REFUSED` is already answered by leaving the route with a notice. A platform
|
|
120
|
+
* operator's `ADMITTED` crossing has no membership here, so no roles, and its stored value would not survive a
|
|
121
|
+
* reload. Such pages address their organization through their own identifiers, and the ambient readers stay on
|
|
122
|
+
* the session's organization. Without an access profile (its read failed) a membership past the context's cap
|
|
123
|
+
* is in this position too: nothing the client holds says the person has standing there, so it fails closed.
|
|
124
|
+
* - **An arrival already settled.** Once the session has been in the route's organization (already, or by
|
|
125
|
+
* following it), a move away is the person's own: the switcher resets navigation and takes them home, and the
|
|
126
|
+
* route must not pull the session back in the meantime. A route is followed at most once per arrival; leaving
|
|
127
|
+
* it, or arriving at another organization's route, makes the next arrival followable again.
|
|
128
|
+
* - **A route with no organization** (`NOT_ADDRESSED`, application-scope pages): the session's own choice stands.
|
|
129
|
+
*
|
|
130
|
+
* ## Rejected alternatives
|
|
131
|
+
*
|
|
132
|
+
* - **Fix each reader at its own site** (what #2198 and #1461 did): reading the addressed organization locally is
|
|
133
|
+
* still correct where a surface knows it, but it leaves every reader that does not — and every request built
|
|
134
|
+
* without an explicit `organizationId` — on the wrong tenant. Ten readers fixed one by one is ten chances to
|
|
135
|
+
* miss the eleventh.
|
|
136
|
+
* - **Derive the current organization from the URL inside AppScope** instead of committing it: AppScope sits above
|
|
137
|
+
* the routes (the data router has one `/*` route, so no params are visible there) and above `UserOrgsContext`
|
|
138
|
+
* (so no membership is visible there either). Parsing the pathname there would duplicate the route table and
|
|
139
|
+
* could not apply the membership check that keeps a foreign link from switching the session.
|
|
140
|
+
* - **Leave the session alone and make the page refuse**: that treats a correct deep link as an error.
|
|
141
|
+
*
|
|
142
|
+
* ## In-session navigation: the zone entries are held too (#2276)
|
|
143
|
+
*
|
|
144
|
+
* The outlet gate covers every path that renders a route from its URL: a deep link, a reload, sign-in's redirect,
|
|
145
|
+
* and back/forward to a URL no zone holds (the back/forward reconciler clears the zones and the outlet remounts).
|
|
146
|
+
* In session, though, page content is rendered from the navigation zone stacks, and the controller emits a zone
|
|
147
|
+
* entry BEFORE it writes the URL (`navigation-commit.ts`); the router's location then commits in a transition. So a
|
|
148
|
+
* link into another organization's page mounted that page while every route-derived value still named the previous
|
|
149
|
+
* organization: its effects ran before the layout's follow effect, and its requests without their own
|
|
150
|
+
* `organizationId`, and every reader of the current organization, answered for the organization the page does not
|
|
151
|
+
* show. That is why the hold is ALSO applied per zone entry, by {@link decideZoneEntryOrganizationHold}, from the
|
|
152
|
+
* organization the entry itself addresses, which is known the moment it is pushed.
|
|
153
|
+
*
|
|
154
|
+
* And a followed change does not reset the navigation (that would undo the link), so entries of the previous
|
|
155
|
+
* organization left in other zones, an overlay or a backstack would be judged by the new organization's roles.
|
|
156
|
+
* `useRouteOrganizationFollow` therefore emits `NAVIGATION_ORGANIZATION_FOLLOWED` in the same effect that commits the
|
|
157
|
+
* organization, and `NavigationProvider` drops every entry addressing another organization in that same render. Not
|
|
158
|
+
* on `PRIMARY_SCOPE_CHANGED`: AppScope announces that from an effect one commit later, and an overlay (which no hold
|
|
159
|
+
* covers, see below) would render once under the new organization in between.
|
|
160
|
+
*
|
|
161
|
+
* Rejected: making the controller follow the organization at its commit. It would make the controller a second
|
|
162
|
+
* authority beside the route (and decide before the access verdict), and a raw router navigation or a
|
|
163
|
+
* back/forward POP would still need the route path. Holding the entry until the route has decided keeps one
|
|
164
|
+
* decision, this one.
|
|
165
|
+
*/
|
|
166
|
+
export declare enum RouteOrganizationFollow {
|
|
167
|
+
/** The route names no organization. The session's own current organization stands. */
|
|
168
|
+
NOT_ADDRESSED = "NOT_ADDRESSED",
|
|
169
|
+
/** The session's current organization already is the route's. Nothing to do. */
|
|
170
|
+
IN_STEP = "IN_STEP",
|
|
171
|
+
/**
|
|
172
|
+
* The route names an organization the session can be in, and the session is elsewhere. It is
|
|
173
|
+
* being made current; the route's content must wait, so its reads do not start in the previous organization.
|
|
174
|
+
*/
|
|
175
|
+
FOLLOWING = "FOLLOWING",
|
|
176
|
+
/** The route names an organization the session does not follow (see the decision above). The route renders as it would. */
|
|
177
|
+
NOT_FOLLOWED = "NOT_FOLLOWED"
|
|
178
|
+
}
|
|
179
|
+
export interface RouteOrganizationFollowFacts {
|
|
180
|
+
/** The organization the route names, if any. */
|
|
181
|
+
routeOrganizationId: string | null | undefined;
|
|
182
|
+
/** The route's access verdict, from `useRouteOrganizationAccess`. */
|
|
183
|
+
access: RouteOrganizationAccess;
|
|
184
|
+
/**
|
|
185
|
+
* Whether the session has loaded the route's organization as one of its own (`UserOrgsContext.organizations`,
|
|
186
|
+
* what the switcher offers). Decides only the `ADMITTED` case; see the decision above.
|
|
187
|
+
*/
|
|
188
|
+
routeOrganizationLoaded: boolean;
|
|
189
|
+
/**
|
|
190
|
+
* Whether the backend's access profile confers entries in the route's organization (`accessProfileConfersOrganization`):
|
|
191
|
+
* a membership the user context's capped projection does not carry (#2275). Decides only the `ADMITTED` case.
|
|
192
|
+
*/
|
|
193
|
+
routeOrganizationConferred: boolean;
|
|
194
|
+
/** The session's current organization (`AppScope.currentOrganizationId`). */
|
|
195
|
+
currentOrganizationId: string | null | undefined;
|
|
196
|
+
/**
|
|
197
|
+
* True once this arrival at the route is SETTLED: the session was in the route's organization, already or by
|
|
198
|
+
* following it. A settled arrival is never followed again, so a later move away is the person's own.
|
|
199
|
+
*/
|
|
200
|
+
arrivalSettled: boolean;
|
|
201
|
+
}
|
|
202
|
+
/** The one decision for {@link RouteOrganizationFollow}; pure, so it is pinned without a router. */
|
|
203
|
+
export declare function decideRouteOrganizationFollow(facts: RouteOrganizationFollowFacts): RouteOrganizationFollow;
|
|
204
|
+
/**
|
|
205
|
+
* What the authenticated layout has decided about the route's organization, published to the navigation zones so
|
|
206
|
+
* they can hold their entries with the same decision the outlet is held by (#2276). `null` where no authenticated
|
|
207
|
+
* layout is mounted: nothing is held there.
|
|
208
|
+
*/
|
|
209
|
+
export interface RouteOrganizationDecision {
|
|
210
|
+
/** The organization the COMMITTED route names (`useRouteOrganizationId`), or `null` when it names none. */
|
|
211
|
+
routeOrganizationId: string | null;
|
|
212
|
+
/**
|
|
213
|
+
* True while the layout withholds the route's content: the server is being asked (`VERIFYING`), the session is
|
|
214
|
+
* being moved into the route's organization (`FOLLOWING`), or the organization was refused (`REFUSED`).
|
|
215
|
+
*/
|
|
216
|
+
routeContentHeld: boolean;
|
|
217
|
+
}
|
|
218
|
+
export interface ZoneEntryOrganizationHoldFacts {
|
|
219
|
+
/** The organization the entry's content addresses (`navigationContentOrganizationId`), or `null`. */
|
|
220
|
+
entryOrganizationId: string | null;
|
|
221
|
+
/**
|
|
222
|
+
* Whether the entry is what the browser URL names, or is about to name: a structural-zone entry carrying a
|
|
223
|
+
* `urlPath` that is not a hosted pane (whose address rides on the host's URL). Only such an entry makes the route
|
|
224
|
+
* change, so only such an entry can be waiting for the route's decision.
|
|
225
|
+
*/
|
|
226
|
+
entryOwnsBrowserUrl: boolean;
|
|
227
|
+
/** The session's current organization (`AppScope.currentOrganizationId`). */
|
|
228
|
+
currentOrganizationId: string | null | undefined;
|
|
229
|
+
/** The layout's decision, or `null` outside an authenticated layout. */
|
|
230
|
+
routeDecision: RouteOrganizationDecision | null;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Whether a zone entry must be held (render a placeholder, mount nothing) until the session is in the organization it
|
|
234
|
+
* addresses (#2276). The entry's content mounts only once nothing it reads can answer for another organization.
|
|
235
|
+
*
|
|
236
|
+
* - **The entry addresses the route's organization**: it is held exactly when the layout holds the route's content.
|
|
237
|
+
* That is the same decision as the outlet's, so a route that is being followed or verified holds its page however
|
|
238
|
+
* the page was rendered, and a route the session deliberately does not follow (a platform operator's crossing, an
|
|
239
|
+
* arrival already settled, an inconclusive probe) renders its page as the outlet would.
|
|
240
|
+
* - **The entry addresses an organization the route does not name, and the session is not in it either**: it is
|
|
241
|
+
* held. The entry LEADS the route: the controller pushed it and wrote the URL, but the router's location has not
|
|
242
|
+
* committed yet, so the route still names the previous organization. Rendering it would read the session's
|
|
243
|
+
* organization for a page of another one. (An entry LEFT BEHIND by a follow fits the same case, and is held too;
|
|
244
|
+
* the follow drops such entries in its own commit, so this is a guard rather than the mechanism.)
|
|
245
|
+
* - **Anything else renders**: an entry addressing no organization, or the session's own; an entry that does not own
|
|
246
|
+
* the URL (an overlay, a hosted pane), which the route never follows and must therefore never wait for; and every
|
|
247
|
+
* entry outside an authenticated layout.
|
|
248
|
+
*
|
|
249
|
+
* Pure, so it is pinned without a router.
|
|
250
|
+
*/
|
|
251
|
+
export declare function decideZoneEntryOrganizationHold(facts: ZoneEntryOrganizationHoldFacts): boolean;
|
|
82
252
|
//# sourceMappingURL=route-organization-access.frontend.utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-organization-access.frontend.utils.d.ts","sourceRoot":"","sources":["../../../../../src/core/security/route-organization-access.frontend.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,wBAAwB,EAGzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,gCAAgC,EAChC,uCAAuC,EACxC,MAAM,+DAA+D,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,oBAAY,uBAAuB;IACjC,qFAAqF;IACrF,aAAa,kBAAkB;IAC/B;;;;OAIG;IACH,WAAW,gBAAgB;IAC3B
|
|
1
|
+
{"version":3,"file":"route-organization-access.frontend.utils.d.ts","sourceRoot":"","sources":["../../../../../src/core/security/route-organization-access.frontend.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,wBAAwB,EAGzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,gCAAgC,EAChC,uCAAuC,EACxC,MAAM,+DAA+D,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,oBAAY,uBAAuB;IACjC,qFAAqF;IACrF,aAAa,kBAAkB;IAC/B;;;;OAIG;IACH,WAAW,gBAAgB;IAC3B;;;;OAIG;IACH,iBAAiB,sBAAsB;IACvC,sGAAsG;IACtG,SAAS,cAAc;IACvB,uIAAuI;IACvI,QAAQ,aAAa;IACrB;;;;;;OAMG;IACH,OAAO,YAAY;IACnB;;;;OAIG;IACH,YAAY,iBAAiB;CAC9B;AAED,+HAA+H;AAC/H,MAAM,WAAW,gCAAgC;IAC/C,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,MAAM,CAAC,EAAE,wBAAwB,GAAG,MAAM,GAAG,IAAI,CAAC;IAClD,sDAAsD;IACtD,0BAA0B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,0BAA0B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iCAAiC,CAC/C,WAAW,EAAE,aAAa,CAAC,gCAAgC,CAAC,GAAG,IAAI,GAAG,SAAS,EAC/E,cAAc,EAAE,MAAM,GACrB,OAAO,CAMT;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,qBAAqB,EAAE,gCAAgC,GAAG,SAAS,GAClE,uCAAuC,GAAG,SAAS,CAUrD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+EG;AACH,oBAAY,uBAAuB;IACjC,sFAAsF;IACtF,aAAa,kBAAkB;IAC/B,gFAAgF;IAChF,OAAO,YAAY;IACnB;;;OAGG;IACH,SAAS,cAAc;IACvB,2HAA2H;IAC3H,YAAY,iBAAiB;CAC9B;AAED,MAAM,WAAW,4BAA4B;IAC3C,gDAAgD;IAChD,mBAAmB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC/C,qEAAqE;IACrE,MAAM,EAAE,uBAAuB,CAAC;IAChC;;;OAGG;IACH,uBAAuB,EAAE,OAAO,CAAC;IACjC;;;OAGG;IACH,0BAA0B,EAAE,OAAO,CAAC;IACpC,6EAA6E;IAC7E,qBAAqB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACjD;;;OAGG;IACH,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,oGAAoG;AACpG,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,4BAA4B,GAAG,uBAAuB,CAa1G;AAED;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,2GAA2G;IAC3G,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC;;;OAGG;IACH,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,8BAA8B;IAC7C,qGAAqG;IACrG,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC;;;;OAIG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B,6EAA6E;IAC7E,qBAAqB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACjD,wEAAwE;IACxE,aAAa,EAAE,yBAAyB,GAAG,IAAI,CAAC;CACjD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAS9F"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CoreResourceOperation, OrganizationMemberStatus,
|
|
1
|
+
import { CoreResourceOperation, OrganizationMemberStatus, isRelationshipMembership, ResourceOperationVariantType, } from '@wildo-ai/saas-models';
|
|
2
2
|
/**
|
|
3
3
|
* Whether the signed-in account may open the organization a route addresses (`/organizations/:id/…`).
|
|
4
4
|
*
|
|
@@ -31,7 +31,11 @@ export var RouteOrganizationAccess;
|
|
|
31
31
|
* context from the previous account). The route renders as it would without this check.
|
|
32
32
|
*/
|
|
33
33
|
RouteOrganizationAccess["UNDECIDABLE"] = "UNDECIDABLE";
|
|
34
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* The loaded user context carries an ACTIVE membership in the addressed organization. No request is made. Given as
|
|
36
|
+
* soon as the token subject's context has loaded, before the restore concludes (#2247), because the session
|
|
37
|
+
* follows this organization and must do so before the restore commits the stored one.
|
|
38
|
+
*/
|
|
35
39
|
RouteOrganizationAccess["ACTIVE_MEMBERSHIP"] = "ACTIVE_MEMBERSHIP";
|
|
36
40
|
/** No active membership is known, and the server is being asked. The page must not load meanwhile. */
|
|
37
41
|
RouteOrganizationAccess["VERIFYING"] = "VERIFYING";
|
|
@@ -59,14 +63,14 @@ export var RouteOrganizationAccess;
|
|
|
59
63
|
* treating it as a pass would let exactly the refused reads through. Such a membership falls through to
|
|
60
64
|
* the server probe instead, which answers correctly either way.
|
|
61
65
|
*
|
|
62
|
-
* A
|
|
66
|
+
* A REPRESENTATIVE membership never counts (#1597, review 6): its status is a mirror of the relationship, which
|
|
63
67
|
* the server re-checks on every request — a suspended relationship, or one past its term, still shows an ACTIVE row
|
|
64
68
|
* here. It falls through to the server probe like any other membership the client cannot vouch for.
|
|
65
69
|
*/
|
|
66
70
|
export function hasActiveMembershipInOrganization(memberships, organizationId) {
|
|
67
71
|
return (memberships ?? []).some((membership) => membership.organizationId === organizationId
|
|
68
72
|
&& membership.status === OrganizationMemberStatus.ACTIVE
|
|
69
|
-
&& !
|
|
73
|
+
&& !isRelationshipMembership(membership));
|
|
70
74
|
}
|
|
71
75
|
/**
|
|
72
76
|
* The default, non-bulk API READ of a resource — the operation that fetches one row by its identifier.
|
|
@@ -78,7 +82,144 @@ export function findDefaultApiReadOperation(resourceConfiguration) {
|
|
|
78
82
|
return resourceConfiguration?.operations?.find((operation) => operation.operationIdentifier === CoreResourceOperation.READ
|
|
79
83
|
&& operation.isOperationDefault === true
|
|
80
84
|
&& operation.isBulkOperation !== true
|
|
81
|
-
&& (operation.variantType === ResourceOperationVariantType.API_CALL
|
|
82
|
-
|
|
85
|
+
&& (operation.variantType === ResourceOperationVariantType.API_CALL));
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Whether the session's current organization follows the organization the route names (#2247).
|
|
89
|
+
*
|
|
90
|
+
* ## The decision: the route is the authority, and the session follows it
|
|
91
|
+
*
|
|
92
|
+
* Workspace products that name the tenant in the URL (GitHub organizations, Linear workspaces, Vercel teams,
|
|
93
|
+
* Slack workspaces) all answer the same way: opening a link into another workspace switches to it. The URL is
|
|
94
|
+
* the page the person asked for, and the session's "current" workspace is the one they are looking at. Here
|
|
95
|
+
* the two used to disagree. The session kept whatever organization it had settled on (the stored one, else the
|
|
96
|
+
* first membership), and only the organization switcher moved it. On `/organizations/A/…` with B current, every
|
|
97
|
+
* request that did not name its own `organizationId` went to B, and every reader of the current organization
|
|
98
|
+
* (feature-policy roles, resolved features, billing, the settings hub, guidance, the single-operation enabled
|
|
99
|
+
* check) judged A's page with B's answers. #2198 and #1461 were two such pages, each fixed at its own site.
|
|
100
|
+
*
|
|
101
|
+
* So the current organization FOLLOWS the route: when the route names an organization the session can be IN,
|
|
102
|
+
* `AppLayout_AuthenticatedRoute` commits it as current (and the stored value follows, so a new session started
|
|
103
|
+
* on a page that names no organization begins in the one the person was last in, as those products do). Every
|
|
104
|
+
* reader keeps reading the one source, `AppScope.currentOrganizationId`, and agrees with the page.
|
|
105
|
+
*
|
|
106
|
+
* "Can be IN" means the person holds standing in the organization: an ACTIVE membership this frontend vouches for
|
|
107
|
+
* (`ACTIVE_MEMBERSHIP`), or an organization the server ADMITTED that is the session's own — loaded as one of its
|
|
108
|
+
* organizations, or one the backend's access profile confers entries in. The loaded case is a representative (#1597)
|
|
109
|
+
* in a granting organization: this frontend never vouches for that membership (its status mirrors a relationship only
|
|
110
|
+
* the server re-checks), so the route asks the server, while the switcher offers the organization all the same. The
|
|
111
|
+
* conferred case is a membership past the user context's cap (#2275): the context embeds only the newest 20
|
|
112
|
+
* memberships, so the 21st is neither vouched for nor loaded, while the access profile, which the backend builds from
|
|
113
|
+
* every membership, carries its roles. The session loads such an organization when it follows it
|
|
114
|
+
* (`UserOrgsContext.followRouteOrganization`), so the switcher shows the organization the person is in.
|
|
115
|
+
*
|
|
116
|
+
* ## What it does NOT follow, on purpose
|
|
117
|
+
*
|
|
118
|
+
* - **An organization the session cannot be in** (`VERIFYING`, `REFUSED`, `INCONCLUSIVE`, `UNDECIDABLE`, and an
|
|
119
|
+
* `ADMITTED` organization the session neither loaded nor holds access-profile entries in). A link to an organization the account is not a member
|
|
120
|
+
* of never switches the session: `REFUSED` is already answered by leaving the route with a notice. A platform
|
|
121
|
+
* operator's `ADMITTED` crossing has no membership here, so no roles, and its stored value would not survive a
|
|
122
|
+
* reload. Such pages address their organization through their own identifiers, and the ambient readers stay on
|
|
123
|
+
* the session's organization. Without an access profile (its read failed) a membership past the context's cap
|
|
124
|
+
* is in this position too: nothing the client holds says the person has standing there, so it fails closed.
|
|
125
|
+
* - **An arrival already settled.** Once the session has been in the route's organization (already, or by
|
|
126
|
+
* following it), a move away is the person's own: the switcher resets navigation and takes them home, and the
|
|
127
|
+
* route must not pull the session back in the meantime. A route is followed at most once per arrival; leaving
|
|
128
|
+
* it, or arriving at another organization's route, makes the next arrival followable again.
|
|
129
|
+
* - **A route with no organization** (`NOT_ADDRESSED`, application-scope pages): the session's own choice stands.
|
|
130
|
+
*
|
|
131
|
+
* ## Rejected alternatives
|
|
132
|
+
*
|
|
133
|
+
* - **Fix each reader at its own site** (what #2198 and #1461 did): reading the addressed organization locally is
|
|
134
|
+
* still correct where a surface knows it, but it leaves every reader that does not — and every request built
|
|
135
|
+
* without an explicit `organizationId` — on the wrong tenant. Ten readers fixed one by one is ten chances to
|
|
136
|
+
* miss the eleventh.
|
|
137
|
+
* - **Derive the current organization from the URL inside AppScope** instead of committing it: AppScope sits above
|
|
138
|
+
* the routes (the data router has one `/*` route, so no params are visible there) and above `UserOrgsContext`
|
|
139
|
+
* (so no membership is visible there either). Parsing the pathname there would duplicate the route table and
|
|
140
|
+
* could not apply the membership check that keeps a foreign link from switching the session.
|
|
141
|
+
* - **Leave the session alone and make the page refuse**: that treats a correct deep link as an error.
|
|
142
|
+
*
|
|
143
|
+
* ## In-session navigation: the zone entries are held too (#2276)
|
|
144
|
+
*
|
|
145
|
+
* The outlet gate covers every path that renders a route from its URL: a deep link, a reload, sign-in's redirect,
|
|
146
|
+
* and back/forward to a URL no zone holds (the back/forward reconciler clears the zones and the outlet remounts).
|
|
147
|
+
* In session, though, page content is rendered from the navigation zone stacks, and the controller emits a zone
|
|
148
|
+
* entry BEFORE it writes the URL (`navigation-commit.ts`); the router's location then commits in a transition. So a
|
|
149
|
+
* link into another organization's page mounted that page while every route-derived value still named the previous
|
|
150
|
+
* organization: its effects ran before the layout's follow effect, and its requests without their own
|
|
151
|
+
* `organizationId`, and every reader of the current organization, answered for the organization the page does not
|
|
152
|
+
* show. That is why the hold is ALSO applied per zone entry, by {@link decideZoneEntryOrganizationHold}, from the
|
|
153
|
+
* organization the entry itself addresses, which is known the moment it is pushed.
|
|
154
|
+
*
|
|
155
|
+
* And a followed change does not reset the navigation (that would undo the link), so entries of the previous
|
|
156
|
+
* organization left in other zones, an overlay or a backstack would be judged by the new organization's roles.
|
|
157
|
+
* `useRouteOrganizationFollow` therefore emits `NAVIGATION_ORGANIZATION_FOLLOWED` in the same effect that commits the
|
|
158
|
+
* organization, and `NavigationProvider` drops every entry addressing another organization in that same render. Not
|
|
159
|
+
* on `PRIMARY_SCOPE_CHANGED`: AppScope announces that from an effect one commit later, and an overlay (which no hold
|
|
160
|
+
* covers, see below) would render once under the new organization in between.
|
|
161
|
+
*
|
|
162
|
+
* Rejected: making the controller follow the organization at its commit. It would make the controller a second
|
|
163
|
+
* authority beside the route (and decide before the access verdict), and a raw router navigation or a
|
|
164
|
+
* back/forward POP would still need the route path. Holding the entry until the route has decided keeps one
|
|
165
|
+
* decision, this one.
|
|
166
|
+
*/
|
|
167
|
+
export var RouteOrganizationFollow;
|
|
168
|
+
(function (RouteOrganizationFollow) {
|
|
169
|
+
/** The route names no organization. The session's own current organization stands. */
|
|
170
|
+
RouteOrganizationFollow["NOT_ADDRESSED"] = "NOT_ADDRESSED";
|
|
171
|
+
/** The session's current organization already is the route's. Nothing to do. */
|
|
172
|
+
RouteOrganizationFollow["IN_STEP"] = "IN_STEP";
|
|
173
|
+
/**
|
|
174
|
+
* The route names an organization the session can be in, and the session is elsewhere. It is
|
|
175
|
+
* being made current; the route's content must wait, so its reads do not start in the previous organization.
|
|
176
|
+
*/
|
|
177
|
+
RouteOrganizationFollow["FOLLOWING"] = "FOLLOWING";
|
|
178
|
+
/** The route names an organization the session does not follow (see the decision above). The route renders as it would. */
|
|
179
|
+
RouteOrganizationFollow["NOT_FOLLOWED"] = "NOT_FOLLOWED";
|
|
180
|
+
})(RouteOrganizationFollow || (RouteOrganizationFollow = {}));
|
|
181
|
+
/** The one decision for {@link RouteOrganizationFollow}; pure, so it is pinned without a router. */
|
|
182
|
+
export function decideRouteOrganizationFollow(facts) {
|
|
183
|
+
if (!facts.routeOrganizationId) {
|
|
184
|
+
return RouteOrganizationFollow.NOT_ADDRESSED;
|
|
185
|
+
}
|
|
186
|
+
if (facts.currentOrganizationId === facts.routeOrganizationId) {
|
|
187
|
+
return RouteOrganizationFollow.IN_STEP;
|
|
188
|
+
}
|
|
189
|
+
const sessionCanBeIn = facts.access === RouteOrganizationAccess.ACTIVE_MEMBERSHIP
|
|
190
|
+
|| (facts.access === RouteOrganizationAccess.ADMITTED && (facts.routeOrganizationLoaded || facts.routeOrganizationConferred));
|
|
191
|
+
if (!sessionCanBeIn || facts.arrivalSettled) {
|
|
192
|
+
return RouteOrganizationFollow.NOT_FOLLOWED;
|
|
193
|
+
}
|
|
194
|
+
return RouteOrganizationFollow.FOLLOWING;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Whether a zone entry must be held (render a placeholder, mount nothing) until the session is in the organization it
|
|
198
|
+
* addresses (#2276). The entry's content mounts only once nothing it reads can answer for another organization.
|
|
199
|
+
*
|
|
200
|
+
* - **The entry addresses the route's organization**: it is held exactly when the layout holds the route's content.
|
|
201
|
+
* That is the same decision as the outlet's, so a route that is being followed or verified holds its page however
|
|
202
|
+
* the page was rendered, and a route the session deliberately does not follow (a platform operator's crossing, an
|
|
203
|
+
* arrival already settled, an inconclusive probe) renders its page as the outlet would.
|
|
204
|
+
* - **The entry addresses an organization the route does not name, and the session is not in it either**: it is
|
|
205
|
+
* held. The entry LEADS the route: the controller pushed it and wrote the URL, but the router's location has not
|
|
206
|
+
* committed yet, so the route still names the previous organization. Rendering it would read the session's
|
|
207
|
+
* organization for a page of another one. (An entry LEFT BEHIND by a follow fits the same case, and is held too;
|
|
208
|
+
* the follow drops such entries in its own commit, so this is a guard rather than the mechanism.)
|
|
209
|
+
* - **Anything else renders**: an entry addressing no organization, or the session's own; an entry that does not own
|
|
210
|
+
* the URL (an overlay, a hosted pane), which the route never follows and must therefore never wait for; and every
|
|
211
|
+
* entry outside an authenticated layout.
|
|
212
|
+
*
|
|
213
|
+
* Pure, so it is pinned without a router.
|
|
214
|
+
*/
|
|
215
|
+
export function decideZoneEntryOrganizationHold(facts) {
|
|
216
|
+
const { entryOrganizationId, routeDecision } = facts;
|
|
217
|
+
if (!entryOrganizationId || !facts.entryOwnsBrowserUrl || !routeDecision) {
|
|
218
|
+
return false;
|
|
219
|
+
}
|
|
220
|
+
if (entryOrganizationId === routeDecision.routeOrganizationId) {
|
|
221
|
+
return routeDecision.routeContentHeld;
|
|
222
|
+
}
|
|
223
|
+
return entryOrganizationId !== facts.currentOrganizationId;
|
|
83
224
|
}
|
|
84
225
|
//# sourceMappingURL=route-organization-access.frontend.utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-organization-access.frontend.utils.js","sourceRoot":"","sources":["../../../../../src/core/security/route-organization-access.frontend.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAM/B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAN,IAAY,uBA6BX;AA7BD,WAAY,uBAAuB;IACjC,qFAAqF;IACrF,0DAA+B,CAAA;IAC/B;;;;OAIG;IACH,sDAA2B,CAAA;IAC3B,8GAA8G;IAC9G,kEAAuC,CAAA;IACvC,sGAAsG;IACtG,kDAAuB,CAAA;IACvB,uIAAuI;IACvI,gDAAqB,CAAA;IACrB;;;;;;OAMG;IACH,8CAAmB,CAAA;IACnB;;;;OAIG;IACH,wDAA6B,CAAA;AAC/B,CAAC,EA7BW,uBAAuB,KAAvB,uBAAuB,QA6BlC;AAWD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iCAAiC,CAC/C,WAA+E,EAC/E,cAAsB;IAEtB,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,CAC7B,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,cAAc,KAAK,cAAc;WACvD,UAAU,CAAC,MAAM,KAAK,wBAAwB,CAAC,MAAM;WACrD,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAC9C,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CACzC,qBAAmE;IAEnE,OAAO,qBAAqB,EAAE,UAAU,EAAE,IAAI,CAC5C,CAAC,SAAkD,EAAE,EAAE,CACrD,SAAS,CAAC,mBAAmB,KAAK,qBAAqB,CAAC,IAAI;WACzD,SAAS,CAAC,kBAAkB,KAAK,IAAI;WACrC,SAAS,CAAC,eAAe,KAAK,IAAI;WAClC,CACD,SAAS,CAAC,WAAW,KAAK,4BAA4B,CAAC,QAAQ;eAC5D,SAAS,CAAC,WAAW,KAAK,4BAA4B,CAAC,sBAAsB,CACjF,CACJ,CAAC;AACJ,CAAC","sourcesContent":["import {\n CoreResourceOperation,\n OrganizationMemberStatus,\n isServiceProviderMembership,\n ResourceOperationVariantType,\n} from '@wildo-ai/saas-models';\nimport type {\n AnyFrontendResourceConfiguration,\n FrontendResourceConfiguration_Operation,\n} from '~wildo-frontend-lib/core/resources/resources.frontend.schemas';\n\n/**\n * Whether the signed-in account may open the organization a route addresses (`/organizations/:id/…`).\n *\n * ## Why the route needs its own answer\n *\n * The AppScope organization is membership-checked: `UserOrgsContext` only commits an organization the\n * account belongs to. A route's organization segment is not. `ScopeUtilsService.buildResourceOperationContextIdentifiers`\n * places the URL's identifiers LAST, so they override the checked scope, and the page issues its reads\n * against whatever organization the link names. The link is not always the account's own: a session\n * that expires on `/organizations/A/tasks` saves that URL as the post-login `redirect`, and a DIFFERENT\n * account signing in is sent straight to it. Every read then answered 403, and the person was left on\n * a page that could never load.\n *\n * ## Why the server decides, and the membership list only short-circuits\n *\n * The user context embeds `organizationMembers`, but that array is a context projection capped at\n * `DEFAULT_RELATIONSHIP_CONTEXT_POLICY.limit` (20, newest first) and \"cannot say it was truncated\".\n * A refusal computed from it would eject a member of a 21st organization, and it would also eject a\n * platform operator on a crossing the server admits. So an ACTIVE membership found in the list is\n * trusted (a positive answer cannot be invented by truncation), and anything else is asked of the\n * server with one silent READ of the organization. Only a refusal from that READ redirects.\n */\nexport enum RouteOrganizationAccess {\n /** The current route carries no organization segment. There is nothing to decide. */\n NOT_ADDRESSED = 'NOT_ADDRESSED',\n /**\n * The route addresses an organization, but the session cannot be judged yet or at all: restore is\n * unresolved, no user context was loaded, or the loaded user is not the token's subject (a stale\n * context from the previous account). The route renders as it would without this check.\n */\n UNDECIDABLE = 'UNDECIDABLE',\n /** The loaded user context carries an ACTIVE membership in the addressed organization. No request is made. */\n ACTIVE_MEMBERSHIP = 'ACTIVE_MEMBERSHIP',\n /** No active membership is known, and the server is being asked. The page must not load meanwhile. */\n VERIFYING = 'VERIFYING',\n /** The server answered the organization READ. The account may open it (a membership past the context cap, or an admitted crossing). */\n ADMITTED = 'ADMITTED',\n /**\n * The server refused the organization READ (403, or the deliberate 404 a non-member receives so the\n * answer is not an existence oracle). The route must not render.\n *\n * A link to an organization that does not exist lands here too, and on purpose: the server answers it\n * with the same 404, so the frontend cannot tell the two apart, and must not try to.\n */\n REFUSED = 'REFUSED',\n /**\n * The READ failed for a reason that says nothing about access (network, 5xx, no READ operation mounted).\n * The route renders, and its own requests report whatever is wrong: a transient failure must never\n * eject someone from a page they may open.\n */\n INCONCLUSIVE = 'INCONCLUSIVE',\n}\n\n/** The membership fields this decision reads, structurally, so the check does not depend on the context's population shape. */\nexport interface RouteOrganizationMembershipFacts {\n organizationId?: string | null;\n status?: OrganizationMemberStatus | string | null;\n /** Present on a service-provider membership (#1597). */\n serviceProviderRelationshipId?: string | null;\n providerOrganizationId?: string | null;\n}\n\n/**\n * True when the memberships carry an ACTIVE membership in `organizationId`.\n *\n * Only ACTIVE counts: an INVITED, INACTIVE or SUSPENDED membership confers no access on the server, so\n * treating it as a pass would let exactly the refused reads through. Such a membership falls through to\n * the server probe instead, which answers correctly either way.\n *\n * A SERVICE-PROVIDER membership never counts (#1597, review 6): its status is a mirror of the relationship, which\n * the server re-checks on every request — a suspended relationship, or one past its term, still shows an ACTIVE row\n * here. It falls through to the server probe like any other membership the client cannot vouch for.\n */\nexport function hasActiveMembershipInOrganization(\n memberships: ReadonlyArray<RouteOrganizationMembershipFacts> | null | undefined,\n organizationId: string,\n): boolean {\n return (memberships ?? []).some(\n (membership) => membership.organizationId === organizationId\n && membership.status === OrganizationMemberStatus.ACTIVE\n && !isServiceProviderMembership(membership),\n );\n}\n\n/**\n * The default, non-bulk API READ of a resource — the operation that fetches one row by its identifier.\n *\n * Shared by the session's organization loading and the route access probe, which must address the same\n * operation: if they disagreed, the probe could admit an organization the session cannot load.\n */\nexport function findDefaultApiReadOperation(\n resourceConfiguration: AnyFrontendResourceConfiguration | undefined,\n): FrontendResourceConfiguration_Operation | undefined {\n return resourceConfiguration?.operations?.find(\n (operation: FrontendResourceConfiguration_Operation) =>\n operation.operationIdentifier === CoreResourceOperation.READ\n && operation.isOperationDefault === true\n && operation.isBulkOperation !== true\n && (\n operation.variantType === ResourceOperationVariantType.API_CALL\n || operation.variantType === ResourceOperationVariantType.API_CALL_WITH_CALLBACK\n ),\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"route-organization-access.frontend.utils.js","sourceRoot":"","sources":["../../../../../src/core/security/route-organization-access.frontend.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAM/B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAN,IAAY,uBAiCX;AAjCD,WAAY,uBAAuB;IACjC,qFAAqF;IACrF,0DAA+B,CAAA;IAC/B;;;;OAIG;IACH,sDAA2B,CAAA;IAC3B;;;;OAIG;IACH,kEAAuC,CAAA;IACvC,sGAAsG;IACtG,kDAAuB,CAAA;IACvB,uIAAuI;IACvI,gDAAqB,CAAA;IACrB;;;;;;OAMG;IACH,8CAAmB,CAAA;IACnB;;;;OAIG;IACH,wDAA6B,CAAA;AAC/B,CAAC,EAjCW,uBAAuB,KAAvB,uBAAuB,QAiClC;AAWD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iCAAiC,CAC/C,WAA+E,EAC/E,cAAsB;IAEtB,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,CAC7B,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,cAAc,KAAK,cAAc;WACvD,UAAU,CAAC,MAAM,KAAK,wBAAwB,CAAC,MAAM;WACrD,CAAC,wBAAwB,CAAC,UAAU,CAAC,CAC3C,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CACzC,qBAAmE;IAEnE,OAAO,qBAAqB,EAAE,UAAU,EAAE,IAAI,CAC5C,CAAC,SAAkD,EAAE,EAAE,CACrD,SAAS,CAAC,mBAAmB,KAAK,qBAAqB,CAAC,IAAI;WACzD,SAAS,CAAC,kBAAkB,KAAK,IAAI;WACrC,SAAS,CAAC,eAAe,KAAK,IAAI;WAClC,CACD,SAAS,CAAC,WAAW,KAAK,4BAA4B,CAAC,QAAQ,CAChE,CACJ,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+EG;AACH,MAAM,CAAN,IAAY,uBAYX;AAZD,WAAY,uBAAuB;IACjC,sFAAsF;IACtF,0DAA+B,CAAA;IAC/B,gFAAgF;IAChF,8CAAmB,CAAA;IACnB;;;OAGG;IACH,kDAAuB,CAAA;IACvB,2HAA2H;IAC3H,wDAA6B,CAAA;AAC/B,CAAC,EAZW,uBAAuB,KAAvB,uBAAuB,QAYlC;AA0BD,oGAAoG;AACpG,MAAM,UAAU,6BAA6B,CAAC,KAAmC;IAC/E,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAC/B,OAAO,uBAAuB,CAAC,aAAa,CAAC;IAC/C,CAAC;IACD,IAAI,KAAK,CAAC,qBAAqB,KAAK,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAC9D,OAAO,uBAAuB,CAAC,OAAO,CAAC;IACzC,CAAC;IACD,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,KAAK,uBAAuB,CAAC,iBAAiB;WAC5E,CAAC,KAAK,CAAC,MAAM,KAAK,uBAAuB,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,uBAAuB,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAChI,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QAC5C,OAAO,uBAAuB,CAAC,YAAY,CAAC;IAC9C,CAAC;IACD,OAAO,uBAAuB,CAAC,SAAS,CAAC;AAC3C,CAAC;AAgCD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,+BAA+B,CAAC,KAAqC;IACnF,MAAM,EAAE,mBAAmB,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;IACrD,IAAI,CAAC,mBAAmB,IAAI,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,aAAa,EAAE,CAAC;QACzE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,mBAAmB,KAAK,aAAa,CAAC,mBAAmB,EAAE,CAAC;QAC9D,OAAO,aAAa,CAAC,gBAAgB,CAAC;IACxC,CAAC;IACD,OAAO,mBAAmB,KAAK,KAAK,CAAC,qBAAqB,CAAC;AAC7D,CAAC","sourcesContent":["import {\n CoreResourceOperation,\n OrganizationMemberStatus,\n isRelationshipMembership,\n ResourceOperationVariantType,\n} from '@wildo-ai/saas-models';\nimport type {\n AnyFrontendResourceConfiguration,\n FrontendResourceConfiguration_Operation,\n} from '~wildo-frontend-lib/core/resources/resources.frontend.schemas';\n\n/**\n * Whether the signed-in account may open the organization a route addresses (`/organizations/:id/…`).\n *\n * ## Why the route needs its own answer\n *\n * The AppScope organization is membership-checked: `UserOrgsContext` only commits an organization the\n * account belongs to. A route's organization segment is not. `ScopeUtilsService.buildResourceOperationContextIdentifiers`\n * places the URL's identifiers LAST, so they override the checked scope, and the page issues its reads\n * against whatever organization the link names. The link is not always the account's own: a session\n * that expires on `/organizations/A/tasks` saves that URL as the post-login `redirect`, and a DIFFERENT\n * account signing in is sent straight to it. Every read then answered 403, and the person was left on\n * a page that could never load.\n *\n * ## Why the server decides, and the membership list only short-circuits\n *\n * The user context embeds `organizationMembers`, but that array is a context projection capped at\n * `DEFAULT_RELATIONSHIP_CONTEXT_POLICY.limit` (20, newest first) and \"cannot say it was truncated\".\n * A refusal computed from it would eject a member of a 21st organization, and it would also eject a\n * platform operator on a crossing the server admits. So an ACTIVE membership found in the list is\n * trusted (a positive answer cannot be invented by truncation), and anything else is asked of the\n * server with one silent READ of the organization. Only a refusal from that READ redirects.\n */\nexport enum RouteOrganizationAccess {\n /** The current route carries no organization segment. There is nothing to decide. */\n NOT_ADDRESSED = 'NOT_ADDRESSED',\n /**\n * The route addresses an organization, but the session cannot be judged yet or at all: restore is\n * unresolved, no user context was loaded, or the loaded user is not the token's subject (a stale\n * context from the previous account). The route renders as it would without this check.\n */\n UNDECIDABLE = 'UNDECIDABLE',\n /**\n * The loaded user context carries an ACTIVE membership in the addressed organization. No request is made. Given as\n * soon as the token subject's context has loaded, before the restore concludes (#2247), because the session\n * follows this organization and must do so before the restore commits the stored one.\n */\n ACTIVE_MEMBERSHIP = 'ACTIVE_MEMBERSHIP',\n /** No active membership is known, and the server is being asked. The page must not load meanwhile. */\n VERIFYING = 'VERIFYING',\n /** The server answered the organization READ. The account may open it (a membership past the context cap, or an admitted crossing). */\n ADMITTED = 'ADMITTED',\n /**\n * The server refused the organization READ (403, or the deliberate 404 a non-member receives so the\n * answer is not an existence oracle). The route must not render.\n *\n * A link to an organization that does not exist lands here too, and on purpose: the server answers it\n * with the same 404, so the frontend cannot tell the two apart, and must not try to.\n */\n REFUSED = 'REFUSED',\n /**\n * The READ failed for a reason that says nothing about access (network, 5xx, no READ operation mounted).\n * The route renders, and its own requests report whatever is wrong: a transient failure must never\n * eject someone from a page they may open.\n */\n INCONCLUSIVE = 'INCONCLUSIVE',\n}\n\n/** The membership fields this decision reads, structurally, so the check does not depend on the context's population shape. */\nexport interface RouteOrganizationMembershipFacts {\n organizationId?: string | null;\n status?: OrganizationMemberStatus | string | null;\n /** Present on a representative membership (#1597). */\n organizationRelationshipId?: string | null;\n representingOrganizationId?: string | null;\n}\n\n/**\n * True when the memberships carry an ACTIVE membership in `organizationId`.\n *\n * Only ACTIVE counts: an INVITED, INACTIVE or SUSPENDED membership confers no access on the server, so\n * treating it as a pass would let exactly the refused reads through. Such a membership falls through to\n * the server probe instead, which answers correctly either way.\n *\n * A REPRESENTATIVE membership never counts (#1597, review 6): its status is a mirror of the relationship, which\n * the server re-checks on every request — a suspended relationship, or one past its term, still shows an ACTIVE row\n * here. It falls through to the server probe like any other membership the client cannot vouch for.\n */\nexport function hasActiveMembershipInOrganization(\n memberships: ReadonlyArray<RouteOrganizationMembershipFacts> | null | undefined,\n organizationId: string,\n): boolean {\n return (memberships ?? []).some(\n (membership) => membership.organizationId === organizationId\n && membership.status === OrganizationMemberStatus.ACTIVE\n && !isRelationshipMembership(membership),\n );\n}\n\n/**\n * The default, non-bulk API READ of a resource — the operation that fetches one row by its identifier.\n *\n * Shared by the session's organization loading and the route access probe, which must address the same\n * operation: if they disagreed, the probe could admit an organization the session cannot load.\n */\nexport function findDefaultApiReadOperation(\n resourceConfiguration: AnyFrontendResourceConfiguration | undefined,\n): FrontendResourceConfiguration_Operation | undefined {\n return resourceConfiguration?.operations?.find(\n (operation: FrontendResourceConfiguration_Operation) =>\n operation.operationIdentifier === CoreResourceOperation.READ\n && operation.isOperationDefault === true\n && operation.isBulkOperation !== true\n && (\n operation.variantType === ResourceOperationVariantType.API_CALL\n ),\n );\n}\n\n/**\n * Whether the session's current organization follows the organization the route names (#2247).\n *\n * ## The decision: the route is the authority, and the session follows it\n *\n * Workspace products that name the tenant in the URL (GitHub organizations, Linear workspaces, Vercel teams,\n * Slack workspaces) all answer the same way: opening a link into another workspace switches to it. The URL is\n * the page the person asked for, and the session's \"current\" workspace is the one they are looking at. Here\n * the two used to disagree. The session kept whatever organization it had settled on (the stored one, else the\n * first membership), and only the organization switcher moved it. On `/organizations/A/…` with B current, every\n * request that did not name its own `organizationId` went to B, and every reader of the current organization\n * (feature-policy roles, resolved features, billing, the settings hub, guidance, the single-operation enabled\n * check) judged A's page with B's answers. #2198 and #1461 were two such pages, each fixed at its own site.\n *\n * So the current organization FOLLOWS the route: when the route names an organization the session can be IN,\n * `AppLayout_AuthenticatedRoute` commits it as current (and the stored value follows, so a new session started\n * on a page that names no organization begins in the one the person was last in, as those products do). Every\n * reader keeps reading the one source, `AppScope.currentOrganizationId`, and agrees with the page.\n *\n * \"Can be IN\" means the person holds standing in the organization: an ACTIVE membership this frontend vouches for\n * (`ACTIVE_MEMBERSHIP`), or an organization the server ADMITTED that is the session's own — loaded as one of its\n * organizations, or one the backend's access profile confers entries in. The loaded case is a representative (#1597)\n * in a granting organization: this frontend never vouches for that membership (its status mirrors a relationship only\n * the server re-checks), so the route asks the server, while the switcher offers the organization all the same. The\n * conferred case is a membership past the user context's cap (#2275): the context embeds only the newest 20\n * memberships, so the 21st is neither vouched for nor loaded, while the access profile, which the backend builds from\n * every membership, carries its roles. The session loads such an organization when it follows it\n * (`UserOrgsContext.followRouteOrganization`), so the switcher shows the organization the person is in.\n *\n * ## What it does NOT follow, on purpose\n *\n * - **An organization the session cannot be in** (`VERIFYING`, `REFUSED`, `INCONCLUSIVE`, `UNDECIDABLE`, and an\n * `ADMITTED` organization the session neither loaded nor holds access-profile entries in). A link to an organization the account is not a member\n * of never switches the session: `REFUSED` is already answered by leaving the route with a notice. A platform\n * operator's `ADMITTED` crossing has no membership here, so no roles, and its stored value would not survive a\n * reload. Such pages address their organization through their own identifiers, and the ambient readers stay on\n * the session's organization. Without an access profile (its read failed) a membership past the context's cap\n * is in this position too: nothing the client holds says the person has standing there, so it fails closed.\n * - **An arrival already settled.** Once the session has been in the route's organization (already, or by\n * following it), a move away is the person's own: the switcher resets navigation and takes them home, and the\n * route must not pull the session back in the meantime. A route is followed at most once per arrival; leaving\n * it, or arriving at another organization's route, makes the next arrival followable again.\n * - **A route with no organization** (`NOT_ADDRESSED`, application-scope pages): the session's own choice stands.\n *\n * ## Rejected alternatives\n *\n * - **Fix each reader at its own site** (what #2198 and #1461 did): reading the addressed organization locally is\n * still correct where a surface knows it, but it leaves every reader that does not — and every request built\n * without an explicit `organizationId` — on the wrong tenant. Ten readers fixed one by one is ten chances to\n * miss the eleventh.\n * - **Derive the current organization from the URL inside AppScope** instead of committing it: AppScope sits above\n * the routes (the data router has one `/*` route, so no params are visible there) and above `UserOrgsContext`\n * (so no membership is visible there either). Parsing the pathname there would duplicate the route table and\n * could not apply the membership check that keeps a foreign link from switching the session.\n * - **Leave the session alone and make the page refuse**: that treats a correct deep link as an error.\n *\n * ## In-session navigation: the zone entries are held too (#2276)\n *\n * The outlet gate covers every path that renders a route from its URL: a deep link, a reload, sign-in's redirect,\n * and back/forward to a URL no zone holds (the back/forward reconciler clears the zones and the outlet remounts).\n * In session, though, page content is rendered from the navigation zone stacks, and the controller emits a zone\n * entry BEFORE it writes the URL (`navigation-commit.ts`); the router's location then commits in a transition. So a\n * link into another organization's page mounted that page while every route-derived value still named the previous\n * organization: its effects ran before the layout's follow effect, and its requests without their own\n * `organizationId`, and every reader of the current organization, answered for the organization the page does not\n * show. That is why the hold is ALSO applied per zone entry, by {@link decideZoneEntryOrganizationHold}, from the\n * organization the entry itself addresses, which is known the moment it is pushed.\n *\n * And a followed change does not reset the navigation (that would undo the link), so entries of the previous\n * organization left in other zones, an overlay or a backstack would be judged by the new organization's roles.\n * `useRouteOrganizationFollow` therefore emits `NAVIGATION_ORGANIZATION_FOLLOWED` in the same effect that commits the\n * organization, and `NavigationProvider` drops every entry addressing another organization in that same render. Not\n * on `PRIMARY_SCOPE_CHANGED`: AppScope announces that from an effect one commit later, and an overlay (which no hold\n * covers, see below) would render once under the new organization in between.\n *\n * Rejected: making the controller follow the organization at its commit. It would make the controller a second\n * authority beside the route (and decide before the access verdict), and a raw router navigation or a\n * back/forward POP would still need the route path. Holding the entry until the route has decided keeps one\n * decision, this one.\n */\nexport enum RouteOrganizationFollow {\n /** The route names no organization. The session's own current organization stands. */\n NOT_ADDRESSED = 'NOT_ADDRESSED',\n /** The session's current organization already is the route's. Nothing to do. */\n IN_STEP = 'IN_STEP',\n /**\n * The route names an organization the session can be in, and the session is elsewhere. It is\n * being made current; the route's content must wait, so its reads do not start in the previous organization.\n */\n FOLLOWING = 'FOLLOWING',\n /** The route names an organization the session does not follow (see the decision above). The route renders as it would. */\n NOT_FOLLOWED = 'NOT_FOLLOWED',\n}\n\nexport interface RouteOrganizationFollowFacts {\n /** The organization the route names, if any. */\n routeOrganizationId: string | null | undefined;\n /** The route's access verdict, from `useRouteOrganizationAccess`. */\n access: RouteOrganizationAccess;\n /**\n * Whether the session has loaded the route's organization as one of its own (`UserOrgsContext.organizations`,\n * what the switcher offers). Decides only the `ADMITTED` case; see the decision above.\n */\n routeOrganizationLoaded: boolean;\n /**\n * Whether the backend's access profile confers entries in the route's organization (`accessProfileConfersOrganization`):\n * a membership the user context's capped projection does not carry (#2275). Decides only the `ADMITTED` case.\n */\n routeOrganizationConferred: boolean;\n /** The session's current organization (`AppScope.currentOrganizationId`). */\n currentOrganizationId: string | null | undefined;\n /**\n * True once this arrival at the route is SETTLED: the session was in the route's organization, already or by\n * following it. A settled arrival is never followed again, so a later move away is the person's own.\n */\n arrivalSettled: boolean;\n}\n\n/** The one decision for {@link RouteOrganizationFollow}; pure, so it is pinned without a router. */\nexport function decideRouteOrganizationFollow(facts: RouteOrganizationFollowFacts): RouteOrganizationFollow {\n if (!facts.routeOrganizationId) {\n return RouteOrganizationFollow.NOT_ADDRESSED;\n }\n if (facts.currentOrganizationId === facts.routeOrganizationId) {\n return RouteOrganizationFollow.IN_STEP;\n }\n const sessionCanBeIn = facts.access === RouteOrganizationAccess.ACTIVE_MEMBERSHIP\n || (facts.access === RouteOrganizationAccess.ADMITTED && (facts.routeOrganizationLoaded || facts.routeOrganizationConferred));\n if (!sessionCanBeIn || facts.arrivalSettled) {\n return RouteOrganizationFollow.NOT_FOLLOWED;\n }\n return RouteOrganizationFollow.FOLLOWING;\n}\n\n/**\n * What the authenticated layout has decided about the route's organization, published to the navigation zones so\n * they can hold their entries with the same decision the outlet is held by (#2276). `null` where no authenticated\n * layout is mounted: nothing is held there.\n */\nexport interface RouteOrganizationDecision {\n /** The organization the COMMITTED route names (`useRouteOrganizationId`), or `null` when it names none. */\n routeOrganizationId: string | null;\n /**\n * True while the layout withholds the route's content: the server is being asked (`VERIFYING`), the session is\n * being moved into the route's organization (`FOLLOWING`), or the organization was refused (`REFUSED`).\n */\n routeContentHeld: boolean;\n}\n\nexport interface ZoneEntryOrganizationHoldFacts {\n /** The organization the entry's content addresses (`navigationContentOrganizationId`), or `null`. */\n entryOrganizationId: string | null;\n /**\n * Whether the entry is what the browser URL names, or is about to name: a structural-zone entry carrying a\n * `urlPath` that is not a hosted pane (whose address rides on the host's URL). Only such an entry makes the route\n * change, so only such an entry can be waiting for the route's decision.\n */\n entryOwnsBrowserUrl: boolean;\n /** The session's current organization (`AppScope.currentOrganizationId`). */\n currentOrganizationId: string | null | undefined;\n /** The layout's decision, or `null` outside an authenticated layout. */\n routeDecision: RouteOrganizationDecision | null;\n}\n\n/**\n * Whether a zone entry must be held (render a placeholder, mount nothing) until the session is in the organization it\n * addresses (#2276). The entry's content mounts only once nothing it reads can answer for another organization.\n *\n * - **The entry addresses the route's organization**: it is held exactly when the layout holds the route's content.\n * That is the same decision as the outlet's, so a route that is being followed or verified holds its page however\n * the page was rendered, and a route the session deliberately does not follow (a platform operator's crossing, an\n * arrival already settled, an inconclusive probe) renders its page as the outlet would.\n * - **The entry addresses an organization the route does not name, and the session is not in it either**: it is\n * held. The entry LEADS the route: the controller pushed it and wrote the URL, but the router's location has not\n * committed yet, so the route still names the previous organization. Rendering it would read the session's\n * organization for a page of another one. (An entry LEFT BEHIND by a follow fits the same case, and is held too;\n * the follow drops such entries in its own commit, so this is a guard rather than the mechanism.)\n * - **Anything else renders**: an entry addressing no organization, or the session's own; an entry that does not own\n * the URL (an overlay, a hosted pane), which the route never follows and must therefore never wait for; and every\n * entry outside an authenticated layout.\n *\n * Pure, so it is pinned without a router.\n */\nexport function decideZoneEntryOrganizationHold(facts: ZoneEntryOrganizationHoldFacts): boolean {\n const { entryOrganizationId, routeDecision } = facts;\n if (!entryOrganizationId || !facts.entryOwnsBrowserUrl || !routeDecision) {\n return false;\n }\n if (entryOrganizationId === routeDecision.routeOrganizationId) {\n return routeDecision.routeContentHeld;\n }\n return entryOrganizationId !== facts.currentOrganizationId;\n}\n"]}
|
|
@@ -1,8 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* Security Frontend Schemas
|
|
3
|
-
*
|
|
4
|
-
* Core authentication and authorization types for the frontend security layer.
|
|
5
|
-
*/
|
|
1
|
+
import type { UserSelfAccessProfile } from '@wildo-ai/saas-models';
|
|
6
2
|
import { AuthIdentificationResponse, AuthFactorLevel, SessionType, type AuthMethod, type AvailableMethod, type AuthSessionPurpose } from '@wildo-ai/saas-models';
|
|
7
3
|
/**
|
|
8
4
|
* Authentication state — contains only authentication-related fields.
|
|
@@ -106,8 +102,24 @@ export interface AuthState {
|
|
|
106
102
|
* Contains app-level permissions and per-organization permissions
|
|
107
103
|
*/
|
|
108
104
|
export type EffectivePermissions = {
|
|
105
|
+
/**
|
|
106
|
+
* Application roles. From the access profile's application entry when it loaded, else the user's `appRoles`
|
|
107
|
+
* (`membershipRolesFromAccessProfile`, #2381).
|
|
108
|
+
*/
|
|
109
109
|
appLevel: string[];
|
|
110
|
+
/**
|
|
111
|
+
* Organization-wide roles per organization id. From the access profile when it loaded — the roles the backend confers,
|
|
112
|
+
* which a representative membership row or a capability role stored on an ordinary row does not show truthfully — else the
|
|
113
|
+
* membership rows. Unit-scoped grants are never here; `accessProfile` carries them.
|
|
114
|
+
*/
|
|
110
115
|
organizations: Record<string, string[]>;
|
|
116
|
+
/**
|
|
117
|
+
* The backend's own account of this person's access (`user-self | access_profile`, #2381): the role entries their
|
|
118
|
+
* requests carry in each organization — organization-unit and relationship grants included, which the memberships above cannot show —
|
|
119
|
+
* and which resources narrow by unit. `null` when it could not be loaded; the shell then decides on the membership
|
|
120
|
+
* roles above alone, so a unit-granted entry stays hidden (fail closed).
|
|
121
|
+
*/
|
|
122
|
+
accessProfile: UserSelfAccessProfile | null;
|
|
111
123
|
};
|
|
112
124
|
/**
|
|
113
125
|
* Empty/initial authentication state
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.frontend.schemas.d.ts","sourceRoot":"","sources":["../../../../../src/core/security/security.frontend.schemas.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"security.frontend.schemas.d.ts","sourceRoot":"","sources":["../../../../../src/core/security/security.frontend.schemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAQnE,OAAO,EACL,0BAA0B,EAC1B,eAAe,EACf,WAAW,EACX,KAAK,UAAU,EACf,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,cAAc,EAAE,0BAA0B,GAAG,IAAI,CAAC;IAClD,YAAY,EAAE,GAAG,GAAG,IAAI,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,mBAAmB,EAAE,eAAe,EAAE,CAAC;IACvC,0BAA0B,EAAE,UAAU,EAAE,CAAC;IACzC,2BAA2B,EAAE,MAAM,EAAE,CAAC;IACtC,yBAAyB,EAAE,MAAM,EAAE,CAAC;IACpC;;;;;;;;;;OAUG;IACH,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACnC,oEAAoE;IACpE,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,wGAAwG;IACxG,aAAa,CAAC,EAAE;QACd,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,2BAA2B,CAAC,EAAE;QAC5B;;;;;WAKG;QACH,UAAU,EAAE,MAAM,CAAC;QACnB;;;;;;;;;WASG;QACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;QACnC,mGAAmG;QACnG,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;OAGG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACxC;;;;;OAKG;IACH,aAAa,EAAE,qBAAqB,GAAG,IAAI,CAAC;CAC7C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAoB9B,CAAC;AAIF,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;AAEjE,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC;AAEpE,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE/C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,GAAG,eAAe,CAE/E;AAED;;;;;;;;;;;;;GAaG;AACH,oBAAY,sBAAsB;IAChC,WAAW,gBAAgB;IAC3B,KAAK,UAAU;CAChB;AAED;;;;;;;;;GASG;AACH,qBAAa,2BAA4B,SAAQ,KAAK;;CAKrD;AAED;;;;;;;GAOG;AACH,qBAAa,8BAA+B,SAAQ,KAAK;;CAKxD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.frontend.schemas.js","sourceRoot":"","sources":["../../../../../src/core/security/security.frontend.schemas.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAEL,eAAe,GAKhB,MAAM,uBAAuB,CAAC;AA6G/B;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAc;IACzC,SAAS,EAAE,KAAK;IAChB,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,cAAc,EAAE,IAAI;IACpB,YAAY,EAAE,IAAI;IAClB,kBAAkB,EAAE,KAAK;IACzB,eAAe,EAAE,KAAK;IACtB,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,IAAI;IAClB,mBAAmB,EAAE,EAAE;IACvB,0BAA0B,EAAE,EAAE;IAC9B,2BAA2B,EAAE,EAAE;IAC/B,yBAAyB,EAAE,EAAE;IAC7B,mBAAmB,EAAE,IAAI;IACzB,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,IAAI;IACjB,aAAa,EAAE,SAAS;IACxB,2BAA2B,EAAE,SAAS;CACvC,CAAC;AAUF;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAoB;IAC5D,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC;AAC7E,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAN,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAChC,qDAA2B,CAAA;IAC3B,yCAAe,CAAA;AACjB,CAAC,EAHW,sBAAsB,KAAtB,sBAAsB,QAGjC;AAED;;;;;;;;;GASG;AACH,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IACpD;QACE,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,8BAA+B,SAAQ,KAAK;IACvD;QACE,KAAK,CAAC,kEAAkE,CAAC,CAAC;QAC1E,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;IAC/C,CAAC;CACF","sourcesContent":["/**\n * Security Frontend Schemas\n * \n * Core authentication and authorization types for the frontend security layer.\n */\n\nimport { z } from 'zod';\nimport { \n AuthIdentificationResponse,\n AuthFactorLevel,\n SessionType,\n type AuthMethod,\n type AvailableMethod,\n type AuthSessionPurpose,\n} from '@wildo-ai/saas-models';\n\n/**\n * Authentication state — contains only authentication-related fields.\n *\n * **No `refreshToken` field** (Auth-hardening Slice A Step 6,\n * 2026-04-13). Pre-Slice-A this carried `refreshToken: string | null`\n * mirroring the legacy body-channel rotation contract. A-Step 2\n * (cookie migration) made the cookie the sole owner of the refresh\n * token, A-Step 3 stopped this state from being read by any consumer,\n * and A-Step 6 dropped the field entirely. The refresh token now lives\n * EXCLUSIVELY in the `__wildo_refresh` `HttpOnly` cookie — JS-invisible\n * by design (XSS exfiltration surface closed). Consumers that want to\n * \"check if the user has a valid session\" should look at `accessToken`\n * (or `sessionRestored`) — never at the cookie, which is opaque to JS.\n */\nexport interface AuthState {\n isLoading: boolean;\n error: string | null;\n sessionId: string | null;\n accessToken: string | null;\n identification: AuthIdentificationResponse | null;\n sessionState: any | null;\n isRestoringSession: boolean;\n sessionRestored: boolean;\n mfaRequired: boolean;\n mfaSessionId: string | null;\n availableMfaMethods: AvailableMethod[];\n availableEnrollmentMethods: AuthMethod[];\n enrolledSecondFactorMethods: string[];\n usableSecondFactorMethods: string[];\n /**\n * The authentication session an answer parked at organization onboarding (#1090), or `null`.\n *\n * Set by an answer that parked the account — a registration, an email verification, an enrollment settlement,\n * a sign-in (#1091) or a federated sign-in's code exchange (#1103) — and read together with `accessToken`: while it is set and no token is held, the one\n * step left is naming the organization the account's user type owes. The sign-in, registration, verification,\n * magic-link, challenge, enrollment and federated-callback screens send the person to the organization-onboarding step in that\n * state (`organizationOnboardingNavigationTarget`). Cleared by completing onboarding, by abandoning it, by a\n * spent session, by a new identification and by sign-out. Memory only, deliberately: the obligation is durable\n * on the server, so a lost tab signs in again and is parked again.\n */\n onboardingSessionId: string | null;\n purpose: AuthSessionPurpose | null;\n /** W7.3b: Session type — null before authentication is resolved. */\n sessionType: SessionType | null;\n /** W7.3b: Context data for one-off sessions (only present when sessionType === SessionType.ONE_OFF). */\n oneOffContext?: {\n originTokenId: string;\n tokenType: string;\n consumableTokenValue?: string;\n tokenExpiresAt?: string;\n scopedInitiatorIds?: Record<string, string>;\n applicationId?: string;\n };\n /**\n * cross-app-jwt-propagation.md Step 5: Context data populated when an\n * AUTH_CODE_EXCHANGE token was minted by the cross-frontend-handoff issuer.\n * `AuthSessionContext.handleAuthCodeExchange()` populates this field only\n * when the token-exchange response carries a top-level `returnPath`; OAuth2\n * callback codes omit that field and therefore leave this context undefined.\n *\n * Distinct from `oneOffContext` on purpose (semantic distinction over\n * convenience — see `design-philosophy.mdc`):\n * - `oneOffContext` describes a W7.3b ephemeral one-off session\n * (resource-scoped targeting, applicationId, consumable replay).\n * - `crossFrontendHandoffContext` describes a session-transfer landing\n * (returnPath, source/target frontend telemetry). The session itself\n * is a regular persistent session driven by the receiver's storage\n * adapter (cross-app-jwt-propagation.md K-7).\n *\n * Consumed by `Auth_OneOffSession` in cross-frontend-handoff mode to drive\n * post-exchange navigation (`returnPath`); also available to app-level\n * telemetry hooks that want to know \"this user just landed via a handoff\n * from $sourceFrontendServiceName\".\n */\n crossFrontendHandoffContext?: {\n /**\n * Path to navigate to after the exchange completes. Already passed\n * `CrossFrontendHandoff_ReturnPathSchema` refines at issuance, but\n * receivers MUST sanitize defense-in-depth (a malicious caller could\n * hand-craft an exchange URL bypassing the issuer).\n */\n returnPath: string;\n /**\n * The frontend that initiated the handoff (e.g., `'admin-console'`).\n * Optional because the source frontend identifies itself only via the\n * `X-Frontend-Service-Name` request header (set by the shared HTTP\n * client interceptor). Non-browser callers — server-to-server\n * invocations, hand-crafted curl sessions — may legitimately omit\n * the header (the issuer falls back to \"unknown\" source for audit\n * purposes), in which case the receiver simply has no source\n * identity to display in telemetry / breadcrumbs.\n */\n sourceFrontendServiceName?: string;\n /** The target frontend the handoff was minted for. Useful for telemetry / breadcrumb rendering. */\n targetServiceKey?: string;\n };\n}\n\n/**\n * Effective permissions for the current user\n * Contains app-level permissions and per-organization permissions\n */\nexport type EffectivePermissions = {\n appLevel: string[];\n organizations: Record<string, string[]>;\n};\n\n/**\n * Empty/initial authentication state\n */\nexport const EMPTY_AUTH_STATE: AuthState = {\n isLoading: false,\n error: null,\n sessionId: null,\n accessToken: null,\n identification: null,\n sessionState: null,\n isRestoringSession: false,\n sessionRestored: false,\n mfaRequired: false,\n mfaSessionId: null,\n availableMfaMethods: [],\n availableEnrollmentMethods: [],\n enrolledSecondFactorMethods: [],\n usableSecondFactorMethods: [],\n onboardingSessionId: null,\n purpose: null,\n sessionType: null,\n oneOffContext: undefined,\n crossFrontendHandoffContext: undefined,\n};\n\n// ─── Auth UI State Types ─────────────────────────────────────────────\n\nexport type ResendStatus = 'idle' | 'sending' | 'sent' | 'error';\n\nexport type MfaPageErrorType = 'expired' | 'no_methods' | 'generic';\n\nexport type UIFactorLevel = 'first' | 'second';\n\n/**\n * The ONE translation between the UI's factor vocabulary (`'first' | 'second'`, which selects the\n * page, its labels and its layout) and the wire vocabulary `AuthFactorLevel`, which every\n * authenticate-shaped request carries. They are different vocabularies on purpose — the UI has no\n * `IDENTIFICATION` page — so a UI level must be translated at the seam, never forwarded.\n *\n * Measured 2026-09-15: the passkey sign-in forwarded `'first'` verbatim into\n * `POST /auth/passkey/authenticate/verify`. The orchestrator's `=== FIRST` branch did not match it,\n * treated the attempt as a second factor, and the response it built failed the wire enum — `400\n * validation` on every passkey sign-in, and the same for passkey as an MFA second factor, which\n * forwarded `'second'`. The password and OTP paths never hit it because they write\n * `AuthFactorLevel.FIRST` / `.SECOND` by hand at their own sites; this function is where that\n * translation now lives once.\n */\nexport function authFactorLevelForUiLevel(level: UIFactorLevel): AuthFactorLevel {\n return level === 'second' ? AuthFactorLevel.SECOND : AuthFactorLevel.FIRST;\n}\n\n/**\n * How a username-less passkey sign-in asks the browser for a credential.\n *\n * The distinction is about who starts the prompt, and it decides how a failure is shown:\n *\n * - `CONDITIONAL` — passkey AUTOFILL. Started silently when the sign-in page renders; the browser offers\n * the person's passkeys in the email field's autofill list and the call waits until one is picked. It\n * may never resolve, is aborted when the page moves on, and a failure before a passkey is picked is\n * NOT an error the person caused — so nothing is shown for it.\n * - `MODAL` — the person pressed \"Sign in with a passkey\". The browser shows its account picker at once,\n * and every failure, cancellation included, is reported on the page.\n *\n * spec-cite: https://web.dev/articles/passkey-form-autofill — conditional UI is invoked with `mediation: 'conditional'`, \"the crucial flag that makes the WebAuthn API call conditional. It tells the browser to wait for user interaction.\"\n */\nexport enum PasskeySignInMediation {\n CONDITIONAL = 'conditional',\n MODAL = 'modal',\n}\n\n/**\n * A waiting passkey AUTOFILL request was stopped because its challenge was about to expire.\n *\n * Autofill waits for as long as the sign-in page stays open, but the server's challenge — and the\n * username-less session bound to it — lasts `expiresInSeconds`. Picking a passkey after that would fail\n * on a session that no longer exists, so the context stops the wait shortly before and throws THIS, and\n * the sign-in page starts a fresh request. Any other refusal of an autofill wait (the page moving on, the\n * button starting its own ceremony) is NOT this error, which is what stops the page restarting over a\n * ceremony the person began.\n */\nexport class PasskeyAutofillExpiredError extends Error {\n constructor() {\n super('Passkey autofill challenge expired before a passkey was picked');\n this.name = 'PasskeyAutofillExpiredError';\n }\n}\n\n/**\n * Thrown by a passkey AUTOFILL ceremony that stepped aside because a ceremony the person started\n * themselves (the passkey button, or a second-factor passkey step) is already open.\n *\n * Starting a WebAuthn request aborts any pending one, so an autofill whose options arrived after the\n * button opened its prompt would close the prompt the person is looking at. The autofill loop treats this\n * like any other refusal and stops; the page starts a fresh autofill once the person's ceremony ends.\n */\nexport class PasskeyAutofillSupersededError extends Error {\n constructor() {\n super('Passkey autofill stepped aside for a ceremony the person started');\n this.name = 'PasskeyAutofillSupersededError';\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"security.frontend.schemas.js","sourceRoot":"","sources":["../../../../../src/core/security/security.frontend.schemas.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,eAAe,GAKhB,MAAM,uBAAuB,CAAC;AA6H/B;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAc;IACzC,SAAS,EAAE,KAAK;IAChB,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,IAAI;IACf,WAAW,EAAE,IAAI;IACjB,cAAc,EAAE,IAAI;IACpB,YAAY,EAAE,IAAI;IAClB,kBAAkB,EAAE,KAAK;IACzB,eAAe,EAAE,KAAK;IACtB,WAAW,EAAE,KAAK;IAClB,YAAY,EAAE,IAAI;IAClB,mBAAmB,EAAE,EAAE;IACvB,0BAA0B,EAAE,EAAE;IAC9B,2BAA2B,EAAE,EAAE;IAC/B,yBAAyB,EAAE,EAAE;IAC7B,mBAAmB,EAAE,IAAI;IACzB,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,IAAI;IACjB,aAAa,EAAE,SAAS;IACxB,2BAA2B,EAAE,SAAS;CACvC,CAAC;AAUF;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAoB;IAC5D,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC;AAC7E,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAN,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAChC,qDAA2B,CAAA;IAC3B,yCAAe,CAAA;AACjB,CAAC,EAHW,sBAAsB,KAAtB,sBAAsB,QAGjC;AAED;;;;;;;;;GASG;AACH,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IACpD;QACE,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,8BAA+B,SAAQ,KAAK;IACvD;QACE,KAAK,CAAC,kEAAkE,CAAC,CAAC;QAC1E,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;IAC/C,CAAC;CACF","sourcesContent":["import type { UserSelfAccessProfile } from '@wildo-ai/saas-models';\n/**\n * Security Frontend Schemas\n * \n * Core authentication and authorization types for the frontend security layer.\n */\n\nimport { z } from 'zod';\nimport { \n AuthIdentificationResponse,\n AuthFactorLevel,\n SessionType,\n type AuthMethod,\n type AvailableMethod,\n type AuthSessionPurpose,\n} from '@wildo-ai/saas-models';\n\n/**\n * Authentication state — contains only authentication-related fields.\n *\n * **No `refreshToken` field** (Auth-hardening Slice A Step 6,\n * 2026-04-13). Pre-Slice-A this carried `refreshToken: string | null`\n * mirroring the legacy body-channel rotation contract. A-Step 2\n * (cookie migration) made the cookie the sole owner of the refresh\n * token, A-Step 3 stopped this state from being read by any consumer,\n * and A-Step 6 dropped the field entirely. The refresh token now lives\n * EXCLUSIVELY in the `__wildo_refresh` `HttpOnly` cookie — JS-invisible\n * by design (XSS exfiltration surface closed). Consumers that want to\n * \"check if the user has a valid session\" should look at `accessToken`\n * (or `sessionRestored`) — never at the cookie, which is opaque to JS.\n */\nexport interface AuthState {\n isLoading: boolean;\n error: string | null;\n sessionId: string | null;\n accessToken: string | null;\n identification: AuthIdentificationResponse | null;\n sessionState: any | null;\n isRestoringSession: boolean;\n sessionRestored: boolean;\n mfaRequired: boolean;\n mfaSessionId: string | null;\n availableMfaMethods: AvailableMethod[];\n availableEnrollmentMethods: AuthMethod[];\n enrolledSecondFactorMethods: string[];\n usableSecondFactorMethods: string[];\n /**\n * The authentication session an answer parked at organization onboarding (#1090), or `null`.\n *\n * Set by an answer that parked the account — a registration, an email verification, an enrollment settlement,\n * a sign-in (#1091) or a federated sign-in's code exchange (#1103) — and read together with `accessToken`: while it is set and no token is held, the one\n * step left is naming the organization the account's user type owes. The sign-in, registration, verification,\n * magic-link, challenge, enrollment and federated-callback screens send the person to the organization-onboarding step in that\n * state (`organizationOnboardingNavigationTarget`). Cleared by completing onboarding, by abandoning it, by a\n * spent session, by a new identification and by sign-out. Memory only, deliberately: the obligation is durable\n * on the server, so a lost tab signs in again and is parked again.\n */\n onboardingSessionId: string | null;\n purpose: AuthSessionPurpose | null;\n /** W7.3b: Session type — null before authentication is resolved. */\n sessionType: SessionType | null;\n /** W7.3b: Context data for one-off sessions (only present when sessionType === SessionType.ONE_OFF). */\n oneOffContext?: {\n originTokenId: string;\n tokenType: string;\n consumableTokenValue?: string;\n tokenExpiresAt?: string;\n scopedInitiatorIds?: Record<string, string>;\n applicationId?: string;\n };\n /**\n * cross-app-jwt-propagation.md Step 5: Context data populated when an\n * AUTH_CODE_EXCHANGE token was minted by the cross-frontend-handoff issuer.\n * `AuthSessionContext.handleAuthCodeExchange()` populates this field only\n * when the token-exchange response carries a top-level `returnPath`; OAuth2\n * callback codes omit that field and therefore leave this context undefined.\n *\n * Distinct from `oneOffContext` on purpose (semantic distinction over\n * convenience — see `design-philosophy.mdc`):\n * - `oneOffContext` describes a W7.3b ephemeral one-off session\n * (resource-scoped targeting, applicationId, consumable replay).\n * - `crossFrontendHandoffContext` describes a session-transfer landing\n * (returnPath, source/target frontend telemetry). The session itself\n * is a regular persistent session driven by the receiver's storage\n * adapter (cross-app-jwt-propagation.md K-7).\n *\n * Consumed by `Auth_OneOffSession` in cross-frontend-handoff mode to drive\n * post-exchange navigation (`returnPath`); also available to app-level\n * telemetry hooks that want to know \"this user just landed via a handoff\n * from $sourceFrontendServiceName\".\n */\n crossFrontendHandoffContext?: {\n /**\n * Path to navigate to after the exchange completes. Already passed\n * `CrossFrontendHandoff_ReturnPathSchema` refines at issuance, but\n * receivers MUST sanitize defense-in-depth (a malicious caller could\n * hand-craft an exchange URL bypassing the issuer).\n */\n returnPath: string;\n /**\n * The frontend that initiated the handoff (e.g., `'admin-console'`).\n * Optional because the source frontend identifies itself only via the\n * `X-Frontend-Service-Name` request header (set by the shared HTTP\n * client interceptor). Non-browser callers — server-to-server\n * invocations, hand-crafted curl sessions — may legitimately omit\n * the header (the issuer falls back to \"unknown\" source for audit\n * purposes), in which case the receiver simply has no source\n * identity to display in telemetry / breadcrumbs.\n */\n sourceFrontendServiceName?: string;\n /** The target frontend the handoff was minted for. Useful for telemetry / breadcrumb rendering. */\n targetServiceKey?: string;\n };\n}\n\n/**\n * Effective permissions for the current user\n * Contains app-level permissions and per-organization permissions\n */\nexport type EffectivePermissions = {\n /**\n * Application roles. From the access profile's application entry when it loaded, else the user's `appRoles`\n * (`membershipRolesFromAccessProfile`, #2381).\n */\n appLevel: string[];\n /**\n * Organization-wide roles per organization id. From the access profile when it loaded — the roles the backend confers,\n * which a representative membership row or a capability role stored on an ordinary row does not show truthfully — else the\n * membership rows. Unit-scoped grants are never here; `accessProfile` carries them.\n */\n organizations: Record<string, string[]>;\n /**\n * The backend's own account of this person's access (`user-self | access_profile`, #2381): the role entries their\n * requests carry in each organization — organization-unit and relationship grants included, which the memberships above cannot show —\n * and which resources narrow by unit. `null` when it could not be loaded; the shell then decides on the membership\n * roles above alone, so a unit-granted entry stays hidden (fail closed).\n */\n accessProfile: UserSelfAccessProfile | null;\n};\n\n/**\n * Empty/initial authentication state\n */\nexport const EMPTY_AUTH_STATE: AuthState = {\n isLoading: false,\n error: null,\n sessionId: null,\n accessToken: null,\n identification: null,\n sessionState: null,\n isRestoringSession: false,\n sessionRestored: false,\n mfaRequired: false,\n mfaSessionId: null,\n availableMfaMethods: [],\n availableEnrollmentMethods: [],\n enrolledSecondFactorMethods: [],\n usableSecondFactorMethods: [],\n onboardingSessionId: null,\n purpose: null,\n sessionType: null,\n oneOffContext: undefined,\n crossFrontendHandoffContext: undefined,\n};\n\n// ─── Auth UI State Types ─────────────────────────────────────────────\n\nexport type ResendStatus = 'idle' | 'sending' | 'sent' | 'error';\n\nexport type MfaPageErrorType = 'expired' | 'no_methods' | 'generic';\n\nexport type UIFactorLevel = 'first' | 'second';\n\n/**\n * The ONE translation between the UI's factor vocabulary (`'first' | 'second'`, which selects the\n * page, its labels and its layout) and the wire vocabulary `AuthFactorLevel`, which every\n * authenticate-shaped request carries. They are different vocabularies on purpose — the UI has no\n * `IDENTIFICATION` page — so a UI level must be translated at the seam, never forwarded.\n *\n * Measured 2026-09-15: the passkey sign-in forwarded `'first'` verbatim into\n * `POST /auth/passkey/authenticate/verify`. The orchestrator's `=== FIRST` branch did not match it,\n * treated the attempt as a second factor, and the response it built failed the wire enum — `400\n * validation` on every passkey sign-in, and the same for passkey as an MFA second factor, which\n * forwarded `'second'`. The password and OTP paths never hit it because they write\n * `AuthFactorLevel.FIRST` / `.SECOND` by hand at their own sites; this function is where that\n * translation now lives once.\n */\nexport function authFactorLevelForUiLevel(level: UIFactorLevel): AuthFactorLevel {\n return level === 'second' ? AuthFactorLevel.SECOND : AuthFactorLevel.FIRST;\n}\n\n/**\n * How a username-less passkey sign-in asks the browser for a credential.\n *\n * The distinction is about who starts the prompt, and it decides how a failure is shown:\n *\n * - `CONDITIONAL` — passkey AUTOFILL. Started silently when the sign-in page renders; the browser offers\n * the person's passkeys in the email field's autofill list and the call waits until one is picked. It\n * may never resolve, is aborted when the page moves on, and a failure before a passkey is picked is\n * NOT an error the person caused — so nothing is shown for it.\n * - `MODAL` — the person pressed \"Sign in with a passkey\". The browser shows its account picker at once,\n * and every failure, cancellation included, is reported on the page.\n *\n * spec-cite: https://web.dev/articles/passkey-form-autofill — conditional UI is invoked with `mediation: 'conditional'`, \"the crucial flag that makes the WebAuthn API call conditional. It tells the browser to wait for user interaction.\"\n */\nexport enum PasskeySignInMediation {\n CONDITIONAL = 'conditional',\n MODAL = 'modal',\n}\n\n/**\n * A waiting passkey AUTOFILL request was stopped because its challenge was about to expire.\n *\n * Autofill waits for as long as the sign-in page stays open, but the server's challenge — and the\n * username-less session bound to it — lasts `expiresInSeconds`. Picking a passkey after that would fail\n * on a session that no longer exists, so the context stops the wait shortly before and throws THIS, and\n * the sign-in page starts a fresh request. Any other refusal of an autofill wait (the page moving on, the\n * button starting its own ceremony) is NOT this error, which is what stops the page restarting over a\n * ceremony the person began.\n */\nexport class PasskeyAutofillExpiredError extends Error {\n constructor() {\n super('Passkey autofill challenge expired before a passkey was picked');\n this.name = 'PasskeyAutofillExpiredError';\n }\n}\n\n/**\n * Thrown by a passkey AUTOFILL ceremony that stepped aside because a ceremony the person started\n * themselves (the passkey button, or a second-factor passkey step) is already open.\n *\n * Starting a WebAuthn request aborts any pending one, so an autofill whose options arrived after the\n * button opened its prompt would close the prompt the person is looking at. The autofill loop treats this\n * like any other refusal and stops; the page starts a fresh autofill once the person's ceremony ends.\n */\nexport class PasskeyAutofillSupersededError extends Error {\n constructor() {\n super('Passkey autofill stepped aside for a ceremony the person started');\n this.name = 'PasskeyAutofillSupersededError';\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useApplicationRoleTables.d.ts","sourceRoot":"","sources":["../../../../../src/core/security/useApplicationRoleTables.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAGnE,wBAAgB,wBAAwB,IAAI,qBAAqB,CAEhE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useApplicationRoleTables — the application's role tables (see `ApplicationRoleTablesContext`).
|
|
3
|
+
*
|
|
4
|
+
* Separated from the context module for React Fast Refresh compatibility.
|
|
5
|
+
*/
|
|
6
|
+
import { useContext } from 'react';
|
|
7
|
+
import { ApplicationRoleTablesContext } from './ApplicationRoleTablesContext.js';
|
|
8
|
+
export function useApplicationRoleTables() {
|
|
9
|
+
return useContext(ApplicationRoleTablesContext);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=useApplicationRoleTables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useApplicationRoleTables.js","sourceRoot":"","sources":["../../../../../src/core/security/useApplicationRoleTables.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEnC,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAE9E,MAAM,UAAU,wBAAwB;IACtC,OAAO,UAAU,CAAC,4BAA4B,CAAC,CAAC;AAClD,CAAC","sourcesContent":["/**\n * useApplicationRoleTables — the application's role tables (see `ApplicationRoleTablesContext`).\n *\n * Separated from the context module for React Fast Refresh compatibility.\n */\nimport { useContext } from 'react';\nimport type { ApplicationRoleTables } from '@wildo-ai/saas-models';\nimport { ApplicationRoleTablesContext } from './ApplicationRoleTablesContext';\n\nexport function useApplicationRoleTables(): ApplicationRoleTables {\n return useContext(ApplicationRoleTablesContext);\n}\n"]}
|