@iblai/iblai-js 2.31.0 → 2.32.0

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.
@@ -2,7 +2,7 @@ import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
3
  import React__default, { useState, useEffect, forwardRef, createElement as createElement$1, useLayoutEffect, createContext, useContext, useMemo, useReducer, useRef, useImperativeHandle, useCallback, isValidElement, Children, PureComponent, cloneElement, Component as Component$1, useDebugValue, Fragment as Fragment$2, useId as useId$2, lazy, Suspense } from 'react';
4
4
  import * as dataLayer from '@iblai/data-layer';
5
- import { useGetUserMetadataQuery, useGetUserMetadataEdxQuery, useGetUserProfileSummaryQuery, useUpdateUserMetadataMutation, useUpdateUserMetadataEdxMutation, useUploadProfileImageMutation, useResetPasswordMutation, useSelfRetireMutation, useCreateUserInstitutionMutation, useGetUserInstitutionsQuery, useCreateUserEducationMutation, useUpdateUserEducationMutation, useDeleteUserEducationMutation, useGetUserEducationQuery, useCreateUserCompanyMutation, useGetUserCompaniesQuery, useCreateUserExperienceMutation, useUpdateUserExperienceMutation, useDeleteUserExperienceMutation, useGetUserExperienceQuery, useGetUserResumeQuery, useCreateUserResumeMutation, useGetMySubscriptionsQuery, useGetItemSubscriptionQuery, useCancelSubscriptionMutation, useGetLearnerCourseOutlineQuery, getSections, findResumeBlock, flattenOutline, normalizeLearnerCompletionError, useGetLearnerDetailsQuery, useGetUserEnrolledCoursesQuery, useGetUserEnrolledProgramsQuery, useGetUserCatalogPathwaysQuery, useGetUsersAsAssertionsQuery, useGetUserEarnedSkillsQuery, useGetUserReportedSkillsQuery, useGetUserDesiredSkillsQuery, useCreateGlobalMemoryMutation, useUpdateGlobalMemoryMutation, useUpdateMentorMemoryMutation, useGetMemsearchStatusQuery, useGetUserMemorySettingsQuery, useUpdateUserMemorySettingsMutation, useGetGlobalMemoriesQuery, useGetAllMentorMemoriesQuery, useDeleteGlobalMemoryMutation, useDeleteMentorMemoryMutation, useUpdateArtifactMutation, useLazyGetArtifactVersionQuery, useLazyListArtifactVersionsQuery, useSetCurrentVersionMutation, useListArtifactVersionsQuery, useLazyGetArtifactQuery, useLazyListArtifactsQuery, useEditSessionMutation, useListArtifactsQuery, useLazyGetSessionIdQuery, useGetAiSearchMentorsQuery, useStarMentorMutation, useUnstarMentorMutation, useGetUserChatHistoryReportsQuery, USER_CHAT_HISTORY_REPORT_ACTIVE_STATES, useCreateUserChatHistoryReportMutation, useLazyGetDownloadReportFromURLQuery, useGetUserChatHistoryReportStatusQuery, userChatHistoryApiSlice, USER_CHAT_HISTORY_QUERY_KEYS, useGetUserChatHistoryQuery, useGetUserChatHistoryFilterQuery, useGetMentorsQuery, useGetUserChatHistorySessionQuery, useUserLlmUsageSummary, useUserLlmSpendOverTime, useUserLlmCostByModel, useUserLlmRecentActivity, USER_LLM_RECENT_ACTIVITY_PAGE_SIZE, useUserLlmTraceObservations, useInviteUserMutation, usePlatformInvitationsQuery, useCreateCatalogInvitationCourseBulkMutation, useGetCatalogInvitationsCourseQuery, useLazyPlatformUsersQuery, useLazyPlatformUserGroupsQuery, useGetPersonnalizedSearchQuery, useCreateCatalogInvitationProgramBulkMutation, useGetCatalogInvitationsProgramQuery, useGetVectorDocumentsQuery, useGetLlmsQuery, useUpdateUserRoleMutation, useUpdateUserStatusMutation, useUpdatePlatformUserRoleWithPoliciesMutation, usePlatformUsersQuery, useGetAccessibleUsersQuery, isPoliciesResponse, platformApiSlice, featureTags, useLazyGetRbacTeamsAccessListQuery, useCreateRbacTeamsAccessMutation, useGetRbacGroupsQuery, usePlatformUserGroupsQuery, useCreateRbacGroupMutation, useUpdateRbacGroupMutation, useDeleteRbacGroupMutation, useCreatePlatformUserGroupMutation, useUpdatePlatformUserGroupMutation, useDeletePlatformUserGroupMutation, useGetRbacGroupDetailsQuery, useGetPlatformUserGroupDetailsQuery, useGetRbacPermissionsMutation, useGetRbacRolesQuery, useCreateRbacRoleMutation, useUpdateRbacRoleMutation, useDeleteRbacRoleMutation, useGetRbacRoleDetailsQuery, useGetRbacActionsDefinitionQuery, useGetRbacResourceDiscoveryQuery, useGetRbacResourceListQuery, useGetRbacPoliciesQuery, useCreateRbacPolicyMutation, useUpdateRbacPolicyMutation, useDeleteRbacPolicyMutation, useGetRbacPolicyDetailsQuery, useGetWatchedGroupsQuery, useCreateWatchedGroupMutation, useUpdateWatchedGroupMutation, useDeleteWatchedGroupMutation, useAddWatchedUserMutation, useRemoveWatchedUserMutation, useAddWatcherMutation, useUpdateWatcherMutation, useDeleteWatcherMutation, useGetWatchedUsersQuery, useGetWatchersQuery, WATCHER_NOTIFICATION_EVENTS, WATCHER_NOTIFICATION_EVENT_LABELS, useGetApplicationFormsQuery, useGetApplicationFormDetailQuery, useCreateApplicationFormMutation, useUpdateApplicationFormMutation, useGetApplicationAdminDetailQuery, useInviteApplicationCandidateMutation, useLazyGetApplicationAttachmentFileQuery, useCreateApplicationWaiverMutation, useDeleteApplicationWaiverMutation, useSubmitApplicationOverrideMutation, useUpdateApplicationPlacementMutation, useDeleteApplicationCourseAssignmentMutation, useCreateApplicationNoteMutation, useUpdateApplicationNoteMutation, useDeleteApplicationNoteMutation, useTransitionApplicationMutation, useLinkApplicationCandidateMutation, useCreateApplicationPlacementsMutation, useGetCustomMentorsQuery, useCreateApplicationCourseAssignmentsMutation, useGetApplicationBlocksQuery, useDeleteApplicationBlockMutation, useGetApplicationsPipelineStatsQuery, useGetApplicationsPipelineQuery, useGetTenantMetadataQuery, useUpdateTenantMetadataMutation, useLazyGetTenantMetadataQuery, useDeleteApiKeyMutation, useGetApiKeyQuery, useGetApiKeyFieldPermissionsQuery, useUpdateApiKeyMutation, useGetApiKeysQuery, unwrapApiTokenList, useCreateApiKeyMutation, useCreateLLMCredentialMutation, useGetCredentialsSchemaQuery, useGetMaskedLLMCredentialsQuery, useDeleteIntegrationCredentialMutation, useDeleteCredentialMutation, useCreateIntegrationCredentialMutation, useGetIntegrationCredentialsSchemaQuery, useGetMaskedIntegrationCredentialsQuery, useGetAccountBillingInfoQuery, useUpdateAutoRechargeInfoMutation, useTriggerAutoRechargeMutation, useGetAgentSpendCapQuery, useGetTenantSpendCapQuery, useListAgentUserSpendCapsQuery, useUpsertAgentSpendCapMutation, useDeleteAgentSpendCapMutation, useUpsertTenantSpendCapMutation, useDeleteTenantSpendCapMutation, useUpsertUserSpendCapMutation, useDeleteUserSpendCapMutation, useGetLlmUsageMetricsQuery, useListAgentSpendCapsQuery, useGetCreditTransactionsQuery, useCreateStripeCustomerPortalMutation, useSetPlatformConfigurationsMutation, useGetPlatformConfigurationsQuery, useUpdatePlatformMembershipMutation, useGetPlatformMembershipQuery, VERCEL_SPA, useGetCustomDomainsQuery, useGetHostingProjectsQuery, useCreateCustomDomainMutation, useDeleteCustomDomainMutation, useCreateHostingProjectDomainMutation, useUpdateHostingDomainMutation, useDeleteHostingDomainMutation, useGetStudentMentorCreationStatusQuery, useSetStudentMentorCreationStatusMutation, coreApiSlice, recommendationPromptTypeEnum, useGetRecommendedPromptsListQuery, useCreateRecommendedPromptMutation, useUpdateRecommendedPromptMutation, useDeleteRecommendedPromptMutation, useLazyGetPublicPlatformImageAssetFileUrlQuery, useCreatePlatformImageAssetMutation, useGetProviderConfigQuery, useCreateProviderConfigMutation, useDeleteProviderConfigMutation, useGetExternalMappingQuery, useGetCredentialsListQuery, useCreateExternalMappingMutation, useDeleteExternalMappingMutation, useGetMemsearchConfigQuery, useUpdateMemsearchConfigMutation, useGetStripeConnectStatusQuery, useStartStripeConnectOnboardingMutation, useLazyGetStripeConnectDashboardQuery, useListPaywallsQuery, useListPricesQuery, useCreatePriceMutation, useUpdatePriceMutation, useDeletePriceMutation, useGetPaywallConfigQuery, useEnablePaywallMutation, useUpdatePaywallMutation, useGetMentorMemoriesListQuery, useGetMemoryCategoriesAdminQuery, useCreateMentorMemoryMutation, splitHostPortInput, validateHostPort, useCreateVirtualMachineNetworkPolicyMutation, useUpdateVirtualMachineNetworkPolicyMutation, VIRTUAL_MACHINE_MAX_POLICY_HOSTS, getVirtualMachineApiError, useDeleteVirtualMachineNetworkPolicyMutation, extractBoundMentorIds, useCreateVirtualMachineSecretMutation, useUpdateVirtualMachineSecretMutation, VIRTUAL_MACHINE_SECRET_VALUE_MIN_LENGTH, VIRTUAL_MACHINE_ENV_VAR_PATTERN, useDeleteVirtualMachineSecretMutation, useGetIntegrationCredentialsQuery, useListVirtualMachineNetworkPoliciesQuery, useListVirtualMachineSecretsQuery, getVirtualMachineErrorStatus, useLazyGetCourseMetaDataQuery, useLazyGetCourseCompletionOutlinesQuery, useLazyGetCourseEligibilityQuery, useLazyGetEdxSSOTokenQuery, useCreateCourseEnrollmentMutation, useCreateStripeCheckoutSessionMutation, useLazyGetCourseProgressQuery, useLazyGetCourseCompletionQuery, useUpdateExamAttemptMutation, useStartExamMutation, useLazyGetExamInfoQuery, useGetAgentSkillResourcesQuery, useCreateAgentSkillResourceMutation, useUpdateAgentSkillResourceMutation, useUploadAgentSkillResourceAssetMutation, useDeleteAgentSkillResourceMutation, useGetMentorSkillAssignmentsQuery, useGetAgentSkillsQuery, useCreateMentorSkillAssignmentMutation, useUpdateMentorSkillAssignmentMutation, useDeleteMentorSkillAssignmentMutation, useCreateAgentSkillMutation, useUpdateAgentSkillMutation, useDeleteAgentSkillMutation, filterSlashSkills, useGetMentorSkillAssignmentsInfiniteQuery, MENTOR_SKILL_ASSIGNMENTS_PAGE_SIZE, useUpdateUserProjectMutation, useGetTrainingDocumentsQuery, useLazyGetConnectedServiceAuthUrlQuery, useCreateUserProjectMutation, useDeleteUserProjectMutation, useGetUserProjectDetailsQuery, useEditTrainingDocumentMutation, useAddTrainingDocumentMutation, useLazyGetCredentialsQuery, useGetMentorSettingsQuery, useEditMentorMutation, useUploadLightLogoMutation, useUploadDarkLogoMutation, useUpdatePlatformInfoMutation, LOGO_ENDPOINTS, useCreateEvalDatasetMutation, useAddEvalDatasetItemsMutation, useUploadEvalDatasetCsvMutation, useDeleteEvalDatasetItemMutation, useListEvalDatasetItemsQuery, evalTotalPages, useListEvalDatasetsQuery, useGetUserProjectsQuery, useCreateSessionIdMutation, useGetMentorCategoriesQuery, useGetTenantChatPrivacyConfigQuery as useGetTenantChatPrivacyConfigQuery$1, useGetCallConfigurationsQuery, useCreateCallConfigurationMutation, useUpdateCallConfigurationMutation, chatPrivacyApiSlice, useDeleteMentorMutation, useForkMentorMutation, useGetToolsQuery, useLazyGetMCPServersQuery, useOauthFindMutation, useLazyStartOAuthFlowQuery, useCreateMCPServerMutation, usePartialUpdateMCPServerMutation, useCreateMCPServerConnectionMutation, usePatchMCPServerConnectionMutation, useGetConnectedServicesQuery, useGetMCPServersQuery, useGetMCPServerConnectionsQuery, useUpdateMCPServerMutation, useDeleteMCPServerMutation, useEditMentorJsonMutation, useDisconnectServiceMutation, useGetPromptCategoriesQuery, PRIVACY_ACTIONS, PRIVACY_ENTITY_TYPES, useGetVoicesQuery, useGetVoiceQuery, isBaseAgentMentor, useGetGradeResultQuery, useOverrideGradeResultMutation, useGetChatHistoryFilterQuery, useListGradeResultsQuery, useGetMentorGraderConfigurationQuery, useListGraderCriteriaQuery, useCreateMentorGraderConfigurationMutation, useUpdateMentorGraderConfigurationMutation, useCreateGraderCriterionMutation, useUpdateGraderCriterionMutation, useDeleteGraderCriterionMutation, useGetSpendCapStatusQuery, useGetMentorPublicSettingsQuery, useGetChatHistoryQuery, useGetMentorSummariesQuery, useGetConversationMemoriesQuery, useGetSupportTicketsQuery, useGetSupportTicketMessagesQuery, useCreateSupportTicketMessageMutation, usePatchSupportTicketMutation, useCloseSupportTicketMutation, useCreateLtiMentorMutation, useUpdateLtiMentorMutation, useGetLtiMentorsQuery, useDeleteLtiMentorMutation, useCreateLtiKeyMutation, useUpdateLtiKeyMutation, useDeleteLtiKeyMutation, useGetLtiKeysQuery, useCreateLtiToolMutation, useUpdateLtiToolMutation, useGetLtiToolsQuery, useGetPlatformInfoQuery, useCreatePromptMutation, useGetPromptsSearchQuery, useUpdatePromptMutation, useCreateRedirectTokenMutation, useGetShareableLinkQuery, useCreateShareableLinkMutation, useUpdateShareableLinkMutation, useCreateDisclaimerMutation, useUpdateDisclaimerMutation, useGetDisclaimersQuery, useUpdateRbacMentorAccessMutation, useGetRbacMentorAccessListQuery, useStartEvalRunMutation, useEvaluateEvalRunMutation, useGetEvalRunQuery, useDeleteEvalScoreMutation, useListEvalRunJudgesQuery, useCreateEvalScoreMutation, useDeleteEvalRunMutation, useExportEvalRunMutation, useListEvalRunsQuery, useLazyGetEvalRunQuery, evaluationsApiSlice, EVALUATIONS_TAGS, useGetPersonnalizedMentorsQuery, useCreateCallCredentialsMutation, useGetGuidedPromptsQuery, useUpdateChatSessionSharedMutation, useUpdateMessageFeedbackMutation, useLazyGetPromptsSearchQuery, useLazyGetGuidedPromptsQuery, useGetPublicMentorsQuery, useGetPeriodicAgentsQuery, useGetPeriodicAgentLogsListQuery, useCreatePeriodicAgentMutation, useDeletePeriodicAgentMutation, useCreateMemoryCategoryMutation, useUpdateMemoryCategoryMutation, useDeleteMemoryCategoryMutation, useDeletePromptMutation, useDeleteTrainingDocumentMutation, useGetTrainingDocumentRetrainScheduleQuery, useCreateTrainingDocumentRetrainScheduleMutation, useGetDisclaimerAgreementsQuery } from '@iblai/data-layer';
5
+ import { useGetUserMetadataQuery, useGetUserMetadataEdxQuery, useGetUserProfileSummaryQuery, useUpdateUserMetadataMutation, useUpdateUserMetadataEdxMutation, useUploadProfileImageMutation, useResetPasswordMutation, useSelfRetireMutation, useCreateUserInstitutionMutation, useGetUserInstitutionsQuery, useCreateUserEducationMutation, useUpdateUserEducationMutation, useDeleteUserEducationMutation, useGetUserEducationQuery, useCreateUserCompanyMutation, useGetUserCompaniesQuery, useCreateUserExperienceMutation, useUpdateUserExperienceMutation, useDeleteUserExperienceMutation, useGetUserExperienceQuery, useGetUserResumeQuery, useCreateUserResumeMutation, useGetMySubscriptionsQuery, useGetItemSubscriptionQuery, useCancelSubscriptionMutation, useGetLearnerCourseOutlineQuery, getSections, findResumeBlock, flattenOutline, normalizeLearnerCompletionError, useGetLearnerDetailsQuery, useGetUserEnrolledCoursesQuery, useGetUserEnrolledProgramsQuery, useGetUserCatalogPathwaysQuery, useGetUsersAsAssertionsQuery, useGetUserEarnedSkillsQuery, useGetUserReportedSkillsQuery, useGetUserDesiredSkillsQuery, useCreateGlobalMemoryMutation, useUpdateGlobalMemoryMutation, useUpdateMentorMemoryMutation, useGetMemsearchStatusQuery, useGetUserMemorySettingsQuery, useUpdateUserMemorySettingsMutation, useGetGlobalMemoriesQuery, useGetAllMentorMemoriesQuery, useDeleteGlobalMemoryMutation, useDeleteMentorMemoryMutation, useUpdateArtifactMutation, useLazyGetArtifactVersionQuery, useLazyListArtifactVersionsQuery, useSetCurrentVersionMutation, useListArtifactVersionsQuery, useLazyGetArtifactQuery, useLazyListArtifactsQuery, useEditSessionMutation, useListArtifactsQuery, useLazyGetSessionIdQuery, useGetAiSearchMentorsQuery, useStarMentorMutation, useUnstarMentorMutation, useGetUserChatHistoryReportsQuery, USER_CHAT_HISTORY_REPORT_ACTIVE_STATES, useCreateUserChatHistoryReportMutation, useLazyGetDownloadReportFromURLQuery, useGetUserChatHistoryReportStatusQuery, userChatHistoryApiSlice, USER_CHAT_HISTORY_QUERY_KEYS, useGetUserChatHistoryQuery, useGetUserChatHistoryFilterQuery, useGetMentorsQuery, useGetUserChatHistorySessionQuery, useUserLlmUsageSummary, useUserLlmSpendOverTime, useUserLlmCostByModel, useUserLlmRecentActivity, USER_LLM_RECENT_ACTIVITY_PAGE_SIZE, useUserLlmTraceObservations, useInviteUserMutation, usePlatformInvitationsQuery, useCreateCatalogInvitationCourseBulkMutation, useGetCatalogInvitationsCourseQuery, useLazyPlatformUsersQuery, useLazyPlatformUserGroupsQuery, useGetPersonnalizedSearchQuery, useCreateCatalogInvitationProgramBulkMutation, useGetCatalogInvitationsProgramQuery, useGetVectorDocumentsQuery, useGetLlmsQuery, useUpdateUserRoleMutation, useUpdateUserStatusMutation, useUpdatePlatformUserRoleWithPoliciesMutation, usePlatformUsersQuery, useGetAccessibleUsersQuery, isPoliciesResponse, platformApiSlice, featureTags, useLazyGetRbacTeamsAccessListQuery, useCreateRbacTeamsAccessMutation, useGetRbacGroupsQuery, usePlatformUserGroupsQuery, useCreateRbacGroupMutation, useUpdateRbacGroupMutation, useDeleteRbacGroupMutation, useCreatePlatformUserGroupMutation, useUpdatePlatformUserGroupMutation, useDeletePlatformUserGroupMutation, useGetRbacGroupDetailsQuery, useGetPlatformUserGroupDetailsQuery, useGetRbacPermissionsMutation, useGetRbacRolesQuery, useCreateRbacRoleMutation, useUpdateRbacRoleMutation, useDeleteRbacRoleMutation, useGetRbacRoleDetailsQuery, useGetRbacActionsDefinitionQuery, useGetRbacResourceDiscoveryQuery, useGetRbacResourceListQuery, useGetRbacPoliciesQuery, useCreateRbacPolicyMutation, useUpdateRbacPolicyMutation, useDeleteRbacPolicyMutation, useGetRbacPolicyDetailsQuery, useGetWatchedGroupsQuery, useCreateWatchedGroupMutation, useUpdateWatchedGroupMutation, useDeleteWatchedGroupMutation, useAddWatchedUserMutation, useRemoveWatchedUserMutation, useAddWatcherMutation, useUpdateWatcherMutation, useDeleteWatcherMutation, useGetWatchedUsersQuery, useGetWatchersQuery, WATCHER_NOTIFICATION_EVENTS, WATCHER_NOTIFICATION_EVENT_LABELS, useGetApplicationFormsQuery, useGetApplicationFormDetailQuery, useCreateApplicationFormMutation, useUpdateApplicationFormMutation, useGetApplicationAdminDetailQuery, useInviteApplicationCandidateMutation, useLazyGetApplicationAttachmentFileQuery, useCreateApplicationWaiverMutation, useDeleteApplicationWaiverMutation, useSubmitApplicationOverrideMutation, useUpdateApplicationPlacementMutation, useDeleteApplicationCourseAssignmentMutation, useCreateApplicationNoteMutation, useUpdateApplicationNoteMutation, useDeleteApplicationNoteMutation, useTransitionApplicationMutation, useLinkApplicationCandidateMutation, useCreateApplicationPlacementsMutation, useGetCustomMentorsQuery, useCreateApplicationCourseAssignmentsMutation, useGetApplicationBlocksQuery, useDeleteApplicationBlockMutation, useGetApplicationsPipelineStatsQuery, useGetApplicationsPipelineQuery, useGetTenantMetadataQuery, useUpdateTenantMetadataMutation, useLazyGetTenantMetadataQuery, useDeleteApiKeyMutation, useGetApiKeyQuery, useGetApiKeyFieldPermissionsQuery, useUpdateApiKeyMutation, useGetApiKeysQuery, unwrapApiTokenList, useCreateApiKeyMutation, useCreateLLMCredentialMutation, useGetCredentialsSchemaQuery, useGetMaskedLLMCredentialsQuery, useDeleteIntegrationCredentialMutation, useDeleteCredentialMutation, useCreateIntegrationCredentialMutation, useGetIntegrationCredentialsSchemaQuery, useGetMaskedIntegrationCredentialsQuery, useGetAccountBillingInfoQuery, useUpdateAutoRechargeInfoMutation, useTriggerAutoRechargeMutation, useGetAgentSpendCapQuery, useGetTenantSpendCapQuery, useListAgentUserSpendCapsQuery, useUpsertAgentSpendCapMutation, useDeleteAgentSpendCapMutation, useUpsertTenantSpendCapMutation, useDeleteTenantSpendCapMutation, useUpsertUserSpendCapMutation, useDeleteUserSpendCapMutation, useGetLlmUsageMetricsQuery, useListAgentSpendCapsQuery, useGetCreditTransactionsQuery, useCreateStripeCustomerPortalMutation, useSetPlatformConfigurationsMutation, useGetPlatformConfigurationsQuery, useUpdatePlatformMembershipMutation, useGetPlatformMembershipQuery, VERCEL_SPA, useGetCustomDomainsQuery, useGetHostingProjectsQuery, useCreateCustomDomainMutation, useDeleteCustomDomainMutation, useCreateHostingProjectDomainMutation, useUpdateHostingDomainMutation, useDeleteHostingDomainMutation, useGetStudentMentorCreationStatusQuery, useSetStudentMentorCreationStatusMutation, coreApiSlice, recommendationPromptTypeEnum, useGetRecommendedPromptsListQuery, useCreateRecommendedPromptMutation, useUpdateRecommendedPromptMutation, useDeleteRecommendedPromptMutation, useLazyGetPublicPlatformImageAssetFileUrlQuery, useCreatePlatformImageAssetMutation, useGetProviderConfigQuery, useCreateProviderConfigMutation, useDeleteProviderConfigMutation, useGetExternalMappingQuery, useGetCredentialsListQuery, useCreateExternalMappingMutation, useDeleteExternalMappingMutation, useGetMemsearchConfigQuery, useUpdateMemsearchConfigMutation, useGetStripeConnectStatusQuery, useStartStripeConnectOnboardingMutation, useLazyGetStripeConnectDashboardQuery, useListPaywallsQuery, useListPricesQuery, useCreatePriceMutation, useUpdatePriceMutation, useDeletePriceMutation, useGetPaywallConfigQuery, useEnablePaywallMutation, useUpdatePaywallMutation, useGetMentorMemoriesListQuery, useGetMemoryCategoriesAdminQuery, useCreateMentorMemoryMutation, splitHostPortInput, validateHostPort, useCreateVirtualMachineNetworkPolicyMutation, useUpdateVirtualMachineNetworkPolicyMutation, VIRTUAL_MACHINE_MAX_POLICY_HOSTS, getVirtualMachineApiError, useDeleteVirtualMachineNetworkPolicyMutation, extractBoundMentorIds, useCreateVirtualMachineSecretMutation, useUpdateVirtualMachineSecretMutation, VIRTUAL_MACHINE_SECRET_VALUE_MIN_LENGTH, VIRTUAL_MACHINE_ENV_VAR_PATTERN, useDeleteVirtualMachineSecretMutation, useGetIntegrationCredentialsQuery, useListVirtualMachineNetworkPoliciesQuery, useListVirtualMachineSecretsQuery, getVirtualMachineErrorStatus, useLazyGetCourseMetaDataQuery, useLazyGetCourseCompletionOutlinesQuery, useLazyGetCourseEligibilityQuery, useLazyGetEdxSSOTokenQuery, useCreateCourseEnrollmentMutation, useCreateStripeCheckoutSessionMutation, useLazyGetCourseProgressQuery, useLazyGetCourseCompletionQuery, useUpdateExamAttemptMutation, useStartExamMutation, useLazyGetExamInfoQuery, useGetAgentSkillResourcesQuery, useCreateAgentSkillResourceMutation, useUpdateAgentSkillResourceMutation, useUploadAgentSkillResourceAssetMutation, useDeleteAgentSkillResourceMutation, useGetMentorSkillAssignmentsQuery, useGetAgentSkillsQuery, useCreateMentorSkillAssignmentMutation, useUpdateMentorSkillAssignmentMutation, useDeleteMentorSkillAssignmentMutation, useCreateAgentSkillMutation, useUpdateAgentSkillMutation, useDeleteAgentSkillMutation, filterSlashSkills, useGetMentorSkillAssignmentsInfiniteQuery, MENTOR_SKILL_ASSIGNMENTS_PAGE_SIZE, useUpdateUserProjectMutation, useGetTrainingDocumentsQuery, useLazyGetConnectedServiceAuthUrlQuery, useCreateUserProjectMutation, useDeleteUserProjectMutation, useGetUserProjectDetailsQuery, useEditTrainingDocumentMutation, useAddTrainingDocumentMutation, useLazyGetCredentialsQuery, useGetMentorSettingsQuery, useEditMentorMutation, useUploadLightLogoMutation, useUploadDarkLogoMutation, useUpdatePlatformInfoMutation, LOGO_ENDPOINTS, useCreateEvalDatasetMutation, useAddEvalDatasetItemsMutation, useUploadEvalDatasetCsvMutation, useDeleteEvalDatasetItemMutation, useListEvalDatasetItemsQuery, evalTotalPages, useListEvalDatasetsQuery, useGetUserProjectsQuery, useCreateSessionIdMutation, useGetMentorCategoriesQuery, useGetCallConfigurationsQuery, useCreateCallConfigurationMutation, useUpdateCallConfigurationMutation, useDeleteMentorMutation, useForkMentorMutation, useGetToolsQuery, useLazyGetMCPServersQuery, useOauthFindMutation, useLazyStartOAuthFlowQuery, useCreateMCPServerMutation, usePartialUpdateMCPServerMutation, useCreateMCPServerConnectionMutation, usePatchMCPServerConnectionMutation, useGetConnectedServicesQuery, useGetMCPServersQuery, useGetMCPServerConnectionsQuery, useUpdateMCPServerMutation, useDeleteMCPServerMutation, useEditMentorJsonMutation, useDisconnectServiceMutation, useGetPromptCategoriesQuery, PRIVACY_ACTIONS, PRIVACY_ENTITY_TYPES, mentorApiSlice, useGetVoicesQuery, useGetVoiceQuery, isBaseAgentMentor, useGetGradeResultQuery, useOverrideGradeResultMutation, useGetChatHistoryFilterQuery, useListGradeResultsQuery, useGetMentorGraderConfigurationQuery, useListGraderCriteriaQuery, useCreateMentorGraderConfigurationMutation, useUpdateMentorGraderConfigurationMutation, useCreateGraderCriterionMutation, useUpdateGraderCriterionMutation, useDeleteGraderCriterionMutation, useGetSpendCapStatusQuery, useGetMentorPublicSettingsQuery, useGetChatHistoryQuery, useGetMentorSummariesQuery, useGetConversationMemoriesQuery, useGetSupportTicketsQuery, useGetSupportTicketMessagesQuery, useCreateSupportTicketMessageMutation, usePatchSupportTicketMutation, useCloseSupportTicketMutation, useCreateLtiMentorMutation, useUpdateLtiMentorMutation, useGetLtiMentorsQuery, useDeleteLtiMentorMutation, useCreateLtiKeyMutation, useUpdateLtiKeyMutation, useDeleteLtiKeyMutation, useGetLtiKeysQuery, useCreateLtiToolMutation, useUpdateLtiToolMutation, useGetLtiToolsQuery, useGetPlatformInfoQuery, useCreatePromptMutation, useGetPromptsSearchQuery, useUpdatePromptMutation, useCreateRedirectTokenMutation, useGetShareableLinkQuery, useCreateShareableLinkMutation, useUpdateShareableLinkMutation, useCreateDisclaimerMutation, useUpdateDisclaimerMutation, useGetDisclaimersQuery, useUpdateRbacMentorAccessMutation, useGetRbacMentorAccessListQuery, useStartEvalRunMutation, useEvaluateEvalRunMutation, useGetEvalRunQuery, useDeleteEvalScoreMutation, useListEvalRunJudgesQuery, useCreateEvalScoreMutation, useDeleteEvalRunMutation, useExportEvalRunMutation, useListEvalRunsQuery, useLazyGetEvalRunQuery, evaluationsApiSlice, EVALUATIONS_TAGS, useGetPersonnalizedMentorsQuery, useCreateCallCredentialsMutation, useGetGuidedPromptsQuery, useUpdateChatSessionSharedMutation, useUpdateMessageFeedbackMutation, useLazyGetPromptsSearchQuery, useLazyGetGuidedPromptsQuery, useGetPublicMentorsQuery, useGetPeriodicAgentsQuery, useGetPeriodicAgentLogsListQuery, useCreatePeriodicAgentMutation, useDeletePeriodicAgentMutation, useCreateMemoryCategoryMutation, useUpdateMemoryCategoryMutation, useDeleteMemoryCategoryMutation, useDeletePromptMutation, useDeleteTrainingDocumentMutation, useGetTrainingDocumentRetrainScheduleQuery, useCreateTrainingDocumentRetrainScheduleMutation, useGetDisclaimerAgreementsQuery } from '@iblai/data-layer';
6
6
  import { removeAuthItem, setAuthItem, isTauriEmbeddedLLMHost, selectRbacPermissions, useCurrentTenant, canViewOtherUsersChatHistory, isPureWatcher, getInitials, useTenantMetadata, useUsername, selectStreaming, isLoggedIn, TOOL_NAME_MAP, WRITE_TODOS_TOOL, WithPermissions, canWriteField, useStripeUpgrade, openExternalUrl, CHAT_AREA_SIZE, isAlphaNumeric32, checkRbacPermission, selectNumberOfActiveChatMessages, TOOLS, hasRemoteAiConfig, isSafariBrowser, useShowAttachment, useShowVoiceCall, useShowVoiceRecorder, useMentorSettings, selectShowingSharedChat, useShowFreeTrialDialog, useEmbedMode, chatInputSliceSelectors, useResponsive, useAccessingPublicRoute, useVisitingTenant, useModelFileUploadCapabilities, useChatFileUpload, useVoiceChat, selectAttachedFiles, MENTOR_CHAT_DOCUMENTS_EXTENSIONS, removeFile, chatInputSliceActions, chatActions, WithFormPermissions, useTenantContext, TimeTracker, advancedTabsProperties, defaultSessionIds, pickWritableFields, ANONYMOUS_USERNAME as ANONYMOUS_USERNAME$3, redirectToAuthSpaJoinTenant, selectActiveTab, useAxdToken, useWelcomeMessage, markdownToPlainText, useCachedSessionId, use402ErrorCheck, use401TokenRefresh, selectTokenEnabled, selectToken, useServiceWorker, useUserAgreement, useAdvancedChat, sendMessageToParentWebsite, useMentorTools, useFileDragDrop, eventBus, RemoteEvents, selectEnableChatActionsPopup, advancedTabs, isInIframe, getAuthSpaJoinUrl, addMessage, clearFiles, MENTOR_VISIBILITY } from '@iblai/web-utils';
