@iblai/iblai-js 2.30.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.
- package/dist/data-layer/playwright/chat-privacy-helpers.d.ts +9 -9
- package/dist/playwright/index.cjs +15 -15
- package/dist/playwright/index.cjs.map +1 -1
- package/dist/playwright/index.d.ts +9 -9
- package/dist/playwright/index.esm.js +15 -15
- package/dist/playwright/index.esm.js.map +1 -1
- package/dist/playwright/playwright/chat-privacy-helpers.d.ts +9 -9
- package/dist/security/playwright/chat-privacy-helpers.d.ts +9 -9
- package/dist/web-containers/playwright/chat-privacy-helpers.d.ts +9 -9
- package/dist/web-containers/source/index.esm.js +1474 -407
- package/dist/web-containers/source/next/index.esm.js +1208 -252
- package/dist/web-utils/playwright/chat-privacy-helpers.d.ts +9 -9
- package/package.json +4 -4
|
@@ -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';
|
|
@@ -48065,7 +48065,7 @@ function formatRelativeDate(date) {
|
|
|
48065
48065
|
}
|
|
48066
48066
|
}
|
|
48067
48067
|
|
|
48068
|
-
const buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", {
|
|
48068
|
+
const buttonVariants$1 = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", {
|
|
48069
48069
|
variants: {
|
|
48070
48070
|
variant: {
|
|
48071
48071
|
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
@@ -48089,7 +48089,7 @@ const buttonVariants = cva("inline-flex items-center justify-center gap-2 whites
|
|
|
48089
48089
|
});
|
|
48090
48090
|
const Button$1 = React.forwardRef(({ className, variant, size, asChild = false, ...props }, ref) => {
|
|
48091
48091
|
const Comp = asChild ? Slot$4 : "button";
|
|
48092
|
-
return (jsx(Comp, { className: cn(buttonVariants({ variant, size, className })), ref: ref, ...props }));
|
|
48092
|
+
return (jsx(Comp, { className: cn(buttonVariants$1({ variant, size, className })), ref: ref, ...props }));
|
|
48093
48093
|
});
|
|
48094
48094
|
Button$1.displayName = "Button";
|
|
48095
48095
|
|
|
@@ -48376,7 +48376,7 @@ const __iconNode$pf = [
|
|
|
48376
48376
|
];
|
|
48377
48377
|
const Accessibility = createLucideIcon("accessibility", __iconNode$pf);
|
|
48378
48378
|
|
|
48379
|
-
var accessibility = /*#__PURE__*/Object.freeze({
|
|
48379
|
+
var accessibility$4 = /*#__PURE__*/Object.freeze({
|
|
48380
48380
|
__proto__: null,
|
|
48381
48381
|
__iconNode: __iconNode$pf,
|
|
48382
48382
|
default: Accessibility
|
|
@@ -97832,33 +97832,33 @@ var chatInputFormVoiceChatButton$3 = {
|
|
|
97832
97832
|
voiceRecord: "Voice Record"
|
|
97833
97833
|
};
|
|
97834
97834
|
var chatPrivacyChatPrivacyToggle$3 = {
|
|
97835
|
-
toastPrivateModeOff: "
|
|
97836
|
-
toastCouldNotTurnOff: "Could not turn
|
|
97837
|
-
toastPrivateModeOnNoHistory: "
|
|
97838
|
-
toastCouldNotEnable: "Could not enable
|
|
97839
|
-
toastPrivateModeOnRemovedHistory: "
|
|
97840
|
-
toastFailedToEnable: "Failed to enable
|
|
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: "
|
|
97843
|
-
ariaPrivateOnForConversation: "
|
|
97844
|
-
ariaTurnOffPrivateMode: "Turn off
|
|
97845
|
-
ariaTurnOnMidConversation: "Turn on
|
|
97846
|
-
ariaTurnOnEmpty: "Turn on
|
|
97847
|
-
tooltipLockedByMentor: "This agent always runs in
|
|
97848
|
-
tooltipLockedByTenant: "Your organization has
|
|
97849
|
-
tooltipLockedGeneric: "
|
|
97850
|
-
tooltipPrivateOnPostSend: "
|
|
97851
|
-
tooltipTurnOff: "Turn off
|
|
97852
|
-
tooltipTurnOnMidConversation: "Turn on
|
|
97853
|
-
tooltipTurnOnEmpty: "Turn on
|
|
97854
|
-
privateMode: "
|
|
97855
|
-
dialogTitle: "Enable
|
|
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
|
|
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
|
|
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: "
|
|
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
|
|
99965
|
-
sectionDescription: "Choose how conversations with AI agents are recorded by default. You can switch any individual chat into
|
|
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: "
|
|
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
|
|
99973
|
-
toastFailed: "Failed to update default
|
|
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
|
|
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: "
|
|
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
|
|
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 (
|
|
100653
|
+
label: "Show Attachment (Embed Widget)"
|
|
100631
100654
|
},
|
|
100632
100655
|
embedShowVoiceRecord: {
|
|
100633
|
-
label: "Show Voice Record (
|
|
100656
|
+
label: "Show Voice Record (Embed Widget)"
|
|
100634
100657
|
},
|
|
100635
100658
|
embedShowVoiceCall: {
|
|
100636
|
-
label: "Show Voice Call (
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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-
|
|
100720
|
-
embedWidget: "Embed
|
|
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
|
};
|
|
@@ -103427,6 +103446,54 @@ var virtualMachineNetworkSection$3 = {
|
|
|
103427
103446
|
manageTitle: "Virtual Machine Settings",
|
|
103428
103447
|
manageDescription: "Network policies and VM secrets are shared by every agent in your organization."
|
|
103429
103448
|
};
|
|
103449
|
+
var accessibility$3 = {
|
|
103450
|
+
toolbar: {
|
|
103451
|
+
accessibilityMenu: "Accessibility Menu",
|
|
103452
|
+
contrastPlus: "Contrast +",
|
|
103453
|
+
highlightLinks: "Highlight Links",
|
|
103454
|
+
biggerText: "Bigger Text",
|
|
103455
|
+
textSpacing: "Text Spacing",
|
|
103456
|
+
pauseAnimations: "Pause Animations",
|
|
103457
|
+
hideImages: "Hide Images",
|
|
103458
|
+
dyslexiaFriendly: "Dyslexia Friendly",
|
|
103459
|
+
cursor: "Cursor",
|
|
103460
|
+
tooltips: "Tooltips",
|
|
103461
|
+
lineHeight: "Line Height",
|
|
103462
|
+
textAlign: "Text Align",
|
|
103463
|
+
saturation: "Saturation",
|
|
103464
|
+
resetAllAccessibilitySettings: "Reset All Accessibility Settings",
|
|
103465
|
+
contrastInvertColors: "Invert Colors",
|
|
103466
|
+
contrastDark: "Dark Contrast",
|
|
103467
|
+
contrastLight: "Light Contrast",
|
|
103468
|
+
textSizeNormal: "Normal Text",
|
|
103469
|
+
textSizeLarge: "Large Text",
|
|
103470
|
+
textSizeLarger: "Larger Text",
|
|
103471
|
+
spacingLight: "Light Spacing",
|
|
103472
|
+
spacingModerate: "Moderate Spacing",
|
|
103473
|
+
spacingHeavy: "Heavy Spacing",
|
|
103474
|
+
dyslexiaFont: "Dyslexia Font",
|
|
103475
|
+
legibleFont: "Legible Font",
|
|
103476
|
+
alignLeft: "Align Left",
|
|
103477
|
+
alignCenter: "Align Center",
|
|
103478
|
+
alignRight: "Align Right",
|
|
103479
|
+
justify: "Justify",
|
|
103480
|
+
saturationNormal: "Normal Saturation",
|
|
103481
|
+
saturationHigh: "High Saturation",
|
|
103482
|
+
saturationLow: "Low Saturation",
|
|
103483
|
+
resetButtonPosition: "Reset Button Position",
|
|
103484
|
+
moveButtonToCorner: "Move button to corner",
|
|
103485
|
+
moveButtonTopLeft: "Move button to top left corner",
|
|
103486
|
+
moveButtonTopRight: "Move button to top right corner",
|
|
103487
|
+
moveButtonBottomLeft: "Move button to bottom left corner",
|
|
103488
|
+
moveButtonBottomRight: "Move button to bottom right corner"
|
|
103489
|
+
},
|
|
103490
|
+
button: {
|
|
103491
|
+
openAccessibilityMenu: "Open Accessibility Menu",
|
|
103492
|
+
accessibilityIconAlt: "Accessibility",
|
|
103493
|
+
moveHint: "Use the up and down arrow keys to move this button, and the left and right arrow keys to switch sides. Hold Shift to move it faster.",
|
|
103494
|
+
positionAnnouncement: "Accessibility button moved to the {side, select, left {left} other {right}} edge, {bottom} pixels from the bottom."
|
|
103495
|
+
}
|
|
103496
|
+
};
|
|
103430
103497
|
var en = {
|
|
103431
103498
|
accessTabAddAccess: accessTabAddAccess$3,
|
|
103432
103499
|
accessTabLabels: accessTabLabels$3,
|
|
@@ -103722,7 +103789,8 @@ var en = {
|
|
|
103722
103789
|
virtualMachineAdminTab: virtualMachineAdminTab$3,
|
|
103723
103790
|
virtualMachineNetworkPolicies: virtualMachineNetworkPolicies$3,
|
|
103724
103791
|
virtualMachineSecrets: virtualMachineSecrets$3,
|
|
103725
|
-
virtualMachineNetworkSection: virtualMachineNetworkSection$3
|
|
103792
|
+
virtualMachineNetworkSection: virtualMachineNetworkSection$3,
|
|
103793
|
+
accessibility: accessibility$3
|
|
103726
103794
|
};
|
|
103727
103795
|
|
|
103728
103796
|
var accessTabAddAccess$2 = {
|
|
@@ -105654,33 +105722,33 @@ var chatInputFormVoiceChatButton$2 = {
|
|
|
105654
105722
|
voiceRecord: "Enregistrement vocal"
|
|
105655
105723
|
};
|
|
105656
105724
|
var chatPrivacyChatPrivacyToggle$2 = {
|
|
105657
|
-
toastPrivateModeOff: "Le mode
|
|
105658
|
-
toastCouldNotTurnOff: "Impossible de désactiver le mode
|
|
105659
|
-
toastPrivateModeOnNoHistory: "Le mode
|
|
105660
|
-
toastCouldNotEnable: "Impossible d'activer le mode
|
|
105661
|
-
toastPrivateModeOnRemovedHistory: "Le mode
|
|
105662
|
-
toastFailedToEnable: "Échec de l'activation du mode
|
|
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.",
|
|
105663
105731
|
working: "En cours…",
|
|
105664
|
-
ariaLockedByAgent: "Le mode
|
|
105665
|
-
ariaPrivateOnForConversation: "Le mode
|
|
105666
|
-
ariaTurnOffPrivateMode: "Désactiver le mode
|
|
105667
|
-
ariaTurnOnMidConversation: "Activer le mode
|
|
105668
|
-
ariaTurnOnEmpty: "Activer le mode
|
|
105669
|
-
tooltipLockedByMentor: "Cet agent fonctionne toujours en mode
|
|
105670
|
-
tooltipLockedByTenant: "Votre organisation a activé le mode
|
|
105671
|
-
tooltipLockedGeneric: "Le mode
|
|
105672
|
-
tooltipPrivateOnPostSend: "Le mode
|
|
105673
|
-
tooltipTurnOff: "Désactiver le mode
|
|
105674
|
-
tooltipTurnOnMidConversation: "Activer le mode
|
|
105675
|
-
tooltipTurnOnEmpty: "Activer le mode
|
|
105676
|
-
privateMode: "Mode
|
|
105677
|
-
dialogTitle: "Activer le mode
|
|
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 ?",
|
|
105678
105746
|
dialogDescription: "Cette conversation sera supprimée de votre historique et l'assistant cessera d'utiliser les échanges précédents.",
|
|
105679
|
-
dialogDescriptionBold: "Une fois activé, vous ne pouvez pas désactiver le mode
|
|
105747
|
+
dialogDescriptionBold: "Une fois activé, vous ne pouvez pas désactiver le mode incognito pour cette conversation",
|
|
105680
105748
|
dialogDescriptionSuffix: "démarrez une nouvelle conversation si vous souhaitez que l'historique soit de nouveau enregistré.",
|
|
105681
105749
|
cancel: "Annuler",
|
|
105682
105750
|
enabling: "Activation…",
|
|
105683
|
-
enablePrivateMode: "Activer le mode
|
|
105751
|
+
enablePrivateMode: "Activer le mode incognito"
|
|
105684
105752
|
};
|
|
105685
105753
|
var chatStopStreamingButton$2 = {
|
|
105686
105754
|
stopStreaming: "Arrêter la diffusion"
|
|
@@ -107622,6 +107690,29 @@ var privacyTabLabels$2 = {
|
|
|
107622
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."
|
|
107623
107691
|
}
|
|
107624
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.",
|
|
107625
107716
|
toasts: {
|
|
107626
107717
|
updateSuccess: "Paramètres de confidentialité mis à jour",
|
|
107627
107718
|
updateError: "Échec de la mise à jour des paramètres de confidentialité"
|
|
@@ -107783,16 +107874,16 @@ var profileCatalogInviteModal$2 = {
|
|
|
107783
107874
|
sendInvitationsFailed: "Échec de l'envoi des invitations. Veuillez réessayer."
|
|
107784
107875
|
};
|
|
107785
107876
|
var profileChatPrivacyTab$2 = {
|
|
107786
|
-
sectionHeading: "Mode
|
|
107787
|
-
sectionDescription: "Choisissez comment les conversations avec les agents IA sont enregistrées par défaut. Vous pouvez basculer n'importe quelle conversation en mode
|
|
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.",
|
|
107788
107879
|
modeNormalLabel: "Normal",
|
|
107789
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.",
|
|
107790
107881
|
modeAnonymizedLabel: "Anonymisé",
|
|
107791
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.",
|
|
107792
|
-
modeDisabledLabel: "
|
|
107883
|
+
modeDisabledLabel: "Incognito",
|
|
107793
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.",
|
|
107794
|
-
toastUpdated: "Mode
|
|
107795
|
-
toastFailed: "Échec de la mise à jour du mode
|
|
107885
|
+
toastUpdated: "Mode incognito par défaut mis à jour",
|
|
107886
|
+
toastFailed: "Échec de la mise à jour du mode incognito par défaut"
|
|
107796
107887
|
};
|
|
107797
107888
|
var profileCsvEditor$2 = {
|
|
107798
107889
|
title: "Modifier les données CSV",
|
|
@@ -107822,7 +107913,7 @@ var profileIndex$2 = {
|
|
|
107822
107913
|
descResume: "Téléversez et prévisualisez votre CV le plus récent.",
|
|
107823
107914
|
descPurchases: "Consultez et gérez vos abonnements et achats.",
|
|
107824
107915
|
descMemory: "Gérez ce que l'IA se souvient de vous.",
|
|
107825
|
-
descPrivacy: "Définissez votre mode
|
|
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.",
|
|
107826
107917
|
descChatHistory: "Consultez et exportez vos conversations avec les agents IA.",
|
|
107827
107918
|
descSecurity: "Mettez à jour vos paramètres de sécurité et votre mot de passe.",
|
|
107828
107919
|
descAdvanced: "Gérez vos paramètres avancés.",
|
|
@@ -107870,7 +107961,7 @@ var profileIndex$2 = {
|
|
|
107870
107961
|
descExperiencePreview: "Expérience professionnelle.",
|
|
107871
107962
|
descPurchasesPreview: "Abonnements et achats.",
|
|
107872
107963
|
descMemoryPreview: "Ce dont l'IA se souvient.",
|
|
107873
|
-
descPrivacyPreview: "Mode
|
|
107964
|
+
descPrivacyPreview: "Mode incognito et effet de chaque option sur les conversations avec les agents IA.",
|
|
107874
107965
|
descChatHistoryPreview: "Conversations avec les agents IA.",
|
|
107875
107966
|
ariaAddEducation: "Ajouter une formation",
|
|
107876
107967
|
ariaAddExperience: "Ajouter une expérience",
|
|
@@ -108472,19 +108563,15 @@ var settingsTabLabels$2 = {
|
|
|
108472
108563
|
removeAriaLabel: "Supprimer l'image"
|
|
108473
108564
|
},
|
|
108474
108565
|
enhancedDocRetrieval: {
|
|
108475
|
-
label: "Enhanced
|
|
108566
|
+
label: "Enhanced Document Retrieval",
|
|
108476
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."
|
|
108477
108568
|
},
|
|
108478
108569
|
promptCaching: {
|
|
108479
|
-
label: "Prompt
|
|
108570
|
+
label: "Prompt Caching",
|
|
108480
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."
|
|
108481
108572
|
},
|
|
108482
|
-
privateMode: {
|
|
108483
|
-
label: "Enable private mode",
|
|
108484
|
-
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."
|
|
108485
|
-
},
|
|
108486
108573
|
smartDocRetrieval: {
|
|
108487
|
-
label: "Smart
|
|
108574
|
+
label: "Smart Document Retrieval",
|
|
108488
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."
|
|
108489
108576
|
}
|
|
108490
108577
|
},
|
|
@@ -108532,14 +108619,14 @@ var settingsTabLabels$2 = {
|
|
|
108532
108619
|
capabilities: "Capabilities"
|
|
108533
108620
|
},
|
|
108534
108621
|
sections: {
|
|
108535
|
-
chatExperience: "Chat
|
|
108622
|
+
chatExperience: "Chat Experience",
|
|
108536
108623
|
advanced: "Advanced",
|
|
108537
108624
|
perSurface: "Capacites par surface",
|
|
108538
108625
|
globalSettings: "Capacites globales"
|
|
108539
108626
|
},
|
|
108540
108627
|
surfaces: {
|
|
108541
|
-
inAppChat: "In-
|
|
108542
|
-
embedWidget: "Embed
|
|
108628
|
+
inAppChat: "In-App Chat",
|
|
108629
|
+
embedWidget: "Embed Widget"
|
|
108543
108630
|
},
|
|
108544
108631
|
notes: {
|
|
108545
108632
|
perSurface: "A configurer independamment pour le chat dans l'application et le widget integre.",
|
|
@@ -109179,6 +109266,7 @@ var tabsPoliciestab$2 = {
|
|
|
109179
109266
|
browseResourcesLabel: "Parcourir les ressources"
|
|
109180
109267
|
};
|
|
109181
109268
|
var tabsPrivacyTab$2 = {
|
|
109269
|
+
subTabsAriaLabel: "Privacy sub-categories",
|
|
109182
109270
|
moreInfo: "Plus d'informations",
|
|
109183
109271
|
outputFilterAriaLabelEnabled: "Filtre de sortie activé",
|
|
109184
109272
|
outputFilterAriaLabelDisabled: "Filtre de sortie désactivé"
|
|
@@ -109267,7 +109355,6 @@ var tabsSettingsTab$2 = {
|
|
|
109267
109355
|
settingsSubCategoriesAriaLabel: "Settings sub-categories",
|
|
109268
109356
|
enhancedDocRetrievalTooltipAriaLabel: "More info about enhanced document retrieval",
|
|
109269
109357
|
promptCachingTooltipAriaLabel: "More info about prompt caching",
|
|
109270
|
-
privateModeTooltipAriaLabel: "More info about enable private mode",
|
|
109271
109358
|
smartDocRetrievalTooltipAriaLabel: "More info about smart document retrieval",
|
|
109272
109359
|
toggleAriaLabel: "{label} {state}"
|
|
109273
109360
|
};
|
|
@@ -111083,6 +111170,54 @@ var virtualMachineNetworkSection$2 = {
|
|
|
111083
111170
|
manageTitle: "Paramètres de la machine virtuelle",
|
|
111084
111171
|
manageDescription: "Les politiques réseau et les secrets de VM sont partagés par tous les agents de votre organisation."
|
|
111085
111172
|
};
|
|
111173
|
+
var accessibility$2 = {
|
|
111174
|
+
toolbar: {
|
|
111175
|
+
accessibilityMenu: "Menu d'accessibilité",
|
|
111176
|
+
contrastPlus: "Contraste +",
|
|
111177
|
+
highlightLinks: "Mettre les liens en évidence",
|
|
111178
|
+
biggerText: "Texte plus grand",
|
|
111179
|
+
textSpacing: "Espacement du texte",
|
|
111180
|
+
pauseAnimations: "Mettre les animations en pause",
|
|
111181
|
+
hideImages: "Masquer les images",
|
|
111182
|
+
dyslexiaFriendly: "Adapté à la dyslexie",
|
|
111183
|
+
cursor: "Curseur",
|
|
111184
|
+
tooltips: "Infobulles",
|
|
111185
|
+
lineHeight: "Hauteur de ligne",
|
|
111186
|
+
textAlign: "Alignement du texte",
|
|
111187
|
+
saturation: "Saturation",
|
|
111188
|
+
resetAllAccessibilitySettings: "Réinitialiser tous les paramètres d'accessibilité",
|
|
111189
|
+
contrastInvertColors: "Inverser les couleurs",
|
|
111190
|
+
contrastDark: "Contraste sombre",
|
|
111191
|
+
contrastLight: "Contraste clair",
|
|
111192
|
+
textSizeNormal: "Texte normal",
|
|
111193
|
+
textSizeLarge: "Grand texte",
|
|
111194
|
+
textSizeLarger: "Texte très grand",
|
|
111195
|
+
spacingLight: "Espacement léger",
|
|
111196
|
+
spacingModerate: "Espacement modéré",
|
|
111197
|
+
spacingHeavy: "Espacement important",
|
|
111198
|
+
dyslexiaFont: "Police dyslexie",
|
|
111199
|
+
legibleFont: "Police lisible",
|
|
111200
|
+
alignLeft: "Aligner à gauche",
|
|
111201
|
+
alignCenter: "Centrer",
|
|
111202
|
+
alignRight: "Aligner à droite",
|
|
111203
|
+
justify: "Justifier",
|
|
111204
|
+
saturationNormal: "Saturation normale",
|
|
111205
|
+
saturationHigh: "Haute saturation",
|
|
111206
|
+
saturationLow: "Faible saturation",
|
|
111207
|
+
resetButtonPosition: "Réinitialiser la position du bouton",
|
|
111208
|
+
moveButtonToCorner: "Déplacer le bouton dans un coin",
|
|
111209
|
+
moveButtonTopLeft: "Déplacer le bouton dans le coin supérieur gauche",
|
|
111210
|
+
moveButtonTopRight: "Déplacer le bouton dans le coin supérieur droit",
|
|
111211
|
+
moveButtonBottomLeft: "Déplacer le bouton dans le coin inférieur gauche",
|
|
111212
|
+
moveButtonBottomRight: "Déplacer le bouton dans le coin inférieur droit"
|
|
111213
|
+
},
|
|
111214
|
+
button: {
|
|
111215
|
+
openAccessibilityMenu: "Ouvrir le menu d'accessibilité",
|
|
111216
|
+
accessibilityIconAlt: "Accessibilité",
|
|
111217
|
+
moveHint: "Utilisez les flèches haut et bas pour déplacer ce bouton, et les flèches gauche et droite pour changer de côté. Maintenez Maj enfoncée pour le déplacer plus vite.",
|
|
111218
|
+
positionAnnouncement: "Bouton d'accessibilité déplacé vers le bord {side, select, left {gauche} other {droit}}, à {bottom} pixels du bas."
|
|
111219
|
+
}
|
|
111220
|
+
};
|
|
111086
111221
|
var fr = {
|
|
111087
111222
|
accessTabAddAccess: accessTabAddAccess$2,
|
|
111088
111223
|
accessTabLabels: accessTabLabels$2,
|
|
@@ -111378,7 +111513,8 @@ var fr = {
|
|
|
111378
111513
|
virtualMachineAdminTab: virtualMachineAdminTab$2,
|
|
111379
111514
|
virtualMachineNetworkPolicies: virtualMachineNetworkPolicies$2,
|
|
111380
111515
|
virtualMachineSecrets: virtualMachineSecrets$2,
|
|
111381
|
-
virtualMachineNetworkSection: virtualMachineNetworkSection$2
|
|
111516
|
+
virtualMachineNetworkSection: virtualMachineNetworkSection$2,
|
|
111517
|
+
accessibility: accessibility$2
|
|
111382
111518
|
};
|
|
111383
111519
|
|
|
111384
111520
|
var accessTabAddAccess$1 = {
|
|
@@ -113310,33 +113446,33 @@ var chatInputFormVoiceChatButton$1 = {
|
|
|
113310
113446
|
voiceRecord: "Grabación de voz"
|
|
113311
113447
|
};
|
|
113312
113448
|
var chatPrivacyChatPrivacyToggle$1 = {
|
|
113313
|
-
toastPrivateModeOff: "El modo
|
|
113314
|
-
toastCouldNotTurnOff: "No se pudo desactivar el modo
|
|
113315
|
-
toastPrivateModeOnNoHistory: "El modo
|
|
113316
|
-
toastCouldNotEnable: "No se pudo activar el modo
|
|
113317
|
-
toastPrivateModeOnRemovedHistory: "El modo
|
|
113318
|
-
toastFailedToEnable: "No se pudo habilitar el modo
|
|
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.",
|
|
113319
113455
|
working: "Procesando…",
|
|
113320
|
-
ariaLockedByAgent: "El modo
|
|
113321
|
-
ariaPrivateOnForConversation: "El modo
|
|
113322
|
-
ariaTurnOffPrivateMode: "Desactivar el modo
|
|
113323
|
-
ariaTurnOnMidConversation: "Activar el modo
|
|
113324
|
-
ariaTurnOnEmpty: "Activar el modo
|
|
113325
|
-
tooltipLockedByMentor: "Este agente siempre funciona en modo
|
|
113326
|
-
tooltipLockedByTenant: "Su organización tiene el modo
|
|
113327
|
-
tooltipLockedGeneric: "El modo
|
|
113328
|
-
tooltipPrivateOnPostSend: "El modo
|
|
113329
|
-
tooltipTurnOff: "Desactivar el modo
|
|
113330
|
-
tooltipTurnOnMidConversation: "Activar el modo
|
|
113331
|
-
tooltipTurnOnEmpty: "Activar el modo
|
|
113332
|
-
privateMode: "Modo
|
|
113333
|
-
dialogTitle: "¿Activar el modo
|
|
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?",
|
|
113334
113470
|
dialogDescription: "Esta conversación se eliminará de su historial y el asistente dejará de usar los turnos anteriores.",
|
|
113335
|
-
dialogDescriptionBold: "Una vez activado, no puede desactivar el modo
|
|
113471
|
+
dialogDescriptionBold: "Una vez activado, no puede desactivar el modo incógnito para este chat",
|
|
113336
113472
|
dialogDescriptionSuffix: "inicie una nueva conversación si desea que el historial se guarde nuevamente.",
|
|
113337
113473
|
cancel: "Cancelar",
|
|
113338
113474
|
enabling: "Activando…",
|
|
113339
|
-
enablePrivateMode: "Activar el modo
|
|
113475
|
+
enablePrivateMode: "Activar el modo incógnito"
|
|
113340
113476
|
};
|
|
113341
113477
|
var chatStopStreamingButton$1 = {
|
|
113342
113478
|
stopStreaming: "Detener transmisión"
|
|
@@ -115278,6 +115414,29 @@ var privacyTabLabels$1 = {
|
|
|
115278
115414
|
tooltip: "Eliminar PII de las respuestas generadas por la IA. Puede añadir una ligera latencia a las respuestas en streaming."
|
|
115279
115415
|
}
|
|
115280
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.",
|
|
115281
115440
|
toasts: {
|
|
115282
115441
|
updateSuccess: "Configuración de privacidad actualizada",
|
|
115283
115442
|
updateError: "Error al actualizar la configuración de privacidad"
|
|
@@ -115439,16 +115598,16 @@ var profileCatalogInviteModal$1 = {
|
|
|
115439
115598
|
sendInvitationsFailed: "Error al enviar las invitaciones. Por favor, inténtalo de nuevo."
|
|
115440
115599
|
};
|
|
115441
115600
|
var profileChatPrivacyTab$1 = {
|
|
115442
|
-
sectionHeading: "Modo
|
|
115443
|
-
sectionDescription: "Elija cómo se registran por defecto las conversaciones con los agentes de IA. Puede cambiar cualquier chat individual al modo
|
|
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.",
|
|
115444
115603
|
modeNormalLabel: "Normal",
|
|
115445
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.",
|
|
115446
115605
|
modeAnonymizedLabel: "Anonimizado",
|
|
115447
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.",
|
|
115448
|
-
modeDisabledLabel: "
|
|
115607
|
+
modeDisabledLabel: "Incógnito",
|
|
115449
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.",
|
|
115450
|
-
toastUpdated: "Modo
|
|
115451
|
-
toastFailed: "Error al actualizar el modo
|
|
115609
|
+
toastUpdated: "Modo incógnito predeterminado actualizado",
|
|
115610
|
+
toastFailed: "Error al actualizar el modo incógnito predeterminado"
|
|
115452
115611
|
};
|
|
115453
115612
|
var profileCsvEditor$1 = {
|
|
115454
115613
|
title: "Editar datos CSV",
|
|
@@ -115478,7 +115637,7 @@ var profileIndex$1 = {
|
|
|
115478
115637
|
descResume: "Sube y previsualiza tu currículum más reciente.",
|
|
115479
115638
|
descPurchases: "Consulta y administra tus suscripciones y compras.",
|
|
115480
115639
|
descMemory: "Administra lo que la IA recuerda sobre ti.",
|
|
115481
|
-
descPrivacy: "Establece tu Modo
|
|
115640
|
+
descPrivacy: "Establece tu Modo incógnito predeterminado y revisa qué efecto tiene cada opción en tus conversaciones con agentes de IA.",
|
|
115482
115641
|
descChatHistory: "Revisa y exporta tus conversaciones con agentes de IA.",
|
|
115483
115642
|
descSecurity: "Actualiza tu configuración de seguridad y contraseña.",
|
|
115484
115643
|
descAdvanced: "Administra tu configuración avanzada.",
|
|
@@ -115526,7 +115685,7 @@ var profileIndex$1 = {
|
|
|
115526
115685
|
descExperiencePreview: "Experiencia profesional.",
|
|
115527
115686
|
descPurchasesPreview: "Suscripciones y compras.",
|
|
115528
115687
|
descMemoryPreview: "Lo que la IA recuerda.",
|
|
115529
|
-
descPrivacyPreview: "Modo
|
|
115688
|
+
descPrivacyPreview: "Modo incógnito y qué hace cada opción en las conversaciones con agentes de IA.",
|
|
115530
115689
|
descChatHistoryPreview: "Conversaciones con agentes de IA.",
|
|
115531
115690
|
ariaAddEducation: "Añadir educación",
|
|
115532
115691
|
ariaAddExperience: "Añadir experiencia",
|
|
@@ -116128,19 +116287,15 @@ var settingsTabLabels$1 = {
|
|
|
116128
116287
|
removeAriaLabel: "Eliminar imagen"
|
|
116129
116288
|
},
|
|
116130
116289
|
enhancedDocRetrieval: {
|
|
116131
|
-
label: "Enhanced
|
|
116290
|
+
label: "Enhanced Document Retrieval",
|
|
116132
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."
|
|
116133
116292
|
},
|
|
116134
116293
|
promptCaching: {
|
|
116135
|
-
label: "Prompt
|
|
116294
|
+
label: "Prompt Caching",
|
|
116136
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."
|
|
116137
116296
|
},
|
|
116138
|
-
privateMode: {
|
|
116139
|
-
label: "Enable private mode",
|
|
116140
|
-
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."
|
|
116141
|
-
},
|
|
116142
116297
|
smartDocRetrieval: {
|
|
116143
|
-
label: "Smart
|
|
116298
|
+
label: "Smart Document Retrieval",
|
|
116144
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."
|
|
116145
116300
|
}
|
|
116146
116301
|
},
|
|
@@ -116188,14 +116343,14 @@ var settingsTabLabels$1 = {
|
|
|
116188
116343
|
capabilities: "Capabilities"
|
|
116189
116344
|
},
|
|
116190
116345
|
sections: {
|
|
116191
|
-
chatExperience: "Chat
|
|
116346
|
+
chatExperience: "Chat Experience",
|
|
116192
116347
|
advanced: "Advanced",
|
|
116193
116348
|
perSurface: "Capacidades por superficie",
|
|
116194
116349
|
globalSettings: "Capacidades globales"
|
|
116195
116350
|
},
|
|
116196
116351
|
surfaces: {
|
|
116197
|
-
inAppChat: "In-
|
|
116198
|
-
embedWidget: "Embed
|
|
116352
|
+
inAppChat: "In-App Chat",
|
|
116353
|
+
embedWidget: "Embed Widget"
|
|
116199
116354
|
},
|
|
116200
116355
|
notes: {
|
|
116201
116356
|
perSurface: "Se configuran de forma independiente para el chat en la aplicacion y el widget incrustado.",
|
|
@@ -116835,6 +116990,7 @@ var tabsPoliciestab$1 = {
|
|
|
116835
116990
|
browseResourcesLabel: "Explorar recursos"
|
|
116836
116991
|
};
|
|
116837
116992
|
var tabsPrivacyTab$1 = {
|
|
116993
|
+
subTabsAriaLabel: "Privacy sub-categories",
|
|
116838
116994
|
moreInfo: "Más información",
|
|
116839
116995
|
outputFilterAriaLabelEnabled: "Filtro de salida activado",
|
|
116840
116996
|
outputFilterAriaLabelDisabled: "Filtro de salida desactivado"
|
|
@@ -116923,7 +117079,6 @@ var tabsSettingsTab$1 = {
|
|
|
116923
117079
|
settingsSubCategoriesAriaLabel: "Settings sub-categories",
|
|
116924
117080
|
enhancedDocRetrievalTooltipAriaLabel: "More info about enhanced document retrieval",
|
|
116925
117081
|
promptCachingTooltipAriaLabel: "More info about prompt caching",
|
|
116926
|
-
privateModeTooltipAriaLabel: "More info about enable private mode",
|
|
116927
117082
|
smartDocRetrievalTooltipAriaLabel: "More info about smart document retrieval",
|
|
116928
117083
|
toggleAriaLabel: "{label} {state}"
|
|
116929
117084
|
};
|
|
@@ -118739,6 +118894,54 @@ var virtualMachineNetworkSection$1 = {
|
|
|
118739
118894
|
manageTitle: "Configuración de la máquina virtual",
|
|
118740
118895
|
manageDescription: "Las políticas de red y los secretos de VM son compartidos por todos los agentes de tu organización."
|
|
118741
118896
|
};
|
|
118897
|
+
var accessibility$1 = {
|
|
118898
|
+
toolbar: {
|
|
118899
|
+
accessibilityMenu: "Menú de accesibilidad",
|
|
118900
|
+
contrastPlus: "Contraste +",
|
|
118901
|
+
highlightLinks: "Resaltar enlaces",
|
|
118902
|
+
biggerText: "Texto más grande",
|
|
118903
|
+
textSpacing: "Espaciado del texto",
|
|
118904
|
+
pauseAnimations: "Pausar animaciones",
|
|
118905
|
+
hideImages: "Ocultar imágenes",
|
|
118906
|
+
dyslexiaFriendly: "Apto para dislexia",
|
|
118907
|
+
cursor: "Cursor",
|
|
118908
|
+
tooltips: "Tooltips",
|
|
118909
|
+
lineHeight: "Altura de línea",
|
|
118910
|
+
textAlign: "Alineación del texto",
|
|
118911
|
+
saturation: "Saturación",
|
|
118912
|
+
resetAllAccessibilitySettings: "Restablecer todos los ajustes de accesibilidad",
|
|
118913
|
+
contrastInvertColors: "Invertir colores",
|
|
118914
|
+
contrastDark: "Contraste oscuro",
|
|
118915
|
+
contrastLight: "Contraste claro",
|
|
118916
|
+
textSizeNormal: "Texto normal",
|
|
118917
|
+
textSizeLarge: "Texto grande",
|
|
118918
|
+
textSizeLarger: "Texto más grande",
|
|
118919
|
+
spacingLight: "Espaciado ligero",
|
|
118920
|
+
spacingModerate: "Espaciado moderado",
|
|
118921
|
+
spacingHeavy: "Espaciado amplio",
|
|
118922
|
+
dyslexiaFont: "Fuente para dislexia",
|
|
118923
|
+
legibleFont: "Fuente legible",
|
|
118924
|
+
alignLeft: "Alinear a la izquierda",
|
|
118925
|
+
alignCenter: "Centrar",
|
|
118926
|
+
alignRight: "Alinear a la derecha",
|
|
118927
|
+
justify: "Justificar",
|
|
118928
|
+
saturationNormal: "Saturación normal",
|
|
118929
|
+
saturationHigh: "Alta saturación",
|
|
118930
|
+
saturationLow: "Baja saturación",
|
|
118931
|
+
resetButtonPosition: "Restablecer posición del botón",
|
|
118932
|
+
moveButtonToCorner: "Mover el botón a una esquina",
|
|
118933
|
+
moveButtonTopLeft: "Mover el botón a la esquina superior izquierda",
|
|
118934
|
+
moveButtonTopRight: "Mover el botón a la esquina superior derecha",
|
|
118935
|
+
moveButtonBottomLeft: "Mover el botón a la esquina inferior izquierda",
|
|
118936
|
+
moveButtonBottomRight: "Mover el botón a la esquina inferior derecha"
|
|
118937
|
+
},
|
|
118938
|
+
button: {
|
|
118939
|
+
openAccessibilityMenu: "Abrir el menú de accesibilidad",
|
|
118940
|
+
accessibilityIconAlt: "Accesibilidad",
|
|
118941
|
+
moveHint: "Usa las flechas arriba y abajo para mover este botón, y las flechas izquierda y derecha para cambiarlo de lado. Mantén pulsada Mayús para moverlo más rápido.",
|
|
118942
|
+
positionAnnouncement: "Botón de accesibilidad movido al borde {side, select, left {izquierdo} other {derecho}}, a {bottom} píxeles de la parte inferior."
|
|
118943
|
+
}
|
|
118944
|
+
};
|
|
118742
118945
|
var es = {
|
|
118743
118946
|
accessTabAddAccess: accessTabAddAccess$1,
|
|
118744
118947
|
accessTabLabels: accessTabLabels$1,
|
|
@@ -119034,7 +119237,8 @@ var es = {
|
|
|
119034
119237
|
virtualMachineAdminTab: virtualMachineAdminTab$1,
|
|
119035
119238
|
virtualMachineNetworkPolicies: virtualMachineNetworkPolicies$1,
|
|
119036
119239
|
virtualMachineSecrets: virtualMachineSecrets$1,
|
|
119037
|
-
virtualMachineNetworkSection: virtualMachineNetworkSection$1
|
|
119240
|
+
virtualMachineNetworkSection: virtualMachineNetworkSection$1,
|
|
119241
|
+
accessibility: accessibility$1
|
|
119038
119242
|
};
|
|
119039
119243
|
|
|
119040
119244
|
var accessTabAddAccess = {
|
|
@@ -120966,33 +121170,33 @@ var chatInputFormVoiceChatButton = {
|
|
|
120966
121170
|
voiceRecord: "语音录制"
|
|
120967
121171
|
};
|
|
120968
121172
|
var chatPrivacyChatPrivacyToggle = {
|
|
120969
|
-
toastPrivateModeOff: "
|
|
120970
|
-
toastCouldNotTurnOff: "
|
|
120971
|
-
toastPrivateModeOnNoHistory: "
|
|
120972
|
-
toastCouldNotEnable: "
|
|
120973
|
-
toastPrivateModeOnRemovedHistory: "
|
|
120974
|
-
toastFailedToEnable: "
|
|
121173
|
+
toastPrivateModeOff: "无痕模式已关闭。",
|
|
121174
|
+
toastCouldNotTurnOff: "无法关闭无痕模式,请重试。",
|
|
121175
|
+
toastPrivateModeOnNoHistory: "无痕模式已开启。此对话不会保存到历史记录,也不会用于记忆。",
|
|
121176
|
+
toastCouldNotEnable: "无法启用无痕模式,请重试。",
|
|
121177
|
+
toastPrivateModeOnRemovedHistory: "无痕模式已开启。此对话已从您的历史记录中移除。",
|
|
121178
|
+
toastFailedToEnable: "启用无痕模式失败,请重试。",
|
|
120975
121179
|
working: "处理中…",
|
|
120976
|
-
ariaLockedByAgent: "
|
|
120977
|
-
ariaPrivateOnForConversation: "
|
|
120978
|
-
ariaTurnOffPrivateMode: "
|
|
120979
|
-
ariaTurnOnMidConversation: "
|
|
120980
|
-
ariaTurnOnEmpty: "
|
|
120981
|
-
tooltipLockedByMentor: "
|
|
120982
|
-
tooltipLockedByTenant: "
|
|
120983
|
-
tooltipLockedGeneric: "
|
|
120984
|
-
tooltipPrivateOnPostSend: "
|
|
120985
|
-
tooltipTurnOff: "
|
|
120986
|
-
tooltipTurnOnMidConversation: "
|
|
120987
|
-
tooltipTurnOnEmpty: "
|
|
120988
|
-
privateMode: "
|
|
120989
|
-
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: "为此对话启用无痕模式?",
|
|
120990
121194
|
dialogDescription: "此对话将从您的历史记录中移除,助手也将停止使用其中的早期内容。",
|
|
120991
|
-
dialogDescriptionBold: "
|
|
121195
|
+
dialogDescriptionBold: "一旦开启,您将无法为此对话关闭无痕模式",
|
|
120992
121196
|
dialogDescriptionSuffix: "如需再次保存历史记录,请开始新的对话。",
|
|
120993
121197
|
cancel: "取消",
|
|
120994
121198
|
enabling: "启用中…",
|
|
120995
|
-
enablePrivateMode: "
|
|
121199
|
+
enablePrivateMode: "启用无痕模式"
|
|
120996
121200
|
};
|
|
120997
121201
|
var chatStopStreamingButton = {
|
|
120998
121202
|
stopStreaming: "停止流式输出"
|
|
@@ -122934,6 +123138,29 @@ var privacyTabLabels = {
|
|
|
122934
123138
|
tooltip: "从 AI 生成的回复中删除 PII。可能会为流式回复增加轻微延迟。"
|
|
122935
123139
|
}
|
|
122936
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.",
|
|
122937
123164
|
toasts: {
|
|
122938
123165
|
updateSuccess: "隐私设置已更新",
|
|
122939
123166
|
updateError: "更新隐私设置失败"
|
|
@@ -123095,16 +123322,16 @@ var profileCatalogInviteModal = {
|
|
|
123095
123322
|
sendInvitationsFailed: "发送邀请失败,请重试。"
|
|
123096
123323
|
};
|
|
123097
123324
|
var profileChatPrivacyTab = {
|
|
123098
|
-
sectionHeading: "
|
|
123099
|
-
sectionDescription: "选择与 AI
|
|
123325
|
+
sectionHeading: "默认无痕模式",
|
|
123326
|
+
sectionDescription: "选择与 AI 代理的对话默认如何记录。您可以在聊天标题中将任何单独的对话切换为无痕模式——代理或您的组织也可以针对特定对话覆盖此设置。",
|
|
123100
123327
|
modeNormalLabel: "普通",
|
|
123101
123328
|
modeNormalDescription: "对话会保存到您的历史记录并与您的账户关联。代理在同一对话中使用先前的轮次作为上下文。",
|
|
123102
123329
|
modeAnonymizedLabel: "匿名",
|
|
123103
123330
|
modeAnonymizedDescription: "对话会为 AI 上下文而保存,但会去除账户身份识别信息。代理仍会使用同一对话中的先前轮次。",
|
|
123104
|
-
modeDisabledLabel: "
|
|
123331
|
+
modeDisabledLabel: "无痕",
|
|
123105
123332
|
modeDisabledDescription: "不记录任何内容。每条消息都是单轮问答——代理无法引用之前的消息,即使在同一对话中也不例外。",
|
|
123106
|
-
toastUpdated: "
|
|
123107
|
-
toastFailed: "
|
|
123333
|
+
toastUpdated: "默认无痕模式已更新",
|
|
123334
|
+
toastFailed: "更新默认无痕模式失败"
|
|
123108
123335
|
};
|
|
123109
123336
|
var profileCsvEditor = {
|
|
123110
123337
|
title: "编辑 CSV 数据",
|
|
@@ -123784,19 +124011,15 @@ var settingsTabLabels = {
|
|
|
123784
124011
|
removeAriaLabel: "移除图片"
|
|
123785
124012
|
},
|
|
123786
124013
|
enhancedDocRetrieval: {
|
|
123787
|
-
label: "Enhanced
|
|
124014
|
+
label: "Enhanced Document Retrieval",
|
|
123788
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."
|
|
123789
124016
|
},
|
|
123790
124017
|
promptCaching: {
|
|
123791
|
-
label: "Prompt
|
|
124018
|
+
label: "Prompt Caching",
|
|
123792
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."
|
|
123793
124020
|
},
|
|
123794
|
-
privateMode: {
|
|
123795
|
-
label: "Enable private mode",
|
|
123796
|
-
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."
|
|
123797
|
-
},
|
|
123798
124021
|
smartDocRetrieval: {
|
|
123799
|
-
label: "Smart
|
|
124022
|
+
label: "Smart Document Retrieval",
|
|
123800
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."
|
|
123801
124024
|
}
|
|
123802
124025
|
},
|
|
@@ -123844,14 +124067,14 @@ var settingsTabLabels = {
|
|
|
123844
124067
|
capabilities: "Capabilities"
|
|
123845
124068
|
},
|
|
123846
124069
|
sections: {
|
|
123847
|
-
chatExperience: "Chat
|
|
124070
|
+
chatExperience: "Chat Experience",
|
|
123848
124071
|
advanced: "Advanced",
|
|
123849
124072
|
perSurface: "按界面功能",
|
|
123850
124073
|
globalSettings: "全局功能"
|
|
123851
124074
|
},
|
|
123852
124075
|
surfaces: {
|
|
123853
|
-
inAppChat: "In-
|
|
123854
|
-
embedWidget: "Embed
|
|
124076
|
+
inAppChat: "In-App Chat",
|
|
124077
|
+
embedWidget: "Embed Widget"
|
|
123855
124078
|
},
|
|
123856
124079
|
notes: {
|
|
123857
124080
|
perSurface: "分别为应用内聊天和嵌入式挂件单独设置。",
|
|
@@ -124491,6 +124714,7 @@ var tabsPoliciestab = {
|
|
|
124491
124714
|
browseResourcesLabel: "浏览资源"
|
|
124492
124715
|
};
|
|
124493
124716
|
var tabsPrivacyTab = {
|
|
124717
|
+
subTabsAriaLabel: "Privacy sub-categories",
|
|
124494
124718
|
moreInfo: "更多信息",
|
|
124495
124719
|
outputFilterAriaLabelEnabled: "输出过滤器已启用",
|
|
124496
124720
|
outputFilterAriaLabelDisabled: "输出过滤器已禁用"
|
|
@@ -124579,7 +124803,6 @@ var tabsSettingsTab = {
|
|
|
124579
124803
|
settingsSubCategoriesAriaLabel: "Settings sub-categories",
|
|
124580
124804
|
enhancedDocRetrievalTooltipAriaLabel: "More info about enhanced document retrieval",
|
|
124581
124805
|
promptCachingTooltipAriaLabel: "More info about prompt caching",
|
|
124582
|
-
privateModeTooltipAriaLabel: "More info about enable private mode",
|
|
124583
124806
|
smartDocRetrievalTooltipAriaLabel: "More info about smart document retrieval",
|
|
124584
124807
|
toggleAriaLabel: "{label} {state}"
|
|
124585
124808
|
};
|
|
@@ -126395,6 +126618,54 @@ var virtualMachineNetworkSection = {
|
|
|
126395
126618
|
manageTitle: "虚拟机设置",
|
|
126396
126619
|
manageDescription: "网络策略和虚拟机密钥由您组织中的所有智能体共享。"
|
|
126397
126620
|
};
|
|
126621
|
+
var accessibility = {
|
|
126622
|
+
toolbar: {
|
|
126623
|
+
accessibilityMenu: "无障碍菜单",
|
|
126624
|
+
contrastPlus: "对比度 +",
|
|
126625
|
+
highlightLinks: "高亮链接",
|
|
126626
|
+
biggerText: "放大文字",
|
|
126627
|
+
textSpacing: "文字间距",
|
|
126628
|
+
pauseAnimations: "暂停动画",
|
|
126629
|
+
hideImages: "隐藏图片",
|
|
126630
|
+
dyslexiaFriendly: "阅读障碍友好",
|
|
126631
|
+
cursor: "光标",
|
|
126632
|
+
tooltips: "工具提示",
|
|
126633
|
+
lineHeight: "行高",
|
|
126634
|
+
textAlign: "文字对齐",
|
|
126635
|
+
saturation: "饱和度",
|
|
126636
|
+
resetAllAccessibilitySettings: "重置所有无障碍设置",
|
|
126637
|
+
contrastInvertColors: "反转颜色",
|
|
126638
|
+
contrastDark: "深色对比",
|
|
126639
|
+
contrastLight: "浅色对比",
|
|
126640
|
+
textSizeNormal: "正常文字",
|
|
126641
|
+
textSizeLarge: "大号文字",
|
|
126642
|
+
textSizeLarger: "更大文字",
|
|
126643
|
+
spacingLight: "轻度间距",
|
|
126644
|
+
spacingModerate: "适中间距",
|
|
126645
|
+
spacingHeavy: "宽松间距",
|
|
126646
|
+
dyslexiaFont: "阅读障碍字体",
|
|
126647
|
+
legibleFont: "易读字体",
|
|
126648
|
+
alignLeft: "左对齐",
|
|
126649
|
+
alignCenter: "居中对齐",
|
|
126650
|
+
alignRight: "右对齐",
|
|
126651
|
+
justify: "两端对齐",
|
|
126652
|
+
saturationNormal: "正常饱和度",
|
|
126653
|
+
saturationHigh: "高饱和度",
|
|
126654
|
+
saturationLow: "低饱和度",
|
|
126655
|
+
resetButtonPosition: "重置按钮位置",
|
|
126656
|
+
moveButtonToCorner: "将按钮移到角落",
|
|
126657
|
+
moveButtonTopLeft: "将按钮移到左上角",
|
|
126658
|
+
moveButtonTopRight: "将按钮移到右上角",
|
|
126659
|
+
moveButtonBottomLeft: "将按钮移到左下角",
|
|
126660
|
+
moveButtonBottomRight: "将按钮移到右下角"
|
|
126661
|
+
},
|
|
126662
|
+
button: {
|
|
126663
|
+
openAccessibilityMenu: "打开无障碍菜单",
|
|
126664
|
+
accessibilityIconAlt: "无障碍",
|
|
126665
|
+
moveHint: "使用上下方向键移动此按钮,使用左右方向键切换到另一侧。按住 Shift 键可更快移动。",
|
|
126666
|
+
positionAnnouncement: "无障碍按钮已移到{side, select, left {左} other {右}}边缘,距底部 {bottom} 像素。"
|
|
126667
|
+
}
|
|
126668
|
+
};
|
|
126398
126669
|
var zh = {
|
|
126399
126670
|
accessTabAddAccess: accessTabAddAccess,
|
|
126400
126671
|
accessTabLabels: accessTabLabels,
|
|
@@ -126690,7 +126961,8 @@ var zh = {
|
|
|
126690
126961
|
virtualMachineAdminTab: virtualMachineAdminTab,
|
|
126691
126962
|
virtualMachineNetworkPolicies: virtualMachineNetworkPolicies,
|
|
126692
126963
|
virtualMachineSecrets: virtualMachineSecrets,
|
|
126693
|
-
virtualMachineNetworkSection: virtualMachineNetworkSection
|
|
126964
|
+
virtualMachineNetworkSection: virtualMachineNetworkSection,
|
|
126965
|
+
accessibility: accessibility
|
|
126694
126966
|
};
|
|
126695
126967
|
|
|
126696
126968
|
/**
|
|
@@ -181330,7 +181602,7 @@ const PaginationContent = React.forwardRef(({ className, ...props }, ref) => (js
|
|
|
181330
181602
|
PaginationContent.displayName = 'PaginationContent';
|
|
181331
181603
|
const PaginationItem = React.forwardRef(({ className, ...props }, ref) => jsx("li", { ref: ref, className: cn('', className), ...props }));
|
|
181332
181604
|
PaginationItem.displayName = 'PaginationItem';
|
|
181333
|
-
const PaginationLink = ({ className, isActive, size = 'icon', ...props }) => (jsx("a", { "aria-current": isActive ? 'page' : undefined, className: cn(buttonVariants({
|
|
181605
|
+
const PaginationLink = ({ className, isActive, size = 'icon', ...props }) => (jsx("a", { "aria-current": isActive ? 'page' : undefined, className: cn(buttonVariants$1({
|
|
181334
181606
|
variant: isActive ? 'outline' : 'ghost',
|
|
181335
181607
|
size,
|
|
181336
181608
|
}), className), ...props }));
|
|
@@ -181595,7 +181867,7 @@ const pick = (name, fallback) => { var _a; return ((_a = read(name)) !== null &&
|
|
|
181595
181867
|
const CHAT_PRIVACY_SUPPORTED = !!read('ChatPrivacyModeEnum') && !!read('CHAT_PRIVACY_MODES');
|
|
181596
181868
|
const ChatPrivacyModeEnum = read('ChatPrivacyModeEnum');
|
|
181597
181869
|
const CHAT_PRIVACY_MODES = ((_a$1 = read('CHAT_PRIVACY_MODES')) !== null && _a$1 !== void 0 ? _a$1 : []);
|
|
181598
|
-
read('chatPrivacyApiSlice');
|
|
181870
|
+
const chatPrivacyApiSlice = read('chatPrivacyApiSlice');
|
|
181599
181871
|
const useGetTenantChatPrivacyConfigQuery = pick('useGetTenantChatPrivacyConfigQuery', noopQuery);
|
|
181600
181872
|
const useUpdateTenantChatPrivacyConfigMutation = pick('useUpdateTenantChatPrivacyConfigMutation', noopMutation);
|
|
181601
181873
|
pick('useGetChatPrivacyEffectiveQuery', noopQuery);
|
|
@@ -181680,15 +181952,15 @@ function ChatPrivacyTab({ org, username }) {
|
|
|
181680
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) => {
|
|
181681
181953
|
const { labelKey, descriptionKey, icon: Icon } = MODE_COPY[mode];
|
|
181682
181954
|
const isSelected = pending === mode;
|
|
181683
|
-
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
|
|
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
|
|
181684
181956
|
? 'border-blue-500 bg-blue-50/40 dark:bg-blue-950/20'
|
|
181685
|
-
: 'border-gray-200 hover:bg-gray-50 dark:border-gray-800 dark:hover:bg-gray-800/40'), children: [jsx(Icon, { className: cn('h-
|
|
181686
|
-
|
|
181687
|
-
|
|
181688
|
-
|
|
181689
|
-
|
|
181690
|
-
|
|
181691
|
-
|
|
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));
|
|
181692
181964
|
}) })] }));
|
|
181693
181965
|
}
|
|
181694
181966
|
|
|
@@ -271469,8 +271741,8 @@ function Calendar({ className, classNames, showOutsideDays = true, captionLayout
|
|
|
271469
271741
|
months: cn('flex gap-4 flex-col md:flex-row relative', defaultClassNames.months),
|
|
271470
271742
|
month: cn('flex flex-col w-full gap-4', defaultClassNames.month),
|
|
271471
271743
|
nav: cn('flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between', defaultClassNames.nav),
|
|
271472
|
-
button_previous: cn(buttonVariants({ variant: buttonVariant }), 'size-(--cell-size) aria-disabled:opacity-50 p-0 select-none', defaultClassNames.button_previous),
|
|
271473
|
-
button_next: cn(buttonVariants({ variant: buttonVariant }), 'size-(--cell-size) aria-disabled:opacity-50 p-0 select-none', defaultClassNames.button_next),
|
|
271744
|
+
button_previous: cn(buttonVariants$1({ variant: buttonVariant }), 'size-(--cell-size) aria-disabled:opacity-50 p-0 select-none', defaultClassNames.button_previous),
|
|
271745
|
+
button_next: cn(buttonVariants$1({ variant: buttonVariant }), 'size-(--cell-size) aria-disabled:opacity-50 p-0 select-none', defaultClassNames.button_next),
|
|
271474
271746
|
month_caption: cn('flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)', defaultClassNames.month_caption),
|
|
271475
271747
|
dropdowns: cn('w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5', defaultClassNames.dropdowns),
|
|
271476
271748
|
dropdown_root: cn('relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md', defaultClassNames.dropdown_root),
|
|
@@ -273921,7 +274193,7 @@ function Profile({ tenant, username, tenants, onClose, customization = {}, isAdm
|
|
|
273921
274193
|
const { data: memsearchStatus, isError: isMemsearchStatusError } = useGetMemsearchStatusQuery({ org: tenant, userId: username }, { skip: !enableMemoryTab });
|
|
273922
274194
|
// Show memory tab if enabled for this platform AND memsearch is enabled (or status API is unavailable)
|
|
273923
274195
|
const isMemoryEnabled = enableMemoryTab && (isMemsearchStatusError || ((_a = memsearchStatus === null || memsearchStatus === void 0 ? void 0 : memsearchStatus.enable_memsearch) !== null && _a !== void 0 ? _a : false));
|
|
273924
|
-
// The
|
|
274196
|
+
// The Privacy tab only appears when the tenant has opted into user-controlled
|
|
273925
274197
|
// chat privacy. Backend returns { allow_user_chat_privacy_control: boolean }.
|
|
273926
274198
|
const { data: chatPrivacyConfig } = useGetTenantChatPrivacyConfigQuery({ org: tenant, userId: username }, { skip: !tenant || !username });
|
|
273927
274199
|
const isChatPrivacyEnabled = !!(chatPrivacyConfig === null || chatPrivacyConfig === void 0 ? void 0 : chatPrivacyConfig.allow_user_chat_privacy_control);
|
|
@@ -274003,7 +274275,7 @@ function Profile({ tenant, username, tenants, onClose, customization = {}, isAdm
|
|
|
274003
274275
|
// id stays as 'privacy' so callers passing `targetTab='privacy'` and
|
|
274004
274276
|
// any test selectors targeting #panel-privacy keep working. The
|
|
274005
274277
|
// user-visible `label` is "Privacy"; the chat-privacy feature itself
|
|
274006
|
-
// is still called "
|
|
274278
|
+
// is still called "Incognito" within the tab's content. It sits with
|
|
274007
274279
|
// the account controls, just above Security.
|
|
274008
274280
|
...(isChatPrivacyEnabled
|
|
274009
274281
|
? [
|
|
@@ -283495,9 +283767,9 @@ const AlertDialogTitle = React.forwardRef(({ className, ...props }, ref) => (jsx
|
|
|
283495
283767
|
AlertDialogTitle.displayName = Title2.displayName;
|
|
283496
283768
|
const AlertDialogDescription = React.forwardRef(({ className, ...props }, ref) => (jsx(Description2, { ref: ref, className: cn('text-muted-foreground text-sm', className), ...props })));
|
|
283497
283769
|
AlertDialogDescription.displayName = Description2.displayName;
|
|
283498
|
-
const AlertDialogAction = React.forwardRef(({ className, ...props }, ref) => (jsx(Action, { ref: ref, className: cn(buttonVariants(), className), ...props })));
|
|
283770
|
+
const AlertDialogAction = React.forwardRef(({ className, ...props }, ref) => (jsx(Action, { ref: ref, className: cn(buttonVariants$1(), className), ...props })));
|
|
283499
283771
|
AlertDialogAction.displayName = Action.displayName;
|
|
283500
|
-
const AlertDialogCancel = React.forwardRef(({ className, ...props }, ref) => (jsx(Cancel, { ref: ref, className: cn(buttonVariants({ variant: 'outline' }), 'mt-2 sm:mt-0', className), ...props })));
|
|
283772
|
+
const AlertDialogCancel = React.forwardRef(({ className, ...props }, ref) => (jsx(Cancel, { ref: ref, className: cn(buttonVariants$1({ variant: 'outline' }), 'mt-2 sm:mt-0', className), ...props })));
|
|
283501
283773
|
AlertDialogCancel.displayName = Cancel.displayName;
|
|
283502
283774
|
|
|
283503
283775
|
const hostedDomainStatus = (row) => {
|
|
@@ -295511,6 +295783,568 @@ var projectInstructionsModal = /*#__PURE__*/Object.freeze({
|
|
|
295511
295783
|
ProjectInstructionsModal: ProjectInstructionsModal
|
|
295512
295784
|
});
|
|
295513
295785
|
|
|
295786
|
+
const defaultSettings = {
|
|
295787
|
+
invertColors: false,
|
|
295788
|
+
highlightLinks: false,
|
|
295789
|
+
textSize: 'normal',
|
|
295790
|
+
textSpacing: 'none',
|
|
295791
|
+
pauseAnimations: false,
|
|
295792
|
+
hideImages: false,
|
|
295793
|
+
dyslexiaFont: 'normal',
|
|
295794
|
+
customCursor: false,
|
|
295795
|
+
tooltips: false,
|
|
295796
|
+
lineHeight: false,
|
|
295797
|
+
textAlign: 'normal',
|
|
295798
|
+
saturation: 'normal',
|
|
295799
|
+
contrastMode: 'normal',
|
|
295800
|
+
};
|
|
295801
|
+
const AccessibilityContext = createContext(undefined);
|
|
295802
|
+
// localStorage throws in sandboxed iframes and when site data is blocked; settings then live in memory.
|
|
295803
|
+
function storeSettings(settings) {
|
|
295804
|
+
try {
|
|
295805
|
+
if (settings)
|
|
295806
|
+
localStorage.setItem('accessibility-settings', JSON.stringify(settings));
|
|
295807
|
+
else
|
|
295808
|
+
localStorage.removeItem('accessibility-settings');
|
|
295809
|
+
}
|
|
295810
|
+
catch (_a) { }
|
|
295811
|
+
}
|
|
295812
|
+
function AccessibilityProvider({ children }) {
|
|
295813
|
+
const [settings, setSettings] = useState(defaultSettings);
|
|
295814
|
+
const [isToolbarOpen, setIsToolbarOpen] = useState(false);
|
|
295815
|
+
useEffect(() => {
|
|
295816
|
+
setSettings(defaultSettings);
|
|
295817
|
+
storeSettings(null);
|
|
295818
|
+
}, []);
|
|
295819
|
+
useEffect(() => {
|
|
295820
|
+
const root = document.documentElement;
|
|
295821
|
+
if (settings.contrastMode === 'invert') {
|
|
295822
|
+
root.style.setProperty('--accessibility-invert', 'invert(1)');
|
|
295823
|
+
document.body.classList.add('accessibility-invert');
|
|
295824
|
+
}
|
|
295825
|
+
else {
|
|
295826
|
+
root.style.setProperty('--accessibility-invert', 'invert(0)');
|
|
295827
|
+
document.body.classList.remove('accessibility-invert');
|
|
295828
|
+
}
|
|
295829
|
+
const fontSizeMap = {
|
|
295830
|
+
normal: '1',
|
|
295831
|
+
large: '1.2',
|
|
295832
|
+
larger: '1.4',
|
|
295833
|
+
};
|
|
295834
|
+
root.style.setProperty('--accessibility-font-size', fontSizeMap[settings.textSize]);
|
|
295835
|
+
document.body.classList.toggle('accessibility-text-size', settings.textSize !== 'normal');
|
|
295836
|
+
const spacingMap = {
|
|
295837
|
+
none: { letter: 'normal', word: 'normal' },
|
|
295838
|
+
light: { letter: '0.05em', word: '0.1em' },
|
|
295839
|
+
moderate: { letter: '0.1em', word: '0.2em' },
|
|
295840
|
+
heavy: { letter: '0.15em', word: '0.3em' },
|
|
295841
|
+
};
|
|
295842
|
+
const spacing = spacingMap[settings.textSpacing];
|
|
295843
|
+
root.style.setProperty('--accessibility-letter-spacing', spacing.letter);
|
|
295844
|
+
root.style.setProperty('--accessibility-word-spacing', spacing.word);
|
|
295845
|
+
document.body.classList.toggle('accessibility-text-spacing', settings.textSpacing !== 'none');
|
|
295846
|
+
if (settings.pauseAnimations) {
|
|
295847
|
+
document.body.classList.add('accessibility-pause-animations');
|
|
295848
|
+
}
|
|
295849
|
+
else {
|
|
295850
|
+
document.body.classList.remove('accessibility-pause-animations');
|
|
295851
|
+
}
|
|
295852
|
+
if (settings.lineHeight) {
|
|
295853
|
+
root.style.setProperty('--accessibility-line-height', '1.8');
|
|
295854
|
+
document.body.classList.add('accessibility-line-height');
|
|
295855
|
+
}
|
|
295856
|
+
else {
|
|
295857
|
+
root.style.setProperty('--accessibility-line-height', '1.5');
|
|
295858
|
+
document.body.classList.remove('accessibility-line-height');
|
|
295859
|
+
}
|
|
295860
|
+
const saturationMap = {
|
|
295861
|
+
normal: 'saturate(1)',
|
|
295862
|
+
high: 'saturate(1.8)',
|
|
295863
|
+
low: 'saturate(0.3)',
|
|
295864
|
+
};
|
|
295865
|
+
root.style.setProperty('--accessibility-saturation', saturationMap[settings.saturation]);
|
|
295866
|
+
document.body.classList.toggle('accessibility-saturation', settings.saturation !== 'normal');
|
|
295867
|
+
document.body.classList.toggle('accessibility-custom-cursor', settings.customCursor);
|
|
295868
|
+
const body = document.body;
|
|
295869
|
+
body.classList.toggle('accessibility-highlight-links', settings.highlightLinks);
|
|
295870
|
+
body.classList.toggle('accessibility-hide-images', settings.hideImages);
|
|
295871
|
+
body.classList.toggle('accessibility-dyslexia-friendly', settings.dyslexiaFont === 'dyslexia');
|
|
295872
|
+
body.classList.toggle('accessibility-legible-font', settings.dyslexiaFont === 'legible');
|
|
295873
|
+
body.classList.toggle('accessibility-pause-animations', settings.pauseAnimations);
|
|
295874
|
+
body.classList.toggle('accessibility-tooltips', settings.tooltips);
|
|
295875
|
+
body.classList.remove('accessibility-text-left', 'accessibility-text-center', 'accessibility-text-right', 'accessibility-text-justify');
|
|
295876
|
+
if (settings.textAlign !== 'normal') {
|
|
295877
|
+
body.classList.add(`accessibility-text-${settings.textAlign}`);
|
|
295878
|
+
}
|
|
295879
|
+
body.classList.remove('accessibility-high-contrast', 'accessibility-dark-contrast', 'accessibility-light-contrast');
|
|
295880
|
+
if (settings.contrastMode === 'dark') {
|
|
295881
|
+
body.classList.add('accessibility-dark-contrast');
|
|
295882
|
+
}
|
|
295883
|
+
else if (settings.contrastMode === 'light') {
|
|
295884
|
+
body.classList.add('accessibility-light-contrast');
|
|
295885
|
+
}
|
|
295886
|
+
}, [settings]);
|
|
295887
|
+
const updateSetting = (key, value) => {
|
|
295888
|
+
const newSettings = { ...settings, [key]: value };
|
|
295889
|
+
setSettings(newSettings);
|
|
295890
|
+
storeSettings(newSettings);
|
|
295891
|
+
};
|
|
295892
|
+
const resetSettings = () => {
|
|
295893
|
+
setSettings(defaultSettings);
|
|
295894
|
+
storeSettings(null);
|
|
295895
|
+
};
|
|
295896
|
+
return (jsx(AccessibilityContext.Provider, { value: {
|
|
295897
|
+
settings,
|
|
295898
|
+
updateSetting,
|
|
295899
|
+
resetSettings,
|
|
295900
|
+
isToolbarOpen,
|
|
295901
|
+
setIsToolbarOpen,
|
|
295902
|
+
}, children: children }));
|
|
295903
|
+
}
|
|
295904
|
+
function useAccessibility() {
|
|
295905
|
+
const context = useContext(AccessibilityContext);
|
|
295906
|
+
if (context === undefined) {
|
|
295907
|
+
throw new Error('useAccessibility must be used within an AccessibilityProvider');
|
|
295908
|
+
}
|
|
295909
|
+
return context;
|
|
295910
|
+
}
|
|
295911
|
+
|
|
295912
|
+
// Mirrors the host app's shadcn v4 button rather than ../ui/button so the
|
|
295913
|
+
// menu keeps its exact look: ../ui/button's `[&_svg]:size-4` would shrink the
|
|
295914
|
+
// h-5 icons and the 44px accessibility icon.
|
|
295915
|
+
const buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive", {
|
|
295916
|
+
variants: {
|
|
295917
|
+
variant: {
|
|
295918
|
+
default: 'bg-primary text-primary-foreground shadow-xs hover:bg-primary/90',
|
|
295919
|
+
outline: 'border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50',
|
|
295920
|
+
ghost: 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50',
|
|
295921
|
+
},
|
|
295922
|
+
size: {
|
|
295923
|
+
default: 'h-9 px-4 py-2 has-[>svg]:px-3',
|
|
295924
|
+
icon: 'size-9',
|
|
295925
|
+
},
|
|
295926
|
+
},
|
|
295927
|
+
defaultVariants: {
|
|
295928
|
+
variant: 'default',
|
|
295929
|
+
size: 'default',
|
|
295930
|
+
},
|
|
295931
|
+
});
|
|
295932
|
+
function AccessibilityButton({ className, variant, size, ...props }) {
|
|
295933
|
+
return (jsx("button", { "data-slot": "button", className: cn(buttonVariants({ variant, size, className })), ...props }));
|
|
295934
|
+
}
|
|
295935
|
+
|
|
295936
|
+
function AccessibilityOption({ icon, label, isActive, onClick, subtext, options, activeIndex, }) {
|
|
295937
|
+
return (jsxs(AccessibilityButton, { onClick: onClick, variant: isActive ? 'default' : 'outline', className: `relative flex h-24 w-full flex-col items-center justify-center gap-1 text-xs font-medium ${isActive
|
|
295938
|
+
? 'border-[#38A1E5] bg-[#38A1E5] text-white hover:bg-[#D0E0FF] hover:text-gray-800'
|
|
295939
|
+
: 'border-gray-200 bg-white text-gray-700 hover:bg-gray-50'}`, children: [isActive && (jsx("div", { className: "absolute top-2 right-2 flex h-4 w-4 items-center justify-center rounded-full bg-[#38A1E5]", children: jsx("div", { className: "h-2 w-2 rounded-full bg-white" }) })), jsx("div", { className: "text-lg", children: icon }), jsx("span", { className: "text-center leading-tight", children: label }), isActive && subtext && (jsxs(Fragment$1, { children: [jsx("span", { className: "text-xs font-medium text-[#38A1E5]", children: subtext }), options && options.length > 0 && (jsx("div", { className: "mt-1 flex gap-1", children: options.map((_, index) => (jsx("div", { className: `h-1 w-3 rounded-full ${index === activeIndex ? 'bg-[#38A1E5]' : 'bg-gray-300'}` }, index))) }))] }))] }));
|
|
295940
|
+
}
|
|
295941
|
+
const BUTTON_CORNERS = [
|
|
295942
|
+
{ corner: 'top-left', labelKey: 'accessibility.toolbar.moveButtonTopLeft', Icon: ArrowUpLeft },
|
|
295943
|
+
{ corner: 'top-right', labelKey: 'accessibility.toolbar.moveButtonTopRight', Icon: ArrowUpRight },
|
|
295944
|
+
{
|
|
295945
|
+
corner: 'bottom-left',
|
|
295946
|
+
labelKey: 'accessibility.toolbar.moveButtonBottomLeft',
|
|
295947
|
+
Icon: ArrowDownLeft,
|
|
295948
|
+
},
|
|
295949
|
+
{
|
|
295950
|
+
corner: 'bottom-right',
|
|
295951
|
+
labelKey: 'accessibility.toolbar.moveButtonBottomRight',
|
|
295952
|
+
Icon: ArrowDownRight,
|
|
295953
|
+
},
|
|
295954
|
+
];
|
|
295955
|
+
function AccessibilityToolbar({ isButtonPositionCustom = false, onResetButtonPosition, onMoveButtonToCorner, } = {}) {
|
|
295956
|
+
const t = useT();
|
|
295957
|
+
const { settings, updateSetting, resetSettings, isToolbarOpen, setIsToolbarOpen } = useAccessibility();
|
|
295958
|
+
if (!isToolbarOpen)
|
|
295959
|
+
return null;
|
|
295960
|
+
const cycleContrastMode = () => {
|
|
295961
|
+
const modes = ['normal', 'invert', 'dark', 'light'];
|
|
295962
|
+
const currentIndex = modes.indexOf(settings.contrastMode);
|
|
295963
|
+
const nextIndex = (currentIndex + 1) % modes.length;
|
|
295964
|
+
updateSetting('contrastMode', modes[nextIndex]);
|
|
295965
|
+
};
|
|
295966
|
+
const cycleTextSize = () => {
|
|
295967
|
+
const sizes = ['normal', 'large', 'larger'];
|
|
295968
|
+
const currentIndex = sizes.indexOf(settings.textSize);
|
|
295969
|
+
const nextIndex = (currentIndex + 1) % sizes.length;
|
|
295970
|
+
updateSetting('textSize', sizes[nextIndex]);
|
|
295971
|
+
};
|
|
295972
|
+
const cycleTextSpacing = () => {
|
|
295973
|
+
const spacings = ['none', 'light', 'moderate', 'heavy'];
|
|
295974
|
+
const currentIndex = spacings.indexOf(settings.textSpacing);
|
|
295975
|
+
const nextIndex = (currentIndex + 1) % spacings.length;
|
|
295976
|
+
updateSetting('textSpacing', spacings[nextIndex]);
|
|
295977
|
+
};
|
|
295978
|
+
const cycleDyslexiaFont = () => {
|
|
295979
|
+
const fonts = ['normal', 'dyslexia', 'legible'];
|
|
295980
|
+
const currentIndex = fonts.indexOf(settings.dyslexiaFont);
|
|
295981
|
+
const nextIndex = (currentIndex + 1) % fonts.length;
|
|
295982
|
+
updateSetting('dyslexiaFont', fonts[nextIndex]);
|
|
295983
|
+
};
|
|
295984
|
+
const cycleTextAlign = () => {
|
|
295985
|
+
const aligns = ['normal', 'left', 'center', 'right', 'justify'];
|
|
295986
|
+
const currentIndex = aligns.indexOf(settings.textAlign);
|
|
295987
|
+
const nextIndex = (currentIndex + 1) % aligns.length;
|
|
295988
|
+
updateSetting('textAlign', aligns[nextIndex]);
|
|
295989
|
+
};
|
|
295990
|
+
const cycleSaturation = () => {
|
|
295991
|
+
const saturations = ['normal', 'high', 'low'];
|
|
295992
|
+
const currentIndex = saturations.indexOf(settings.saturation);
|
|
295993
|
+
const nextIndex = (currentIndex + 1) % saturations.length;
|
|
295994
|
+
updateSetting('saturation', saturations[nextIndex]);
|
|
295995
|
+
};
|
|
295996
|
+
const getContrastLabel = () => {
|
|
295997
|
+
const labels = {
|
|
295998
|
+
normal: t('accessibility.toolbar.contrastPlus'),
|
|
295999
|
+
invert: t('accessibility.toolbar.contrastInvertColors'),
|
|
296000
|
+
dark: t('accessibility.toolbar.contrastDark'),
|
|
296001
|
+
light: t('accessibility.toolbar.contrastLight'),
|
|
296002
|
+
};
|
|
296003
|
+
return labels[settings.contrastMode];
|
|
296004
|
+
};
|
|
296005
|
+
const getTextSizeLabel = () => {
|
|
296006
|
+
const labels = {
|
|
296007
|
+
normal: t('accessibility.toolbar.textSizeNormal'),
|
|
296008
|
+
large: t('accessibility.toolbar.textSizeLarge'),
|
|
296009
|
+
larger: t('accessibility.toolbar.textSizeLarger'),
|
|
296010
|
+
};
|
|
296011
|
+
return labels[settings.textSize];
|
|
296012
|
+
};
|
|
296013
|
+
const getTextSpacingLabel = () => {
|
|
296014
|
+
const labels = {
|
|
296015
|
+
none: t('accessibility.toolbar.textSpacing'),
|
|
296016
|
+
light: t('accessibility.toolbar.spacingLight'),
|
|
296017
|
+
moderate: t('accessibility.toolbar.spacingModerate'),
|
|
296018
|
+
heavy: t('accessibility.toolbar.spacingHeavy'),
|
|
296019
|
+
};
|
|
296020
|
+
return labels[settings.textSpacing];
|
|
296021
|
+
};
|
|
296022
|
+
const getDyslexiaLabel = () => {
|
|
296023
|
+
const labels = {
|
|
296024
|
+
normal: t('accessibility.toolbar.dyslexiaFriendly'),
|
|
296025
|
+
dyslexia: t('accessibility.toolbar.dyslexiaFont'),
|
|
296026
|
+
legible: t('accessibility.toolbar.legibleFont'),
|
|
296027
|
+
};
|
|
296028
|
+
return labels[settings.dyslexiaFont];
|
|
296029
|
+
};
|
|
296030
|
+
const getTextAlignLabel = () => {
|
|
296031
|
+
const labels = {
|
|
296032
|
+
normal: t('accessibility.toolbar.textAlign'),
|
|
296033
|
+
left: t('accessibility.toolbar.alignLeft'),
|
|
296034
|
+
center: t('accessibility.toolbar.alignCenter'),
|
|
296035
|
+
right: t('accessibility.toolbar.alignRight'),
|
|
296036
|
+
justify: t('accessibility.toolbar.justify'),
|
|
296037
|
+
};
|
|
296038
|
+
return labels[settings.textAlign];
|
|
296039
|
+
};
|
|
296040
|
+
const getSaturationLabel = () => {
|
|
296041
|
+
const labels = {
|
|
296042
|
+
normal: t('accessibility.toolbar.saturationNormal'),
|
|
296043
|
+
high: t('accessibility.toolbar.saturationHigh'),
|
|
296044
|
+
low: t('accessibility.toolbar.saturationLow'),
|
|
296045
|
+
};
|
|
296046
|
+
return labels[settings.saturation];
|
|
296047
|
+
};
|
|
296048
|
+
const getTextAlignIcon = () => {
|
|
296049
|
+
const icons = {
|
|
296050
|
+
normal: jsx(AlignLeft, { className: "h-5 w-5" }),
|
|
296051
|
+
left: jsx(AlignLeft, { className: "h-5 w-5" }),
|
|
296052
|
+
center: jsx(AlignCenter, { className: "h-5 w-5" }),
|
|
296053
|
+
right: jsx(AlignRight, { className: "h-5 w-5" }),
|
|
296054
|
+
justify: jsx(AlignJustify, { className: "h-5 w-5" }),
|
|
296055
|
+
};
|
|
296056
|
+
return icons[settings.textAlign];
|
|
296057
|
+
};
|
|
296058
|
+
const toggleTooltips = () => {
|
|
296059
|
+
updateSetting('tooltips', !settings.tooltips);
|
|
296060
|
+
};
|
|
296061
|
+
const toggleCustomCursor = () => {
|
|
296062
|
+
updateSetting('customCursor', !settings.customCursor);
|
|
296063
|
+
};
|
|
296064
|
+
return (jsx(Fragment$1, { children: jsxs("div", { className: "fixed top-0 right-0 z-50 flex h-full w-80 flex-col bg-white shadow-2xl", children: [jsxs("div", { className: "flex flex-shrink-0 items-center justify-between bg-gradient-to-r from-[#38A1E5] to-[#7284FF] p-4 text-white", children: [jsx("h2", { className: "text-lg font-semibold", children: t('accessibility.toolbar.accessibilityMenu') }), jsx(AccessibilityButton, { onClick: () => setIsToolbarOpen(false), variant: "ghost", size: "icon", className: "text-white hover:bg-transparent hover:text-white", children: jsx(X$1, { className: "h-5 w-5" }) })] }), jsxs("div", { className: "flex flex-1 flex-col overflow-y-auto bg-white p-4", onClick: (e) => e.stopPropagation(), children: [jsxs("div", { className: "grid flex-1 grid-cols-2 gap-3", children: [jsx(AccessibilityOption, { icon: jsx(Circle, { className: "h-5 w-5" }), label: t('accessibility.toolbar.contrastPlus'), isActive: settings.contrastMode !== 'normal', onClick: cycleContrastMode, subtext: settings.contrastMode !== 'normal' ? getContrastLabel() : undefined, options: ['normal', 'invert', 'dark', 'light'], activeIndex: ['normal', 'invert', 'dark', 'light'].indexOf(settings.contrastMode) }), jsx(AccessibilityOption, { icon: jsx(Link$1, { className: "h-5 w-5" }), label: t('accessibility.toolbar.highlightLinks'), isActive: settings.highlightLinks, onClick: () => updateSetting('highlightLinks', !settings.highlightLinks) }), jsx(AccessibilityOption, { icon: jsx(Type, { className: "h-5 w-5" }), label: t('accessibility.toolbar.biggerText'), isActive: settings.textSize !== 'normal', onClick: cycleTextSize, subtext: settings.textSize !== 'normal' ? getTextSizeLabel() : undefined, options: ['normal', 'large', 'larger'], activeIndex: ['normal', 'large', 'larger'].indexOf(settings.textSize) }), jsx(AccessibilityOption, { icon: jsx(Minus, { className: "h-5 w-5 rotate-90" }), label: t('accessibility.toolbar.textSpacing'), isActive: settings.textSpacing !== 'none', onClick: cycleTextSpacing, subtext: settings.textSpacing !== 'none' ? getTextSpacingLabel() : undefined, options: ['none', 'light', 'moderate', 'heavy'], activeIndex: ['none', 'light', 'moderate', 'heavy'].indexOf(settings.textSpacing) }), jsx(AccessibilityOption, { icon: jsx(Pause, { className: "h-5 w-5" }), label: t('accessibility.toolbar.pauseAnimations'), isActive: settings.pauseAnimations, onClick: () => updateSetting('pauseAnimations', !settings.pauseAnimations) }), jsx(AccessibilityOption, { icon: jsx(ImageOff, { className: "h-5 w-5" }), label: t('accessibility.toolbar.hideImages'), isActive: settings.hideImages, onClick: () => updateSetting('hideImages', !settings.hideImages) }), jsx(AccessibilityOption, { icon: jsx("span", { className: "text-sm font-bold", children: "Df" }), label: t('accessibility.toolbar.dyslexiaFriendly'), isActive: settings.dyslexiaFont !== 'normal', onClick: cycleDyslexiaFont, subtext: settings.dyslexiaFont !== 'normal' ? getDyslexiaLabel() : undefined, options: ['normal', 'dyslexia', 'legible'], activeIndex: ['normal', 'dyslexia', 'legible'].indexOf(settings.dyslexiaFont) }), jsx(AccessibilityOption, { icon: jsx(MousePointer, { className: "h-5 w-5" }), label: t('accessibility.toolbar.cursor'), isActive: settings.customCursor, onClick: toggleCustomCursor }), jsx(AccessibilityOption, { icon: jsx(MessageSquare, { className: "h-5 w-5" }), label: t('accessibility.toolbar.tooltips'), isActive: settings.tooltips, onClick: toggleTooltips }), jsx(AccessibilityOption, { icon: jsxs("div", { className: "flex flex-col gap-0.5", children: [jsx("div", { className: "h-0.5 w-4 bg-current" }), jsx("div", { className: "h-0.5 w-4 bg-current" }), jsx("div", { className: "h-0.5 w-4 bg-current" })] }), label: t('accessibility.toolbar.lineHeight'), isActive: settings.lineHeight, onClick: () => updateSetting('lineHeight', !settings.lineHeight) }), jsx(AccessibilityOption, { icon: getTextAlignIcon(), label: t('accessibility.toolbar.textAlign'), isActive: settings.textAlign !== 'normal', onClick: cycleTextAlign, subtext: settings.textAlign !== 'normal' ? getTextAlignLabel() : undefined, options: ['normal', 'left', 'center', 'right', 'justify'], activeIndex: ['normal', 'left', 'center', 'right', 'justify'].indexOf(settings.textAlign) }), jsx(AccessibilityOption, { icon: jsx(Droplets, { className: "h-5 w-5" }), label: t('accessibility.toolbar.saturation'), isActive: settings.saturation !== 'normal', onClick: cycleSaturation, subtext: settings.saturation !== 'normal' ? getSaturationLabel() : undefined, options: ['normal', 'high', 'low'], activeIndex: ['normal', 'high', 'low'].indexOf(settings.saturation) })] }), onMoveButtonToCorner && (jsxs("div", { role: "group", "aria-labelledby": "accessibility-move-button-label", className: "mt-4 flex flex-shrink-0 items-center justify-between gap-2", children: [jsx("span", { id: "accessibility-move-button-label", className: "text-xs font-medium text-gray-700", children: t('accessibility.toolbar.moveButtonToCorner') }), jsx("div", { className: "flex gap-1", children: BUTTON_CORNERS.map(({ corner, labelKey, Icon }) => (jsx(AccessibilityButton, { onClick: () => onMoveButtonToCorner(corner), variant: "outline", size: "icon", "aria-label": t(labelKey), title: t(labelKey), className: "h-8 w-8 border-gray-200 bg-white text-gray-700 hover:bg-gray-50", children: jsx(Icon, { className: "h-4 w-4" }) }, corner))) })] })), isButtonPositionCustom && onResetButtonPosition && (jsxs(AccessibilityButton, { onClick: onResetButtonPosition, variant: "outline", className: "mt-4 w-full flex-shrink-0 border-gray-200 bg-white py-3 text-gray-700 hover:bg-gray-50", children: [jsx(RotateCcw, { className: "mr-2 h-4 w-4" }), t('accessibility.toolbar.resetButtonPosition')] })), jsxs(AccessibilityButton, { onClick: () => {
|
|
296065
|
+
resetSettings();
|
|
296066
|
+
onResetButtonPosition === null || onResetButtonPosition === void 0 ? void 0 : onResetButtonPosition();
|
|
296067
|
+
}, className: "mt-4 w-full flex-shrink-0 bg-gradient-to-r from-[#38A1E5] to-[#7284FF] py-3 text-white shadow-lg hover:from-[#2E8BC7] hover:to-[#0066DD]", children: [jsx(RotateCcw, { className: "mr-2 h-4 w-4" }), t('accessibility.toolbar.resetAllAccessibilitySettings')] })] })] }) }));
|
|
296068
|
+
}
|
|
296069
|
+
|
|
296070
|
+
function AccessibilityIcon({ className, title }) {
|
|
296071
|
+
return (jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: 44, height: 44, viewBox: "0 0 60 60", fill: "none", role: "img", "aria-label": title, className: className, children: jsx("path", { d: "M30,4.42857143 C44.12271,4.42857143 55.5714286,15.87729 55.5714286,30 C55.5714286,44.12271 44.12271,55.5714286 30,55.5714286 C15.87729,55.5714286 4.42857143,44.12271 4.42857143,30 C4.42857143,15.87729 15.87729,4.42857143 30,4.42857143 Z M30,6.42857143 C16.9818595,6.42857143 6.42857143,16.9818595 6.42857143,30 C6.42857143,43.0181405 16.9818595,53.5714286 30,53.5714286 C43.0181405,53.5714286 53.5714286,43.0181405 53.5714286,30 C53.5714286,16.9818595 43.0181405,6.42857143 30,6.42857143 Z M40.5936329,24.636146 C40.8208154,24.6942382 41.032297,24.8027599 41.212927,24.9537151 C41.3927444,25.1040671 41.5372605,25.2927156 41.6362456,25.506032 C41.7348561,25.7185411 41.7857143,25.9504498 41.7857143,26.1964545 C41.7780029,26.5779794 41.6395197,26.9452414 41.3935596,27.2352841 C41.1463511,27.5267988 40.8059352,27.7221149 40.4376358,27.7856619 C38.1921773,28.2017648 35.924387,28.4827808 33.6481064,28.6271294 C33.504948,28.636723 33.3651112,28.6758744 33.236922,28.7423749 C33.1082304,28.8090766 32.9940039,28.9018917 32.9011681,29.0153772 C32.8079332,29.1293505 32.7382931,29.2617886 32.6966918,29.404413 C32.6758615,29.4759144 32.6622539,29.5492793 32.6556797,29.6151616 L32.6510699,29.707205 L32.6598659,29.8496307 L32.8523035,31.5976067 C33.0926408,33.748446 33.5345387,35.8701755 34.1700609,37.9296172 L34.4174424,38.6989233 L34.6845982,39.467246 L35.9271291,42.8464114 C35.9992453,43.0440742 36.0318055,43.2541674 36.0229684,43.4645736 C36.0141278,43.6750654 35.9640303,43.8817121 35.8754594,44.0726551 C35.7867069,44.2638976 35.6611068,44.435479 35.5058759,44.5773262 C35.3501721,44.7195962 35.1677426,44.8289881 34.990022,44.8912207 C34.813373,44.9615763 34.6253467,44.9984764 34.4204191,45 C34.1147901,44.9943164 33.8175473,44.8987335 33.5650597,44.7252745 C33.4238771,44.6283171 33.2997507,44.5091367 33.1890431,44.3580526 L33.0826737,44.1959755 L33.0074053,44.0456077 L32.6901551,43.3562659 C31.8320879,41.4806152 31.0484874,39.6428286 30.3335907,37.8221303 L30.0024971,36.9627165 L29.5751047,38.0696169 C29.3403684,38.6636654 29.0998399,39.2560704 28.8536693,39.8464776 L28.4802005,40.730546 L27.9043756,42.0504488 L27.3109116,43.3600706 L27.0273167,43.9425803 C26.8810403,44.3389204 26.5849764,44.6608321 26.2034873,44.8369557 C25.8203243,45.0138521 25.3831542,45.0287926 24.9891662,44.8783588 C24.596572,44.7285499 24.2795594,44.4271943 24.1072539,44.0414047 C23.9885793,43.7756939 23.9446874,43.4836867 23.9834048,43.1768668 L24.016611,42.9910892 L24.0667666,42.8262042 L25.307875,39.4507095 C26.0439275,37.4198431 26.5851782,35.3222044 26.9239335,33.1916604 L27.0414597,32.3912301 L27.141282,31.5772235 L27.3403361,29.8381618 C27.3581635,29.6889408 27.3459492,29.5375642 27.3045081,29.3935084 C27.2630999,29.2497044 27.1934915,29.1162414 27.1000261,29.0011883 C27.0070148,28.8866944 26.8923305,28.7928596 26.7631114,28.7253145 C26.6343439,28.6580256 26.4937323,28.6181655 26.35351,28.6082966 C24.0561093,28.4626746 21.7692364,28.17737 19.5069975,27.7542651 C19.3015835,27.7165557 19.1057712,27.6379419 18.9308258,27.5230481 C18.7563857,27.408486 18.6063103,27.2602422 18.4889941,27.0867756 C18.3721069,26.9139017 18.2901967,26.7194847 18.2478998,26.5149205 C18.2055002,26.3103882 18.2034637,26.0993152 18.2403615,25.9020167 C18.2758029,25.695193 18.3515339,25.4974971 18.4633288,25.3201771 C18.5754166,25.1425366 18.7215515,24.9891682 18.8933065,24.8690391 C19.0655425,24.7486376 19.2599761,24.6643395 19.4651939,24.6211361 C19.6706526,24.577882 19.8826185,24.5767675 20.0822706,24.6166765 C26.6343689,25.8477827 33.3528511,25.8477827 39.8979716,24.6180222 C40.1283133,24.5717053 40.3659882,24.5779122 40.5936329,24.636146 Z M32.8056386,16.182956 C34.3520224,17.7551666 34.3520224,20.3006423 32.80563,21.8728616 C31.2542658,23.450066 28.7353061,23.450066 27.1840106,21.8728616 C25.6375563,20.3006489 25.6375563,17.7551599 27.1839933,16.1829647 C28.7352993,14.6056799 31.2542726,14.6056799 32.8056386,16.182956 Z", fill: "#FFFFFF", fillRule: "nonzero" }) }));
|
|
296072
|
+
}
|
|
296073
|
+
|
|
296074
|
+
function FloatingAccessibilityButton() {
|
|
296075
|
+
const t = useT();
|
|
296076
|
+
const { isToolbarOpen, setIsToolbarOpen } = useAccessibility();
|
|
296077
|
+
return (jsx(AccessibilityButton, { onClick: () => setIsToolbarOpen(!isToolbarOpen), className: "h-14 w-14 rounded-full bg-[#38A1E5] shadow-lg transition-all duration-200 hover:scale-105 hover:bg-[#2E8BC7]", size: "icon", "aria-label": t('accessibility.button.openAccessibilityMenu'), children: jsx(AccessibilityIcon, { title: t('accessibility.button.accessibilityIconAlt'), className: "size-11 text-white" }) }));
|
|
296078
|
+
}
|
|
296079
|
+
|
|
296080
|
+
const DRAGGABLE_SNAP_TRANSITION = 'right 350ms cubic-bezier(0.34, 1.56, 0.64, 1), bottom 350ms cubic-bezier(0.34, 1.56, 0.64, 1)';
|
|
296081
|
+
const VERTICAL_KEYS = { ArrowUp: 1, ArrowDown: -1 };
|
|
296082
|
+
const SIDE_KEYS = {
|
|
296083
|
+
ArrowLeft: 'left',
|
|
296084
|
+
ArrowRight: 'right',
|
|
296085
|
+
};
|
|
296086
|
+
function isAnchor(value) {
|
|
296087
|
+
if (!value || typeof value !== 'object')
|
|
296088
|
+
return false;
|
|
296089
|
+
const { side, bottom } = value;
|
|
296090
|
+
return ((side === 'left' || side === 'right') && typeof bottom === 'number' && Number.isFinite(bottom));
|
|
296091
|
+
}
|
|
296092
|
+
function readStored(storageKey) {
|
|
296093
|
+
try {
|
|
296094
|
+
const raw = window.localStorage.getItem(storageKey);
|
|
296095
|
+
if (!raw)
|
|
296096
|
+
return null;
|
|
296097
|
+
const parsed = JSON.parse(raw);
|
|
296098
|
+
return isAnchor(parsed) ? { side: parsed.side, bottom: parsed.bottom } : null;
|
|
296099
|
+
}
|
|
296100
|
+
catch (_a) {
|
|
296101
|
+
return null;
|
|
296102
|
+
}
|
|
296103
|
+
}
|
|
296104
|
+
function writeStored(storageKey, value) {
|
|
296105
|
+
try {
|
|
296106
|
+
if (value)
|
|
296107
|
+
window.localStorage.setItem(storageKey, JSON.stringify(value));
|
|
296108
|
+
else
|
|
296109
|
+
window.localStorage.removeItem(storageKey);
|
|
296110
|
+
}
|
|
296111
|
+
catch (_a) {
|
|
296112
|
+
// Storage unavailable (private mode, quota, blocked): keep it in memory.
|
|
296113
|
+
}
|
|
296114
|
+
}
|
|
296115
|
+
function prefersReducedMotion() {
|
|
296116
|
+
return (typeof window.matchMedia === 'function' &&
|
|
296117
|
+
window.matchMedia('(prefers-reduced-motion: reduce)').matches);
|
|
296118
|
+
}
|
|
296119
|
+
function viewportSize() {
|
|
296120
|
+
var _a, _b;
|
|
296121
|
+
const vv = window.visualViewport;
|
|
296122
|
+
return {
|
|
296123
|
+
width: (_a = vv === null || vv === void 0 ? void 0 : vv.width) !== null && _a !== void 0 ? _a : window.innerWidth,
|
|
296124
|
+
height: (_b = vv === null || vv === void 0 ? void 0 : vv.height) !== null && _b !== void 0 ? _b : window.innerHeight,
|
|
296125
|
+
};
|
|
296126
|
+
}
|
|
296127
|
+
function useDraggablePosition({ storageKey, threshold = 5, margin = 8, step = 16, }) {
|
|
296128
|
+
const ref = useRef(null);
|
|
296129
|
+
// Viewport changes only re-derive `position` from `stored`, so the element
|
|
296130
|
+
// stays on its side and rotating back restores its height.
|
|
296131
|
+
const [stored, setStored] = useState(null);
|
|
296132
|
+
const [position, setPosition] = useState(null);
|
|
296133
|
+
const [announcement, setAnnouncement] = useState(null);
|
|
296134
|
+
// Never animate while dragging (must track the pointer 1:1) nor on the
|
|
296135
|
+
// initial restore.
|
|
296136
|
+
const [animate, setAnimate] = useState(false);
|
|
296137
|
+
const storedRef = useRef(null);
|
|
296138
|
+
const positionRef = useRef(null);
|
|
296139
|
+
const pressRef = useRef(null);
|
|
296140
|
+
const suppressClickRef = useRef(false);
|
|
296141
|
+
const clamp = useCallback((p) => {
|
|
296142
|
+
var _a, _b, _c;
|
|
296143
|
+
const rect = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
|
|
296144
|
+
const { width, height } = viewportSize();
|
|
296145
|
+
const maxRight = width - ((_b = rect === null || rect === void 0 ? void 0 : rect.width) !== null && _b !== void 0 ? _b : 0) - margin;
|
|
296146
|
+
const maxBottom = height - ((_c = rect === null || rect === void 0 ? void 0 : rect.height) !== null && _c !== void 0 ? _c : 0) - margin;
|
|
296147
|
+
return {
|
|
296148
|
+
right: Math.max(margin, Math.min(p.right, maxRight)),
|
|
296149
|
+
bottom: Math.max(margin, Math.min(p.bottom, maxBottom)),
|
|
296150
|
+
};
|
|
296151
|
+
}, [margin]);
|
|
296152
|
+
const resolve = useCallback((a) => {
|
|
296153
|
+
var _a, _b;
|
|
296154
|
+
const width = (_b = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().width) !== null && _b !== void 0 ? _b : 0;
|
|
296155
|
+
return clamp({
|
|
296156
|
+
right: a.side === 'right' ? margin : viewportSize().width - width - margin,
|
|
296157
|
+
bottom: a.bottom,
|
|
296158
|
+
});
|
|
296159
|
+
}, [clamp, margin]);
|
|
296160
|
+
const render = useCallback((p) => {
|
|
296161
|
+
positionRef.current = p;
|
|
296162
|
+
setPosition(p);
|
|
296163
|
+
}, []);
|
|
296164
|
+
const commit = useCallback((a) => {
|
|
296165
|
+
storedRef.current = a;
|
|
296166
|
+
setStored(a);
|
|
296167
|
+
writeStored(storageKey, a);
|
|
296168
|
+
}, [storageKey]);
|
|
296169
|
+
const currentPosition = useCallback(() => {
|
|
296170
|
+
var _a, _b, _c;
|
|
296171
|
+
if (positionRef.current)
|
|
296172
|
+
return positionRef.current;
|
|
296173
|
+
const rect = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
|
|
296174
|
+
const { width, height } = viewportSize();
|
|
296175
|
+
return {
|
|
296176
|
+
right: width - ((_b = rect === null || rect === void 0 ? void 0 : rect.right) !== null && _b !== void 0 ? _b : width),
|
|
296177
|
+
bottom: height - ((_c = rect === null || rect === void 0 ? void 0 : rect.bottom) !== null && _c !== void 0 ? _c : height),
|
|
296178
|
+
};
|
|
296179
|
+
}, []);
|
|
296180
|
+
// An exact tie goes right, the default side.
|
|
296181
|
+
const nearestSide = useCallback((p) => {
|
|
296182
|
+
var _a, _b;
|
|
296183
|
+
const width = (_b = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().width) !== null && _b !== void 0 ? _b : 0;
|
|
296184
|
+
const viewportWidth = viewportSize().width;
|
|
296185
|
+
const centre = viewportWidth - p.right - width / 2;
|
|
296186
|
+
return centre < viewportWidth / 2 ? 'left' : 'right';
|
|
296187
|
+
}, []);
|
|
296188
|
+
const settle = useCallback((a) => {
|
|
296189
|
+
const next = resolve(a);
|
|
296190
|
+
const anchor = { side: a.side, bottom: next.bottom };
|
|
296191
|
+
setAnimate(true);
|
|
296192
|
+
render(next);
|
|
296193
|
+
commit(anchor);
|
|
296194
|
+
return anchor;
|
|
296195
|
+
}, [commit, render, resolve]);
|
|
296196
|
+
const place = useCallback((a) => setAnnouncement(settle(a)), [settle]);
|
|
296197
|
+
useEffect(() => {
|
|
296198
|
+
const saved = readStored(storageKey);
|
|
296199
|
+
storedRef.current = saved;
|
|
296200
|
+
setStored(saved);
|
|
296201
|
+
render(saved && resolve(saved));
|
|
296202
|
+
const reclamp = () => {
|
|
296203
|
+
if (storedRef.current)
|
|
296204
|
+
render(resolve(storedRef.current));
|
|
296205
|
+
};
|
|
296206
|
+
const vv = window.visualViewport;
|
|
296207
|
+
window.addEventListener('resize', reclamp);
|
|
296208
|
+
window.addEventListener('orientationchange', reclamp);
|
|
296209
|
+
vv === null || vv === void 0 ? void 0 : vv.addEventListener('resize', reclamp);
|
|
296210
|
+
return () => {
|
|
296211
|
+
window.removeEventListener('resize', reclamp);
|
|
296212
|
+
window.removeEventListener('orientationchange', reclamp);
|
|
296213
|
+
vv === null || vv === void 0 ? void 0 : vv.removeEventListener('resize', reclamp);
|
|
296214
|
+
};
|
|
296215
|
+
}, [storageKey, resolve, render]);
|
|
296216
|
+
const onPointerDown = useCallback((e) => {
|
|
296217
|
+
if (!e.isPrimary || e.button !== 0)
|
|
296218
|
+
return;
|
|
296219
|
+
suppressClickRef.current = false;
|
|
296220
|
+
pressRef.current = {
|
|
296221
|
+
pointerId: e.pointerId,
|
|
296222
|
+
x: e.clientX,
|
|
296223
|
+
y: e.clientY,
|
|
296224
|
+
origin: currentPosition(),
|
|
296225
|
+
dragging: false,
|
|
296226
|
+
};
|
|
296227
|
+
}, [currentPosition]);
|
|
296228
|
+
const onPointerMove = useCallback((e) => {
|
|
296229
|
+
const press = pressRef.current;
|
|
296230
|
+
if (!press || press.pointerId !== e.pointerId)
|
|
296231
|
+
return;
|
|
296232
|
+
const dx = e.clientX - press.x;
|
|
296233
|
+
const dy = e.clientY - press.y;
|
|
296234
|
+
if (!press.dragging) {
|
|
296235
|
+
if (Math.hypot(dx, dy) < threshold)
|
|
296236
|
+
return;
|
|
296237
|
+
press.dragging = true;
|
|
296238
|
+
suppressClickRef.current = true;
|
|
296239
|
+
setAnimate(false);
|
|
296240
|
+
// Capture only once it is a real drag: capturing on pointerdown would
|
|
296241
|
+
// retarget a plain tap's click away from the button inside.
|
|
296242
|
+
try {
|
|
296243
|
+
e.currentTarget.setPointerCapture(e.pointerId);
|
|
296244
|
+
}
|
|
296245
|
+
catch (_a) {
|
|
296246
|
+
// Pointer already released; the drag still follows in-element moves.
|
|
296247
|
+
}
|
|
296248
|
+
}
|
|
296249
|
+
render(clamp({
|
|
296250
|
+
right: press.origin.right - dx,
|
|
296251
|
+
bottom: press.origin.bottom - dy,
|
|
296252
|
+
}));
|
|
296253
|
+
}, [clamp, render, threshold]);
|
|
296254
|
+
const endPress = useCallback((e) => {
|
|
296255
|
+
const press = pressRef.current;
|
|
296256
|
+
if (!press || press.pointerId !== e.pointerId)
|
|
296257
|
+
return;
|
|
296258
|
+
pressRef.current = null;
|
|
296259
|
+
if (!press.dragging)
|
|
296260
|
+
return;
|
|
296261
|
+
const released = positionRef.current;
|
|
296262
|
+
settle({ side: nearestSide(released), bottom: released.bottom });
|
|
296263
|
+
// A touch drag may never produce a click; don't let the flag swallow the
|
|
296264
|
+
// next genuine activation (e.g. Enter). Click, if any, fires before this.
|
|
296265
|
+
setTimeout(() => {
|
|
296266
|
+
suppressClickRef.current = false;
|
|
296267
|
+
}, 0);
|
|
296268
|
+
}, [nearestSide, settle]);
|
|
296269
|
+
const onClickCapture = useCallback((e) => {
|
|
296270
|
+
if (!suppressClickRef.current)
|
|
296271
|
+
return;
|
|
296272
|
+
suppressClickRef.current = false;
|
|
296273
|
+
e.preventDefault();
|
|
296274
|
+
e.stopPropagation();
|
|
296275
|
+
}, []);
|
|
296276
|
+
// A mouse press on a native-draggable child (e.g. an <img>) starts
|
|
296277
|
+
// HTML drag-and-drop, which fires pointercancel and kills our drag.
|
|
296278
|
+
const onDragStart = useCallback((e) => {
|
|
296279
|
+
e.preventDefault();
|
|
296280
|
+
}, []);
|
|
296281
|
+
const onKeyDown = useCallback((e) => {
|
|
296282
|
+
var _a, _b;
|
|
296283
|
+
const vertical = VERTICAL_KEYS[e.key];
|
|
296284
|
+
const side = SIDE_KEYS[e.key];
|
|
296285
|
+
if ((!vertical && !side) || e.altKey || e.ctrlKey || e.metaKey)
|
|
296286
|
+
return;
|
|
296287
|
+
e.preventDefault();
|
|
296288
|
+
const from = currentPosition();
|
|
296289
|
+
const distance = e.shiftKey ? step * 4 : step;
|
|
296290
|
+
place({
|
|
296291
|
+
side: (_b = side !== null && side !== void 0 ? side : (_a = storedRef.current) === null || _a === void 0 ? void 0 : _a.side) !== null && _b !== void 0 ? _b : nearestSide(from),
|
|
296292
|
+
bottom: from.bottom + (vertical !== null && vertical !== void 0 ? vertical : 0) * distance,
|
|
296293
|
+
});
|
|
296294
|
+
}, [currentPosition, nearestSide, place, step]);
|
|
296295
|
+
const moveToCorner = useCallback((corner) => {
|
|
296296
|
+
var _a, _b;
|
|
296297
|
+
const height = (_b = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect().height) !== null && _b !== void 0 ? _b : 0;
|
|
296298
|
+
place({
|
|
296299
|
+
side: corner.endsWith('right') ? 'right' : 'left',
|
|
296300
|
+
bottom: corner.startsWith('bottom') ? margin : viewportSize().height - height - margin,
|
|
296301
|
+
});
|
|
296302
|
+
}, [margin, place]);
|
|
296303
|
+
const reset = useCallback(() => {
|
|
296304
|
+
pressRef.current = null;
|
|
296305
|
+
setAnimate(false);
|
|
296306
|
+
render(null);
|
|
296307
|
+
commit(null);
|
|
296308
|
+
setAnnouncement(null);
|
|
296309
|
+
}, [commit, render]);
|
|
296310
|
+
return {
|
|
296311
|
+
ref,
|
|
296312
|
+
position,
|
|
296313
|
+
isCustom: stored !== null,
|
|
296314
|
+
announcement,
|
|
296315
|
+
/** CSS `transition` for the rendered offsets; undefined while dragging,
|
|
296316
|
+
* before any user move, and under prefers-reduced-motion. */
|
|
296317
|
+
transition: animate && position && !prefersReducedMotion() ? DRAGGABLE_SNAP_TRANSITION : undefined,
|
|
296318
|
+
reset,
|
|
296319
|
+
moveToCorner,
|
|
296320
|
+
handlers: {
|
|
296321
|
+
onPointerDown,
|
|
296322
|
+
onPointerMove,
|
|
296323
|
+
onPointerUp: endPress,
|
|
296324
|
+
onPointerCancel: endPress,
|
|
296325
|
+
onClickCapture,
|
|
296326
|
+
onDragStart,
|
|
296327
|
+
onKeyDown,
|
|
296328
|
+
},
|
|
296329
|
+
};
|
|
296330
|
+
}
|
|
296331
|
+
|
|
296332
|
+
/**
|
|
296333
|
+
* Draggable floating accessibility button plus its menu. Must be rendered
|
|
296334
|
+
* inside an `AccessibilityProvider`.
|
|
296335
|
+
*/
|
|
296336
|
+
function AccessibilityFab({ defaultPositionClassName = 'bottom-4', storageKey = 'accessibility-fab-position:v2', 'data-testid': testId = 'accessibility-fab', }) {
|
|
296337
|
+
const t = useT();
|
|
296338
|
+
const hintId = useId$2();
|
|
296339
|
+
const { ref, position, isCustom, announcement, transition, reset, moveToCorner, handlers } = useDraggablePosition({ storageKey });
|
|
296340
|
+
return (jsxs(Fragment$1, { children: [jsx("div", { ref: ref, role: "group", "aria-describedby": hintId, className: cn('fixed right-4 z-50 flex touch-none flex-col gap-3', !position && defaultPositionClassName), style: position ? { right: position.right, bottom: position.bottom, transition } : undefined, "data-testid": testId, ...handlers, children: jsx(FloatingAccessibilityButton, {}) }), jsx("span", { id: hintId, className: "sr-only", children: t('accessibility.button.moveHint') }), jsx("div", { role: "status", "aria-live": "polite", className: "sr-only", children: announcement
|
|
296341
|
+
? t('accessibility.button.positionAnnouncement', {
|
|
296342
|
+
side: announcement.side,
|
|
296343
|
+
bottom: Math.round(announcement.bottom),
|
|
296344
|
+
})
|
|
296345
|
+
: '' }), jsx(AccessibilityToolbar, { isButtonPositionCustom: isCustom, onResetButtonPosition: reset, onMoveButtonToCorner: moveToCorner })] }));
|
|
296346
|
+
}
|
|
296347
|
+
|
|
295514
296348
|
function OrganizationTab({ platformKey, setOrganizationLogoFromOutside, tenant, onTenantUpdate, defaultSupportPhone = '', enableSupportPhone, }) {
|
|
295515
296349
|
const t = useT();
|
|
295516
296350
|
const { setMetadata } = useTenantContext();
|
|
@@ -296945,7 +297779,7 @@ const dynamicIconImports = {
|
|
|
296945
297779
|
"a-arrow-down": () => Promise.resolve().then(function () { return aArrowDown; }),
|
|
296946
297780
|
"a-arrow-up": () => Promise.resolve().then(function () { return aArrowUp; }),
|
|
296947
297781
|
"a-large-small": () => Promise.resolve().then(function () { return aLargeSmall; }),
|
|
296948
|
-
"accessibility": () => Promise.resolve().then(function () { return accessibility; }),
|
|
297782
|
+
"accessibility": () => Promise.resolve().then(function () { return accessibility$4; }),
|
|
296949
297783
|
"activity": () => Promise.resolve().then(function () { return activity; }),
|
|
296950
297784
|
"air-vent": () => Promise.resolve().then(function () { return airVent; }),
|
|
296951
297785
|
"airplay": () => Promise.resolve().then(function () { return airplay; }),
|
|
@@ -301089,14 +301923,14 @@ const AGENT_SETTINGS_TAB_LABELS = {
|
|
|
301089
301923
|
capabilities: 'Capabilities',
|
|
301090
301924
|
},
|
|
301091
301925
|
sections: {
|
|
301092
|
-
chatExperience: 'Chat
|
|
301926
|
+
chatExperience: 'Chat Experience',
|
|
301093
301927
|
advanced: 'Advanced',
|
|
301094
301928
|
perSurface: 'Surface Capabilities',
|
|
301095
301929
|
globalSettings: 'Global Capabilities',
|
|
301096
301930
|
},
|
|
301097
301931
|
surfaces: {
|
|
301098
|
-
inAppChat: 'In-
|
|
301099
|
-
embedWidget: 'Embed
|
|
301932
|
+
inAppChat: 'In-App Chat',
|
|
301933
|
+
embedWidget: 'Embed Widget',
|
|
301100
301934
|
},
|
|
301101
301935
|
notes: {
|
|
301102
301936
|
perSurface: 'Set independently for in-app chat and the embed widget.',
|
|
@@ -301148,7 +301982,7 @@ const AGENT_SETTINGS_TAB_LABELS = {
|
|
|
301148
301982
|
tooltip: 'Feature this agent to highlight it in listings.',
|
|
301149
301983
|
},
|
|
301150
301984
|
showExploreMentors: {
|
|
301151
|
-
label: 'Show
|
|
301985
|
+
label: 'Show Additional Agents',
|
|
301152
301986
|
tooltip: "Shows the additional agents section on this agent's welcome screen.",
|
|
301153
301987
|
},
|
|
301154
301988
|
showAttachment: {
|
|
@@ -301164,13 +301998,13 @@ const AGENT_SETTINGS_TAB_LABELS = {
|
|
|
301164
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.',
|
|
301165
301999
|
},
|
|
301166
302000
|
embedShowAttachment: {
|
|
301167
|
-
label: 'Show Attachment (
|
|
302001
|
+
label: 'Show Attachment (Embed Widget)',
|
|
301168
302002
|
},
|
|
301169
302003
|
embedShowVoiceRecord: {
|
|
301170
|
-
label: 'Show Voice Record (
|
|
302004
|
+
label: 'Show Voice Record (Embed Widget)',
|
|
301171
302005
|
},
|
|
301172
302006
|
embedShowVoiceCall: {
|
|
301173
|
-
label: 'Show Voice Call (
|
|
302007
|
+
label: 'Show Voice Call (Embed Widget)',
|
|
301174
302008
|
},
|
|
301175
302009
|
allowCopies: {
|
|
301176
302010
|
label: 'Allow Copies',
|
|
@@ -301181,19 +302015,15 @@ const AGENT_SETTINGS_TAB_LABELS = {
|
|
|
301181
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.',
|
|
301182
302016
|
},
|
|
301183
302017
|
enhancedDocRetrieval: {
|
|
301184
|
-
label: 'Enhanced
|
|
302018
|
+
label: 'Enhanced Document Retrieval',
|
|
301185
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.',
|
|
301186
302020
|
},
|
|
301187
302021
|
promptCaching: {
|
|
301188
|
-
label: 'Prompt
|
|
302022
|
+
label: 'Prompt Caching',
|
|
301189
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.',
|
|
301190
302024
|
},
|
|
301191
|
-
privateMode: {
|
|
301192
|
-
label: 'Enable private mode',
|
|
301193
|
-
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.',
|
|
301194
|
-
},
|
|
301195
302025
|
smartDocRetrieval: {
|
|
301196
|
-
label: 'Smart
|
|
302026
|
+
label: 'Smart Document Retrieval',
|
|
301197
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.',
|
|
301198
302028
|
},
|
|
301199
302029
|
image: {
|
|
@@ -301358,10 +302188,6 @@ function buildSettingsTabLabels(t) {
|
|
|
301358
302188
|
label: t('settingsTabLabels.fields.promptCaching.label'),
|
|
301359
302189
|
tooltip: t('settingsTabLabels.fields.promptCaching.tooltip'),
|
|
301360
302190
|
},
|
|
301361
|
-
privateMode: {
|
|
301362
|
-
label: t('settingsTabLabels.fields.privateMode.label'),
|
|
301363
|
-
tooltip: t('settingsTabLabels.fields.privateMode.tooltip'),
|
|
301364
|
-
},
|
|
301365
302191
|
smartDocRetrieval: {
|
|
301366
302192
|
label: t('settingsTabLabels.fields.smartDocRetrieval.label'),
|
|
301367
302193
|
tooltip: t('settingsTabLabels.fields.smartDocRetrieval.tooltip'),
|
|
@@ -301432,9 +302258,8 @@ function resolveSettingsTabLabels(override, t) {
|
|
|
301432
302258
|
}
|
|
301433
302259
|
|
|
301434
302260
|
function useEditMentorSettings({ onSuccessfulSave, labels }) {
|
|
301435
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r
|
|
302261
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
|
|
301436
302262
|
const { tenantKey, mentorId, username, enableRBAC, executeGatedAction } = useAgentSettings();
|
|
301437
|
-
const dispatch = useDispatch();
|
|
301438
302263
|
const { data: categories, isLoading: isLoadingCategories } = useGetMentorCategoriesQuery(
|
|
301439
302264
|
// @ts-expect-error userId is not part of the query type definition
|
|
301440
302265
|
{ org: tenantKey, userId: username !== null && username !== void 0 ? username : '' }, {
|
|
@@ -301447,9 +302272,6 @@ function useEditMentorSettings({ onSuccessfulSave, labels }) {
|
|
|
301447
302272
|
});
|
|
301448
302273
|
const m = mentor;
|
|
301449
302274
|
const [editMentor, { isLoading: isLoadingEditMentor }] = useEditMentorMutation();
|
|
301450
|
-
// Tenant gate for the agent-level "Enable private mode" row — hidden when off.
|
|
301451
|
-
const { data: tenantChatPrivacyConfig } = useGetTenantChatPrivacyConfigQuery$1({ org: tenantKey !== null && tenantKey !== void 0 ? tenantKey : '', userId: username !== null && username !== void 0 ? username : '' }, { skip: !tenantKey || !username });
|
|
301452
|
-
const tenantAllowsChatPrivacyControl = !!(tenantChatPrivacyConfig === null || tenantChatPrivacyConfig === void 0 ? void 0 : tenantChatPrivacyConfig.allow_user_chat_privacy_control);
|
|
301453
302275
|
// `use_function_calling_for_rag` lives on CallConfiguration; use the inlined
|
|
301454
302276
|
// config, else fetch the list. (The voice / screen-share toggles moved to
|
|
301455
302277
|
// their own tabs, but this field still lives in Settings.)
|
|
@@ -301482,8 +302304,7 @@ function useEditMentorSettings({ onSuccessfulSave, labels }) {
|
|
|
301482
302304
|
show_reasoning: (_o = m === null || m === void 0 ? void 0 : m.show_reasoning) !== null && _o !== void 0 ? _o : false,
|
|
301483
302305
|
enable_multi_query_rag: (_p = m === null || m === void 0 ? void 0 : m.enable_multi_query_rag) !== null && _p !== void 0 ? _p : false,
|
|
301484
302306
|
enable_prompt_caching: (_q = m === null || m === void 0 ? void 0 : m.enable_prompt_caching) !== null && _q !== void 0 ? _q : false,
|
|
301485
|
-
|
|
301486
|
-
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,
|
|
301487
302308
|
},
|
|
301488
302309
|
onSubmit: async ({ value }) => {
|
|
301489
302310
|
var _a;
|
|
@@ -301544,9 +302365,6 @@ function useEditMentorSettings({ onSuccessfulSave, labels }) {
|
|
|
301544
302365
|
if (value.enable_prompt_caching !== undefined) {
|
|
301545
302366
|
values.enable_prompt_caching = value.enable_prompt_caching;
|
|
301546
302367
|
}
|
|
301547
|
-
if (value.disable_chathistory !== undefined) {
|
|
301548
|
-
values.disable_chathistory = value.disable_chathistory;
|
|
301549
|
-
}
|
|
301550
302368
|
// Drop any field the user only has read access to. Including a read-only
|
|
301551
302369
|
// field makes the PUT fail ("No permission to write field: ..."). A few
|
|
301552
302370
|
// payload keys are gated under a differently named permission key.
|
|
@@ -301568,9 +302386,6 @@ function useEditMentorSettings({ onSuccessfulSave, labels }) {
|
|
|
301568
302386
|
...writableValues,
|
|
301569
302387
|
},
|
|
301570
302388
|
}).unwrap();
|
|
301571
|
-
// Refresh the nav-bar chat-privacy toggle — the mentor-settings mutation
|
|
301572
|
-
// doesn't invalidate chat-privacy-effective. Unconditional on purpose.
|
|
301573
|
-
dispatch(chatPrivacyApiSlice.util.invalidateTags(['ChatPrivacyEffective']));
|
|
301574
302389
|
// Sync `use_function_calling_for_rag` to CallConfiguration only when
|
|
301575
302390
|
// changed (POST a new config if none exists, else PATCH). `show_voice_call`
|
|
301576
302391
|
// (Voice tab) and `enable_video` (Screen Share tab) are no longer written
|
|
@@ -301632,7 +302447,6 @@ function useEditMentorSettings({ onSuccessfulSave, labels }) {
|
|
|
301632
302447
|
handleSubmit,
|
|
301633
302448
|
isDisabled,
|
|
301634
302449
|
isLoadingEditMentor,
|
|
301635
|
-
tenantAllowsChatPrivacyControl,
|
|
301636
302450
|
};
|
|
301637
302451
|
}
|
|
301638
302452
|
|
|
@@ -301872,7 +302686,7 @@ function DiscoverySubTab({ form, labels, mentor, isDisabled }) {
|
|
|
301872
302686
|
* single field render as one switch below the matrix, so they read as
|
|
301873
302687
|
* "applies everywhere".
|
|
301874
302688
|
*/
|
|
301875
|
-
function CapabilitiesSubTab({ form, labels, mentor, isDisabled
|
|
302689
|
+
function CapabilitiesSubTab({ form, labels, mentor, isDisabled }) {
|
|
301876
302690
|
const t = useT();
|
|
301877
302691
|
const { enableRBAC } = useAgentSettings();
|
|
301878
302692
|
const fieldPermissions = getFieldPermissions(mentor);
|
|
@@ -301889,7 +302703,7 @@ function CapabilitiesSubTab({ form, labels, mentor, isDisabled, tenantAllowsChat
|
|
|
301889
302703
|
// field-permission map, and `WithFormPermissions` HIDES a control
|
|
301890
302704
|
// whose key is missing on an RBAC tenant. The Voice tab treats the
|
|
301891
302705
|
// same field the same way.
|
|
301892
|
-
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 }),
|
|
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 })] })] })] }));
|
|
301893
302707
|
}
|
|
301894
302708
|
|
|
301895
302709
|
/* istanbul ignore next -- @preserve dynamic import is not testable in unit tests */
|
|
@@ -301907,7 +302721,7 @@ function AgentSettingsTab({ onSuccessfulSave, onSuccessfulDelete, tenants, isLoa
|
|
|
301907
302721
|
const [subTab, setSubTab] = React__default.useState('basic');
|
|
301908
302722
|
const labels = React__default.useMemo(() => resolveSettingsTabLabels(labelsOverride, t), [labelsOverride, t]);
|
|
301909
302723
|
const { tenantKey, mentorId, username, enableRBAC } = useAgentSettings();
|
|
301910
|
-
const { mentor, categories, form, handleSubmit, isDisabled, isLoadingEditMentor
|
|
302724
|
+
const { mentor, categories, form, handleSubmit, isDisabled, isLoadingEditMentor } = useEditMentorSettings({ onSuccessfulSave, labels });
|
|
301911
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';
|
|
301912
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: {
|
|
301913
302727
|
overflowY: 'auto',
|
|
@@ -301916,7 +302730,7 @@ function AgentSettingsTab({ onSuccessfulSave, onSuccessfulDelete, tenants, isLoa
|
|
|
301916
302730
|
formEvent.preventDefault();
|
|
301917
302731
|
formEvent.stopPropagation();
|
|
301918
302732
|
handleSubmit();
|
|
301919
|
-
}, 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
|
|
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",
|
|
301920
302734
|
// @ts-expect-error permissions type is opaque
|
|
301921
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",
|
|
301922
302736
|
// @ts-expect-error permissions type is opaque
|
|
@@ -304977,7 +305791,7 @@ function AgentSafetyTab({ renderPromptContent, FlaggedPromptsModal, showFlaggedP
|
|
|
304977
305791
|
const AGENT_PRIVACY_TAB_LABELS = {
|
|
304978
305792
|
header: {
|
|
304979
305793
|
title: 'Privacy',
|
|
304980
|
-
description: '
|
|
305794
|
+
description: 'Control what personal information the agent sees and how Incognito works for its conversations.',
|
|
304981
305795
|
},
|
|
304982
305796
|
capability: {
|
|
304983
305797
|
title: 'PII filtering',
|
|
@@ -305034,6 +305848,29 @@ const AGENT_PRIVACY_TAB_LABELS = {
|
|
|
305034
305848
|
tooltip: 'Scrub PII from AI-generated responses. May add slight latency to streamed responses.',
|
|
305035
305849
|
},
|
|
305036
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.",
|
|
305037
305874
|
toasts: {
|
|
305038
305875
|
updateSuccess: 'Privacy settings updated',
|
|
305039
305876
|
updateError: 'Failed to update privacy settings',
|
|
@@ -305100,6 +305937,29 @@ function buildPrivacyTabLabels(t) {
|
|
|
305100
305937
|
tooltip: t('privacyTabLabels.fields.outputFilter.tooltip'),
|
|
305101
305938
|
},
|
|
305102
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'),
|
|
305103
305963
|
toasts: {
|
|
305104
305964
|
updateSuccess: t('privacyTabLabels.toasts.updateSuccess'),
|
|
305105
305965
|
updateError: t('privacyTabLabels.toasts.updateError'),
|
|
@@ -305113,8 +305973,31 @@ function resolvePrivacyTabLabels(override, t) {
|
|
|
305113
305973
|
return deepMerge(base, override);
|
|
305114
305974
|
}
|
|
305115
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
|
+
|
|
305116
305999
|
function AgentPrivacyTab({ labels: labelsOverride, tenantKey: tenantKeyProp, mentorId: mentorIdProp, username: usernameProp, enableRBAC: enableRBACProp, executeGatedAction: executeGatedActionProp, }) {
|
|
305117
|
-
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;
|
|
305118
306001
|
const t = useT();
|
|
305119
306002
|
const ctx = useAgentSettingsOptional();
|
|
305120
306003
|
const tenantKey = (_a = tenantKeyProp !== null && tenantKeyProp !== void 0 ? tenantKeyProp : ctx === null || ctx === void 0 ? void 0 : ctx.tenantKey) !== null && _a !== void 0 ? _a : '';
|
|
@@ -305123,6 +306006,12 @@ function AgentPrivacyTab({ labels: labelsOverride, tenantKey: tenantKeyProp, men
|
|
|
305123
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;
|
|
305124
306007
|
const executeGatedAction = executeGatedActionProp !== null && executeGatedActionProp !== void 0 ? executeGatedActionProp : ctx === null || ctx === void 0 ? void 0 : ctx.executeGatedAction;
|
|
305125
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');
|
|
305126
306015
|
const { data: rawMentorSettings, isLoading: isMentorSettingsLoading, refetch: refetchMentorSettings, } = useGetMentorSettingsQuery({
|
|
305127
306016
|
mentor: mentorId,
|
|
305128
306017
|
org: tenantKey,
|
|
@@ -305130,32 +306019,50 @@ function AgentPrivacyTab({ labels: labelsOverride, tenantKey: tenantKeyProp, men
|
|
|
305130
306019
|
userId: username,
|
|
305131
306020
|
}, { skip: !username || !mentorId || !tenantKey });
|
|
305132
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];
|
|
305133
306038
|
// The `/settings/` endpoint accepts a JSON body — `useEditMentorJsonMutation`
|
|
305134
306039
|
// matches that contract (the multipart `useEditMentorMutation` doesn't
|
|
305135
306040
|
// round-trip cleanly for array fields like `privacy_entities`).
|
|
305136
306041
|
const [editMentorJson, { isLoading: isEditMentorLoading }] = useEditMentorJsonMutation();
|
|
305137
306042
|
const isDisabled = isMentorSettingsLoading || isEditMentorLoading;
|
|
305138
306043
|
const enabled = !!(mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.enable_privacy_router);
|
|
305139
|
-
const action = (
|
|
305140
|
-
const entities = (
|
|
305141
|
-
const responseText = (
|
|
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 : '';
|
|
305142
306047
|
const outputFilter = !!(mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.enable_privacy_output_filter);
|
|
306048
|
+
const incognitoPolicy = incognitoPolicyFrom(mentorSettings);
|
|
305143
306049
|
const [localResponse, setLocalResponse] = React__default.useState(responseText);
|
|
305144
306050
|
React__default.useEffect(() => {
|
|
305145
306051
|
setLocalResponse(responseText);
|
|
305146
306052
|
}, [responseText]);
|
|
305147
|
-
async function
|
|
306053
|
+
async function updateFields(requestBody, afterSave) {
|
|
305148
306054
|
const run = async () => {
|
|
305149
306055
|
await editMentorJson({
|
|
305150
306056
|
mentorId,
|
|
305151
306057
|
org: tenantKey,
|
|
305152
306058
|
userId: username,
|
|
305153
|
-
requestBody
|
|
306059
|
+
requestBody,
|
|
305154
306060
|
}).unwrap();
|
|
305155
306061
|
// `editMentorJson` lives on a separate api-slice and doesn't invalidate
|
|
305156
306062
|
// the `mentorSettings` tag, so the toggle would otherwise stay stale
|
|
305157
306063
|
// after a successful PUT. Refetch explicitly.
|
|
305158
306064
|
await refetchMentorSettings();
|
|
306065
|
+
afterSave === null || afterSave === void 0 ? void 0 : afterSave();
|
|
305159
306066
|
toast.success(labels.toasts.updateSuccess);
|
|
305160
306067
|
};
|
|
305161
306068
|
try {
|
|
@@ -305167,34 +306074,83 @@ function AgentPrivacyTab({ labels: labelsOverride, tenantKey: tenantKeyProp, men
|
|
|
305167
306074
|
}
|
|
305168
306075
|
}
|
|
305169
306076
|
catch (error) {
|
|
305170
|
-
console.error(JSON.stringify({ tenant: tenantKey,
|
|
306077
|
+
console.error(JSON.stringify({ tenant: tenantKey, fields: Object.keys(requestBody), error }));
|
|
305171
306078
|
toast.error(labels.toasts.updateError);
|
|
305172
306079
|
}
|
|
305173
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
|
+
}
|
|
305174
306095
|
function toggleEntity(entity, checked) {
|
|
305175
306096
|
const next = checked
|
|
305176
306097
|
? Array.from(new Set([...entities, entity]))
|
|
305177
306098
|
: entities.filter((e) => e !== entity);
|
|
305178
306099
|
void updateField('privacy_entities', next);
|
|
305179
306100
|
}
|
|
305180
|
-
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",
|
|
305181
|
-
|
|
305182
|
-
|
|
305183
|
-
|
|
305184
|
-
|
|
305185
|
-
|
|
305186
|
-
|
|
305187
|
-
|
|
305188
|
-
|
|
305189
|
-
|
|
305190
|
-
|
|
305191
|
-
|
|
305192
|
-
|
|
305193
|
-
|
|
305194
|
-
|
|
305195
|
-
|
|
305196
|
-
|
|
305197
|
-
|
|
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 })] }));
|
|
305198
306154
|
}
|
|
305199
306155
|
function FieldTooltip$1({ text }) {
|
|
305200
306156
|
const t = useT();
|
|
@@ -317058,7 +318014,7 @@ function LiveKitScreenSharing({ tenantKey, mentorUniqueId, sessionId, username,
|
|
|
317058
318014
|
}
|
|
317059
318015
|
|
|
317060
318016
|
function AppSyncBanner({ badge, text, link, linkText }) {
|
|
317061
|
-
return (jsx("div", { className: "mx-auto mb-8 w-full max-w-md", children: jsxs("div", { className: "flex items-center justify-between rounded-lg border border-[#D0E0FF] bg-[#F5F8FF] p-2", children: [jsxs("div", { className: "flex items-center gap-2", children: [jsx("span", { className: "rounded-md bg-[#D0E0FF] px-2 py-0.5 text-xs font-medium text-[#666768]", children: badge }), jsx("span", { className: "text-sm font-medium text-gray-900", children: text })] }), jsxs(Link$2, { href: link, target: "_blank", className: cn(buttonVariants({
|
|
318017
|
+
return (jsx("div", { className: "mx-auto mb-8 w-full max-w-md", children: jsxs("div", { className: "flex items-center justify-between rounded-lg border border-[#D0E0FF] bg-[#F5F8FF] p-2", children: [jsxs("div", { className: "flex items-center gap-2", children: [jsx("span", { className: "rounded-md bg-[#D0E0FF] px-2 py-0.5 text-xs font-medium text-[#666768]", children: badge }), jsx("span", { className: "text-sm font-medium text-gray-900", children: text })] }), jsxs(Link$2, { href: link, target: "_blank", className: cn(buttonVariants$1({
|
|
317062
318018
|
variant: 'ghost',
|
|
317063
318019
|
size: 'sm',
|
|
317064
318020
|
className: 'h-auto p-1 text-sm text-blue-600 hover:text-blue-700',
|
|
@@ -320714,5 +321670,5 @@ var disclaimerModal = /*#__PURE__*/Object.freeze({
|
|
|
320714
321670
|
DisclaimerModal: DisclaimerModal
|
|
320715
321671
|
});
|
|
320716
321672
|
|
|
320717
|
-
export { AGENT_ACCESS_TAB_LABELS, AGENT_ANALYTICS_TAB_LABELS, AGENT_API_TAB_LABELS, AGENT_DATASETS_TAB_LABELS, AGENT_DISCLAIMERS_TAB_LABELS, AGENT_EMBED_TAB_LABELS, AGENT_EVALUATION_TAB_LABELS, AGENT_GRADER_TAB_LABELS, AGENT_HISTORY_TAB_LABELS, AGENT_HUMAN_SUPPORT_TAB_LABELS, AGENT_LLM_TAB_LABELS, AGENT_LTI_TAB_LABELS, AGENT_MEMORY_TAB_LABELS, AGENT_PICKER_LABELS, AGENT_PRIVACY_TAB_LABELS, AGENT_PROMPTS_TAB_LABELS, AGENT_SAFETY_TAB_LABELS, AGENT_SCREENSHARE_TAB_LABELS, AGENT_SEARCH_LABELS, AGENT_SETTINGS_TAB_LABELS, AGENT_SKILLS_TAB_LABELS, AGENT_SPEND_CAPS_TAB_LABELS, AGENT_TASKS_TAB_LABELS, AGENT_TOOLS_TAB_LABELS, AGENT_VOICE_TAB_LABELS, Account, AgentAccessTab, AgentAnalyticsTab, AgentApiTab, AgentCard, AgentDatasetsTab, AgentDisclaimersTab, AgentEmbedTab, AgentEmptyState, AgentEvaluationTab, AgentGraderTab, AgentHistoryTab, AgentHumanSupportTab, AgentLLMTab, AgentLtiTab, AgentMemoryTab, AgentPrivacyTab, AgentPromptsTab, AgentSafetyTab, AgentScreenShareTab, AgentSearch, AgentSearchFilters, AgentSearchInput, AgentSettingsProvider, AgentSettingsTab, AgentSkillsTab, AgentSpendCapsTab, AgentTasksTab, AgentToolsTab, AgentVoiceTab, AppSidebar, CATALOGS, Chat, ClientErrorPage, ConversationStarters$1 as ConversationStarters, CopyButton, CopyMentorModal, CourseBox, CourseContentLayout, CourseContentTabPage, CreatePathwayModal, CredentialDetailModal, CredentialMiniBox, DEFAULT_ANALYTICS_HUB_TABS, DEFAULT_LOCALE, DeleteMentorModal, EMPTY_PROGRAM_SETTINGS_FORM, EdxIframe, ErrorPage, GRADING_TOOL_NAME, GreetingMethod, LLMProviderModal, LocalModelRow, McpTab, MediaBox, MentorSelectionGrid, NavBar, OrganizationTab, PLATFORM_SIDEBAR_FLYOUT_ITEM_COLOR, PLATFORM_SIDEBAR_FLYOUT_TITLE_COLOR, PLATFORM_SIDEBAR_NAV_ACTIVE_BG_OPEN, PLATFORM_SIDEBAR_NAV_MUTED, PathwayDetailModal, PlatformAccountSheet, PlatformSidebar, PlatformSidebarCollapsedLabelFlyout, PlatformSidebarCollapsedNavFlyout, PlatformSidebarFooter, PlatformSidebarNavDivider, PlatformSidebarNavSection, PlatformSidebarSubNavItem, ProfileInfoCards, ProfileTabs, ProgramDetailModal, ProjectsSidebarDropdown, SPEND_CAPS_SUB_TABS, SUPPORTED_LOCALES, SidebarInset, SidebarProvider, SidebarTrigger, SpendCapUsage, SsoLogin, StarButton, UserProfileDropdown, UserProfileModal, WebContainersI18nProvider, formatDateString, getCatalog, getProviderName, initializeLocalStorageWithObject, isValidLocale, resolveAgentPickerLabels, resolveAgentSearchLabels, resolveLLMTabLabels, resolveSettingsTabLabels, useAgentSearch, useAgentSearchWithPagination, useAgentSettings, useAgentStar, useGetChatDetails, usePlatformSidebarFooterActions, usePlatformSidebarNavCallback, useSidebar, useT, useTimeTracker, useToggleTools, useWebContainersI18n, useWebContainersLocale };
|
|
321673
|
+
export { AGENT_ACCESS_TAB_LABELS, AGENT_ANALYTICS_TAB_LABELS, AGENT_API_TAB_LABELS, AGENT_DATASETS_TAB_LABELS, AGENT_DISCLAIMERS_TAB_LABELS, AGENT_EMBED_TAB_LABELS, AGENT_EVALUATION_TAB_LABELS, AGENT_GRADER_TAB_LABELS, AGENT_HISTORY_TAB_LABELS, AGENT_HUMAN_SUPPORT_TAB_LABELS, AGENT_LLM_TAB_LABELS, AGENT_LTI_TAB_LABELS, AGENT_MEMORY_TAB_LABELS, AGENT_PICKER_LABELS, AGENT_PRIVACY_TAB_LABELS, AGENT_PROMPTS_TAB_LABELS, AGENT_SAFETY_TAB_LABELS, AGENT_SCREENSHARE_TAB_LABELS, AGENT_SEARCH_LABELS, AGENT_SETTINGS_TAB_LABELS, AGENT_SKILLS_TAB_LABELS, AGENT_SPEND_CAPS_TAB_LABELS, AGENT_TASKS_TAB_LABELS, AGENT_TOOLS_TAB_LABELS, AGENT_VOICE_TAB_LABELS, AccessibilityFab, AccessibilityProvider, AccessibilityToolbar, Account, AgentAccessTab, AgentAnalyticsTab, AgentApiTab, AgentCard, AgentDatasetsTab, AgentDisclaimersTab, AgentEmbedTab, AgentEmptyState, AgentEvaluationTab, AgentGraderTab, AgentHistoryTab, AgentHumanSupportTab, AgentLLMTab, AgentLtiTab, AgentMemoryTab, AgentPrivacyTab, AgentPromptsTab, AgentSafetyTab, AgentScreenShareTab, AgentSearch, AgentSearchFilters, AgentSearchInput, AgentSettingsProvider, AgentSettingsTab, AgentSkillsTab, AgentSpendCapsTab, AgentTasksTab, AgentToolsTab, AgentVoiceTab, AppSidebar, CATALOGS, Chat, ClientErrorPage, ConversationStarters$1 as ConversationStarters, CopyButton, CopyMentorModal, CourseBox, CourseContentLayout, CourseContentTabPage, CreatePathwayModal, CredentialDetailModal, CredentialMiniBox, DEFAULT_ANALYTICS_HUB_TABS, DEFAULT_LOCALE, DRAGGABLE_SNAP_TRANSITION, DeleteMentorModal, EMPTY_PROGRAM_SETTINGS_FORM, EdxIframe, ErrorPage, FloatingAccessibilityButton, GRADING_TOOL_NAME, GreetingMethod, LLMProviderModal, LocalModelRow, McpTab, MediaBox, MentorSelectionGrid, NavBar, OrganizationTab, PLATFORM_SIDEBAR_FLYOUT_ITEM_COLOR, PLATFORM_SIDEBAR_FLYOUT_TITLE_COLOR, PLATFORM_SIDEBAR_NAV_ACTIVE_BG_OPEN, PLATFORM_SIDEBAR_NAV_MUTED, PathwayDetailModal, PlatformAccountSheet, PlatformSidebar, PlatformSidebarCollapsedLabelFlyout, PlatformSidebarCollapsedNavFlyout, PlatformSidebarFooter, PlatformSidebarNavDivider, PlatformSidebarNavSection, PlatformSidebarSubNavItem, ProfileInfoCards, ProfileTabs, ProgramDetailModal, ProjectsSidebarDropdown, SPEND_CAPS_SUB_TABS, SUPPORTED_LOCALES, SidebarInset, SidebarProvider, SidebarTrigger, SpendCapUsage, SsoLogin, StarButton, UserProfileDropdown, UserProfileModal, WebContainersI18nProvider, formatDateString, getCatalog, getProviderName, initializeLocalStorageWithObject, isValidLocale, resolveAgentPickerLabels, resolveAgentSearchLabels, resolveLLMTabLabels, resolveSettingsTabLabels, useAccessibility, useAgentSearch, useAgentSearchWithPagination, useAgentSettings, useAgentStar, useDraggablePosition, useGetChatDetails, usePlatformSidebarFooterActions, usePlatformSidebarNavCallback, useSidebar, useT, useTimeTracker, useToggleTools, useWebContainersI18n, useWebContainersLocale };
|
|
320718
321674
|
//# sourceMappingURL=index.esm.js.map
|