7
7
  import { useDispatch, useSelector } from 'react-redux';
8
8
  import { toast } from 'sonner';
@@ -97832,33 +97832,33 @@ var chatInputFormVoiceChatButton$3 = {
97832
97832
  voiceRecord: "Voice Record"
97833
97833
  };
97834
97834
  var chatPrivacyChatPrivacyToggle$3 = {
97835
- toastPrivateModeOff: "Private Mode is off.",
97836
- toastCouldNotTurnOff: "Could not turn Private Mode off. Please try again.",
97837
- toastPrivateModeOnNoHistory: "Private Mode is on. This chat won't be saved to history or used for memory.",
97838
- toastCouldNotEnable: "Could not enable Private Mode. Please try again.",
97839
- toastPrivateModeOnRemovedHistory: "Private Mode is on. This conversation has been removed from your history.",
97840
- toastFailedToEnable: "Failed to enable Private Mode. Please try again.",
97835
+ toastPrivateModeOff: "Incognito is off.",
97836
+ toastCouldNotTurnOff: "Could not turn Incognito off. Please try again.",
97837
+ toastPrivateModeOnNoHistory: "Incognito is on. This chat won't be saved to history or used for memory.",
97838
+ toastCouldNotEnable: "Could not enable Incognito. Please try again.",
97839
+ toastPrivateModeOnRemovedHistory: "Incognito is on. This conversation has been removed from your history.",
97840
+ toastFailedToEnable: "Failed to enable Incognito. Please try again.",
97841
97841
  working: "Working…",
97842
- ariaLockedByAgent: "Private Mode is locked on by this agent. No chat history is recorded.",
97843
- ariaPrivateOnForConversation: "Private Mode is on for this conversation. This chat isn't saved or used for memory.",
97844
- ariaTurnOffPrivateMode: "Turn off Private Mode for this chat.",
97845
- ariaTurnOnMidConversation: "Turn on Private Mode for this conversation. This cannot be undone.",
97846
- ariaTurnOnEmpty: "Turn on Private Mode. This chat won't be saved to history or used for memory.",
97847
- tooltipLockedByMentor: "This agent always runs in Private Mode — no chat history or memory is kept for conversations with it.",
97848
- tooltipLockedByTenant: "Your organization has Private Mode enabled by default — no chat history or memory is kept.",
97849
- tooltipLockedGeneric: "Private Mode is locked on — no chat history or memory is kept.",
97850
- tooltipPrivateOnPostSend: "Private Mode is on for this conversation — this chat isn't saved or used for memory. Start a new chat to leave Private Mode.",
97851
- tooltipTurnOff: "Turn off Private Mode — your next chat will be saved to history again.",
97852
- tooltipTurnOnMidConversation: "Turn on Private Mode for the rest of this conversation. Once on, you can't turn it off — start a new chat to resume saving history.",
97853
- tooltipTurnOnEmpty: "Turn on Private Mode — this chat won't be saved to history or used for memory.",
97854
- privateMode: "Private Mode",
97855
- dialogTitle: "Enable Private Mode for this chat?",
97842
+ ariaLockedByAgent: "Incognito is locked on by this agent. No chat history is recorded.",
97843
+ ariaPrivateOnForConversation: "Incognito is on for this conversation. This chat isn't saved or used for memory.",
97844
+ ariaTurnOffPrivateMode: "Turn off Incognito for this chat.",
97845
+ ariaTurnOnMidConversation: "Turn on Incognito for this conversation. This cannot be undone.",
97846
+ ariaTurnOnEmpty: "Turn on Incognito. This chat won't be saved to history or used for memory.",
97847
+ tooltipLockedByMentor: "This agent always runs in Incognito — no chat history or memory is kept for conversations with it.",
97848
+ tooltipLockedByTenant: "Your organization has Incognito enabled by default — no chat history or memory is kept.",
97849
+ tooltipLockedGeneric: "Incognito is locked on — no chat history or memory is kept.",
97850
+ tooltipPrivateOnPostSend: "Incognito is on for this conversation — this chat isn't saved or used for memory. Start a new chat to leave Incognito.",
97851
+ tooltipTurnOff: "Turn off Incognito — your next chat will be saved to history again.",
97852
+ tooltipTurnOnMidConversation: "Turn on Incognito for the rest of this conversation. Once on, you can't turn it off — start a new chat to resume saving history.",
97853
+ tooltipTurnOnEmpty: "Turn on Incognito — this chat won't be saved to history or used for memory.",
97854
+ privateMode: "Incognito",
97855
+ dialogTitle: "Enable Incognito for this chat?",
97856
97856
  dialogDescription: "This conversation will be removed from your history and the assistant will stop using earlier turns from it.",
97857
- dialogDescriptionBold: "Once on, you can't turn Private Mode off for this chat",
97857
+ dialogDescriptionBold: "Once on, you can't turn Incognito off for this chat",
97858
97858
  dialogDescriptionSuffix: "start a new conversation if you want history saved again.",
97859
97859
  cancel: "Cancel",
97860
97860
  enabling: "Enabling…",
97861
- enablePrivateMode: "Enable Private Mode"
97861
+ enablePrivateMode: "Enable Incognito"
97862
97862
  };
97863
97863
  var chatStopStreamingButton$3 = {
97864
97864
  stopStreaming: "Stop streaming"
@@ -99743,7 +99743,7 @@ var pipChat$3 = {
99743
99743
  var privacyTabLabels$3 = {
99744
99744
  header: {
99745
99745
  title: "Privacy",
99746
- description: "Detect and filter personally identifiable information from chat messages."
99746
+ description: "Control what personal information the agent sees and how Incognito works for its conversations."
99747
99747
  },
99748
99748
  capability: {
99749
99749
  title: "PII filtering",
@@ -99800,6 +99800,29 @@ var privacyTabLabels$3 = {
99800
99800
  tooltip: "Scrub PII from AI-generated responses. May add slight latency to streamed responses."
99801
99801
  }
99802
99802
  },
99803
+ subTabs: {
99804
+ piiFiltering: "PII Filtering",
99805
+ incognito: "Incognito"
99806
+ },
99807
+ incognito: {
99808
+ description: "Incognito keeps a conversation out of chat history and memory. Choose how it works for this agent.",
99809
+ groupAriaLabel: "Incognito policy",
99810
+ options: {
99811
+ users: {
99812
+ title: "Users Decide",
99813
+ description: "Users can turn Incognito on for any conversation. Otherwise, their chats are saved to history as usual."
99814
+ },
99815
+ always: {
99816
+ title: "Always Incognito",
99817
+ description: "Every conversation with this agent is incognito. Nothing is saved to chat history or memory — for anyone."
99818
+ },
99819
+ never: {
99820
+ title: "Never Incognito",
99821
+ description: "Incognito isn't available for this agent. Every conversation is saved to chat history; users who normally keep their chats incognito are saved anonymously instead."
99822
+ }
99823
+ }
99824
+ },
99825
+ noAccess: "You don't have permission to view this agent's privacy settings.",
99803
99826
  toasts: {
99804
99827
  updateSuccess: "Privacy settings updated",
99805
99828
  updateError: "Failed to update privacy settings"
@@ -99961,16 +99984,16 @@ var profileCatalogInviteModal$3 = {
99961
99984
  sendInvitationsFailed: "Failed to send invitations. Please try again."
99962
99985
  };
99963
99986
  var profileChatPrivacyTab$3 = {
99964
- sectionHeading: "Default Private Mode",
99965
- sectionDescription: "Choose how conversations with AI agents are recorded by default. You can switch any individual chat into Private Mode from the chat header — and an agent or your organization can override this for specific conversations.",
99987
+ sectionHeading: "Default Incognito Setting",
99988
+ sectionDescription: "Choose how conversations with AI agents are recorded by default. You can switch any individual chat into Incognito from the chat header — and an agent or your organization can override this for specific conversations.",
99966
99989
  modeNormalLabel: "Normal",
99967
99990
  modeNormalDescription: "Conversations are saved to your history and linked to your account. Agents use prior turns in the same conversation for context.",
99968
99991
  modeAnonymizedLabel: "Anonymized",
99969
99992
  modeAnonymizedDescription: "Conversations are saved for AI context but stripped of identifying account info. Agents still use prior turns in the same conversation.",
99970
- modeDisabledLabel: "Disabled",
99993
+ modeDisabledLabel: "Incognito",
99971
99994
  modeDisabledDescription: "Nothing is recorded. Every message is a single-turn Q&A — agents can't reference earlier messages, even within the same conversation.",
99972
- toastUpdated: "Default Private Mode updated",
99973
- toastFailed: "Failed to update default Private Mode"
99995
+ toastUpdated: "Default Incognito Setting updated",
99996
+ toastFailed: "Failed to update default Incognito setting"
99974
99997
  };
99975
99998
  var profileCsvEditor$3 = {
99976
99999
  title: "Edit CSV Data",
@@ -100000,7 +100023,7 @@ var profileIndex$3 = {
100000
100023
  descResume: "Upload and preview your most recent resume.",
100001
100024
  descPurchases: "View and manage your subscriptions and purchases.",
100002
100025
  descMemory: "Manage what the AI remembers about you.",
100003
- descPrivacy: "Set your default Private Mode and review what each option does to your conversations with AI agents.",
100026
+ descPrivacy: "Set your default Incognito setting and review what each option does to your conversations with AI agents.",
100004
100027
  descChatHistory: "Review and export your conversations with AI agents.",
100005
100028
  descSecurity: "Update your security settings and password.",
100006
100029
  descAdvanced: "Manage your advanced settings.",
@@ -100048,7 +100071,7 @@ var profileIndex$3 = {
100048
100071
  descExperiencePreview: "Professional experience.",
100049
100072
  descPurchasesPreview: "Subscriptions and purchases.",
100050
100073
  descMemoryPreview: "What the AI remembers.",
100051
- descPrivacyPreview: "Private Mode and what each option does for conversations with AI agents.",
100074
+ descPrivacyPreview: "Incognito and what each option does for conversations with AI agents.",
100052
100075
  descChatHistoryPreview: "Conversations with AI agents.",
100053
100076
  ariaAddEducation: "Add education",
100054
100077
  ariaAddExperience: "Add experience",
@@ -100611,7 +100634,7 @@ var settingsTabLabels$3 = {
100611
100634
  tooltip: "Feature this agent to highlight it in listings."
100612
100635
  },
100613
100636
  showExploreMentors: {
100614
- label: "Show additional agents",
100637
+ label: "Show Additional Agents",
100615
100638
  tooltip: "Shows the additional agents section on this agent's welcome screen."
100616
100639
  },
100617
100640
  showAttachment: {
@@ -100627,13 +100650,13 @@ var settingsTabLabels$3 = {
100627
100650
  tooltip: "Lets people start a live voice call with the agent. Each surface has its own switch: In-app chat covers conversations hosted in the app, Embed widget covers the widget on your own site."
100628
100651
  },
100629
100652
  embedShowAttachment: {
100630
- label: "Show Attachment (embed widget)"
100653
+ label: "Show Attachment (Embed Widget)"
100631
100654
  },
100632
100655
  embedShowVoiceRecord: {
100633
- label: "Show Voice Record (embed widget)"
100656
+ label: "Show Voice Record (Embed Widget)"
100634
100657
  },
100635
100658
  embedShowVoiceCall: {
100636
- label: "Show Voice Call (embed widget)"
100659
+ label: "Show Voice Call (Embed Widget)"
100637
100660
  },
100638
100661
  allowCopies: {
100639
100662
  label: "Allow Copies",
@@ -100650,19 +100673,15 @@ var settingsTabLabels$3 = {
100650
100673
  removeAriaLabel: "Remove image"
100651
100674
  },
100652
100675
  enhancedDocRetrieval: {
100653
- label: "Enhanced document retrieval",
100676
+ label: "Enhanced Document Retrieval",
100654
100677
  tooltip: "Run multiple search queries per question to pull in more relevant documents. This setting has one value, so it applies to both in-app chat and the embed widget."
100655
100678
  },
100656
100679
  promptCaching: {
100657
- label: "Prompt caching",
100680
+ label: "Prompt Caching",
100658
100681
  tooltip: "Cache repeated prompt context to lower latency and cost on long conversations. This setting has one value, so it applies to both in-app chat and the embed widget."
100659
100682
  },
100660
- privateMode: {
100661
- label: "Enable private mode",
100662
- tooltip: "When on, every conversation with this agent runs in private mode — no chat history or memory is stored for any user. Use this for sensitive or compliance-bound deployments. This setting has one value, so it applies to both in-app chat and the embed widget."
100663
- },
100664
100683
  smartDocRetrieval: {
100665
- label: "Smart document retrieval",
100684
+ label: "Smart Document Retrieval",
100666
100685
  tooltip: "The agent fetches documents only when it needs them, instead of searching the knowledge base on every turn. This setting has one value, so it applies to both in-app chat and the embed widget."
100667
100686
  }
100668
100687
  },
@@ -100710,14 +100729,14 @@ var settingsTabLabels$3 = {
100710
100729
  capabilities: "Capabilities"
100711
100730
  },
100712
100731
  sections: {
100713
- chatExperience: "Chat experience",
100732
+ chatExperience: "Chat Experience",
100714
100733
  advanced: "Advanced",
100715
100734
  perSurface: "Surface Capabilities",
100716
100735
  globalSettings: "Global Capabilities"
100717
100736
  },
100718
100737
  surfaces: {
100719
- inAppChat: "In-app chat",
100720
- embedWidget: "Embed widget"
100738
+ inAppChat: "In-App Chat",
100739
+ embedWidget: "Embed Widget"
100721
100740
  },
100722
100741
  notes: {
100723
100742
  perSurface: "Set independently for in-app chat and the embed widget.",
@@ -101357,6 +101376,7 @@ var tabsPoliciestab$3 = {
101357
101376
  browseResourcesLabel: "Browse resources"
101358
101377
  };
101359
101378
  var tabsPrivacyTab$3 = {
101379
+ subTabsAriaLabel: "Privacy sub-categories",
101360
101380
  moreInfo: "More info",
101361
101381
  outputFilterAriaLabelEnabled: "Output filter enabled",
101362
101382
  outputFilterAriaLabelDisabled: "Output filter disabled"
@@ -101445,7 +101465,6 @@ var tabsSettingsTab$3 = {
101445
101465
  settingsSubCategoriesAriaLabel: "Settings sub-categories",
101446
101466
  enhancedDocRetrievalTooltipAriaLabel: "More info about enhanced document retrieval",
101447
101467
  promptCachingTooltipAriaLabel: "More info about prompt caching",
101448
- privateModeTooltipAriaLabel: "More info about enable private mode",
101449
101468
  smartDocRetrievalTooltipAriaLabel: "More info about smart document retrieval",
101450
101469
  toggleAriaLabel: "{label} {state}"
101451
101470
  };
@@ -105703,33 +105722,33 @@ var chatInputFormVoiceChatButton$2 = {
105703
105722
  voiceRecord: "Enregistrement vocal"
105704
105723
  };
105705
105724
  var chatPrivacyChatPrivacyToggle$2 = {
105706
- toastPrivateModeOff: "Le mode privé est désactivé.",
105707
- toastCouldNotTurnOff: "Impossible de désactiver le mode privé. Veuillez réessayer.",
105708
- toastPrivateModeOnNoHistory: "Le mode privé est activé. Cette conversation ne sera pas enregistrée dans l'historique ni utilisée pour la mémoire.",
105709
- toastCouldNotEnable: "Impossible d'activer le mode privé. Veuillez réessayer.",
105710
- toastPrivateModeOnRemovedHistory: "Le mode privé est activé. Cette conversation a été supprimée de votre historique.",
105711
- toastFailedToEnable: "Échec de l'activation du mode privé. Veuillez réessayer.",
105725
+ toastPrivateModeOff: "Le mode incognito est désactivé.",
105726
+ toastCouldNotTurnOff: "Impossible de désactiver le mode incognito. Veuillez réessayer.",
105727
+ toastPrivateModeOnNoHistory: "Le mode incognito est activé. Cette conversation ne sera pas enregistrée dans l'historique ni utilisée pour la mémoire.",
105728
+ toastCouldNotEnable: "Impossible d'activer le mode incognito. Veuillez réessayer.",
105729
+ toastPrivateModeOnRemovedHistory: "Le mode incognito est activé. Cette conversation a été supprimée de votre historique.",
105730
+ toastFailedToEnable: "Échec de l'activation du mode incognito. Veuillez réessayer.",
105712
105731
  working: "En cours…",
105713
- ariaLockedByAgent: "Le mode privé est verrouillé par cet agent. Aucun historique de conversation n'est enregistré.",
105714
- ariaPrivateOnForConversation: "Le mode privé est activé pour cette conversation. Cette discussion n'est pas enregistrée ni utilisée pour la mémoire.",
105715
- ariaTurnOffPrivateMode: "Désactiver le mode privé pour cette conversation.",
105716
- ariaTurnOnMidConversation: "Activer le mode privé pour cette conversation. Cette action est irréversible.",
105717
- ariaTurnOnEmpty: "Activer le mode privé. Cette conversation ne sera pas enregistrée dans l'historique ni utilisée pour la mémoire.",
105718
- tooltipLockedByMentor: "Cet agent fonctionne toujours en mode privé — aucun historique ni mémoire n'est conservé pour les conversations avec lui.",
105719
- tooltipLockedByTenant: "Votre organisation a activé le mode privé par défaut — aucun historique ni mémoire n'est conservé.",
105720
- tooltipLockedGeneric: "Le mode privé est verrouillé — aucun historique ni mémoire n'est conservé.",
105721
- tooltipPrivateOnPostSend: "Le mode privé est activé pour cette conversation — cette discussion n'est pas enregistrée ni utilisée pour la mémoire. Démarrez une nouvelle conversation pour quitter le mode privé.",
105722
- tooltipTurnOff: "Désactiver le mode privé — votre prochaine conversation sera de nouveau enregistrée dans l'historique.",
105723
- tooltipTurnOnMidConversation: "Activer le mode privé pour le reste de cette conversation. Une fois activé, vous ne pouvez pas le désactiver — démarrez une nouvelle conversation pour reprendre l'enregistrement de l'historique.",
105724
- tooltipTurnOnEmpty: "Activer le mode privé — cette conversation ne sera pas enregistrée dans l'historique ni utilisée pour la mémoire.",
105725
- privateMode: "Mode privé",
105726
- dialogTitle: "Activer le mode privé pour cette conversation ?",
105732
+ ariaLockedByAgent: "Le mode incognito est verrouillé par cet agent. Aucun historique de conversation n'est enregistré.",
105733
+ ariaPrivateOnForConversation: "Le mode incognito est activé pour cette conversation. Cette discussion n'est pas enregistrée ni utilisée pour la mémoire.",
105734
+ ariaTurnOffPrivateMode: "Désactiver le mode incognito pour cette conversation.",
105735
+ ariaTurnOnMidConversation: "Activer le mode incognito pour cette conversation. Cette action est irréversible.",
105736
+ ariaTurnOnEmpty: "Activer le mode incognito. Cette conversation ne sera pas enregistrée dans l'historique ni utilisée pour la mémoire.",
105737
+ tooltipLockedByMentor: "Cet agent fonctionne toujours en mode incognito — aucun historique ni mémoire n'est conservé pour les conversations avec lui.",
105738
+ tooltipLockedByTenant: "Votre organisation a activé le mode incognito par défaut — aucun historique ni mémoire n'est conservé.",
105739
+ tooltipLockedGeneric: "Le mode incognito est verrouillé — aucun historique ni mémoire n'est conservé.",
105740
+ tooltipPrivateOnPostSend: "Le mode incognito est activé pour cette conversation — cette discussion n'est pas enregistrée ni utilisée pour la mémoire. Démarrez une nouvelle conversation pour quitter le mode incognito.",
105741
+ tooltipTurnOff: "Désactiver le mode incognito — votre prochaine conversation sera de nouveau enregistrée dans l'historique.",
105742
+ tooltipTurnOnMidConversation: "Activer le mode incognito pour le reste de cette conversation. Une fois activé, vous ne pouvez pas le désactiver — démarrez une nouvelle conversation pour reprendre l'enregistrement de l'historique.",
105743
+ tooltipTurnOnEmpty: "Activer le mode incognito — cette conversation ne sera pas enregistrée dans l'historique ni utilisée pour la mémoire.",
105744
+ privateMode: "Mode incognito",
105745
+ dialogTitle: "Activer le mode incognito pour cette conversation ?",
105727
105746
  dialogDescription: "Cette conversation sera supprimée de votre historique et l'assistant cessera d'utiliser les échanges précédents.",
105728
- dialogDescriptionBold: "Une fois activé, vous ne pouvez pas désactiver le mode privé pour cette conversation",
105747
+ dialogDescriptionBold: "Une fois activé, vous ne pouvez pas désactiver le mode incognito pour cette conversation",
105729
105748
  dialogDescriptionSuffix: "démarrez une nouvelle conversation si vous souhaitez que l'historique soit de nouveau enregistré.",
105730
105749
  cancel: "Annuler",
105731
105750
  enabling: "Activation…",
105732
- enablePrivateMode: "Activer le mode privé"
105751
+ enablePrivateMode: "Activer le mode incognito"
105733
105752
  };
105734
105753
  var chatStopStreamingButton$2 = {
105735
105754
  stopStreaming: "Arrêter la diffusion"
@@ -107671,6 +107690,29 @@ var privacyTabLabels$2 = {
107671
107690
  tooltip: "Supprimer les PII des réponses générées par l'IA. Peut ajouter une légère latence aux réponses en streaming."
107672
107691
  }
107673
107692
  },
107693
+ subTabs: {
107694
+ piiFiltering: "PII Filtering",
107695
+ incognito: "Incognito"
107696
+ },
107697
+ incognito: {
107698
+ description: "Incognito keeps a conversation out of chat history and memory. Choose how it works for this agent.",
107699
+ groupAriaLabel: "Incognito policy",
107700
+ options: {
107701
+ users: {
107702
+ title: "Users Decide",
107703
+ description: "Users can turn Incognito on for any conversation. Otherwise, their chats are saved to history as usual."
107704
+ },
107705
+ always: {
107706
+ title: "Always Incognito",
107707
+ description: "Every conversation with this agent is incognito. Nothing is saved to chat history or memory — for anyone."
107708
+ },
107709
+ never: {
107710
+ title: "Never Incognito",
107711
+ description: "Incognito isn't available for this agent. Every conversation is saved to chat history; users who normally keep their chats incognito are saved anonymously instead."
107712
+ }
107713
+ }
107714
+ },
107715
+ noAccess: "You don't have permission to view this agent's privacy settings.",
107674
107716
  toasts: {
107675
107717
  updateSuccess: "Paramètres de confidentialité mis à jour",
107676
107718
  updateError: "Échec de la mise à jour des paramètres de confidentialité"
@@ -107832,16 +107874,16 @@ var profileCatalogInviteModal$2 = {
107832
107874
  sendInvitationsFailed: "Échec de l'envoi des invitations. Veuillez réessayer."
107833
107875
  };
107834
107876
  var profileChatPrivacyTab$2 = {
107835
- sectionHeading: "Mode privé par défaut",
107836
- sectionDescription: "Choisissez comment les conversations avec les agents IA sont enregistrées par défaut. Vous pouvez basculer n'importe quelle conversation en mode privé depuis l'en-tête du chat — et un agent ou votre organisation peut remplacer ce paramètre pour des conversations spécifiques.",
107877
+ sectionHeading: "Mode incognito par défaut",
107878
+ sectionDescription: "Choisissez comment les conversations avec les agents IA sont enregistrées par défaut. Vous pouvez basculer n'importe quelle conversation en mode incognito depuis l'en-tête du chat — et un agent ou votre organisation peut remplacer ce paramètre pour des conversations spécifiques.",
107837
107879
  modeNormalLabel: "Normal",
107838
107880
  modeNormalDescription: "Les conversations sont enregistrées dans votre historique et liées à votre compte. Les agents utilisent les échanges précédents de la même conversation comme contexte.",
107839
107881
  modeAnonymizedLabel: "Anonymisé",
107840
107882
  modeAnonymizedDescription: "Les conversations sont enregistrées pour le contexte IA, mais les informations d'identification du compte sont supprimées. Les agents utilisent toujours les échanges précédents de la même conversation.",
107841
- modeDisabledLabel: "Désactivé",
107883
+ modeDisabledLabel: "Incognito",
107842
107884
  modeDisabledDescription: "Rien n'est enregistré. Chaque message est une question-réponse à tour unique — les agents ne peuvent pas référencer les messages précédents, même au sein de la même conversation.",
107843
- toastUpdated: "Mode privé par défaut mis à jour",
107844
- toastFailed: "Échec de la mise à jour du mode privé par défaut"
107885
+ toastUpdated: "Mode incognito par défaut mis à jour",
107886
+ toastFailed: "Échec de la mise à jour du mode incognito par défaut"
107845
107887
  };
107846
107888
  var profileCsvEditor$2 = {
107847
107889
  title: "Modifier les données CSV",
@@ -107871,7 +107913,7 @@ var profileIndex$2 = {
107871
107913
  descResume: "Téléversez et prévisualisez votre CV le plus récent.",
107872
107914
  descPurchases: "Consultez et gérez vos abonnements et achats.",
107873
107915
  descMemory: "Gérez ce que l'IA se souvient de vous.",
107874
- descPrivacy: "Définissez votre mode privé par défaut et découvrez l'effet de chaque option sur vos conversations avec les agents IA.",
107916
+ descPrivacy: "Définissez votre mode incognito par défaut et découvrez l'effet de chaque option sur vos conversations avec les agents IA.",
107875
107917
  descChatHistory: "Consultez et exportez vos conversations avec les agents IA.",
107876
107918
  descSecurity: "Mettez à jour vos paramètres de sécurité et votre mot de passe.",
107877
107919
  descAdvanced: "Gérez vos paramètres avancés.",
@@ -107919,7 +107961,7 @@ var profileIndex$2 = {
107919
107961
  descExperiencePreview: "Expérience professionnelle.",
107920
107962
  descPurchasesPreview: "Abonnements et achats.",
107921
107963
  descMemoryPreview: "Ce dont l'IA se souvient.",
107922
- descPrivacyPreview: "Mode privé et effet de chaque option sur les conversations avec les agents IA.",
107964
+ descPrivacyPreview: "Mode incognito et effet de chaque option sur les conversations avec les agents IA.",
107923
107965
  descChatHistoryPreview: "Conversations avec les agents IA.",
107924
107966
  ariaAddEducation: "Ajouter une formation",
107925
107967
  ariaAddExperience: "Ajouter une expérience",
@@ -108521,19 +108563,15 @@ var settingsTabLabels$2 = {
108521
108563
  removeAriaLabel: "Supprimer l'image"
108522
108564
  },
108523
108565
  enhancedDocRetrieval: {
108524
- label: "Enhanced document retrieval",
108566
+ label: "Enhanced Document Retrieval",
108525
108567
  tooltip: "Run multiple search queries per question to pull in more relevant documents. This setting has one value, so it applies to both in-app chat and the embed widget."
108526
108568
  },
108527
108569
  promptCaching: {
108528
- label: "Prompt caching",
108570
+ label: "Prompt Caching",
108529
108571
  tooltip: "Cache repeated prompt context to lower latency and cost on long conversations. This setting has one value, so it applies to both in-app chat and the embed widget."
108530
108572
  },
108531
- privateMode: {
108532
- label: "Enable private mode",
108533
- tooltip: "When on, every conversation with this agent runs in private mode — no chat history or memory is stored for any user. Use this for sensitive or compliance-bound deployments. This setting has one value, so it applies to both in-app chat and the embed widget."
108534
- },
108535
108573
  smartDocRetrieval: {
108536
- label: "Smart document retrieval",
108574
+ label: "Smart Document Retrieval",
108537
108575
  tooltip: "The agent fetches documents only when it needs them, instead of searching the knowledge base on every turn. This setting has one value, so it applies to both in-app chat and the embed widget."
108538
108576
  }
108539
108577
  },
@@ -108581,14 +108619,14 @@ var settingsTabLabels$2 = {
108581
108619
  capabilities: "Capabilities"
108582
108620
  },
108583
108621
  sections: {
108584
- chatExperience: "Chat experience",
108622
+ chatExperience: "Chat Experience",
108585
108623
  advanced: "Advanced",
108586
108624
  perSurface: "Capacites par surface",
108587
108625
  globalSettings: "Capacites globales"
108588
108626
  },
108589
108627
  surfaces: {
108590
- inAppChat: "In-app chat",
108591
- embedWidget: "Embed widget"
108628
+ inAppChat: "In-App Chat",
108629
+ embedWidget: "Embed Widget"
108592
108630
  },
108593
108631
  notes: {
108594
108632
  perSurface: "A configurer independamment pour le chat dans l'application et le widget integre.",
@@ -109228,6 +109266,7 @@ var tabsPoliciestab$2 = {
109228
109266
  browseResourcesLabel: "Parcourir les ressources"
109229
109267
  };
109230
109268
  var tabsPrivacyTab$2 = {
109269
+ subTabsAriaLabel: "Privacy sub-categories",
109231
109270
  moreInfo: "Plus d'informations",
109232
109271
  outputFilterAriaLabelEnabled: "Filtre de sortie activé",
109233
109272
  outputFilterAriaLabelDisabled: "Filtre de sortie désactivé"
@@ -109316,7 +109355,6 @@ var tabsSettingsTab$2 = {
109316
109355
  settingsSubCategoriesAriaLabel: "Settings sub-categories",
109317
109356
  enhancedDocRetrievalTooltipAriaLabel: "More info about enhanced document retrieval",
109318
109357
  promptCachingTooltipAriaLabel: "More info about prompt caching",
109319
- privateModeTooltipAriaLabel: "More info about enable private mode",
109320
109358
  smartDocRetrievalTooltipAriaLabel: "More info about smart document retrieval",
109321
109359
  toggleAriaLabel: "{label} {state}"
109322
109360
  };
@@ -113408,33 +113446,33 @@ var chatInputFormVoiceChatButton$1 = {
113408
113446
  voiceRecord: "Grabación de voz"
113409
113447
  };
113410
113448
  var chatPrivacyChatPrivacyToggle$1 = {
113411
- toastPrivateModeOff: "El modo privado está desactivado.",
113412
- toastCouldNotTurnOff: "No se pudo desactivar el modo privado. Por favor, inténtelo de nuevo.",
113413
- toastPrivateModeOnNoHistory: "El modo privado está activado. Esta conversación no se guardará en el historial ni se usará para la memoria.",
113414
- toastCouldNotEnable: "No se pudo activar el modo privado. Por favor, inténtelo de nuevo.",
113415
- toastPrivateModeOnRemovedHistory: "El modo privado está activado. Esta conversación ha sido eliminada de su historial.",
113416
- toastFailedToEnable: "No se pudo habilitar el modo privado. Por favor, inténtelo de nuevo.",
113449
+ toastPrivateModeOff: "El modo incógnito está desactivado.",
113450
+ toastCouldNotTurnOff: "No se pudo desactivar el modo incógnito. Por favor, inténtelo de nuevo.",
113451
+ toastPrivateModeOnNoHistory: "El modo incógnito está activado. Esta conversación no se guardará en el historial ni se usará para la memoria.",
113452
+ toastCouldNotEnable: "No se pudo activar el modo incógnito. Por favor, inténtelo de nuevo.",
113453
+ toastPrivateModeOnRemovedHistory: "El modo incógnito está activado. Esta conversación ha sido eliminada de su historial.",
113454
+ toastFailedToEnable: "No se pudo habilitar el modo incógnito. Por favor, inténtelo de nuevo.",
113417
113455
  working: "Procesando…",
113418
- ariaLockedByAgent: "El modo privado está bloqueado por este agente. No se registra ningún historial de conversación.",
113419
- ariaPrivateOnForConversation: "El modo privado está activado para esta conversación. Este chat no se guarda ni se usa para la memoria.",
113420
- ariaTurnOffPrivateMode: "Desactivar el modo privado para este chat.",
113421
- ariaTurnOnMidConversation: "Activar el modo privado para esta conversación. Esta acción no se puede deshacer.",
113422
- ariaTurnOnEmpty: "Activar el modo privado. Este chat no se guardará en el historial ni se usará para la memoria.",
113423
- tooltipLockedByMentor: "Este agente siempre funciona en modo privado — no se conserva ningún historial ni memoria de las conversaciones con él.",
113424
- tooltipLockedByTenant: "Su organización tiene el modo privado habilitado de forma predeterminada — no se conserva ningún historial ni memoria.",
113425
- tooltipLockedGeneric: "El modo privado está bloqueado — no se conserva ningún historial ni memoria.",
113426
- tooltipPrivateOnPostSend: "El modo privado está activado para esta conversación — este chat no se guarda ni se usa para la memoria. Inicie una nueva conversación para salir del modo privado.",
113427
- tooltipTurnOff: "Desactivar el modo privado — su próximo chat se guardará en el historial nuevamente.",
113428
- tooltipTurnOnMidConversation: "Activar el modo privado para el resto de esta conversación. Una vez activado, no puede desactivarlo — inicie una nueva conversación para reanudar el guardado del historial.",
113429
- tooltipTurnOnEmpty: "Activar el modo privado — este chat no se guardará en el historial ni se usará para la memoria.",
113430
- privateMode: "Modo privado",
113431
- dialogTitle: "¿Activar el modo privado para este chat?",
113456
+ ariaLockedByAgent: "El modo incógnito está bloqueado por este agente. No se registra ningún historial de conversación.",
113457
+ ariaPrivateOnForConversation: "El modo incógnito está activado para esta conversación. Este chat no se guarda ni se usa para la memoria.",
113458
+ ariaTurnOffPrivateMode: "Desactivar el modo incógnito para este chat.",
113459
+ ariaTurnOnMidConversation: "Activar el modo incógnito para esta conversación. Esta acción no se puede deshacer.",
113460
+ ariaTurnOnEmpty: "Activar el modo incógnito. Este chat no se guardará en el historial ni se usará para la memoria.",
113461
+ tooltipLockedByMentor: "Este agente siempre funciona en modo incógnito — no se conserva ningún historial ni memoria de las conversaciones con él.",
113462
+ tooltipLockedByTenant: "Su organización tiene el modo incógnito habilitado de forma predeterminada — no se conserva ningún historial ni memoria.",
113463
+ tooltipLockedGeneric: "El modo incógnito está bloqueado — no se conserva ningún historial ni memoria.",
113464
+ tooltipPrivateOnPostSend: "El modo incógnito está activado para esta conversación — este chat no se guarda ni se usa para la memoria. Inicie una nueva conversación para salir del modo incógnito.",
113465
+ tooltipTurnOff: "Desactivar el modo incógnito — su próximo chat se guardará en el historial nuevamente.",
113466
+ tooltipTurnOnMidConversation: "Activar el modo incógnito para el resto de esta conversación. Una vez activado, no puede desactivarlo — inicie una nueva conversación para reanudar el guardado del historial.",
113467
+ tooltipTurnOnEmpty: "Activar el modo incógnito — este chat no se guardará en el historial ni se usará para la memoria.",
113468
+ privateMode: "Modo incógnito",
113469
+ dialogTitle: "¿Activar el modo incógnito para este chat?",
113432
113470
  dialogDescription: "Esta conversación se eliminará de su historial y el asistente dejará de usar los turnos anteriores.",
113433
- dialogDescriptionBold: "Una vez activado, no puede desactivar el modo privado para este chat",
113471
+ dialogDescriptionBold: "Una vez activado, no puede desactivar el modo incógnito para este chat",
113434
113472
  dialogDescriptionSuffix: "inicie una nueva conversación si desea que el historial se guarde nuevamente.",
113435
113473
  cancel: "Cancelar",
113436
113474
  enabling: "Activando…",
113437
- enablePrivateMode: "Activar el modo privado"
113475
+ enablePrivateMode: "Activar el modo incógnito"
113438
113476
  };
113439
113477
  var chatStopStreamingButton$1 = {
113440
113478
  stopStreaming: "Detener transmisión"
@@ -115376,6 +115414,29 @@ var privacyTabLabels$1 = {
115376
115414
  tooltip: "Eliminar PII de las respuestas generadas por la IA. Puede añadir una ligera latencia a las respuestas en streaming."
115377
115415
  }
115378
115416
  },
115417
+ subTabs: {
115418
+ piiFiltering: "PII Filtering",
115419
+ incognito: "Incognito"
115420
+ },
115421
+ incognito: {
115422
+ description: "Incognito keeps a conversation out of chat history and memory. Choose how it works for this agent.",
115423
+ groupAriaLabel: "Incognito policy",
115424
+ options: {
115425
+ users: {
115426
+ title: "Users Decide",
115427
+ description: "Users can turn Incognito on for any conversation. Otherwise, their chats are saved to history as usual."
115428
+ },
115429
+ always: {
115430
+ title: "Always Incognito",
115431
+ description: "Every conversation with this agent is incognito. Nothing is saved to chat history or memory — for anyone."
115432
+ },
115433
+ never: {
115434
+ title: "Never Incognito",
115435
+ description: "Incognito isn't available for this agent. Every conversation is saved to chat history; users who normally keep their chats incognito are saved anonymously instead."
115436
+ }
115437
+ }
115438
+ },
115439
+ noAccess: "You don't have permission to view this agent's privacy settings.",
115379
115440
  toasts: {
115380
115441
  updateSuccess: "Configuración de privacidad actualizada",
115381
115442
  updateError: "Error al actualizar la configuración de privacidad"
@@ -115537,16 +115598,16 @@ var profileCatalogInviteModal$1 = {
115537
115598
  sendInvitationsFailed: "Error al enviar las invitaciones. Por favor, inténtalo de nuevo."
115538
115599
  };
115539
115600
  var profileChatPrivacyTab$1 = {
115540
- sectionHeading: "Modo privado predeterminado",
115541
- sectionDescription: "Elija cómo se registran por defecto las conversaciones con los agentes de IA. Puede cambiar cualquier chat individual al modo privado desde el encabezado del chat — y un agente o su organización puede anular esto para conversaciones específicas.",
115601
+ sectionHeading: "Modo incógnito predeterminado",
115602
+ sectionDescription: "Elija cómo se registran por defecto las conversaciones con los agentes de IA. Puede cambiar cualquier chat individual al modo incógnito desde el encabezado del chat — y un agente o su organización puede anular esto para conversaciones específicas.",
115542
115603
  modeNormalLabel: "Normal",
115543
115604
  modeNormalDescription: "Las conversaciones se guardan en su historial y se vinculan a su cuenta. Los agentes usan los turnos anteriores de la misma conversación como contexto.",
115544
115605
  modeAnonymizedLabel: "Anonimizado",
115545
115606
  modeAnonymizedDescription: "Las conversaciones se guardan para el contexto de IA, pero se eliminan los datos de identificación de la cuenta. Los agentes siguen usando los turnos anteriores de la misma conversación.",
115546
- modeDisabledLabel: "Desactivado",
115607
+ modeDisabledLabel: "Incógnito",
115547
115608
  modeDisabledDescription: "No se registra nada. Cada mensaje es una pregunta-respuesta de un solo turno — los agentes no pueden hacer referencia a mensajes anteriores, ni siquiera dentro de la misma conversación.",
115548
- toastUpdated: "Modo privado predeterminado actualizado",
115549
- toastFailed: "Error al actualizar el modo privado predeterminado"
115609
+ toastUpdated: "Modo incógnito predeterminado actualizado",
115610
+ toastFailed: "Error al actualizar el modo incógnito predeterminado"
115550
115611
  };
115551
115612
  var profileCsvEditor$1 = {
115552
115613
  title: "Editar datos CSV",
@@ -115576,7 +115637,7 @@ var profileIndex$1 = {
115576
115637
  descResume: "Sube y previsualiza tu currículum más reciente.",
115577
115638
  descPurchases: "Consulta y administra tus suscripciones y compras.",
115578
115639
  descMemory: "Administra lo que la IA recuerda sobre ti.",
115579
- descPrivacy: "Establece tu Modo Privado predeterminado y revisa qué efecto tiene cada opción en tus conversaciones con agentes de IA.",
115640
+ descPrivacy: "Establece tu Modo incógnito predeterminado y revisa qué efecto tiene cada opción en tus conversaciones con agentes de IA.",
115580
115641
  descChatHistory: "Revisa y exporta tus conversaciones con agentes de IA.",
115581
115642
  descSecurity: "Actualiza tu configuración de seguridad y contraseña.",
115582
115643
  descAdvanced: "Administra tu configuración avanzada.",
@@ -115624,7 +115685,7 @@ var profileIndex$1 = {
115624
115685
  descExperiencePreview: "Experiencia profesional.",
115625
115686
  descPurchasesPreview: "Suscripciones y compras.",
115626
115687
  descMemoryPreview: "Lo que la IA recuerda.",
115627
- descPrivacyPreview: "Modo Privado y qué hace cada opción en las conversaciones con agentes de IA.",
115688
+ descPrivacyPreview: "Modo incógnito y qué hace cada opción en las conversaciones con agentes de IA.",
115628
115689
  descChatHistoryPreview: "Conversaciones con agentes de IA.",
115629
115690
  ariaAddEducation: "Añadir educación",
115630
115691
  ariaAddExperience: "Añadir experiencia",
@@ -116226,19 +116287,15 @@ var settingsTabLabels$1 = {
116226
116287
  removeAriaLabel: "Eliminar imagen"
116227
116288
  },
116228
116289
  enhancedDocRetrieval: {
116229
- label: "Enhanced document retrieval",
116290
+ label: "Enhanced Document Retrieval",
116230
116291
  tooltip: "Run multiple search queries per question to pull in more relevant documents. This setting has one value, so it applies to both in-app chat and the embed widget."
116231
116292
  },
116232
116293
  promptCaching: {
116233
- label: "Prompt caching",
116294
+ label: "Prompt Caching",
116234
116295
  tooltip: "Cache repeated prompt context to lower latency and cost on long conversations. This setting has one value, so it applies to both in-app chat and the embed widget."
116235
116296
  },
116236
- privateMode: {
116237
- label: "Enable private mode",
116238
- tooltip: "When on, every conversation with this agent runs in private mode — no chat history or memory is stored for any user. Use this for sensitive or compliance-bound deployments. This setting has one value, so it applies to both in-app chat and the embed widget."
116239
- },
116240
116297
  smartDocRetrieval: {
116241
- label: "Smart document retrieval",
116298
+ label: "Smart Document Retrieval",
116242
116299
  tooltip: "The agent fetches documents only when it needs them, instead of searching the knowledge base on every turn. This setting has one value, so it applies to both in-app chat and the embed widget."
116243
116300
  }
116244
116301
  },
@@ -116286,14 +116343,14 @@ var settingsTabLabels$1 = {
116286
116343
  capabilities: "Capabilities"
116287
116344
  },
116288
116345
  sections: {
116289
- chatExperience: "Chat experience",
116346
+ chatExperience: "Chat Experience",
116290
116347
  advanced: "Advanced",
116291
116348
  perSurface: "Capacidades por superficie",
116292
116349
  globalSettings: "Capacidades globales"
116293
116350
  },
116294
116351
  surfaces: {
116295
- inAppChat: "In-app chat",
116296
- embedWidget: "Embed widget"
116352
+ inAppChat: "In-App Chat",
116353
+ embedWidget: "Embed Widget"
116297
116354
  },
116298
116355
  notes: {
116299
116356
  perSurface: "Se configuran de forma independiente para el chat en la aplicacion y el widget incrustado.",
@@ -116933,6 +116990,7 @@ var tabsPoliciestab$1 = {
116933
116990
  browseResourcesLabel: "Explorar recursos"
116934
116991
  };
116935
116992
  var tabsPrivacyTab$1 = {
116993
+ subTabsAriaLabel: "Privacy sub-categories",
116936
116994
  moreInfo: "Más información",
116937
116995
  outputFilterAriaLabelEnabled: "Filtro de salida activado",
116938
116996
  outputFilterAriaLabelDisabled: "Filtro de salida desactivado"
@@ -117021,7 +117079,6 @@ var tabsSettingsTab$1 = {
117021
117079
  settingsSubCategoriesAriaLabel: "Settings sub-categories",
117022
117080
  enhancedDocRetrievalTooltipAriaLabel: "More info about enhanced document retrieval",
117023
117081
  promptCachingTooltipAriaLabel: "More info about prompt caching",
117024
- privateModeTooltipAriaLabel: "More info about enable private mode",
117025
117082
  smartDocRetrievalTooltipAriaLabel: "More info about smart document retrieval",
117026
117083
  toggleAriaLabel: "{label} {state}"
117027
117084
  };
@@ -121113,33 +121170,33 @@ var chatInputFormVoiceChatButton = {
121113
121170
  voiceRecord: "语音录制"
121114
121171
  };
121115
121172
  var chatPrivacyChatPrivacyToggle = {
121116
- toastPrivateModeOff: "私密模式已关闭。",
121117
- toastCouldNotTurnOff: "无法关闭私密模式,请重试。",
121118
- toastPrivateModeOnNoHistory: "私密模式已开启。此对话不会保存到历史记录,也不会用于记忆。",
121119
- toastCouldNotEnable: "无法启用私密模式,请重试。",
121120
- toastPrivateModeOnRemovedHistory: "私密模式已开启。此对话已从您的历史记录中移除。",
121121
- toastFailedToEnable: "启用私密模式失败,请重试。",
121173
+ toastPrivateModeOff: "无痕模式已关闭。",
121174
+ toastCouldNotTurnOff: "无法关闭无痕模式,请重试。",
121175
+ toastPrivateModeOnNoHistory: "无痕模式已开启。此对话不会保存到历史记录,也不会用于记忆。",
121176
+ toastCouldNotEnable: "无法启用无痕模式,请重试。",
121177
+ toastPrivateModeOnRemovedHistory: "无痕模式已开启。此对话已从您的历史记录中移除。",
121178
+ toastFailedToEnable: "启用无痕模式失败,请重试。",
121122
121179
  working: "处理中…",
121123
- ariaLockedByAgent: "私密模式已被此助手锁定开启,不记录任何对话历史。",
121124
- ariaPrivateOnForConversation: "此对话已开启私密模式,聊天内容不会被保存或用于记忆。",
121125
- ariaTurnOffPrivateMode: "关闭此对话的私密模式。",
121126
- ariaTurnOnMidConversation: "为此对话开启私密模式,此操作不可撤销。",
121127
- ariaTurnOnEmpty: "开启私密模式,此对话不会保存到历史记录或用于记忆。",
121128
- tooltipLockedByMentor: "此助手始终以私密模式运行——与其进行的对话不保留任何历史记录或记忆。",
121129
- tooltipLockedByTenant: "您的组织已默认启用私密模式——不保留任何历史记录或记忆。",
121130
- tooltipLockedGeneric: "私密模式已锁定开启——不保留任何历史记录或记忆。",
121131
- tooltipPrivateOnPostSend: "此对话已开启私密模式——聊天内容不会被保存或用于记忆。开始新对话以退出私密模式。",
121132
- tooltipTurnOff: "关闭私密模式——您的下一次对话将再次保存到历史记录。",
121133
- tooltipTurnOnMidConversation: "为本次对话的剩余部分开启私密模式。一旦开启将无法关闭——开始新对话以恢复历史记录保存。",
121134
- tooltipTurnOnEmpty: "开启私密模式——此对话不会保存到历史记录或用于记忆。",
121135
- privateMode: "私密模式",
121136
- dialogTitle: "为此对话启用私密模式?",
121180
+ ariaLockedByAgent: "无痕模式已被此助手锁定开启,不记录任何对话历史。",
121181
+ ariaPrivateOnForConversation: "此对话已开启无痕模式,聊天内容不会被保存或用于记忆。",
121182
+ ariaTurnOffPrivateMode: "关闭此对话的无痕模式。",
121183
+ ariaTurnOnMidConversation: "为此对话开启无痕模式,此操作不可撤销。",
121184
+ ariaTurnOnEmpty: "开启无痕模式,此对话不会保存到历史记录或用于记忆。",
121185
+ tooltipLockedByMentor: "此助手始终以无痕模式运行——与其进行的对话不保留任何历史记录或记忆。",
121186
+ tooltipLockedByTenant: "您的组织已默认启用无痕模式——不保留任何历史记录或记忆。",
121187
+ tooltipLockedGeneric: "无痕模式已锁定开启——不保留任何历史记录或记忆。",
121188
+ tooltipPrivateOnPostSend: "此对话已开启无痕模式——聊天内容不会被保存或用于记忆。开始新对话以退出无痕模式。",
121189
+ tooltipTurnOff: "关闭无痕模式——您的下一次对话将再次保存到历史记录。",
121190
+ tooltipTurnOnMidConversation: "为本次对话的剩余部分开启无痕模式。一旦开启将无法关闭——开始新对话以恢复历史记录保存。",
121191
+ tooltipTurnOnEmpty: "开启无痕模式——此对话不会保存到历史记录或用于记忆。",
121192
+ privateMode: "无痕模式",
121193
+ dialogTitle: "为此对话启用无痕模式?",
121137
121194
  dialogDescription: "此对话将从您的历史记录中移除,助手也将停止使用其中的早期内容。",
121138
- dialogDescriptionBold: "一旦开启,您将无法为此对话关闭私密模式",
121195
+ dialogDescriptionBold: "一旦开启,您将无法为此对话关闭无痕模式",
121139
121196
  dialogDescriptionSuffix: "如需再次保存历史记录,请开始新的对话。",
121140
121197
  cancel: "取消",
121141
121198
  enabling: "启用中…",
121142
- enablePrivateMode: "启用私密模式"
121199
+ enablePrivateMode: "启用无痕模式"
121143
121200
  };
121144
121201
  var chatStopStreamingButton = {
121145
121202
  stopStreaming: "停止流式输出"
@@ -123081,6 +123138,29 @@ var privacyTabLabels = {
123081
123138
  tooltip: "从 AI 生成的回复中删除 PII。可能会为流式回复增加轻微延迟。"
123082
123139
  }
123083
123140
  },
123141
+ subTabs: {
123142
+ piiFiltering: "PII Filtering",
123143
+ incognito: "Incognito"
123144
+ },
123145
+ incognito: {
123146
+ description: "Incognito keeps a conversation out of chat history and memory. Choose how it works for this agent.",
123147
+ groupAriaLabel: "Incognito policy",
123148
+ options: {
123149
+ users: {
123150
+ title: "Users Decide",
123151
+ description: "Users can turn Incognito on for any conversation. Otherwise, their chats are saved to history as usual."
123152
+ },
123153
+ always: {
123154
+ title: "Always Incognito",
123155
+ description: "Every conversation with this agent is incognito. Nothing is saved to chat history or memory — for anyone."
123156
+ },
123157
+ never: {
123158
+ title: "Never Incognito",
123159
+ description: "Incognito isn't available for this agent. Every conversation is saved to chat history; users who normally keep their chats incognito are saved anonymously instead."
123160
+ }
123161
+ }
123162
+ },
123163
+ noAccess: "You don't have permission to view this agent's privacy settings.",
123084
123164
  toasts: {
123085
123165
  updateSuccess: "隐私设置已更新",
123086
123166
  updateError: "更新隐私设置失败"
@@ -123242,16 +123322,16 @@ var profileCatalogInviteModal = {
123242
123322
  sendInvitationsFailed: "发送邀请失败,请重试。"
123243
123323
  };
123244
123324
  var profileChatPrivacyTab = {
123245
- sectionHeading: "默认私密模式",
123246
- sectionDescription: "选择与 AI 代理的对话默认如何记录。您可以在聊天标题中将任何单独的对话切换为私密模式——代理或您的组织也可以针对特定对话覆盖此设置。",
123325
+ sectionHeading: "默认无痕模式",
123326
+ sectionDescription: "选择与 AI 代理的对话默认如何记录。您可以在聊天标题中将任何单独的对话切换为无痕模式——代理或您的组织也可以针对特定对话覆盖此设置。",
123247
123327
  modeNormalLabel: "普通",
123248
123328
  modeNormalDescription: "对话会保存到您的历史记录并与您的账户关联。代理在同一对话中使用先前的轮次作为上下文。",
123249
123329
  modeAnonymizedLabel: "匿名",
123250
123330
  modeAnonymizedDescription: "对话会为 AI 上下文而保存,但会去除账户身份识别信息。代理仍会使用同一对话中的先前轮次。",
123251
- modeDisabledLabel: "禁用",
123331
+ modeDisabledLabel: "无痕",
123252
123332
  modeDisabledDescription: "不记录任何内容。每条消息都是单轮问答——代理无法引用之前的消息,即使在同一对话中也不例外。",
123253
- toastUpdated: "默认私密模式已更新",
123254
- toastFailed: "更新默认私密模式失败"
123333
+ toastUpdated: "默认无痕模式已更新",
123334
+ toastFailed: "更新默认无痕模式失败"
123255
123335
  };
123256
123336
  var profileCsvEditor = {
123257
123337
  title: "编辑 CSV 数据",
@@ -123931,19 +124011,15 @@ var settingsTabLabels = {
123931
124011
  removeAriaLabel: "移除图片"
123932
124012
  },
123933
124013
  enhancedDocRetrieval: {
123934
- label: "Enhanced document retrieval",
124014
+ label: "Enhanced Document Retrieval",
123935
124015
  tooltip: "Run multiple search queries per question to pull in more relevant documents. This setting has one value, so it applies to both in-app chat and the embed widget."
123936
124016
  },
123937
124017
  promptCaching: {
123938
- label: "Prompt caching",
124018
+ label: "Prompt Caching",
123939
124019
  tooltip: "Cache repeated prompt context to lower latency and cost on long conversations. This setting has one value, so it applies to both in-app chat and the embed widget."
123940
124020
  },
123941
- privateMode: {
123942
- label: "Enable private mode",
123943
- tooltip: "When on, every conversation with this agent runs in private mode — no chat history or memory is stored for any user. Use this for sensitive or compliance-bound deployments. This setting has one value, so it applies to both in-app chat and the embed widget."
123944
- },
123945
124021
  smartDocRetrieval: {
123946
- label: "Smart document retrieval",
124022
+ label: "Smart Document Retrieval",
123947
124023
  tooltip: "The agent fetches documents only when it needs them, instead of searching the knowledge base on every turn. This setting has one value, so it applies to both in-app chat and the embed widget."
123948
124024
  }
123949
124025
  },
@@ -123991,14 +124067,14 @@ var settingsTabLabels = {
123991
124067
  capabilities: "Capabilities"
123992
124068
  },
123993
124069
  sections: {
123994
- chatExperience: "Chat experience",
124070
+ chatExperience: "Chat Experience",
123995
124071
  advanced: "Advanced",
123996
124072
  perSurface: "按界面功能",
123997
124073
  globalSettings: "全局功能"
123998
124074
  },
123999
124075
  surfaces: {
124000
- inAppChat: "In-app chat",
124001
- embedWidget: "Embed widget"
124076
+ inAppChat: "In-App Chat",
124077
+ embedWidget: "Embed Widget"
124002
124078
  },
124003
124079
  notes: {
124004
124080
  perSurface: "分别为应用内聊天和嵌入式挂件单独设置。",
@@ -124638,6 +124714,7 @@ var tabsPoliciestab = {
124638
124714
  browseResourcesLabel: "浏览资源"
124639
124715
  };
124640
124716
  var tabsPrivacyTab = {
124717
+ subTabsAriaLabel: "Privacy sub-categories",
124641
124718
  moreInfo: "更多信息",
124642
124719
  outputFilterAriaLabelEnabled: "输出过滤器已启用",
124643
124720
  outputFilterAriaLabelDisabled: "输出过滤器已禁用"
@@ -124726,7 +124803,6 @@ var tabsSettingsTab = {
124726
124803
  settingsSubCategoriesAriaLabel: "Settings sub-categories",
124727
124804
  enhancedDocRetrievalTooltipAriaLabel: "More info about enhanced document retrieval",
124728
124805
  promptCachingTooltipAriaLabel: "More info about prompt caching",
124729
- privateModeTooltipAriaLabel: "More info about enable private mode",
124730
124806
  smartDocRetrievalTooltipAriaLabel: "More info about smart document retrieval",
124731
124807
  toggleAriaLabel: "{label} {state}"
124732
124808
  };
@@ -181791,7 +181867,7 @@ const pick = (name, fallback) => { var _a; return ((_a = read(name)) !== null &&
181791
181867
  const CHAT_PRIVACY_SUPPORTED = !!read('ChatPrivacyModeEnum') && !!read('CHAT_PRIVACY_MODES');
181792
181868
  const ChatPrivacyModeEnum = read('ChatPrivacyModeEnum');
181793
181869
  const CHAT_PRIVACY_MODES = ((_a$1 = read('CHAT_PRIVACY_MODES')) !== null && _a$1 !== void 0 ? _a$1 : []);
181794
- read('chatPrivacyApiSlice');
181870
+ const chatPrivacyApiSlice = read('chatPrivacyApiSlice');
181795
181871
  const useGetTenantChatPrivacyConfigQuery = pick('useGetTenantChatPrivacyConfigQuery', noopQuery);
181796
181872
  const useUpdateTenantChatPrivacyConfigMutation = pick('useUpdateTenantChatPrivacyConfigMutation', noopMutation);
181797
181873
  pick('useGetChatPrivacyEffectiveQuery', noopQuery);
@@ -181876,15 +181952,15 @@ function ChatPrivacyTab({ org, username }) {
181876
181952
  return (jsxs("div", { className: "space-y-4", "data-testid": "chat-privacy-tab-body", children: [jsxs("div", { children: [jsx("h4", { className: "text-sm font-semibold text-gray-700 dark:text-gray-300 tracking-wide", children: t('profileChatPrivacyTab.sectionHeading') }), jsx("p", { className: "text-xs text-gray-500 dark:text-gray-400 mt-1", children: t('profileChatPrivacyTab.sectionDescription') })] }), jsx("div", { className: "space-y-3", children: CHAT_PRIVACY_MODES.map((mode) => {
181877
181953
  const { labelKey, descriptionKey, icon: Icon } = MODE_COPY[mode];
181878
181954
  const isSelected = pending === mode;
181879
- return (jsxs("button", { type: "button", "aria-pressed": isSelected, "data-testid": `chat-privacy-mode-${mode}`, "data-state": isSelected ? 'selected' : 'unselected', onClick: () => void handleSelect(mode), disabled: isUpdating || isPreview, className: cn('w-full flex items-start gap-3 rounded-lg border px-5 py-4 text-left transition-colors', 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2', 'disabled:cursor-not-allowed disabled:opacity-60', isSelected
181955
+ return (jsxs("button", { type: "button", "aria-pressed": isSelected, "data-testid": `chat-privacy-mode-${mode}`, "data-state": isSelected ? 'selected' : 'unselected', onClick: () => void handleSelect(mode), disabled: isUpdating || isPreview, className: cn('w-full flex flex-col gap-1 rounded-lg border px-5 py-4 text-left transition-colors', 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2', 'disabled:cursor-not-allowed disabled:opacity-60', isSelected
181880
181956
  ? 'border-blue-500 bg-blue-50/40 dark:bg-blue-950/20'
181881
- : 'border-gray-200 hover:bg-gray-50 dark:border-gray-800 dark:hover:bg-gray-800/40'), children: [jsx(Icon, { className: cn('h-5 w-5 mt-0.5 flex-shrink-0', isSelected
181882
- ? 'text-blue-600 dark:text-blue-400'
181883
- : 'text-gray-400 dark:text-gray-500'), "aria-hidden": "true" }), jsxs("div", { className: "flex-1 min-w-0", children: [jsx("div", { className: "flex items-center gap-2", children: jsx("span", { className: cn('text-sm font-medium', isSelected
181884
- ? 'text-blue-900 dark:text-blue-100'
181885
- : 'text-gray-900 dark:text-gray-100'), children: t(labelKey) }) }), jsx("p", { className: "text-xs text-gray-500 dark:text-gray-400 mt-1", children: t(descriptionKey) })] }), jsx("span", { "aria-hidden": "true", className: cn('h-5 w-5 flex items-center justify-center rounded-full border-2 flex-shrink-0 mt-0.5 transition-colors', isSelected
181886
- ? 'border-blue-500 bg-blue-500'
181887
- : 'border-gray-300 dark:border-gray-600'), children: isSelected && jsx(Check, { className: "h-3 w-3 text-white", strokeWidth: 3 }) })] }, mode));
181957
+ : 'border-gray-200 hover:bg-gray-50 dark:border-gray-800 dark:hover:bg-gray-800/40'), children: [jsxs("span", { className: "flex w-full items-center gap-3", children: [jsx(Icon, { className: cn('h-4 w-4 flex-shrink-0', isSelected
181958
+ ? 'text-blue-600 dark:text-blue-400'
181959
+ : 'text-gray-400 dark:text-gray-500'), "aria-hidden": "true" }), jsx("span", { className: cn('min-w-0 flex-1 text-sm font-medium', isSelected
181960
+ ? 'text-blue-900 dark:text-blue-100'
181961
+ : 'text-gray-900 dark:text-gray-100'), children: t(labelKey) }), jsx("span", { "aria-hidden": "true", className: cn('h-5 w-5 flex items-center justify-center rounded-full border-2 flex-shrink-0 transition-colors', isSelected
181962
+ ? 'border-blue-500 bg-blue-500'
181963
+ : 'border-gray-300 dark:border-gray-600'), children: isSelected && jsx(Check, { className: "h-3 w-3 text-white", strokeWidth: 3 }) })] }), jsx("p", { className: "pl-7 pr-8 text-xs text-gray-500 dark:text-gray-400", children: t(descriptionKey) })] }, mode));
181888
181964
  }) })] }));
181889
181965
  }
181890
181966
 
@@ -274117,7 +274193,7 @@ function Profile({ tenant, username, tenants, onClose, customization = {}, isAdm
274117
274193
  const { data: memsearchStatus, isError: isMemsearchStatusError } = useGetMemsearchStatusQuery({ org: tenant, userId: username }, { skip: !enableMemoryTab });
274118
274194
  // Show memory tab if enabled for this platform AND memsearch is enabled (or status API is unavailable)
274119
274195
  const isMemoryEnabled = enableMemoryTab && (isMemsearchStatusError || ((_a = memsearchStatus === null || memsearchStatus === void 0 ? void 0 : memsearchStatus.enable_memsearch) !== null && _a !== void 0 ? _a : false));
274120
- // The Private Mode tab only appears when the tenant has opted into user-controlled
274196
+ // The Privacy tab only appears when the tenant has opted into user-controlled
274121
274197
  // chat privacy. Backend returns { allow_user_chat_privacy_control: boolean }.
274122
274198
  const { data: chatPrivacyConfig } = useGetTenantChatPrivacyConfigQuery({ org: tenant, userId: username }, { skip: !tenant || !username });
274123
274199
  const isChatPrivacyEnabled = !!(chatPrivacyConfig === null || chatPrivacyConfig === void 0 ? void 0 : chatPrivacyConfig.allow_user_chat_privacy_control);
@@ -274199,7 +274275,7 @@ function Profile({ tenant, username, tenants, onClose, customization = {}, isAdm
274199
274275
  // id stays as 'privacy' so callers passing `targetTab='privacy'` and
274200
274276
  // any test selectors targeting #panel-privacy keep working. The
274201
274277
  // user-visible `label` is "Privacy"; the chat-privacy feature itself
274202
- // is still called "Private Mode" within the tab's content. It sits with
274278
+ // is still called "Incognito" within the tab's content. It sits with
274203
274279
  // the account controls, just above Security.
274204
274280
  ...(isChatPrivacyEnabled
274205
274281
  ? [
@@ -301847,14 +301923,14 @@ const AGENT_SETTINGS_TAB_LABELS = {
301847
301923
  capabilities: 'Capabilities',
301848
301924
  },
301849
301925
  sections: {
301850
- chatExperience: 'Chat experience',
301926
+ chatExperience: 'Chat Experience',
301851
301927
  advanced: 'Advanced',
301852
301928
  perSurface: 'Surface Capabilities',
301853
301929
  globalSettings: 'Global Capabilities',
301854
301930
  },
301855
301931
  surfaces: {
301856
- inAppChat: 'In-app chat',
301857
- embedWidget: 'Embed widget',
301932
+ inAppChat: 'In-App Chat',
301933
+ embedWidget: 'Embed Widget',
301858
301934
  },
301859
301935
  notes: {
301860
301936
  perSurface: 'Set independently for in-app chat and the embed widget.',
@@ -301906,7 +301982,7 @@ const AGENT_SETTINGS_TAB_LABELS = {
301906
301982
  tooltip: 'Feature this agent to highlight it in listings.',
301907
301983
  },
301908
301984
  showExploreMentors: {
301909
- label: 'Show additional agents',
301985
+ label: 'Show Additional Agents',
301910
301986
  tooltip: "Shows the additional agents section on this agent's welcome screen.",
301911
301987
  },
301912
301988
  showAttachment: {
@@ -301922,13 +301998,13 @@ const AGENT_SETTINGS_TAB_LABELS = {
301922
301998
  tooltip: 'Lets people start a live voice call with the agent. Each surface has its own switch: In-app chat covers conversations hosted in the app, Embed widget covers the widget on your own site.',
301923
301999
  },
301924
302000
  embedShowAttachment: {
301925
- label: 'Show Attachment (embed widget)',
302001
+ label: 'Show Attachment (Embed Widget)',
301926
302002
  },
301927
302003
  embedShowVoiceRecord: {
301928
- label: 'Show Voice Record (embed widget)',
302004
+ label: 'Show Voice Record (Embed Widget)',
301929
302005
  },
301930
302006
  embedShowVoiceCall: {
301931
- label: 'Show Voice Call (embed widget)',
302007
+ label: 'Show Voice Call (Embed Widget)',
301932
302008
  },
301933
302009
  allowCopies: {
301934
302010
  label: 'Allow Copies',
@@ -301939,19 +302015,15 @@ const AGENT_SETTINGS_TAB_LABELS = {
301939
302015
  tooltip: 'Show the agent’s reasoning steps while it responds. This setting has one value, so it applies to both in-app chat and the embed widget.',
301940
302016
  },
301941
302017
  enhancedDocRetrieval: {
301942
- label: 'Enhanced document retrieval',
302018
+ label: 'Enhanced Document Retrieval',
301943
302019
  tooltip: 'Run multiple search queries per question to pull in more relevant documents. This setting has one value, so it applies to both in-app chat and the embed widget.',
301944
302020
  },
301945
302021
  promptCaching: {
301946
- label: 'Prompt caching',
302022
+ label: 'Prompt Caching',
301947
302023
  tooltip: 'Cache repeated prompt context to lower latency and cost on long conversations. This setting has one value, so it applies to both in-app chat and the embed widget.',
301948
302024
  },
301949
- privateMode: {
301950
- label: 'Enable private mode',
301951
- tooltip: 'When on, every conversation with this agent runs in private mode — no chat history or memory is stored for any user. Use this for sensitive or compliance-bound deployments. This setting has one value, so it applies to both in-app chat and the embed widget.',
301952
- },
301953
302025
  smartDocRetrieval: {
301954
- label: 'Smart document retrieval',
302026
+ label: 'Smart Document Retrieval',
301955
302027
  tooltip: 'The agent fetches documents only when it needs them, instead of searching the knowledge base on every turn. This setting has one value, so it applies to both in-app chat and the embed widget.',
301956
302028
  },
301957
302029
  image: {
@@ -302116,10 +302188,6 @@ function buildSettingsTabLabels(t) {
302116
302188
  label: t('settingsTabLabels.fields.promptCaching.label'),
302117
302189
  tooltip: t('settingsTabLabels.fields.promptCaching.tooltip'),
302118
302190
  },
302119
- privateMode: {
302120
- label: t('settingsTabLabels.fields.privateMode.label'),
302121
- tooltip: t('settingsTabLabels.fields.privateMode.tooltip'),
302122
- },
302123
302191
  smartDocRetrieval: {
302124
302192
  label: t('settingsTabLabels.fields.smartDocRetrieval.label'),
302125
302193
  tooltip: t('settingsTabLabels.fields.smartDocRetrieval.tooltip'),
@@ -302190,9 +302258,8 @@ function resolveSettingsTabLabels(override, t) {
302190
302258
  }
302191
302259
 
302192
302260
  function useEditMentorSettings({ onSuccessfulSave, labels }) {
302193
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
302261
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
302194
302262
  const { tenantKey, mentorId, username, enableRBAC, executeGatedAction } = useAgentSettings();
302195
- const dispatch = useDispatch();
302196
302263
  const { data: categories, isLoading: isLoadingCategories } = useGetMentorCategoriesQuery(
302197
302264
  // @ts-expect-error userId is not part of the query type definition
302198
302265
  { org: tenantKey, userId: username !== null && username !== void 0 ? username : '' }, {
@@ -302205,9 +302272,6 @@ function useEditMentorSettings({ onSuccessfulSave, labels }) {
302205
302272
  });
302206
302273
  const m = mentor;
302207
302274
  const [editMentor, { isLoading: isLoadingEditMentor }] = useEditMentorMutation();
302208
- // Tenant gate for the agent-level "Enable private mode" row — hidden when off.
302209
- const { data: tenantChatPrivacyConfig } = useGetTenantChatPrivacyConfigQuery$1({ org: tenantKey !== null && tenantKey !== void 0 ? tenantKey : '', userId: username !== null && username !== void 0 ? username : '' }, { skip: !tenantKey || !username });
302210
- const tenantAllowsChatPrivacyControl = !!(tenantChatPrivacyConfig === null || tenantChatPrivacyConfig === void 0 ? void 0 : tenantChatPrivacyConfig.allow_user_chat_privacy_control);
302211
302275
  // `use_function_calling_for_rag` lives on CallConfiguration; use the inlined
302212
302276
  // config, else fetch the list. (The voice / screen-share toggles moved to
302213
302277
  // their own tabs, but this field still lives in Settings.)
@@ -302240,8 +302304,7 @@ function useEditMentorSettings({ onSuccessfulSave, labels }) {
302240
302304
  show_reasoning: (_o = m === null || m === void 0 ? void 0 : m.show_reasoning) !== null && _o !== void 0 ? _o : false,
302241
302305
  enable_multi_query_rag: (_p = m === null || m === void 0 ? void 0 : m.enable_multi_query_rag) !== null && _p !== void 0 ? _p : false,
302242
302306
  enable_prompt_caching: (_q = m === null || m === void 0 ? void 0 : m.enable_prompt_caching) !== null && _q !== void 0 ? _q : false,
302243
- disable_chathistory: (_r = m === null || m === void 0 ? void 0 : m.disable_chathistory) !== null && _r !== void 0 ? _r : false,
302244
- use_function_calling_for_rag: (_s = existingCallConfig === null || existingCallConfig === void 0 ? void 0 : existingCallConfig.use_function_calling_for_rag) !== null && _s !== void 0 ? _s : false,
302307
+ use_function_calling_for_rag: (_r = existingCallConfig === null || existingCallConfig === void 0 ? void 0 : existingCallConfig.use_function_calling_for_rag) !== null && _r !== void 0 ? _r : false,
302245
302308
  },
302246
302309
  onSubmit: async ({ value }) => {
302247
302310
  var _a;
@@ -302302,9 +302365,6 @@ function useEditMentorSettings({ onSuccessfulSave, labels }) {
302302
302365
  if (value.enable_prompt_caching !== undefined) {
302303
302366
  values.enable_prompt_caching = value.enable_prompt_caching;
302304
302367
  }
302305
- if (value.disable_chathistory !== undefined) {
302306
- values.disable_chathistory = value.disable_chathistory;
302307
- }
302308
302368
  // Drop any field the user only has read access to. Including a read-only
302309
302369
  // field makes the PUT fail ("No permission to write field: ..."). A few
302310
302370
  // payload keys are gated under a differently named permission key.
@@ -302326,9 +302386,6 @@ function useEditMentorSettings({ onSuccessfulSave, labels }) {
302326
302386
  ...writableValues,
302327
302387
  },
302328
302388
  }).unwrap();
302329
- // Refresh the nav-bar chat-privacy toggle — the mentor-settings mutation
302330
- // doesn't invalidate chat-privacy-effective. Unconditional on purpose.
302331
- dispatch(chatPrivacyApiSlice.util.invalidateTags(['ChatPrivacyEffective']));
302332
302389
  // Sync `use_function_calling_for_rag` to CallConfiguration only when
302333
302390
  // changed (POST a new config if none exists, else PATCH). `show_voice_call`
302334
302391
  // (Voice tab) and `enable_video` (Screen Share tab) are no longer written
@@ -302390,7 +302447,6 @@ function useEditMentorSettings({ onSuccessfulSave, labels }) {
302390
302447
  handleSubmit,
302391
302448
  isDisabled,
302392
302449
  isLoadingEditMentor,
302393
- tenantAllowsChatPrivacyControl,
302394
302450
  };
302395
302451
  }
302396
302452
 
@@ -302630,7 +302686,7 @@ function DiscoverySubTab({ form, labels, mentor, isDisabled }) {
302630
302686
  * single field render as one switch below the matrix, so they read as
302631
302687
  * "applies everywhere".
302632
302688
  */
302633
- function CapabilitiesSubTab({ form, labels, mentor, isDisabled, tenantAllowsChatPrivacyControl, }) {
302689
+ function CapabilitiesSubTab({ form, labels, mentor, isDisabled }) {
302634
302690
  const t = useT();
302635
302691
  const { enableRBAC } = useAgentSettings();
302636
302692
  const fieldPermissions = getFieldPermissions(mentor);
@@ -302647,7 +302703,7 @@ function CapabilitiesSubTab({ form, labels, mentor, isDisabled, tenantAllowsChat
302647
302703
  // field-permission map, and `WithFormPermissions` HIDES a control
302648
302704
  // whose key is missing on an RBAC tenant. The Voice tab treats the
302649
302705
  // same field the same way.
302650
- jsx(CapabilityMatrixSwitch, { form: form, name: "show_voice_call", label: labels.fields.showVoiceCall.label, isDisabled: isDisabled }), embedWidget: jsx(CapabilityMatrixSwitch, { form: form, name: "embed_show_voice_call", label: labels.fields.embedShowVoiceCall.label, isDisabled: isDisabled }) })] })] }), jsxs("div", { className: "rounded-lg border border-gray-200 bg-gray-50 px-4 py-3", "data-testid": "capabilities-global-settings-banner", children: [jsx("h4", { className: "text-sm font-medium text-gray-900", children: labels.sections.globalSettings }), jsx("p", { className: "mt-1 text-xs text-gray-600", children: labels.notes.globalSettings })] }), jsxs("div", { className: "space-y-4", children: [jsxs("div", { className: "space-y-3", children: [jsx("h4", { className: "text-xs font-semibold tracking-wide text-gray-500 uppercase", children: labels.sections.chatExperience }), jsx(SettingToggleField, { form: form, name: "show_reasoning", label: labels.fields.showReasoning.label, tooltip: labels.fields.showReasoning.tooltip, tooltipAriaLabel: t('tabsSettingsTab.showReasoningTooltipAriaLabel'), isDisabled: isDisabled, alignToMatrix: true }), jsx(SettingToggleField, { form: form, name: "enable_multi_query_rag", label: labels.fields.enhancedDocRetrieval.label, tooltip: labels.fields.enhancedDocRetrieval.tooltip, tooltipAriaLabel: t('tabsSettingsTab.enhancedDocRetrievalTooltipAriaLabel'), isDisabled: isDisabled, permissionName: "enable_multi_query_rag", fieldPermissions: fieldPermissions, enableRBAC: enableRBAC, alignToMatrix: true }), jsx(SettingToggleField, { form: form, name: "use_function_calling_for_rag", label: labels.fields.smartDocRetrieval.label, tooltip: labels.fields.smartDocRetrieval.tooltip, tooltipAriaLabel: t('tabsSettingsTab.smartDocRetrievalTooltipAriaLabel'), isDisabled: isDisabled, testId: "settings-use-function-calling-for-rag-switch", alignToMatrix: true }), jsx(SettingToggleField, { form: form, name: "enable_prompt_caching", label: labels.fields.promptCaching.label, tooltip: labels.fields.promptCaching.tooltip, tooltipAriaLabel: t('tabsSettingsTab.promptCachingTooltipAriaLabel'), isDisabled: isDisabled, permissionName: "enable_prompt_caching", fieldPermissions: fieldPermissions, enableRBAC: enableRBAC, alignToMatrix: true })] }), jsxs("div", { className: "space-y-3", children: [jsx("h4", { className: "text-xs font-semibold tracking-wide text-gray-500 uppercase", children: labels.sections.advanced }), tenantAllowsChatPrivacyControl && (jsx(SettingToggleField, { form: form, name: "disable_chathistory", label: labels.fields.privateMode.label, tooltip: labels.fields.privateMode.tooltip, tooltipAriaLabel: t('tabsSettingsTab.privateModeTooltipAriaLabel'), isDisabled: isDisabled, permissionName: "disable_chathistory", fieldPermissions: fieldPermissions, enableRBAC: enableRBAC, testId: "settings-disable-chathistory-switch", alignToMatrix: true })), jsx(SettingToggleField, { form: form, name: "forkable", label: labels.fields.allowCopies.label, tooltip: labels.fields.allowCopies.tooltip, tooltipAriaLabel: t('tabsSettingsTab.allowCopiesTooltipAriaLabel'), isDisabled: isDisabled, alignToMatrix: true }), jsx(SettingToggleField, { form: form, name: "show_explore_mentors", label: labels.fields.showExploreMentors.label, tooltip: labels.fields.showExploreMentors.tooltip, tooltipAriaLabel: t('tabsSettingsTab.showExploreMentorsTooltipAriaLabel'), isDisabled: isDisabled, permissionName: "show_explore_mentors", fieldPermissions: fieldPermissions, enableRBAC: enableRBAC, testId: "settings-show-explore-mentors-switch", alignToMatrix: true })] })] })] }));
302706
+ jsx(CapabilityMatrixSwitch, { form: form, name: "show_voice_call", label: labels.fields.showVoiceCall.label, isDisabled: isDisabled }), embedWidget: jsx(CapabilityMatrixSwitch, { form: form, name: "embed_show_voice_call", label: labels.fields.embedShowVoiceCall.label, isDisabled: isDisabled }) })] })] }), jsxs("div", { className: "rounded-lg border border-gray-200 bg-gray-50 px-4 py-3", "data-testid": "capabilities-global-settings-banner", children: [jsx("h4", { className: "text-sm font-medium text-gray-900", children: labels.sections.globalSettings }), jsx("p", { className: "mt-1 text-xs text-gray-600", children: labels.notes.globalSettings })] }), jsxs("div", { className: "space-y-4", children: [jsxs("div", { className: "space-y-3", children: [jsx("h4", { className: "text-xs font-semibold tracking-wide text-gray-500 uppercase", children: labels.sections.chatExperience }), jsx(SettingToggleField, { form: form, name: "show_reasoning", label: labels.fields.showReasoning.label, tooltip: labels.fields.showReasoning.tooltip, tooltipAriaLabel: t('tabsSettingsTab.showReasoningTooltipAriaLabel'), isDisabled: isDisabled, alignToMatrix: true }), jsx(SettingToggleField, { form: form, name: "enable_multi_query_rag", label: labels.fields.enhancedDocRetrieval.label, tooltip: labels.fields.enhancedDocRetrieval.tooltip, tooltipAriaLabel: t('tabsSettingsTab.enhancedDocRetrievalTooltipAriaLabel'), isDisabled: isDisabled, permissionName: "enable_multi_query_rag", fieldPermissions: fieldPermissions, enableRBAC: enableRBAC, alignToMatrix: true }), jsx(SettingToggleField, { form: form, name: "use_function_calling_for_rag", label: labels.fields.smartDocRetrieval.label, tooltip: labels.fields.smartDocRetrieval.tooltip, tooltipAriaLabel: t('tabsSettingsTab.smartDocRetrievalTooltipAriaLabel'), isDisabled: isDisabled, testId: "settings-use-function-calling-for-rag-switch", alignToMatrix: true }), jsx(SettingToggleField, { form: form, name: "enable_prompt_caching", label: labels.fields.promptCaching.label, tooltip: labels.fields.promptCaching.tooltip, tooltipAriaLabel: t('tabsSettingsTab.promptCachingTooltipAriaLabel'), isDisabled: isDisabled, permissionName: "enable_prompt_caching", fieldPermissions: fieldPermissions, enableRBAC: enableRBAC, alignToMatrix: true })] }), jsxs("div", { className: "space-y-3", children: [jsx("h4", { className: "text-xs font-semibold tracking-wide text-gray-500 uppercase", children: labels.sections.advanced }), jsx(SettingToggleField, { form: form, name: "forkable", label: labels.fields.allowCopies.label, tooltip: labels.fields.allowCopies.tooltip, tooltipAriaLabel: t('tabsSettingsTab.allowCopiesTooltipAriaLabel'), isDisabled: isDisabled, alignToMatrix: true }), jsx(SettingToggleField, { form: form, name: "show_explore_mentors", label: labels.fields.showExploreMentors.label, tooltip: labels.fields.showExploreMentors.tooltip, tooltipAriaLabel: t('tabsSettingsTab.showExploreMentorsTooltipAriaLabel'), isDisabled: isDisabled, permissionName: "show_explore_mentors", fieldPermissions: fieldPermissions, enableRBAC: enableRBAC, testId: "settings-show-explore-mentors-switch", alignToMatrix: true })] })] })] }));
302651
302707
  }
302652
302708
 
302653
302709
  /* istanbul ignore next -- @preserve dynamic import is not testable in unit tests */
@@ -302665,7 +302721,7 @@ function AgentSettingsTab({ onSuccessfulSave, onSuccessfulDelete, tenants, isLoa
302665
302721
  const [subTab, setSubTab] = React__default.useState('basic');
302666
302722
  const labels = React__default.useMemo(() => resolveSettingsTabLabels(labelsOverride, t), [labelsOverride, t]);
302667
302723
  const { tenantKey, mentorId, username, enableRBAC } = useAgentSettings();
302668
- const { mentor, categories, form, handleSubmit, isDisabled, isLoadingEditMentor, tenantAllowsChatPrivacyControl, } = useEditMentorSettings({ onSuccessfulSave, labels });
302724
+ const { mentor, categories, form, handleSubmit, isDisabled, isLoadingEditMentor } = useEditMentorSettings({ onSuccessfulSave, labels });
302669
302725
  const subTabTriggerClass = 'px-3 py-1.5 text-sm font-medium text-gray-700 data-[state=active]:bg-white data-[state=active]:text-gray-900';
302670
302726
  return (jsxs(Fragment$1, { children: [jsx("div", { className: "flex h-[73px] flex-shrink-0 items-center border-b border-gray-200 bg-white p-4 lg:block", children: jsxs("div", { children: [jsx("h3", { className: "mb-1 text-base font-medium text-gray-900", children: labels.header.title }), jsx("p", { className: "text-xs text-gray-600", children: labels.header.description })] }) }), jsxs("div", { className: "flex flex-1 flex-col overflow-hidden", children: [jsx("div", { className: "flex-1 space-y-4 p-3 lg:p-4", style: {
302671
302727
  overflowY: 'auto',
@@ -302674,7 +302730,7 @@ function AgentSettingsTab({ onSuccessfulSave, onSuccessfulDelete, tenants, isLoa
302674
302730
  formEvent.preventDefault();
302675
302731
  formEvent.stopPropagation();
302676
302732
  handleSubmit();
302677
- }, children: jsxs(Tabs, { value: subTab, onValueChange: (value) => setSubTab(value), className: "space-y-4", children: [jsxs(TabsList, { className: "inline-flex h-auto rounded-md bg-gray-100 p-1", "aria-label": t('tabsSettingsTab.settingsSubCategoriesAriaLabel'), children: [jsx(TabsTrigger, { value: "basic", className: subTabTriggerClass, children: labels.subTabs.basic }), jsx(TabsTrigger, { value: "discovery", className: subTabTriggerClass, children: labels.subTabs.discovery }), jsx(TabsTrigger, { value: "capabilities", className: subTabTriggerClass, children: labels.subTabs.capabilities })] }), jsx(TabsContent, { value: "basic", forceMount: true, className: "m-0 data-[state=inactive]:hidden", children: jsx(BasicSubTab, { form: form, labels: labels, mentor: mentor, isDisabled: isDisabled, categories: categories }) }), jsx(TabsContent, { value: "discovery", forceMount: true, className: "m-0 data-[state=inactive]:hidden", children: jsx(DiscoverySubTab, { form: form, labels: labels, mentor: mentor, isDisabled: isDisabled }) }), jsx(TabsContent, { value: "capabilities", forceMount: true, className: "m-0 data-[state=inactive]:hidden", children: jsx(CapabilitiesSubTab, { form: form, labels: labels, mentor: mentor, isDisabled: isDisabled, tenantAllowsChatPrivacyControl: tenantAllowsChatPrivacyControl }) })] }) }) }), jsxs("div", { className: "flex flex-shrink-0 justify-end gap-2 border-t border-gray-200 bg-white px-3 py-4", children: [jsx(WithFormPermissions, { name: "object",
302733
+ }, children: jsxs(Tabs, { value: subTab, onValueChange: (value) => setSubTab(value), className: "space-y-4", children: [jsxs(TabsList, { className: "inline-flex h-auto rounded-md bg-gray-100 p-1", "aria-label": t('tabsSettingsTab.settingsSubCategoriesAriaLabel'), children: [jsx(TabsTrigger, { value: "basic", className: subTabTriggerClass, children: labels.subTabs.basic }), jsx(TabsTrigger, { value: "discovery", className: subTabTriggerClass, children: labels.subTabs.discovery }), jsx(TabsTrigger, { value: "capabilities", className: subTabTriggerClass, children: labels.subTabs.capabilities })] }), jsx(TabsContent, { value: "basic", forceMount: true, className: "m-0 data-[state=inactive]:hidden", children: jsx(BasicSubTab, { form: form, labels: labels, mentor: mentor, isDisabled: isDisabled, categories: categories }) }), jsx(TabsContent, { value: "discovery", forceMount: true, className: "m-0 data-[state=inactive]:hidden", children: jsx(DiscoverySubTab, { form: form, labels: labels, mentor: mentor, isDisabled: isDisabled }) }), jsx(TabsContent, { value: "capabilities", forceMount: true, className: "m-0 data-[state=inactive]:hidden", children: jsx(CapabilitiesSubTab, { form: form, labels: labels, mentor: mentor, isDisabled: isDisabled }) })] }) }) }), jsxs("div", { className: "flex flex-shrink-0 justify-end gap-2 border-t border-gray-200 bg-white px-3 py-4", children: [jsx(WithFormPermissions, { name: "object",
302678
302734
  // @ts-expect-error permissions type is opaque
302679
302735
  permissions: mentor === null || mentor === void 0 ? void 0 : mentor.permissions, enableRBAC: enableRBAC, children: ({ canDelete }) => canDelete && (jsx(Button$1, { onClick: () => setIsDeleteModalOpen(true), type: "button", disabled: isDisabled, variant: "outline", children: labels.actions.delete })) }), (mentor === null || mentor === void 0 ? void 0 : mentor.forkable) && (jsx(Button$1, { onClick: () => setIsCopyModalOpen(true), type: "button", disabled: isDisabled, variant: "outline", children: labels.actions.copy })), jsx(form.Subscribe, { selector: (state) => ({ isFormValid: state.canSubmit }), children: ({ isFormValid }) => (jsx(WithFormPermissions, { name: "object",
302680
302736
  // @ts-expect-error permissions type is opaque
@@ -305735,7 +305791,7 @@ function AgentSafetyTab({ renderPromptContent, FlaggedPromptsModal, showFlaggedP
305735
305791
  const AGENT_PRIVACY_TAB_LABELS = {
305736
305792
  header: {
305737
305793
  title: 'Privacy',
305738
- description: 'Detect and filter personally identifiable information from chat messages.',
305794
+ description: 'Control what personal information the agent sees and how Incognito works for its conversations.',
305739
305795
  },
305740
305796
  capability: {
305741
305797
  title: 'PII filtering',
@@ -305792,6 +305848,29 @@ const AGENT_PRIVACY_TAB_LABELS = {
305792
305848
  tooltip: 'Scrub PII from AI-generated responses. May add slight latency to streamed responses.',
305793
305849
  },
305794
305850
  },
305851
+ subTabs: {
305852
+ piiFiltering: 'PII Filtering',
305853
+ incognito: 'Incognito',
305854
+ },
305855
+ incognito: {
305856
+ description: 'Incognito keeps a conversation out of chat history and memory. Choose how it works for this agent.',
305857
+ groupAriaLabel: 'Incognito policy',
305858
+ options: {
305859
+ users: {
305860
+ title: 'Users Decide',
305861
+ description: 'Users can turn Incognito on for any conversation. Otherwise, their chats are saved to history as usual.',
305862
+ },
305863
+ always: {
305864
+ title: 'Always Incognito',
305865
+ description: 'Every conversation with this agent is incognito. Nothing is saved to chat history or memory — for anyone.',
305866
+ },
305867
+ never: {
305868
+ title: 'Never Incognito',
305869
+ description: "Incognito isn't available for this agent. Every conversation is saved to chat history; users who normally keep their chats incognito are saved anonymously instead.",
305870
+ },
305871
+ },
305872
+ },
305873
+ noAccess: "You don't have permission to view this agent's privacy settings.",
305795
305874
  toasts: {
305796
305875
  updateSuccess: 'Privacy settings updated',
305797
305876
  updateError: 'Failed to update privacy settings',
@@ -305858,6 +305937,29 @@ function buildPrivacyTabLabels(t) {
305858
305937
  tooltip: t('privacyTabLabels.fields.outputFilter.tooltip'),
305859
305938
  },
305860
305939
  },
305940
+ subTabs: {
305941
+ piiFiltering: t('privacyTabLabels.subTabs.piiFiltering'),
305942
+ incognito: t('privacyTabLabels.subTabs.incognito'),
305943
+ },
305944
+ incognito: {
305945
+ description: t('privacyTabLabels.incognito.description'),
305946
+ groupAriaLabel: t('privacyTabLabels.incognito.groupAriaLabel'),
305947
+ options: {
305948
+ users: {
305949
+ title: t('privacyTabLabels.incognito.options.users.title'),
305950
+ description: t('privacyTabLabels.incognito.options.users.description'),
305951
+ },
305952
+ always: {
305953
+ title: t('privacyTabLabels.incognito.options.always.title'),
305954
+ description: t('privacyTabLabels.incognito.options.always.description'),
305955
+ },
305956
+ never: {
305957
+ title: t('privacyTabLabels.incognito.options.never.title'),
305958
+ description: t('privacyTabLabels.incognito.options.never.description'),
305959
+ },
305960
+ },
305961
+ },
305962
+ noAccess: t('privacyTabLabels.noAccess'),
305861
305963
  toasts: {
305862
305964
  updateSuccess: t('privacyTabLabels.toasts.updateSuccess'),
305863
305965
  updateError: t('privacyTabLabels.toasts.updateError'),
@@ -305871,8 +305973,31 @@ function resolvePrivacyTabLabels(override, t) {
305871
305973
  return deepMerge(base, override);
305872
305974
  }
305873
305975
 
305976
+ /**
305977
+ * The agent's Incognito policy — one choice over the two mentor flags.
305978
+ * `users` lets each user turn Incognito on per conversation (both flags
305979
+ * off); `always` makes every conversation incognito (`disable_chathistory`);
305980
+ * `never` takes Incognito away from everyone (`disable_privacy_mode`). One
305981
+ * control so the contradictory "always AND never" pair cannot be configured.
305982
+ */
305983
+ const INCOGNITO_POLICIES = ['users', 'always', 'never'];
305984
+ /** `never` wins when an older record carries both flags — the backend keeps history then. */
305985
+ function incognitoPolicyFrom(settings) {
305986
+ if (settings === null || settings === void 0 ? void 0 : settings.disable_privacy_mode)
305987
+ return 'never';
305988
+ if (settings === null || settings === void 0 ? void 0 : settings.disable_chathistory)
305989
+ return 'always';
305990
+ return 'users';
305991
+ }
305992
+ function incognitoFlags(policy) {
305993
+ return {
305994
+ disable_chathistory: policy === 'always',
305995
+ disable_privacy_mode: policy === 'never',
305996
+ };
305997
+ }
305998
+
305874
305999
  function AgentPrivacyTab({ labels: labelsOverride, tenantKey: tenantKeyProp, mentorId: mentorIdProp, username: usernameProp, enableRBAC: enableRBACProp, executeGatedAction: executeGatedActionProp, }) {
305875
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
306000
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
305876
306001
  const t = useT();
305877
306002
  const ctx = useAgentSettingsOptional();
305878
306003
  const tenantKey = (_a = tenantKeyProp !== null && tenantKeyProp !== void 0 ? tenantKeyProp : ctx === null || ctx === void 0 ? void 0 : ctx.tenantKey) !== null && _a !== void 0 ? _a : '';
@@ -305881,6 +306006,12 @@ function AgentPrivacyTab({ labels: labelsOverride, tenantKey: tenantKeyProp, men
305881
306006
  const enableRBAC = (_d = enableRBACProp !== null && enableRBACProp !== void 0 ? enableRBACProp : ctx === null || ctx === void 0 ? void 0 : ctx.enableRBAC) !== null && _d !== void 0 ? _d : false;
305882
306007
  const executeGatedAction = executeGatedActionProp !== null && executeGatedActionProp !== void 0 ? executeGatedActionProp : ctx === null || ctx === void 0 ? void 0 : ctx.executeGatedAction;
305883
306008
  const labels = React__default.useMemo(() => resolvePrivacyTabLabels(labelsOverride, t), [labelsOverride, t]);
306009
+ const dispatch = useDispatch();
306010
+ // The Incognito policy only means something when the tenant lets users
306011
+ // control chat privacy; without that gate there is no Incognito to govern.
306012
+ const { data: tenantChatPrivacyConfig } = useGetTenantChatPrivacyConfigQuery({ org: tenantKey, userId: username }, { skip: !tenantKey || !username });
306013
+ const tenantAllowsIncognito = !!(tenantChatPrivacyConfig === null || tenantChatPrivacyConfig === void 0 ? void 0 : tenantChatPrivacyConfig.allow_user_chat_privacy_control);
306014
+ const [subTab, setSubTab] = React__default.useState('pii');
305884
306015
  const { data: rawMentorSettings, isLoading: isMentorSettingsLoading, refetch: refetchMentorSettings, } = useGetMentorSettingsQuery({
305885
306016
  mentor: mentorId,
305886
306017
  org: tenantKey,
@@ -305888,32 +306019,50 @@ function AgentPrivacyTab({ labels: labelsOverride, tenantKey: tenantKeyProp, men
305888
306019
  userId: username,
305889
306020
  }, { skip: !username || !mentorId || !tenantKey });
305890
306021
  const mentorSettings = rawMentorSettings;
306022
+ // Sub-tab visibility follows field-level RBAC: a sub-tab whose fields the
306023
+ // user cannot read is not offered at all (its controls would only render
306024
+ // hidden). Until the settings land the permissions are unknown, so nothing
306025
+ // is gated yet. Writes stay per control, through `WithFormPermissions`.
306026
+ const fieldPermissions = (_e = mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.permissions) === null || _e === void 0 ? void 0 : _e.field;
306027
+ const permissionsKnown = mentorSettings !== undefined;
306028
+ const showPii = !permissionsKnown ||
306029
+ PII_FIELDS.some((field) => canReadField(fieldPermissions, field, enableRBAC));
306030
+ const showIncognito = tenantAllowsIncognito &&
306031
+ (!permissionsKnown ||
306032
+ INCOGNITO_FIELDS.every((field) => canReadField(fieldPermissions, field, enableRBAC)));
306033
+ const visibleSubTabs = [
306034
+ ...(showPii ? ['pii'] : []),
306035
+ ...(showIncognito ? ['incognito'] : []),
306036
+ ];
306037
+ const activeSubTab = visibleSubTabs.includes(subTab) ? subTab : visibleSubTabs[0];
305891
306038
  // The `/settings/` endpoint accepts a JSON body — `useEditMentorJsonMutation`
305892
306039
  // matches that contract (the multipart `useEditMentorMutation` doesn't
305893
306040
  // round-trip cleanly for array fields like `privacy_entities`).
305894
306041
  const [editMentorJson, { isLoading: isEditMentorLoading }] = useEditMentorJsonMutation();
305895
306042
  const isDisabled = isMentorSettingsLoading || isEditMentorLoading;
305896
306043
  const enabled = !!(mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.enable_privacy_router);
305897
- const action = (_e = mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.privacy_action) !== null && _e !== void 0 ? _e : 'redact';
305898
- const entities = (_f = mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.privacy_entities) !== null && _f !== void 0 ? _f : [];
305899
- const responseText = (_g = mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.privacy_response) !== null && _g !== void 0 ? _g : '';
306044
+ const action = (_f = mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.privacy_action) !== null && _f !== void 0 ? _f : 'redact';
306045
+ const entities = (_g = mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.privacy_entities) !== null && _g !== void 0 ? _g : [];
306046
+ const responseText = (_h = mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.privacy_response) !== null && _h !== void 0 ? _h : '';
305900
306047
  const outputFilter = !!(mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.enable_privacy_output_filter);
306048
+ const incognitoPolicy = incognitoPolicyFrom(mentorSettings);
305901
306049
  const [localResponse, setLocalResponse] = React__default.useState(responseText);
305902
306050
  React__default.useEffect(() => {
305903
306051
  setLocalResponse(responseText);
305904
306052
  }, [responseText]);
305905
- async function updateField(field, value) {
306053
+ async function updateFields(requestBody, afterSave) {
305906
306054
  const run = async () => {
305907
306055
  await editMentorJson({
305908
306056
  mentorId,
305909
306057
  org: tenantKey,
305910
306058
  userId: username,
305911
- requestBody: { [field]: value },
306059
+ requestBody,
305912
306060
  }).unwrap();
305913
306061
  // `editMentorJson` lives on a separate api-slice and doesn't invalidate
305914
306062
  // the `mentorSettings` tag, so the toggle would otherwise stay stale
305915
306063
  // after a successful PUT. Refetch explicitly.
305916
306064
  await refetchMentorSettings();
306065
+ afterSave === null || afterSave === void 0 ? void 0 : afterSave();
305917
306066
  toast.success(labels.toasts.updateSuccess);
305918
306067
  };
305919
306068
  try {
@@ -305925,34 +306074,83 @@ function AgentPrivacyTab({ labels: labelsOverride, tenantKey: tenantKeyProp, men
305925
306074
  }
305926
306075
  }
305927
306076
  catch (error) {
305928
- console.error(JSON.stringify({ tenant: tenantKey, field, error }));
306077
+ console.error(JSON.stringify({ tenant: tenantKey, fields: Object.keys(requestBody), error }));
305929
306078
  toast.error(labels.toasts.updateError);
305930
306079
  }
305931
306080
  }
306081
+ function updateField(field, value) {
306082
+ return updateFields({ [field]: value });
306083
+ }
306084
+ // Both flags travel in one PUT. The chat header reads the policy from two
306085
+ // other caches — `chat-privacy-effective` (Always Incognito → the locked
306086
+ // pill) and the mentor's public settings (Never Incognito → no toggle at
306087
+ // all) — and `editMentorJson` invalidates neither, so refresh them here or
306088
+ // the header lags until reload.
306089
+ function updateIncognitoPolicy(policy) {
306090
+ return updateFields(incognitoFlags(policy), () => {
306091
+ dispatch(chatPrivacyApiSlice.util.invalidateTags(['ChatPrivacyEffective']));
306092
+ dispatch(mentorApiSlice.util.invalidateTags([{ type: 'mentorPublicSettings', id: mentorId }]));
306093
+ });
306094
+ }
305932
306095
  function toggleEntity(entity, checked) {
305933
306096
  const next = checked
305934
306097
  ? Array.from(new Set([...entities, entity]))
305935
306098
  : entities.filter((e) => e !== entity);
305936
306099
  void updateField('privacy_entities', next);
305937
306100
  }
305938
- return (jsxs(Fragment$1, { children: [jsx("div", { className: "flex hidden h-[73px] flex-shrink-0 items-center border-b border-gray-200 bg-white p-4 lg:block", children: jsxs("div", { children: [jsx("h3", { className: "mb-1 text-base font-medium text-gray-900", children: labels.header.title }), jsx("p", { className: "text-xs text-gray-700", children: labels.header.description })] }) }), jsx("div", { "data-testid": "privacy-tab-body", className: "flex-1 space-y-6 p-3 lg:p-4", style: { overflowY: 'auto', overflowX: 'hidden' }, children: jsx(CapabilityGate, { title: labels.capability.title, description: labels.capability.description, offHint: labels.capability.offHint, enabled: enabled, onToggle: (checked) => void updateField('enable_privacy_router', checked), disabled: isDisabled, ariaLabel: labels.capability.title, toggleTestId: "privacy-capability-toggle", children: jsxs("div", { className: "space-y-6", children: [jsx(WithFormPermissions, { name: "privacy_action",
305939
- // @ts-ignore
305940
- permissions: (_h = mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.permissions) === null || _h === void 0 ? void 0 : _h.field, enableRBAC: enableRBAC, children: ({ disabled }) => (jsxs("div", { className: "space-y-2", children: [jsxs("div", { className: "flex items-center gap-2", children: [jsx(Label$1, { className: "text-sm font-medium text-[#646464]", children: labels.fields.action.label }), jsx(FieldTooltip$1, { text: labels.fields.action.tooltip })] }), jsxs(Select$1, { value: action, onValueChange: (v) => void updateField('privacy_action', v), disabled: isDisabled || disabled, children: [jsx(SelectTrigger, { "aria-label": labels.fields.action.label, children: jsx(SelectValue, {}) }), jsx(SelectContent, { children: PRIVACY_ACTIONS.map((opt) => (jsx(SelectItem, { value: opt, children: labels.fields.action.options[opt] }, opt))) })] }), jsx("p", { className: "text-xs text-gray-500", children: labels.fields.action.descriptions[action] })] })) }), action === 'block' && (jsx(WithFormPermissions, { name: "privacy_response",
305941
- // @ts-ignore
305942
- permissions: (_j = mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.permissions) === null || _j === void 0 ? void 0 : _j.field, enableRBAC: enableRBAC, children: ({ disabled }) => (jsxs("div", { className: "space-y-2", children: [jsx(Label$1, { className: "text-sm font-medium text-[#646464]", children: labels.fields.blockMessage.label }), jsx(Textarea, { value: localResponse, onChange: (e) => setLocalResponse(e.target.value), onBlur: () => {
305943
- if (localResponse !== responseText) {
305944
- void updateField('privacy_response', localResponse);
305945
- }
305946
- }, placeholder: labels.fields.blockMessage.placeholder, className: "min-h-[100px]", disabled: isDisabled || disabled, "aria-label": labels.fields.blockMessage.label })] })) })), jsx(WithFormPermissions, { name: "privacy_entities",
305947
- // @ts-ignore
305948
- permissions: (_k = mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.permissions) === null || _k === void 0 ? void 0 : _k.field, enableRBAC: enableRBAC, children: ({ disabled }) => (jsxs("div", { className: "space-y-2", children: [jsxs("div", { className: "flex items-center gap-2", children: [jsx(Label$1, { className: "text-sm font-medium text-[#646464]", children: labels.fields.entities.label }), jsx(FieldTooltip$1, { text: labels.fields.entities.tooltip })] }), jsx("div", { className: "flex flex-wrap gap-2", children: PRIVACY_ENTITY_TYPES.map((entity) => {
305949
- var _a;
305950
- return (jsx(EntityChip, { entity: entity, label: (_a = labels.fields.entities.labels[entity]) !== null && _a !== void 0 ? _a : entity, selected: entities.includes(entity), disabled: isDisabled || disabled, onToggle: (checked) => toggleEntity(entity, checked) }, entity));
305951
- }) }), entities.length === 0 && (jsx("p", { className: "text-xs text-gray-500", children: labels.fields.entities.emptyHint }))] })) }), jsx(WithFormPermissions, { name: "enable_privacy_output_filter",
305952
- // @ts-ignore
305953
- permissions: (_l = mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.permissions) === null || _l === void 0 ? void 0 : _l.field, enableRBAC: enableRBAC, children: ({ disabled }) => (jsxs("div", { className: "flex items-center justify-between", children: [jsxs("div", { className: "flex items-center gap-2", children: [jsx("span", { className: "text-sm font-medium text-[#646464]", children: labels.fields.outputFilter.label }), jsx(FieldTooltip$1, { text: labels.fields.outputFilter.tooltip })] }), jsx(CustomSwitch, { checked: outputFilter, onCheckedChange: (checked) => void updateField('enable_privacy_output_filter', checked), disabled: isDisabled || disabled, "aria-label": outputFilter
305954
- ? t('tabsPrivacyTab.outputFilterAriaLabelEnabled')
305955
- : t('tabsPrivacyTab.outputFilterAriaLabelDisabled') })] })) })] }) }) })] }));
306101
+ return (jsxs(Fragment$1, { children: [jsx("div", { className: "flex hidden h-[73px] flex-shrink-0 items-center border-b border-gray-200 bg-white p-4 lg:block", children: jsxs("div", { children: [jsx("h3", { className: "mb-1 text-base font-medium text-gray-900", children: labels.header.title }), jsx("p", { className: "text-xs text-gray-700", children: labels.header.description })] }) }), jsx("div", { "data-testid": "privacy-tab-body", className: "flex-1 space-y-6 p-3 lg:p-4", style: { overflowY: 'auto', overflowX: 'hidden' }, children: visibleSubTabs.length === 0 ? (jsx("p", { className: "text-sm text-gray-600", "data-testid": "privacy-no-access", children: labels.noAccess })) : (jsxs(Tabs, { value: activeSubTab, onValueChange: (value) => setSubTab(value), className: "space-y-4", children: [jsxs(TabsList, { className: "inline-flex h-auto rounded-md bg-gray-100 p-1", "aria-label": t('tabsPrivacyTab.subTabsAriaLabel'), children: [showPii && (jsx(TabsTrigger, { value: "pii", className: SUB_TAB_TRIGGER_CLASS, "data-testid": "privacy-sub-tab-pii", children: labels.subTabs.piiFiltering })), showIncognito && (jsx(TabsTrigger, { value: "incognito", className: SUB_TAB_TRIGGER_CLASS, "data-testid": "privacy-sub-tab-incognito", children: labels.subTabs.incognito }))] }), showPii && (jsx(TabsContent, { value: "pii", forceMount: true, className: "m-0 data-[state=inactive]:hidden", children: jsx(CapabilityGate, { title: labels.capability.title, description: labels.capability.description, offHint: labels.capability.offHint, enabled: enabled, onToggle: (checked) => void updateField('enable_privacy_router', checked), disabled: isDisabled, ariaLabel: labels.capability.title, toggleTestId: "privacy-capability-toggle", children: jsxs("div", { className: "space-y-6", children: [jsx(WithFormPermissions, { name: "privacy_action",
306102
+ // @ts-ignore
306103
+ permissions: (_j = mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.permissions) === null || _j === void 0 ? void 0 : _j.field, enableRBAC: enableRBAC, children: ({ disabled }) => (jsxs("div", { className: "space-y-2", children: [jsxs("div", { className: "flex items-center gap-2", children: [jsx(Label$1, { className: "text-sm font-medium text-[#646464]", children: labels.fields.action.label }), jsx(FieldTooltip$1, { text: labels.fields.action.tooltip })] }), jsxs(Select$1, { value: action, onValueChange: (v) => void updateField('privacy_action', v), disabled: isDisabled || disabled, children: [jsx(SelectTrigger, { "aria-label": labels.fields.action.label, children: jsx(SelectValue, {}) }), jsx(SelectContent, { children: PRIVACY_ACTIONS.map((opt) => (jsx(SelectItem, { value: opt, children: labels.fields.action.options[opt] }, opt))) })] }), jsx("p", { className: "text-xs text-gray-500", children: labels.fields.action.descriptions[action] })] })) }), action === 'block' && (jsx(WithFormPermissions, { name: "privacy_response",
306104
+ // @ts-ignore
306105
+ permissions: (_k = mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.permissions) === null || _k === void 0 ? void 0 : _k.field, enableRBAC: enableRBAC, children: ({ disabled }) => (jsxs("div", { className: "space-y-2", children: [jsx(Label$1, { className: "text-sm font-medium text-[#646464]", children: labels.fields.blockMessage.label }), jsx(Textarea, { value: localResponse, onChange: (e) => setLocalResponse(e.target.value), onBlur: () => {
306106
+ if (localResponse !== responseText) {
306107
+ void updateField('privacy_response', localResponse);
306108
+ }
306109
+ }, placeholder: labels.fields.blockMessage.placeholder, className: "min-h-[100px]", disabled: isDisabled || disabled, "aria-label": labels.fields.blockMessage.label })] })) })), jsx(WithFormPermissions, { name: "privacy_entities",
306110
+ // @ts-ignore
306111
+ permissions: (_l = mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.permissions) === null || _l === void 0 ? void 0 : _l.field, enableRBAC: enableRBAC, children: ({ disabled }) => (jsxs("div", { className: "space-y-2", children: [jsxs("div", { className: "flex items-center gap-2", children: [jsx(Label$1, { className: "text-sm font-medium text-[#646464]", children: labels.fields.entities.label }), jsx(FieldTooltip$1, { text: labels.fields.entities.tooltip })] }), jsx("div", { className: "flex flex-wrap gap-2", children: PRIVACY_ENTITY_TYPES.map((entity) => {
306112
+ var _a;
306113
+ return (jsx(EntityChip, { entity: entity, label: (_a = labels.fields.entities.labels[entity]) !== null && _a !== void 0 ? _a : entity, selected: entities.includes(entity), disabled: isDisabled || disabled, onToggle: (checked) => toggleEntity(entity, checked) }, entity));
306114
+ }) }), entities.length === 0 && (jsx("p", { className: "text-xs text-gray-500", children: labels.fields.entities.emptyHint }))] })) }), jsx(WithFormPermissions, { name: "enable_privacy_output_filter",
306115
+ // @ts-ignore
306116
+ permissions: (_m = mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.permissions) === null || _m === void 0 ? void 0 : _m.field, enableRBAC: enableRBAC, children: ({ disabled }) => (jsxs("div", { className: "flex items-center justify-between", children: [jsxs("div", { className: "flex items-center gap-2", children: [jsx("span", { className: "text-sm font-medium text-[#646464]", children: labels.fields.outputFilter.label }), jsx(FieldTooltip$1, { text: labels.fields.outputFilter.tooltip })] }), jsx(CustomSwitch, { checked: outputFilter, onCheckedChange: (checked) => void updateField('enable_privacy_output_filter', checked), disabled: isDisabled || disabled, "aria-label": outputFilter
306117
+ ? t('tabsPrivacyTab.outputFilterAriaLabelEnabled')
306118
+ : t('tabsPrivacyTab.outputFilterAriaLabelDisabled') })] })) })] }) }) })), showIncognito && (jsx(TabsContent, { value: "incognito", forceMount: true, className: "m-0 data-[state=inactive]:hidden", children: jsxs("div", { className: "space-y-4", "data-testid": "privacy-incognito-section", children: [jsx("p", { className: "text-xs leading-relaxed text-gray-600", children: labels.incognito.description }), jsx(WithFormPermissions, { name: ['disable_chathistory', 'disable_privacy_mode'],
306119
+ // @ts-ignore
306120
+ permissions: (_o = mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.permissions) === null || _o === void 0 ? void 0 : _o.field, enableRBAC: enableRBAC, children: ({ disabled }) => (jsx("div", { className: "space-y-3", "aria-label": labels.incognito.groupAriaLabel, children: INCOGNITO_POLICIES.map((policy) => (jsx(IncognitoOptionCard, { policy: policy, title: labels.incognito.options[policy].title, description: labels.incognito.options[policy].description, selected: incognitoPolicy === policy, disabled: isDisabled || disabled, onSelect: () => void updateIncognitoPolicy(policy) }, policy))) })) })] }) }))] })) })] }));
306121
+ }
306122
+ const PII_FIELDS = [
306123
+ 'enable_privacy_router',
306124
+ 'privacy_action',
306125
+ 'privacy_entities',
306126
+ 'privacy_response',
306127
+ 'enable_privacy_output_filter',
306128
+ ];
306129
+ const INCOGNITO_FIELDS = ['disable_chathistory', 'disable_privacy_mode'];
306130
+ /**
306131
+ * Mirror of `WithFormPermissions`' read rule: a field the endpoint lists is
306132
+ * governed by its own `read` flag; one it does not list is readable only when
306133
+ * RBAC gating is off.
306134
+ */
306135
+ function canReadField(permissions, field, enableRBAC) {
306136
+ const entry = permissions === null || permissions === void 0 ? void 0 : permissions[field];
306137
+ if (entry)
306138
+ return entry.read !== false;
306139
+ return !enableRBAC;
306140
+ }
306141
+ // Same pill switcher the Settings tab uses for its sub-tabs.
306142
+ const SUB_TAB_TRIGGER_CLASS = 'px-3 py-1.5 text-sm font-medium text-gray-700 data-[state=active]:bg-white data-[state=active]:text-gray-900';
306143
+ const INCOGNITO_OPTION_ICONS = {
306144
+ users: Users,
306145
+ always: EyeOff,
306146
+ never: History,
306147
+ };
306148
+ // Radio-card idiom shared with the profile's Privacy tab: `aria-pressed`
306149
+ // buttons rather than a WAI-ARIA radiogroup (which would need roving focus),
306150
+ // each carrying its title + description so nothing has to be explained apart.
306151
+ function IncognitoOptionCard({ policy, title, description, selected, disabled, onSelect, }) {
306152
+ const Icon = INCOGNITO_OPTION_ICONS[policy];
306153
+ return (jsxs("button", { type: "button", "aria-pressed": selected, "data-testid": `privacy-incognito-${policy}`, "data-state": selected ? 'selected' : 'unselected', onClick: onSelect, disabled: disabled, className: cn('flex w-full flex-col gap-1 rounded-lg border px-5 py-4 text-left transition-colors', 'focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:ring-offset-2 focus-visible:outline-none', 'disabled:cursor-not-allowed disabled:opacity-60', selected ? 'border-blue-500 bg-blue-50/40' : 'border-gray-200 hover:bg-gray-50'), children: [jsxs("span", { className: "flex w-full items-center gap-3", children: [jsx(Icon, { className: cn('h-4 w-4 flex-shrink-0', selected ? 'text-blue-600' : 'text-gray-400'), "aria-hidden": "true" }), jsx("span", { className: cn('min-w-0 flex-1 text-sm font-medium', selected ? 'text-blue-900' : 'text-gray-900'), children: title }), jsx("span", { "aria-hidden": "true", className: cn('flex h-5 w-5 flex-shrink-0 items-center justify-center rounded-full border-2 transition-colors', selected ? 'border-blue-500 bg-blue-500' : 'border-gray-300'), children: selected && jsx(Check, { className: "h-3 w-3 text-white", strokeWidth: 3 }) })] }), jsx("p", { className: "pr-8 pl-7 text-xs text-gray-500", children: description })] }));
305956
306154
  }
305957
306155
  function FieldTooltip$1({ text }) {
305958
306156
  const t = useT();