@8wave/ai-elements 0.118.0 → 0.119.0-beta.8
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/_chunks/{PkStreamingMarkdown--CcBvs19.js → PkStreamingMarkdown-Bry3y6Ru.js} +789 -780
- package/dist/_chunks/PkStreamingMarkdown-Bry3y6Ru.js.map +1 -0
- package/dist/_chunks/{PkToolShowArtifact-BVGN7hV2.js → PkToolShowArtifact-CfJLe8vD.js} +2 -2
- package/dist/_chunks/{PkToolShowArtifact-BVGN7hV2.js.map → PkToolShowArtifact-CfJLe8vD.js.map} +1 -1
- package/dist/_chunks/{PkToolShowContactForm-Blrwqpl0.js → PkToolShowContactForm-CQQ6p4bJ.js} +2 -2
- package/dist/_chunks/{PkToolShowContactForm-Blrwqpl0.js.map → PkToolShowContactForm-CQQ6p4bJ.js.map} +1 -1
- package/dist/_chunks/{PkToolShowForm-BpGHaN6x.js → PkToolShowForm-CGAc1O6K.js} +4 -4
- package/dist/_chunks/{PkToolShowForm-BpGHaN6x.js.map → PkToolShowForm-CGAc1O6K.js.map} +1 -1
- package/dist/_chunks/{PkToolShowSources-8c9RvGV1.js → PkToolShowSources-BJ-XFrLD.js} +3 -3
- package/dist/_chunks/{PkToolShowSources-8c9RvGV1.js.map → PkToolShowSources-BJ-XFrLD.js.map} +1 -1
- package/dist/_chunks/{markdown-c59ir6tw.js → markdown-DpoAzJSk.js} +64 -61
- package/dist/_chunks/markdown-DpoAzJSk.js.map +1 -0
- package/dist/ai-elements.es.js +1944 -1865
- package/dist/ai-elements.es.js.map +1 -1
- package/dist-vue/PkChatbot.js +1 -1
- package/dist-vue/PkChatbotEmptyState.js +1 -1
- package/dist-vue/PkChatbotInput.js +1 -1
- package/dist-vue/PkChatbotMessages.js +1 -1
- package/dist-vue/PkChatbotStepPayload.js +1 -1
- package/dist-vue/PkChatbotStepToolDetail.js +1 -1
- package/dist-vue/PkChatbotSteps.js +1 -1
- package/dist-vue/PkChatbotViewChat.js +1 -1
- package/dist-vue/PkChatbotViewFiles.js +1 -1
- package/dist-vue/PkChatbotViewProfile.js +1 -1
- package/dist-vue/_chunks/{Document-B-oyVh7v.js → Document-CV-RJu_p.js} +64 -61
- package/dist-vue/_chunks/Document-CV-RJu_p.js.map +1 -0
- package/dist-vue/_chunks/PkAvatar-BTqu8tn9.js +44 -0
- package/dist-vue/_chunks/PkAvatar-BTqu8tn9.js.map +1 -0
- package/dist-vue/_chunks/PkChatbot-CcNC2r_E.js +276 -0
- package/dist-vue/_chunks/PkChatbot-CcNC2r_E.js.map +1 -0
- package/dist-vue/_chunks/{PkChatbotEmptyState-D2dhInfG.js → PkChatbotEmptyState-Toj4CqXV.js} +3 -3
- package/dist-vue/_chunks/{PkChatbotEmptyState-D2dhInfG.js.map → PkChatbotEmptyState-Toj4CqXV.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotInput-CQdxFbBR.js → PkChatbotInput-BfZqRpQ2.js} +2 -2
- package/dist-vue/_chunks/{PkChatbotInput-CQdxFbBR.js.map → PkChatbotInput-BfZqRpQ2.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotMessages-coscJcpy.js → PkChatbotMessages-B6qYZsMZ.js} +283 -283
- package/dist-vue/_chunks/{PkChatbotMessages-coscJcpy.js.map → PkChatbotMessages-B6qYZsMZ.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotStepPayload-DnqFluQZ.js → PkChatbotStepPayload-D0eoPBQ8.js} +2 -2
- package/dist-vue/_chunks/{PkChatbotStepPayload-DnqFluQZ.js.map → PkChatbotStepPayload-D0eoPBQ8.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotStepToolDetail-BMslY_BG.js → PkChatbotStepToolDetail-CMx4cw1D.js} +3 -3
- package/dist-vue/_chunks/{PkChatbotStepToolDetail-BMslY_BG.js.map → PkChatbotStepToolDetail-CMx4cw1D.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotSteps-7FT6Ju6_.js → PkChatbotSteps-DeZQhGRU.js} +38 -38
- package/dist-vue/_chunks/{PkChatbotSteps-7FT6Ju6_.js.map → PkChatbotSteps-DeZQhGRU.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotViewChat-Cko-Cw6c.js → PkChatbotViewChat--Q90F_Kg.js} +7 -7
- package/dist-vue/_chunks/PkChatbotViewChat--Q90F_Kg.js.map +1 -0
- package/dist-vue/_chunks/{PkChatbotViewFiles-gqCumfod.js → PkChatbotViewFiles-CA20TBFY.js} +2 -2
- package/dist-vue/_chunks/{PkChatbotViewFiles-gqCumfod.js.map → PkChatbotViewFiles-CA20TBFY.js.map} +1 -1
- package/dist-vue/_chunks/{PkChatbotViewProfile-B57VRVaO.js → PkChatbotViewProfile-CyzRxE3D.js} +2 -2
- package/dist-vue/_chunks/{PkChatbotViewProfile-B57VRVaO.js.map → PkChatbotViewProfile-CyzRxE3D.js.map} +1 -1
- package/dist-vue/_chunks/{PkStreamingMarkdown-BtyWXY2k.js → PkStreamingMarkdown-C55Fi0Pd.js} +2 -2
- package/dist-vue/_chunks/{PkStreamingMarkdown-BtyWXY2k.js.map → PkStreamingMarkdown-C55Fi0Pd.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowArtifact-Ritx54_X.js → PkToolShowArtifact-z1qTnFkA.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowArtifact-Ritx54_X.js.map → PkToolShowArtifact-z1qTnFkA.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowContactForm-D30IsZGy.js → PkToolShowContactForm-BjNpnv6y.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowContactForm-D30IsZGy.js.map → PkToolShowContactForm-BjNpnv6y.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowDiagram-PEozSAqU.js → PkToolShowDiagram-CqkabP0e.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowDiagram-PEozSAqU.js.map → PkToolShowDiagram-CqkabP0e.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowForm-ZmdM9J9x.js → PkToolShowForm-CZFWZub7.js} +5 -5
- package/dist-vue/_chunks/{PkToolShowForm-ZmdM9J9x.js.map → PkToolShowForm-CZFWZub7.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowImageGallery-Dkjf7Tw_.js → PkToolShowImageGallery-CkfXP_lD.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowImageGallery-Dkjf7Tw_.js.map → PkToolShowImageGallery-CkfXP_lD.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowProductList-CsHYM8vl.js → PkToolShowProductList-De-PtmD-.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowProductList-CsHYM8vl.js.map → PkToolShowProductList-De-PtmD-.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowSources-CKZkcPLA.js → PkToolShowSources-CSN7S0zo.js} +3 -3
- package/dist-vue/_chunks/{PkToolShowSources-CKZkcPLA.js.map → PkToolShowSources-CSN7S0zo.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowVideo-CKm1fVQs.js → PkToolShowVideo-B_Q93E2y.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowVideo-CKm1fVQs.js.map → PkToolShowVideo-B_Q93E2y.js.map} +1 -1
- package/dist-vue/_chunks/{PkToolShowWebPages-DLEC9cuh.js → PkToolShowWebPages-D3CdjJUc.js} +2 -2
- package/dist-vue/_chunks/{PkToolShowWebPages-DLEC9cuh.js.map → PkToolShowWebPages-D3CdjJUc.js.map} +1 -1
- package/dist-vue/_chunks/{utils-fxHiCnzf.js → utils-CwIMEuAv.js} +41 -32
- package/dist-vue/_chunks/utils-CwIMEuAv.js.map +1 -0
- package/dist-vue/apps/web-component/src/composables/useChatbotAgent.d.ts +1 -4
- package/dist-vue/composables.js +188 -115
- package/dist-vue/composables.js.map +1 -1
- package/dist-vue/index.js +4005 -3980
- package/dist-vue/index.js.map +1 -1
- package/dist-vue/locales.js +4 -0
- package/dist-vue/packages/components/src/chat/PkAvatar.d.ts +7 -0
- package/dist-vue/packages/components/src/chat/utils.d.ts +10 -0
- package/dist-vue/packages/models/src/schema/Document.d.ts +25 -0
- package/dist-vue/packages/models/src/schema/Notification.d.ts +2 -0
- package/dist-vue/packages/models/src/schema/Platform.d.ts +72 -0
- package/dist-vue/style.css +1 -1
- package/package.json +1 -1
- package/dist/_chunks/PkStreamingMarkdown--CcBvs19.js.map +0 -1
- package/dist/_chunks/markdown-c59ir6tw.js.map +0 -1
- package/dist-vue/_chunks/Document-B-oyVh7v.js.map +0 -1
- package/dist-vue/_chunks/PkAvatar-ZgCsoO-p.js +0 -42
- package/dist-vue/_chunks/PkAvatar-ZgCsoO-p.js.map +0 -1
- package/dist-vue/_chunks/PkChatbot-Cm45hwYw.js +0 -275
- package/dist-vue/_chunks/PkChatbot-Cm45hwYw.js.map +0 -1
- package/dist-vue/_chunks/PkChatbotViewChat-Cko-Cw6c.js.map +0 -1
- package/dist-vue/_chunks/utils-fxHiCnzf.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composables.js","names":["action","agent","agentApiToolStatus","agentType","auth","branding","browserEngine","channelDescription","channelGuide","chartLabel","confirmDescription","confirmTitle","conversationAnalysis","crawlMode","dataProtection","diagram","documentMetadata","documentFailure","documentRefreshResult","documentStatus","searchStatus","documentSyncCounter","documentSyncInterval","documentSyncStatus","documentTrash","documentType","errors","externalProvider","feature","gdprRetention","help","hint","integrationProvider","integrationProviderDescription","integrationSyncStatus","interval","invitationStatus","label","language","lead","mcpAuthType","mcpConnectionStatus","mcpServerStatus","member","memorySource","message","messagePart","organizationLimits","placeholder","problemReasons","problems","profileSection","refreshInterval","releaseNotes","role","route","showForm","subAgentStatus","time","toolApproval","toolGroup","toolGroupInfo","toolSelection","tooltip","turnEvaluation","twoFactor","userFiles","validation","voiceEagerness","weather","unsubscribe","invalidType","invalidTypeReceivedUndefined","invalidTypeReceivedNull","invalidValue","unrecognizedKeys","invalidKey","invalidUnion","invalidElement","custom","notMultipleOf","invalidFormat","tooSmall","tooBig","types","it","itErrors","en","enErrors","createChatbotApiClient","useChatbotStore","logger","useLocalizedString","resolveContrastColor","DEFAULT_COOKIE_NAME","DEFAULT_USER_ID_COOKIE_SUFFIX","MAX_AGE_ONE_YEAR","setCookie","name","value","maxAge","error","getCookie","prefix","row","entry","setSessionCookie","cookieName","token","getSessionCookie","setAnonymousUserIdCookie","userId","getAnonymousUserIdCookie","clearAnonymousUserIdCookie","BACKEND_URL","FRONTEND_URL","AUTH_BASE_PATH","useChatbotAgent","agent","ref","branding","authMethods","deploymentCss","requiresAuth","notFound","isLoading","load","orgSlug","toValue","options","agentId","apiClient","result","watch","source","computed","contrastColor","mainColor","theme","systemTheme","it_default$1","\"accept\"","\"acceptRedundancy\"","\"activate\"","\"add\"","\"addExistingDocument\"","\"addField\"","\"addFieldMapping\"","\"addHint\"","\"addIntegration\"","\"addMember\"","\"addNestedField\"","\"addToCalendar\"","\"allDocuments\"","\"analyzeChat\"","\"apply\"","\"ask\"","\"attachFile\"","\"back\"","\"backToAgent\"","\"backToDocuments\"","\"backToHome\"","\"backToSignIn\"","\"ban\"","\"blockChat\"","\"cancel\"","\"cancelInvitation\"","\"change\"","\"changeAgent\"","\"changeRole\"","\"check\"","\"clear\"","\"clearSearch\"","\"close\"","\"closeSidebar\"","\"collapse\"","\"compare\"","\"connect\"","\"continue\"","\"copied\"","\"copy\"","\"crawl\"","\"create\"","\"createAgent\"","\"createApiKey\"","\"createDocument\"","\"createFolder\"","\"createNew\"","\"createNewChat\"","\"createNotification\"","\"createRevise\"","\"createSubfolder\"","\"deactivate\"","\"decline\"","\"delete\"","\"deleteAllMemories\"","\"deleteAllNotifications\"","\"deleteFolder\"","\"deleteMyConversations\"","\"deleteProfile\"","\"deleteRow\"","\"deselectHint\"","\"disableAutoRefresh\"","\"disconnect\"","\"embeddingBackToPlatform\"","\"embeddingRemove\"","\"embeddingUseEndpoint\"","\"modelEndpointConnect\"","\"dismissRedundancy\"","\"documentRefreshNow\"","\"documentSetRefresh\"","\"documentSourceSettings\"","\"documentSourceSyncNow\"","\"documentSourceUnlink\"","\"download\"","\"downloadIcs\"","\"downloadTeamsApp\"","\"downvote\"","\"dropFile\"","\"dropFilesToImport\"","\"duplicate\"","\"edit\"","\"editAgent\"","\"editDocument\"","\"editRevise\"","\"editSchema\"","\"enableAutoRefresh\"","\"expand\"","\"export\"","\"exportMyData\"","\"feedback\"","\"foldSidebar\"","\"forgetPassword\"","\"generate\"","\"generateFromJson\"","\"getDirections\"","\"getMoreInfo\"","\"goBack\"","\"hangUp\"","\"impersonate\"","\"import\"","\"importFromCrawler\"","\"integrationCheck\"","\"integrationConnectMicrosoft\"","\"integrationConnectApp\"","\"integrationUseOwnApp\"","\"integrationAdvancedSetup\"","\"integrationDisconnect\"","\"integrationReconnect\"","\"integrationRotateSecret\"","\"invite\"","\"inviteMember\"","\"leave\"","\"link\"","\"linkExisting\"","\"linkFromProvider\"","\"loadDefaults\"","\"manageAgentAccess\"","\"manageProfile\"","\"markAllAsRead\"","\"markAsRead\"","\"moreActions\"","\"moveDown\"","\"moveHere\"","\"moveToFolder\"","\"moveUp\"","\"mute\"","\"next\"","\"open\"","\"openFilters\"","\"openInGmail\"","\"openInMailApp\"","\"openInOutlook\"","\"openInSms\"","\"openInTelegram\"","\"openInWhatsApp\"","\"openInYahooMail\"","\"openSettings\"","\"openSidebar\"","\"pan\"","\"pause\"","\"pin\"","\"playVoicePreview\"","\"prev\"","\"previewAsPage\"","\"previewAsWidget\"","\"previous\"","\"proceed\"","\"profileMenu\"","\"recoverPassword\"","\"refill\"","\"refillHistory\"","\"refresh\"","\"refreshPrices\"","\"setPrice\"","\"regenerate\"","\"remove\"","\"removeField\"","\"renameChat\"","\"renameFolder\"","\"reorder\"","\"reprocess\"","\"resendInvitation\"","\"reset\"","\"resetPassword\"","\"resize\"","\"resume\"","\"resumeInPlayground\"","\"retry\"","\"retryNow\"","\"revoke\"","\"revokeAllOtherSessions\"","\"revokeAllSessions\"","\"run\"","\"save\"","\"scrollToBottom\"","\"searchAllFolders\"","\"select\"","\"selectHint\"","\"selected\"","\"send\"","\"sendLink\"","\"share\"","\"shareDocumentWithAgents\"","\"showLess\"","\"showMore\"","\"signIn\"","\"signInWithSocialProvider\"","\"signOut\"","\"signUp\"","\"signUpWithSocialProvider\"","\"startNewChat\"","\"stop\"","\"stopImpersonation\"","\"stopVoicePreview\"","\"submit\"","\"switch\"","\"takePhoto\"","\"talk\"","\"testIntegration\"","\"toggleIntegration\"","\"toggleTheme\"","\"unban\"","\"unblockChat\"","\"unfoldSidebar\"","\"unlinkDocument\"","\"unmute\"","\"unpin\"","\"update\"","\"upvote\"","\"useColorsForAgentHeader\"","\"view\"","\"viewAgentTree\"","\"viewAll\"","\"viewChat\"","\"viewDetails\"","\"viewDocument\"","\"viewDocuments\"","\"viewProfile\"","\"viewRecentChats\"","\"welcomePopup\"","\"zoomIn\"","\"zoomOut\"","\"createWebSource\"","\"webSourceConfirmRemoval\"","\"channel\"","\"app\"","\"frontoffice\"","\"widget\"","\"reasoning\"","\"high\"","\"low\"","\"medium\"","\"off\"","\"reasoningSummary\"","\"auto\"","\"concise\"","\"detailed\"","\"searchMode\"","\"balanced\"","\"keyword\"","\"semantic\"","\"status\"","\"active\"","\"draft\"","\"inactive\"","\"tool\"","\"fetchTeamsChannelHistory\"","\"geocode\"","\"getWeather\"","\"querySpreadsheet\"","\"readDocumentFile\"","\"requestGeolocation\"","\"retrieveRevisedAnswers\"","\"runWorker\"","\"scheduleWakeup\"","\"searchInKnowledgeBase\"","\"searchInUserFiles\"","\"showArtifact\"","\"showCalendarEvent\"","\"showComparison\"","\"showContactForm\"","\"showDiagram\"","\"showEmail\"","\"showForm\"","\"showImageGallery\"","\"showLocation\"","\"showMessage\"","\"showMultipleChoice\"","\"showProductList\"","\"showQrCode\"","\"showSources\"","\"showSuggestedReply\"","\"showVideo\"","\"showWeather\"","\"showWebPages\"","\"spreadsheet\"","\"useAllUserFiles\"","\"useAllUserKb\"","\"userMemory\"","\"toolWorkingSetMode\"","\"shadow\"","\"visibility\"","\"organization\"","\"private\"","\"public\"","\"chat\"","\"genericError\"","\"haveAccount\"","\"noAccount\"","\"popupBlocked\"","\"resetSent\"","\"resetSentTitle\"","\"resetTitle\"","\"signInTitle\"","\"signUpSuccessTitle\"","\"signUpTitle\"","\"verifyEmail\"","\"asset\"","\"emailBanner\"","\"emailLogo\"","\"logoDark\"","\"logoLight\"","\"mark\"","\"assetHint\"","\"bundledImage\"","\"color\"","\"accent\"","\"brand\"","\"info\"","\"colors\"","\"colorsHint\"","\"darkLogo\"","\"images\"","\"imagesHint\"","\"lightLogo\"","\"loadFailed\"","\"markBesideName\"","\"mode\"","\"modeDark\"","\"modeHint\"","\"modeLight\"","\"modeSystem\"","\"neutralMark\"","\"noImage\"","\"notRuntimeContent\"","\"notRuntimeTitle\"","\"palette\"","\"dark\"","\"light\"","\"removeImage\"","\"replaceImage\"","\"saveAndReload\"","\"saveFailed\"","\"saveFailedHint\"","\"savedMeanwhile\"","\"savedMeanwhileHint\"","\"text\"","\"companyName\"","\"description\"","\"productName\"","\"productTagline\"","\"shortName\"","\"textHint\"","\"texts\"","\"unsupportedType\"","\"uploadFailed\"","\"uploadFailedHint\"","\"uploadImage\"","\"useBundledImage\"","\"fetch\"","\"puppeteer\"","\"remote\"","\"teams\"","\"whatsapp\"","\"docs\"","\"intro\"","\"step1\"","\"step2\"","\"step3\"","\"step4\"","\"step5\"","\"step6\"","\"step7\"","\"step8\"","\"title\"","\"Africa\"","\"America\"","\"Asia\"","\"Australia\"","\"Europe\"","\"Pacific\"","\"abusive\"","\"aggressive\"","\"api\"","\"critical\"","\"data_leak\"","\"degrading\"","\"desktop\"","\"direct\"","\"disengaged\"","\"empty_reply\"","\"endpoint\"","\"excited\"","\"failed_action\"","\"false_success\"","\"frustrated\"","\"goal_met\"","\"goal_not_met\"","\"group\"","\"hallucination\"","\"impatient\"","\"improving\"","\"inappropriate_tone\"","\"mobile\"","\"negative\"","\"neutral\"","\"off_brand\"","\"other\"","\"polite\"","\"positive\"","\"refusal_loop\"","\"repetition\"","\"stable\"","\"stuck_flow\"","\"tablet\"","\"unanalyzed\"","\"unclear\"","\"unknown\"","\"voice\"","\"web\"","\"documentRefreshTriggerOff\"","\"embeddingBackToPlatformSameFamily\"","\"endpointOffWithEmbedding\"","\"integrationRemove\"","\"lastModelOff\"","\"modelProviderDelete\"","\"modelRemove\"","\"revokeVoiceApiKey\"","\"deleteAgent\"","\"deleteBulkDocument\"","\"deleteDocument\"","\"deleteSpreadsheet\"","\"excludeUserFile\"","\"unlinkAgent\"","\"unlinkLastAgentDelete\"","\"unlinkSyncedFolder\"","\"unlinkWebSource\"","\"abuseCategory\"","\"data_extraction\"","\"harassment\"","\"hate_speech\"","\"impersonation\"","\"off_topic_persistent\"","\"prompt_injection\"","\"self_harm\"","\"sexual_content\"","\"spam\"","\"violence\"","\"confidence\"","\"engagement\"","\"label\"","\"abuseDetected\"","\"conversationSentiment\"","\"goalMet\"","\"goalNotMet\"","\"llmIssueDetected\"","\"riskScore\"","\"userEngagement\"","\"userTone\"","\"llmIssue\"","\"sentiment\"","\"sentimentTrend\"","\"tone\"","\"trigger\"","\"agent_request\"","\"manual\"","\"summary_cycle\"","\"depth\"","\"sitemap\"","\"downloadPdf\"","\"classDiagram\"","\"erDiagram\"","\"flowchart\"","\"graph\"","\"sequenceDiagram\"","\"stateDiagram\"","\"xychart\"","\"affectedDocumentsStat\"","\"analyzedPages\"","\"chunkSimilarTo\"","\"compareChunks\"","\"filterOnlyRedundantLabel\"","\"filterRedundant\"","\"hasRedundant\"","\"isRedundant\"","\"openInProvider\"","\"originalChunk\"","\"pageCount\"","\"readingTime\"","\"redundancyAccepted\"","\"redundancyDismissed\"","\"redundancyExplainer\"","\"redundantChunk\"","\"redundantChunks\"","\"redundantChunksStat\"","\"redundantWarningMessage\"","\"redundantWarningServerMessage\"","\"redundantWarningTitle\"","\"redundantWith\"","\"showAll\"","\"thisDocument\"","\"viewByChunks\"","\"viewOriginal\"","\"wordCount\"","\"failed\"","\"gone\"","\"shrunk\"","\"unchanged\"","\"updated\"","\"pending\"","\"processing\"","\"success\"","\"indexed\"","\"unavailable\"","\"empty\"","\"scanned\"","\"added\"","\"renamedOrMoved\"","\"removed\"","\"skippedUnsupported\"","\"skippedTooLarge\"","\"scannedPages\"","\"capped\"","\"daily\"","\"hourly\"","\"monthly\"","\"weekly\"","\"syncing\"","\"idle\"","\"error\"","\"columnDeletedAt\"","\"columnDeletedBy\"","\"columnPurgedIn\"","\"daysLeft\"","\"emptyConsequence\"","\"emptyQuestion\"","\"emptySuccess\"","\"emptyTitle\"","\"emptyTrash\"","\"introRetention\"","\"openLiveDocument\"","\"purge\"","\"purgeConsequence\"","\"purgeQuestion\"","\"purgeSuccess\"","\"purgeTitle\"","\"refusalAgentGone\"","\"refusalIdentityTaken\"","\"restore\"","\"restoreCredits\"","\"restoreFailed\"","\"restoreIndexing\"","\"restoreQuestion\"","\"restoreSuccess\"","\"restoreSuccessRoot\"","\"restoreTitle\"","\"toggle\"","\"toggleHint\"","\"file\"","\"url\"","\"ACCOUNT_TEMPORARILY_LOCKED\"","\"BANNED_USER\"","\"CREDENTIAL_ACCOUNT_NOT_FOUND\"","\"EMAIL_CODE_NOT_AVAILABLE\"","\"TWO_FACTOR_REQUIRED\"","\"PASSKEY_PASSWORD_REQUIRED\"","\"PASSKEY_RECENT_SIGN_IN_REQUIRED\"","\"PASSKEY_NOT_ALLOWED_FOR_SESSION\"","\"PASSKEY_USER_VERIFICATION_REQUIRED\"","\"PASSKEY_NOT_FOUND\"","\"AUTHENTICATION_FAILED\"","\"FAILED_TO_VERIFY_REGISTRATION\"","\"CHALLENGE_NOT_FOUND\"","\"EMAIL_NOT_VERIFIED\"","\"EMAIL_VERIFICATION_REQUIRED_BEFORE_ACCEPTING_OR_REJECTING_INVITATION\"","\"FAILED_TO_UNLINK_LAST_ACCOUNT\"","\"INVALID_BACKUP_CODE\"","\"INVALID_CODE\"","\"INVALID_EMAIL_OR_PASSWORD\"","\"INVALID_PASSWORD\"","\"INVALID_TOKEN\"","\"INVALID_TWO_FACTOR_COOKIE\"","\"INVITATION_LIMIT_REACHED\"","\"INVITATION_NOT_FOUND\"","\"INVITER_IS_NO_LONGER_A_MEMBER_OF_THE_ORGANIZATION\"","\"KEY_NOT_FOUND\"","\"MEMBER_NOT_FOUND\"","\"NOT_ALLOWED\"","\"ORGANIZATION_ALREADY_EXISTS\"","\"ORGANIZATION_MEMBERSHIP_LIMIT_REACHED\"","\"ORGANIZATION_NOT_FOUND\"","\"ORGANIZATION_SLUG_ALREADY_TAKEN\"","\"OTP_HAS_EXPIRED\"","\"RATE_LIMIT_EXCEEDED\"","\"SESSION_NOT_FRESH\"","\"SOCIAL_ACCOUNT_ALREADY_LINKED\"","\"TOO_MANY_ATTEMPTS_REQUEST_NEW_CODE\"","\"TOO_MANY_REQUESTS\"","\"TOTP_ALREADY_ENABLED\"","\"TOTP_NOT_ENABLED\"","\"TWO_FACTOR_REQUIRED_TO_ENFORCE\"","\"UNAUTHORIZED_SESSION\"","\"USER_ALREADY_EXISTS\"","\"USER_ALREADY_EXISTS_USE_ANOTHER_EMAIL\"","\"USER_IS_ALREADY_A_MEMBER_OF_THIS_ORGANIZATION\"","\"USER_IS_ALREADY_INVITED_TO_THIS_ORGANIZATION\"","\"USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION\"","\"USER_NOT_FOUND\"","\"YOU_ARE_NOT_A_MEMBER_OF_THIS_ORGANIZATION\"","\"YOU_ARE_NOT_ALLOWED_TO_MANAGE_TWO_FACTOR\"","\"YOU_ARE_NOT_THE_RECIPIENT_OF_THE_INVITATION\"","\"YOU_CANNOT_BAN_YOURSELF\"","\"YOU_CANNOT_IMPERSONATE_ADMINS\"","\"YOU_CANNOT_LEAVE_THE_ORGANIZATION_AS_THE_ONLY_OWNER\"","\"YOU_CANNOT_LEAVE_THE_ORGANIZATION_WITHOUT_AN_OWNER\"","\"YOU_CANNOT_MANAGE_YOUR_OWN_TWO_FACTOR\"","\"YOU_CANNOT_REMOVE_YOURSELF\"","\"YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_ORGANIZATIONS\"","\"fileAlreadyImported\"","\"invalidToken\"","\"passwordsDoNotMatch\"","\"privateNetworkRequired\"","\"refreshIntervalUrlOnly\"","\"required\"","\"slugAlreadyExists\"","\"slugFormat\"","\"urlAlreadyImported\"","\"syncSourceUrlOnly\"","\"domain\"","\"github\"","\"google\"","\"microsoft\"","\"apiTools\"","\"byok\"","\"endpoints\"","\"fileUpload\"","\"gateway\"","\"channels\"","\"models\"","\"tools\"","\"hubspot\"","\"leads\"","\"legend\"","\"mcpServers\"","\"proactiveAutomations\"","\"salesforce\"","\"sharepoint\"","\"subAgents\"","\"anonymousLabel\"","\"chatLabel\"","\"defaultDays\"","\"defaultDisabled\"","\"trashLabel\"","\"unitDays\"","\"aiDescription\"","\"aiDescriptionModel\"","\"aiDescriptionPrompt\"","\"browserEngine\"","\"documentFile\"","\"fetchBrowserEngine\"","\"followExternal\"","\"forceOcr\"","\"pages\"","\"puppeteerBrowserEngine\"","\"remoteBrowserEngine\"","\"useBrowserEngine\"","\"useExtractionStrategy\"","\"webSourceWatch\"","\"webSourceRemoveMissing\"","\"webSourceRemoveMissingExplained\"","\"D\"","\"M\"","\"W\"","\"Y\"","\"accepted\"","\"canceled\"","\"expired\"","\"de\"","\"en\"","\"english\"","\"es\"","\"fr\"","\"french\"","\"german\"","\"it\"","\"italian\"","\"nl\"","\"pt\"","\"spanish\"","\"contactReason\"","\"appointment\"","\"callback_request\"","\"complaint\"","\"info_request\"","\"quote_request\"","\"support\"","\"budget\"","\"company\"","\"conversationSummary\"","\"preferredContactMethod\"","\"preferredContactTime\"","\"productInterest\"","\"topics\"","\"urgency\"","\"any\"","\"email\"","\"phone\"","\"afternoon\"","\"evening\"","\"morning\"","\"headers\"","\"oauth\"","\"orphan\"","\"stale\"","\"agentAccess\"","\"hint\"","\"managerHint\"","\"explicit\"","\"extracted\"","\"audioTranscribing\"","\"audioTranscript\"","\"audioTranscriptFailed\"","\"audioTranscriptNoSpeech\"","\"audioTranscriptOff\"","\"disconnectOAuthConnection\"","\"editSpreadsheet\"","\"editSpreadsheetCells\"","\"enableTools\"","\"expandChunkContext\"","\"readEarlierMessages\"","\"readSpreadsheet\"","\"recallUserMemory\"","\"requestOAuthConnection\"","\"requestOAuthConnectionButton\"","\"requestOAuthConnectionInfo\"","\"requestOAuthConnectionPrompt\"","\"requestOAuthConnectionSuccess\"","\"revisedAnswers\"","\"runSubagent\"","\"saveUserMemory\"","\"searchingDocuments\"","\"showProducts\"","\"stepCount\"","\"stepDocument\"","\"stepDropped\"","\"stepError\"","\"stepExcerpts\"","\"stepInput\"","\"stepItems\"","\"stepNoResults\"","\"stepOutput\"","\"stepRepeated\"","\"stepTimedOut\"","\"steps\"","\"streaming\"","\"webSearch\"","\"membersHint\"","\"membersInvalid\"","\"membersLabel\"","\"allProviders\"","\"apiToolName\"","\"apiToolUrl\"","\"askAnything\"","\"autoDetect\"","\"autoGenerated\"","\"comment\"","\"completeName\"","\"constValue\"","\"customAnswer\"","\"documentContent\"","\"documentName\"","\"documentOriginAll\"","\"documentRefreshAll\"","\"documentUrl\"","\"endDate\"","\"enterYourQuestion\"","\"insert\"","\"insertOrigin\"","\"insertImageHost\"","\"limit\"","\"loading\"","\"mcpServerHealthCheckPath\"","\"mcpServerUrl\"","\"model\"","\"modelEndpointBaseUrl\"","\"name\"","\"noTrustedOrigins\"","\"noImageHosts\"","\"oauthAuthorizationUrl\"","\"oauthClientId\"","\"oauthClientSecret\"","\"oauthScopes\"","\"oauthTokenUrl\"","\"pasteJsonSample\"","\"prompt\"","\"request\"","\"search\"","\"secretEdit\"","\"selectAgent\"","\"selectLanguage\"","\"selectPriority\"","\"similarity\"","\"sitemapUrl\"","\"slug\"","\"startDate\"","\"startUrl\"","\"temperature\"","\"uploadFile\"","\"emailAddress\"","\"timeout\"","\"conflict\"","\"unauthorized\"","\"backToApp\"","\"general\"","\"pictureHint\"","\"notifications\"","\"groups\"","\"alwaysOn\"","\"inApp\"","\"agent_replies\"","\"summary\"","\"documents\"","\"integrations\"","\"flagged_conversations\"","\"usage_limits\"","\"security\"","\"passwordSummary\"","\"connectedAccountsNote\"","\"connected\"","\"devices\"","\"deviceOn\"","\"available\"","\"keyExpires\"","\"keyNeverExpires\"","\"keyRequests\"","\"organizations\"","\"current\"","\"onlyYou\"","\"members\"","\"memberSince\"","\"asksTwoFactor\"","\"data\"","\"account\"","\"heading\"","\"installed\"","\"lead\"","\"admin\"","\"member\"","\"owner\"","\"user\"","\"agentEndpoints\"","\"agents\"","\"backoffice\"","\"branding\"","\"catalog\"","\"chatLogs\"","\"copatForYou\"","\"dashboard\"","\"dataProtection\"","\"endpointLogs\"","\"feedbacks\"","\"home\"","\"invitations\"","\"mcpServer\"","\"notFound\"","\"playground\"","\"profile\"","\"reasoningLogs\"","\"releaseNotes\"","\"requestPasswordReset\"","\"system\"","\"twoFactor\"","\"twoFactorSetup\"","\"users\"","\"video\"","\"virtualAssistant\"","\"completed\"","\"otherPlaceholder\"","\"step\"","\"future\"","\"past\"","\"unit\"","\"day\"","\"hour\"","\"minute\"","\"second\"","\"approved\"","\"cancelled\"","\"confirmed\"","\"denied\"","\"communication\"","\"delegation\"","\"knowledgeSearch\"","\"locationWeather\"","\"personalization\"","\"richContent\"","\"cost\"","\"enabled\"","\"exposed\"","\"inputTokens\"","\"kind\"","\"mcp\"","\"subagent\"","\"latency\"","\"leadFailed\"","\"missed\"","\"missedActive\"","\"missedShadow\"","\"notCharged\"","\"probability\"","\"seeded\"","\"used\"","\"agentsUsedInfo\"","\"mcpConnectionStatus\"","\"requestsUsedInfo\"","\"question\"","\"asksHuman\"","\"durableFact\"","\"informationGap\"","\"manipulation\"","\"missingInfo\"","\"version\"","\"adminBackupCodes\"","\"adminChanges\"","\"adminChangesEmpty\"","\"adminChangesHint\"","\"adminDevicesForgotten\"","\"adminFailedAttempts\"","\"adminFilterEmpty\"","\"adminForgetDevices\"","\"adminForgetDevicesDescription\"","\"adminForgetDevicesQuestion\"","\"adminLocked\"","\"adminPasskeySynced\"","\"adminRemovePasskeyDescription\"","\"adminRemovePasskeyQuestion\"","\"adminRequiredPending\"","\"adminStateNoneHint\"","\"adminSummaryAll\"","\"adminTrustedDevices\"","\"adminUnlock\"","\"adminUnlockDescription\"","\"adminUnlocked\"","\"adminUnlockQuestion\"","\"adoptionRatio\"","\"adoptionState\"","\"totp\"","\"otp\"","\"passkey\"","\"none\"","\"adoptionTitle\"","\"adoptionTitleUsers\"","\"backupCode\"","\"backupCodesDescription\"","\"backupCodesFileHeader\"","\"backupCodesReplaced\"","\"backupCodesSaved\"","\"badge\"","\"challengeApp\"","\"challengeBackup\"","\"challengeEmailSending\"","\"challengeEmailSent\"","\"challengeTitle\"","\"code\"","\"column\"","\"disabledMessage\"","\"enabledMessage\"","\"manualKey\"","\"memberOff\"","\"memberOn\"","\"memberPasskey\"","\"memberPasskeyHint\"","\"memberPending\"","\"memberPendingHint\"","\"memberSocialOnly\"","\"memberSocialOnlyHint\"","\"methodApp\"","\"methodAppSummary\"","\"methodEmail\"","\"methodEmailSummary\"","\"newBackupCodes\"","\"newBackupCodesDescription\"","\"passkeyAdd\"","\"passkeyAddDescription\"","\"passkeyAdded\"","\"passkeyAddNoPasswordDescription\"","\"passkeyAlreadyRegistered\"","\"passkeyCancelled\"","\"passkeyCreate\"","\"passkeyCreatedAt\"","\"passkeyDeviceBound\"","\"passkeyDeviceRefused\"","\"passkeyFallbackName\"","\"passkeyName\"","\"passkeyNameHint\"","\"passkeyRemove\"","\"passkeyRemoved\"","\"passkeyRemoveDescription\"","\"passkeyRemoveQuestion\"","\"passkeys\"","\"passkeysDescription\"","\"passkeysEmpty\"","\"passkeySynced\"","\"qrLabel\"","\"requireConsequence\"","\"requiredBy\"","\"requiredByPasskeyEnough\"","\"requireHint\"","\"requireLabel\"","\"requireOff\"","\"requireOn\"","\"requireQuestion\"","\"requireTitle\"","\"resetConfirm\"","\"resetDescription\"","\"resetQuestion\"","\"scanDescription\"","\"sendAgain\"","\"setupAddAnotherPasskey\"","\"setupAddPasskey\"","\"setupDescription\"","\"setupSignInWithPasskey\"","\"setupTitle\"","\"signInState\"","\"signInWithPasskey\"","\"stateNoPassword\"","\"stateOff\"","\"stateOnApp\"","\"stateOnEmail\"","\"summaryNoPassword\"","\"summaryOff\"","\"summaryOnApp\"","\"summaryOnEmail\"","\"switchToApp\"","\"trustDevice\"","\"turnOff\"","\"turnOffDescription\"","\"turnOffRequired\"","\"turnOffTitle\"","\"turnOn\"","\"turnOnTitle\"","\"useApp\"","\"useBackupCode\"","\"verify\"","\"allAgents\"","\"chatFilesEmpty\"","\"chatFilesTitle\"","\"deleteSpreadsheetConfirm\"","\"emptyHint\"","\"exclude\"","\"excludeConfirm\"","\"openInChat\"","\"spreadsheetInChatOnly\"","\"spreadsheetVersion\"","\"subtitle\"","\"untitled\"","\"uploadedAt\"","\"duplicateHeader\"","\"duplicateSecretParameter\"","\"invalidPhoneNumber\"","\"invalidToolName\"","\"passwordMismatch\"","\"eager\"","\"normal\"","\"patient\"","\"airQuality\"","\"aqiFair\"","\"aqiGood\"","\"aqiHazardous\"","\"aqiModerate\"","\"aqiPoor\"","\"aqiVeryPoor\"","\"dailyForecast\"","\"feelsLike\"","\"today\"","\"message\"","\"action\"","\"doneTitle\"","\"doneMessage\"","\"invalidTitle\"","\"invalidMessage\"","en_default$1","en_default","\"starts_with\"","\"ends_with\"","\"includes\"","\"regex\"","\"default\"","\"number\"","\"exact\"","\"inclusive\"","\"notInclusive\"","\"int\"","\"bigint\"","\"date\"","\"string\"","\"array\"","\"set\"","\"emoji\"","\"uuid\"","\"uuidv4\"","\"uuidv6\"","\"nanoid\"","\"guid\"","\"cuid\"","\"cuid2\"","\"ulid\"","\"xid\"","\"ksuid\"","\"datetime\"","\"time\"","\"duration\"","\"ipv4\"","\"ipv6\"","\"cidrv4\"","\"cidrv6\"","\"base64\"","\"base64url\"","\"json_string\"","\"e164\"","\"jwt\"","\"template_literal\"","it_default","SUPPORTED_LOCALES","detectLocale","browserLang","i18n","createI18n","translateAuthError","body","parsed","response","code","key","anonymousReauthClient","$fetch","data","externalAuthClient","path","OAUTH_POPUP_MESSAGE_TYPE","createPopupNonce","bytes","b","useChatbotAuth","_token","useHostSession","headers","client","createAuthClient","inferAdditionalFields","anonymousClient","newTokenFromHeader","ctx","input","init","session","isAuthenticating","externalToken","isActive","activeExternalToken","isExternalAuth","authChain","runExclusiveAuth","run","task","user","previousUser","signInAnonymously","tryAnonymousReauth","storedUserId","reauthOrSignInAnonymously","handleExternalTokenFailure","failedExternalToken","exchangeExternalToken","newExternalToken","pendingExternalToken","attemptedExternalToken","externalSessionReconciled","signInWithExternalToken","signInAnonymouslyWithFallback","newIsActive","newSession","newToken","previousToken","signOut","onError","twoFactorChallenge","signInWithEmail","challenge","TWO_FACTOR_PATHS","twoFactorRequest","lostChallenge","verifyTwoFactor","kind","sendTwoFactorCode","cancelTwoFactor","signUpWithEmail","params","requestPasswordReset","signInWithSocialPopup","baseUrl","basePath","nonce","startUrl","provider","popup","allowedOrigin","closedPollId","finish","onOAuthMessage","resolve","event","onAuthSuccess","revokedToken","useFocusTrapBypass","shadowRoot","stopFocusPropagation","onMounted","rootNode","getCurrentInstance","onBeforeUnmount"],"sources":["../src/utils/cookie.ts","../src/utils/index.ts","../src/composables/useChatbotAgent.ts","../../../packages/i18n/src/it.json","../../../packages/i18n/src/en.json","../../../node_modules/.pnpm/@volverjs+zod-vue-i18n@0.0.10_vue-i18n@11.4.14_vue@3.5.44_typescript@6.0.3___zod@4.6.7/node_modules/@volverjs/zod-vue-i18n/locales/v4/en.json","../../../node_modules/.pnpm/@volverjs+zod-vue-i18n@0.0.10_vue-i18n@11.4.14_vue@3.5.44_typescript@6.0.3___zod@4.6.7/node_modules/@volverjs/zod-vue-i18n/locales/v4/it.json","../../../packages/i18n/src/index.ts","../src/composables/useChatbotAuth.ts","../src/composables/useFocusTrapBypass.ts"],"sourcesContent":["import { logger } from 'utils'\n\nconst DEFAULT_COOKIE_NAME = 'eight-wave-ai'\nconst DEFAULT_USER_ID_COOKIE_SUFFIX = '-uid'\nconst MAX_AGE_ONE_YEAR = 31536000\n\nfunction setCookie(name: string, value: string, maxAge: number) {\n try {\n // A past `expires` accompanies `max-age=0` on deletion: some cookie\n // implementations (older browsers, happy-dom) only honor the former.\n const expires =\n maxAge > 0 ? '' : '; expires=Thu, 01 Jan 1970 00:00:00 GMT'\n document.cookie = `${name}=${value}; path=/; max-age=${maxAge}${expires}; SameSite=Lax; Secure`\n } catch (error) {\n logger.warn(\n '[cookie] setCookie blocked (cross-origin/tracking protection)',\n error,\n )\n }\n}\n\nfunction getCookie(name: string): string {\n try {\n // Only split on the FIRST \"=\" — session tokens are signed with a\n // base64 signature that can contain \"=\" padding, so splitting on every\n // \"=\" would truncate the value and corrupt the token.\n const prefix = `${name}=`\n const row = document.cookie\n .split('; ')\n .find((entry) => entry.startsWith(prefix))\n return row ? row.slice(prefix.length) : ''\n } catch (error) {\n logger.warn(\n '[cookie] getCookie blocked (cross-origin/tracking protection)',\n error,\n )\n return ''\n }\n}\n\n// create first-party session cookie for authentication with 1 year expiry;\n// an empty token (sign-out) deletes the cookie instead of storing an empty value\nexport function setSessionCookie(\n token: string,\n cookieName: string = DEFAULT_COOKIE_NAME,\n) {\n setCookie(cookieName, token, token ? MAX_AGE_ONE_YEAR : 0)\n}\n\n// retrieve first-party session cookie\nexport function getSessionCookie(cookieName: string = DEFAULT_COOKIE_NAME) {\n return getCookie(cookieName)\n}\n\n// persist anonymous userId alongside session token to enable re-auth after session expiry\nexport function setAnonymousUserIdCookie(\n userId: string,\n cookieName: string = DEFAULT_COOKIE_NAME,\n) {\n setCookie(\n `${cookieName}${DEFAULT_USER_ID_COOKIE_SUFFIX}`,\n userId,\n MAX_AGE_ONE_YEAR,\n )\n}\n\n// retrieve persisted anonymous userId\nexport function getAnonymousUserIdCookie(\n cookieName: string = DEFAULT_COOKIE_NAME,\n) {\n return getCookie(`${cookieName}${DEFAULT_USER_ID_COOKIE_SUFFIX}`)\n}\n\n// remove the persisted anonymous userId once the anonymous user links a real\n// account (the linked anonymous user is deleted server-side, so it's stale)\nexport function clearAnonymousUserIdCookie(\n cookieName: string = DEFAULT_COOKIE_NAME,\n) {\n setCookie(`${cookieName}${DEFAULT_USER_ID_COOKIE_SUFFIX}`, '', 0)\n}\n","export * from './cookie'\n\nexport const BACKEND_URL: string = import.meta.env.VITE_BACKEND_URL\nexport const FRONTEND_URL: string = import.meta.env.VITE_FRONTEND_URL\nexport const AUTH_BASE_PATH = 'auth'\n","import type { MaybeRefOrGetter } from 'vue'\nimport { computed, ref, toValue, watch } from 'vue'\nimport type { AgentBranding, AgentPublic, AuthMethods } from 'models'\nimport { createChatbotApiClient } from 'composables'\nimport { resolveContrastColor } from 'components/src/chat/utils'\nimport { BACKEND_URL } from '~/utils'\n\nexport function useChatbotAgent(options: {\n baseUrl?: string\n basePath?: string\n organizationSlug?: MaybeRefOrGetter<string>\n agentId?: MaybeRefOrGetter<string>\n headers?: MaybeRefOrGetter<Record<string, string> | undefined>\n /**\n * Host-provided color scheme override, applied when the agent theme is\n * `auto`. Mirrors the precedence used by the chatbot store: agent theme,\n * then this override, then the OS `prefers-color-scheme`.\n */\n systemTheme?: MaybeRefOrGetter<'light' | 'dark' | undefined>\n}) {\n const agent = ref<AgentPublic>()\n const branding = ref<AgentBranding>()\n const authMethods = ref<AuthMethods>()\n /** The deployment theme's stylesheet, or undefined while it is the default. */\n const deploymentCss = ref<string>()\n const requiresAuth = ref(false)\n const notFound = ref(false)\n const isLoading = ref(false)\n\n async function load() {\n const orgSlug = toValue(options.organizationSlug)\n const agentId = toValue(options.agentId)\n if (!orgSlug || !agentId) {\n return\n }\n const apiClient = createChatbotApiClient({\n baseUrl: options.baseUrl ?? BACKEND_URL,\n basePath: options.basePath,\n headers: () => toValue(options.headers),\n })\n isLoading.value = true\n try {\n const result = await apiClient.getAgentAccess(orgSlug, agentId)\n authMethods.value = result.authMethods\n deploymentCss.value = result.deploymentBranding?.css\n if (result.requiresAuth) {\n requiresAuth.value = true\n branding.value = result.branding ?? undefined\n agent.value = undefined\n } else {\n requiresAuth.value = false\n branding.value = undefined\n agent.value = result.agent ?? undefined\n }\n notFound.value = false\n } catch {\n notFound.value = true\n deploymentCss.value = undefined\n agent.value = undefined\n branding.value = undefined\n requiresAuth.value = false\n } finally {\n isLoading.value = false\n }\n }\n\n // Reload when org/agent changes\n watch(\n [\n () => toValue(options.organizationSlug),\n () => toValue(options.agentId),\n ],\n () => {\n load()\n },\n { immediate: true },\n )\n\n // Reload when headers change meaningfully (e.g. after login) and auth is required\n watch(\n () => toValue(options.headers),\n () => {\n if (requiresAuth.value) {\n load()\n }\n },\n )\n\n // Branding-aware theming: fall back to branding when agent is not available\n const source = computed(\n () => agent.value?.interface ?? branding.value?.interface,\n )\n\n const contrastColor = computed(() =>\n resolveContrastColor(source.value?.textColor, source.value?.mainColor),\n )\n const mainColor = computed(() => source.value?.mainColor)\n\n const themeClass = computed(() => {\n const theme = source.value?.theme\n if (theme && theme !== 'auto') {\n return ['theme', `theme--${theme}`]\n }\n const systemTheme = toValue(options.systemTheme)\n if (systemTheme) {\n return ['theme', `theme--${systemTheme}`]\n }\n return ['theme']\n })\n\n const themeStyle = computed(() =>\n source.value\n ? {\n '--chatbot-main-color': mainColor.value,\n '--chatbot-contrast-color': contrastColor.value,\n }\n : undefined,\n )\n\n return {\n agent,\n branding,\n authMethods,\n deploymentCss,\n requiresAuth,\n notFound,\n isLoading,\n reload: load,\n contrastColor,\n mainColor,\n themeClass,\n themeStyle,\n }\n}\n","{\n \"action\": {\n \"accept\": \"Accetto\",\n \"acceptRedundancy\": \"Conferma ridondante\",\n \"activate\": \"Attiva\",\n \"add\": \"Aggiungi\",\n \"addExistingDocument\": \"Aggiungi documento esistente\",\n \"addField\": \"Aggiungi campo\",\n \"addFieldMapping\": \"Aggiungi mappatura\",\n \"addHint\": \"Premi invio per aggiungere\",\n \"addIntegration\": \"Aggiungi integrazione\",\n \"addMember\": \"Aggiungi membro\",\n \"addNestedField\": \"Campo annidato\",\n \"addToCalendar\": \"Aggiungi al calendario\",\n \"allDocuments\": \"Tutti i documenti\",\n \"analyzeChat\": \"Analizza conversazione\",\n \"apply\": \"Applica\",\n \"ask\": \"Chiedi\",\n \"attachFile\": \"Allega un file\",\n \"back\": \"Indietro\",\n \"backToAgent\": \"Torna all'agente\",\n \"backToDocuments\": \"Torna ai documenti\",\n \"backToHome\": \"Torna alla home\",\n \"backToSignIn\": \"Torna al login\",\n \"ban\": \"Banna utente\",\n \"blockChat\": \"Blocca conversazione\",\n \"cancel\": \"Annulla\",\n \"cancelInvitation\": \"Annulla invito\",\n \"change\": \"Modifica\",\n \"changeAgent\": \"Cambia agente\",\n \"changeRole\": \"Cambia ruolo\",\n \"check\": \"Verifica\",\n \"clear\": \"Pulisci\",\n \"clearSearch\": \"Cancella ricerca\",\n \"close\": \"Chiudi\",\n \"closeSidebar\": \"Chiudi la sidebar\",\n \"collapse\": \"Collassa\",\n \"compare\": \"Confronta\",\n \"connect\": \"Collega\",\n \"continue\": \"Continua\",\n \"copied\": \"Copiato\",\n \"copy\": \"Copia\",\n \"crawl\": \"Esegui crawling\",\n \"create\": \"Crea\",\n \"createAgent\": \"Crea agente\",\n \"createApiKey\": \"Crea API key\",\n \"createDocument\": \"Crea documento\",\n \"createFolder\": \"Crea cartella\",\n \"createNew\": \"Crea nuovo\",\n \"createNewChat\": \"Inizia una nuova chat\",\n \"createNotification\": \"Crea notifica\",\n \"createRevise\": \"Correggi la risposta\",\n \"createSubfolder\": \"Crea sottocartella\",\n \"deactivate\": \"Disattiva\",\n \"decline\": \"Rifiuto\",\n \"delete\": \"Elimina\",\n \"deleteAllMemories\": \"Elimina tutte le memorie\",\n \"deleteAllNotifications\": \"Elimina tutte le notifiche\",\n \"deleteFolder\": \"Elimina cartella\",\n \"deleteMyConversations\": \"Cancella le mie conversazioni\",\n \"deleteProfile\": \"Elimina profilo\",\n \"deleteRow\": \"Elimina riga\",\n \"deselectHint\": \"Premi invio per rimuovere\",\n \"disableAutoRefresh\": \"Disabilita aggiornamento automatico\",\n \"disconnect\": \"Disconnetti\",\n \"embeddingBackToPlatform\": \"Torna alla piattaforma\",\n \"embeddingRemove\": \"Rimuovi\",\n \"embeddingUseEndpoint\": \"Usa l’endpoint\",\n \"modelEndpointConnect\": \"Collega il tuo endpoint\",\n \"dismissRedundancy\": \"Ripristina nella ricerca\",\n \"documentRefreshNow\": \"Aggiorna ora\",\n \"documentSetRefresh\": \"Imposta aggiornamento\",\n \"documentSourceSettings\": \"Impostazioni di sincronizzazione\",\n \"documentSourceSyncNow\": \"Sincronizza ora\",\n \"documentSourceUnlink\": \"Scollega\",\n \"download\": \"Scarica\",\n \"downloadIcs\": \"Scarica .ics\",\n \"downloadTeamsApp\": \"Scarica app Teams (.zip)\",\n \"downvote\": \"Non utile\",\n \"dropFile\": \"Trascina il file qui\",\n \"dropFilesToImport\": \"Rilascia i file per importare i documenti\",\n \"duplicate\": \"Duplica\",\n \"edit\": \"Modifica\",\n \"editAgent\": \"Modifica agente\",\n \"editDocument\": \"Modifica documento\",\n \"editRevise\": \"Modifica la risposta\",\n \"editSchema\": \"Modifica schema\",\n \"enableAutoRefresh\": \"Abilita aggiornamento automatico\",\n \"expand\": \"Espandi\",\n \"export\": \"Esporta\",\n \"exportMyData\": \"Esporta i miei dati\",\n \"feedback\": \"Voglio fare una segnalazione\",\n \"foldSidebar\": \"Chiudi barra laterale\",\n \"forgetPassword\": \"Hai dimenticato la password?\",\n \"generate\": \"Genera\",\n \"generateFromJson\": \"Genera da JSON\",\n \"getDirections\": \"Indicazioni\",\n \"getMoreInfo\": \"Maggiori informazioni\",\n \"goBack\": \"Indietro\",\n \"hangUp\": \"Chiudi la chiamata\",\n \"impersonate\": \"Impersonifica\",\n \"import\": \"Importa ({count})\",\n \"importFromCrawler\": \"Importa da crawler\",\n \"integrationCheck\": \"Verifica connessione\",\n \"integrationConnectMicrosoft\": \"Connetti con Microsoft\",\n \"integrationConnectApp\": \"Collega l'app\",\n \"integrationUseOwnApp\": \"Usa un'app del vostro tenant\",\n \"integrationAdvancedSetup\": \"Configurazione avanzata\",\n \"integrationDisconnect\": \"Disconnetti\",\n \"integrationReconnect\": \"Riconnetti\",\n \"integrationRotateSecret\": \"Sostituisci il client secret\",\n \"invite\": \"Invita\",\n \"inviteMember\": \"Invita membro\",\n \"leave\": \"Abbandona\",\n \"link\": \"Collega\",\n \"linkExisting\": \"Collega esistente\",\n \"linkFromProvider\": \"Collega da {provider}\",\n \"loadDefaults\": \"Carica default\",\n \"manageAgentAccess\": \"Gestisci accesso agenti\",\n \"manageProfile\": \"Gestisci il tuo profilo\",\n \"markAllAsRead\": \"Segna tutto come letto\",\n \"markAsRead\": \"Segna come letto\",\n \"moreActions\": \"Azioni\",\n \"moveDown\": \"Sposta giù\",\n \"moveHere\": \"Sposta qui\",\n \"moveToFolder\": \"Sposta nella cartella\",\n \"moveUp\": \"Sposta su\",\n \"mute\": \"Disattiva il microfono\",\n \"next\": \"Avanti\",\n \"open\": \"Apri\",\n \"openFilters\": \"Apri i filtri\",\n \"openInGmail\": \"Apri in Gmail\",\n \"openInMailApp\": \"Apri con l'app di posta\",\n \"openInOutlook\": \"Apri in Outlook\",\n \"openInSms\": \"Apri in SMS\",\n \"openInTelegram\": \"Apri in Telegram\",\n \"openInWhatsApp\": \"Apri in WhatsApp\",\n \"openInYahooMail\": \"Apri in Yahoo Mail\",\n \"openSettings\": \"Apri le impostazioni\",\n \"openSidebar\": \"Apri la sidebar\",\n \"pan\": \"Sposta\",\n \"pause\": \"Metti in pausa\",\n \"pin\": \"Blocca\",\n \"playVoicePreview\": \"Ascolta un esempio di questa voce\",\n \"prev\": \"Indietro\",\n \"previewAsPage\": \"Anteprima come pagina chat\",\n \"previewAsWidget\": \"Anteprima come widget\",\n \"previous\": \"Indietro\",\n \"proceed\": \"Procedi\",\n \"profileMenu\": \"Profilo, tema e lingua\",\n \"recoverPassword\": \"Recupera password\",\n \"refill\": \"Ricarica\",\n \"refillHistory\": \"Storico ricariche\",\n \"refresh\": \"Aggiorna\",\n \"refreshPrices\": \"Aggiorna i prezzi\",\n \"setPrice\": \"Imposta il prezzo\",\n \"regenerate\": \"Rigenera\",\n \"remove\": \"Rimuovi\",\n \"removeField\": \"Rimuovi campo\",\n \"renameChat\": \"Rinomina\",\n \"renameFolder\": \"Rinomina cartella\",\n \"reorder\": \"Riordina\",\n \"reprocess\": \"Riprocessa\",\n \"resendInvitation\": \"Invia nuovamente l'invito\",\n \"reset\": \"Reset\",\n \"resetPassword\": \"Reimposta password\",\n \"resize\": \"Ridimensiona\",\n \"resume\": \"Riprendi\",\n \"resumeInPlayground\": \"Riprendi nel playground\",\n \"retry\": \"Riprova\",\n \"retryNow\": \"Riprova ora\",\n \"revoke\": \"Revoca\",\n \"revokeAllOtherSessions\": \"Disconnetti tutte\",\n \"revokeAllSessions\": \"Revoca tutte le sessioni\",\n \"run\": \"Esegui\",\n \"save\": \"Salva\",\n \"scrollToBottom\": \"Torna in fondo\",\n \"searchAllFolders\": \"Cerca in tutte le cartelle\",\n \"select\": \"Seleziona\",\n \"selectHint\": \"Premi invio per selezionare\",\n \"selected\": \"Selezionati\",\n \"send\": \"Invia\",\n \"sendLink\": \"Invia il link\",\n \"share\": \"Condividi\",\n \"shareDocumentWithAgents\": \"Condividi con altri agenti\",\n \"showLess\": \"Mostra di meno\",\n \"showMore\": \"Visualizza altre {count}\",\n \"signIn\": \"Accedi\",\n \"signInWithSocialProvider\": \"Accedi con {provider}\",\n \"signOut\": \"Esci\",\n \"signUp\": \"Registrati\",\n \"signUpWithSocialProvider\": \"Registrati con {provider}\",\n \"startNewChat\": \"Inizia una nuova chat\",\n \"stop\": \"Ferma\",\n \"stopImpersonation\": \"Torna al tuo profilo\",\n \"stopVoicePreview\": \"Ferma l'esempio\",\n \"submit\": \"Invia\",\n \"switch\": \"Cambia\",\n \"takePhoto\": \"Scatta una foto\",\n \"talk\": \"Parla\",\n \"testIntegration\": \"Verifica connessione\",\n \"toggleIntegration\": \"Abilita/Disabilita\",\n \"toggleTheme\": \"Cambia tema\",\n \"unban\": \"Sblocca utente\",\n \"unblockChat\": \"Sblocca conversazione\",\n \"unfoldSidebar\": \"Apri barra laterale\",\n \"unlinkDocument\": \"Rimuovi dall'agente\",\n \"unmute\": \"Riattiva il microfono\",\n \"unpin\": \"Sblocca\",\n \"update\": \"Aggiorna\",\n \"upvote\": \"Utile\",\n \"useColorsForAgentHeader\": \"Colora l'intestazione\",\n \"view\": \"Visualizza\",\n \"viewAgentTree\": \"Dipendenze\",\n \"viewAll\": \"Vedi tutte\",\n \"viewChat\": \"Visualizza la chat\",\n \"viewDetails\": \"Visualizza dettagli\",\n \"viewDocument\": \"Visualizza il documento\",\n \"viewDocuments\": \"Visualizza i documenti\",\n \"viewProfile\": \"Visualizza profilo\",\n \"viewRecentChats\": \"Visualizza chat recenti\",\n \"welcomePopup\": \"Mostra popup di benvenuto\",\n \"zoomIn\": \"Ingrandisci\",\n \"zoomOut\": \"Riduci\",\n \"createWebSource\": \"Crea sorgente\",\n \"webSourceConfirmRemoval\": \"Rimuovi le {count} pagine\"\n },\n \"agent\": {\n \"channel\": {\n \"app\": \"App\",\n \"frontoffice\": \"Frontoffice\",\n \"widget\": \"Widget\"\n },\n \"reasoning\": {\n \"high\": \"Alto\",\n \"low\": \"Basso\",\n \"medium\": \"Medio\",\n \"off\": \"Disattivo\"\n },\n \"reasoningSummary\": {\n \"auto\": \"Auto\",\n \"concise\": \"Conciso\",\n \"detailed\": \"Dettagliato\"\n },\n \"searchMode\": {\n \"balanced\": \"Bilanciato (vettoriale + parole chiave)\",\n \"keyword\": \"Parole chiave (solo full-text)\",\n \"semantic\": \"Semantico (solo vettoriale)\"\n },\n \"status\": {\n \"active\": \"Attivo\",\n \"draft\": \"Bozza\",\n \"inactive\": \"Inattivo\"\n },\n \"tool\": {\n \"fetchTeamsChannelHistory\": \"Cronologia canale Teams\",\n \"geocode\": \"Geocodifica\",\n \"getWeather\": \"Dati meteo\",\n \"querySpreadsheet\": \"Query sui fogli di calcolo\",\n \"readDocumentFile\": \"Lettura file documenti\",\n \"requestGeolocation\": \"Geolocalizzazione\",\n \"retrieveRevisedAnswers\": \"Risposte verificate\",\n \"runWorker\": \"Worker parallelo\",\n \"scheduleWakeup\": \"Controlli ripetuti\",\n \"searchInKnowledgeBase\": \"Knowledge base\",\n \"searchInUserFiles\": \"File dell'utente\",\n \"showArtifact\": \"Artefatti\",\n \"showCalendarEvent\": \"Evento calendario\",\n \"showComparison\": \"Confronto\",\n \"showContactForm\": \"Modulo di contatto\",\n \"showDiagram\": \"Diagramma o grafico\",\n \"showEmail\": \"Email\",\n \"showForm\": \"Modulo multi-step\",\n \"showImageGallery\": \"Galleria immagini\",\n \"showLocation\": \"Mappa interattiva\",\n \"showMessage\": \"Messaggistica\",\n \"showMultipleChoice\": \"Scelta multipla\",\n \"showProductList\": \"Catalogo prodotti\",\n \"showQrCode\": \"Codice QR\",\n \"showSources\": \"Fonti e riferimenti\",\n \"showSuggestedReply\": \"Risposte suggerite\",\n \"showVideo\": \"Video\",\n \"showWeather\": \"Widget meteo\",\n \"showWebPages\": \"Link a pagine web\",\n \"spreadsheet\": \"Fogli di calcolo\",\n \"useAllUserFiles\": \"Utilizza tutti i file utente\",\n \"useAllUserKb\": \"Utilizza tutta la KB utente\",\n \"userMemory\": \"Memoria utente\"\n },\n \"toolWorkingSetMode\": {\n \"active\": \"Attiva\",\n \"off\": \"Disattivata\",\n \"shadow\": \"Ombra (solo registrazione)\"\n },\n \"visibility\": {\n \"organization\": \"Organizzazione\",\n \"private\": \"Privato\",\n \"public\": \"Pubblico\"\n }\n },\n \"agentApiToolStatus\": {\n \"active\": \"Attivo\",\n \"inactive\": \"Inattivo\"\n },\n \"agentType\": {\n \"chat\": \"Chat\",\n \"reasoning\": \"Ragionamento\"\n },\n \"auth\": {\n \"genericError\": \"Si è verificato un errore. Riprova.\",\n \"haveAccount\": \"Hai già un account?\",\n \"noAccount\": \"Non hai un account?\",\n \"popupBlocked\": \"Finestra popup bloccata. Consenti i popup per questo sito e riprova.\",\n \"resetSent\": \"Se esiste un account con questa email, riceverai un link per reimpostare la password.\",\n \"resetSentTitle\": \"Controlla la tua email\",\n \"resetTitle\": \"Reimposta la tua password\",\n \"signInTitle\": \"Accedi al tuo account\",\n \"signUpSuccessTitle\": \"Account creato!\",\n \"signUpTitle\": \"Crea il tuo account\",\n \"verifyEmail\": \"Abbiamo inviato un'email di verifica al tuo indirizzo. Controlla la tua casella di posta.\"\n },\n \"branding\": {\n \"asset\": {\n \"emailBanner\": \"Banner delle email\",\n \"emailLogo\": \"Logo delle email\",\n \"logoDark\": \"Logo su fondo scuro\",\n \"logoLight\": \"Logo su fondo chiaro\",\n \"mark\": \"Marchio\"\n },\n \"assetHint\": {\n \"emailBanner\": \"Sotto il logo delle email, largo fino a {width} px.\",\n \"emailLogo\": \"In testa a ogni email.\",\n \"logoDark\": \"Tema scuro. Senza, il logo chiaro.\",\n \"logoLight\": \"Barra laterale e intestazione.\",\n \"mark\": \"Quadrato: card di accesso, barra chiusa e icone dell'app.\"\n },\n \"bundledImage\": \"Immagine predefinita\",\n \"color\": {\n \"accent\": \"Accento\",\n \"brand\": \"Brand\",\n \"info\": \"Info\"\n },\n \"colors\": \"Colori\",\n \"colorsHint\": \"Il tema chiaro e quello scuro hanno ciascuno la sua palette: un tema scuro di solito vuole un brand più chiaro. Il testo su questi colori resta leggibile qualunque colore si scelga.\",\n \"darkLogo\": \"Il logo scuro\",\n \"images\": \"Immagini\",\n \"imagesHint\": \"SVG, PNG o WebP, fino a {maxSize} KB e {maxSide} pixel per lato. Ogni anteprima mostra l'immagine nei due temi: controlla che si legga anche su quello scuro. Le immagini delle email vengono convertite in PNG, o in JPEG quando non hanno trasparenze, perché molti client di posta non mostrano né SVG né WebP.\",\n \"lightLogo\": \"Il logo chiaro\",\n \"loadFailed\": \"Non è stato possibile leggere il tema di questo deployment.\",\n \"markBesideName\": \"Il marchio accanto al nome\",\n \"mode\": \"Chiaro e scuro\",\n \"modeDark\": \"Sempre scuro\",\n \"modeHint\": \"Un tema fisso toglie la scelta agli utenti.\",\n \"modeLight\": \"Sempre chiaro\",\n \"modeSystem\": \"Scelta dell'utente\",\n \"neutralMark\": \"L'iniziale del nome\",\n \"noImage\": \"Nessuna immagine\",\n \"notRuntimeContent\": \"Il tema qui si può solo consultare: questo frontend è costruito senza VITE_RUNTIME_BRANDING e mantiene l'aspetto di compilazione, mentre un tema salvato arriverebbe comunque alle email e al widget della chat di ogni organizzazione.\",\n \"notRuntimeTitle\": \"Questo build non legge il tema\",\n \"palette\": {\n \"dark\": \"Tema scuro\",\n \"light\": \"Tema chiaro\"\n },\n \"removeImage\": \"Rimuovi l'immagine\",\n \"replaceImage\": \"Sostituisci\",\n \"saveAndReload\": \"Salva e ricarica\",\n \"saveFailed\": \"Tema non salvato\",\n \"saveFailedHint\": \"Non è stato possibile salvare il tema. Riprova tra poco.\",\n \"savedMeanwhile\": \"Qualcun altro ha salvato il tema\",\n \"savedMeanwhileHint\": \"Il tema è cambiato dopo che hai aperto questa pagina, e salvando annulleresti quelle modifiche. Ricarica la pagina per vederle, poi rifai le tue.\",\n \"text\": {\n \"companyName\": \"Nome dell'azienda\",\n \"description\": \"Descrizione\",\n \"productName\": \"Nome del prodotto\",\n \"productTagline\": \"Sopratitolo\",\n \"shortName\": \"Nome breve\"\n },\n \"textHint\": {\n \"companyName\": \"Piè di pagina delle email. Vuoto: nessuno.\",\n \"description\": \"Una frase sul prodotto: la descrizione dell'app installata.\",\n \"productName\": \"Scheda del browser, app installata, email e app Teams. Se lo cambi, un'immagine che non carichi non è più quella di Eight Wave: l'iniziale del nome, o nessuna nelle email.\",\n \"productTagline\": \"Sopra il nome breve. Vuoto: nessuno.\",\n \"shortName\": \"La riga in evidenza del logo, e il nome sotto l'icona dell'app installata.\"\n },\n \"texts\": \"Nomi\",\n \"unsupportedType\": \"Usa un'immagine SVG, PNG o WebP.\",\n \"uploadFailed\": \"Immagine non salvata\",\n \"uploadFailedHint\": \"Non è stato possibile caricare l'immagine. Riprova, o controllane formato e dimensioni.\",\n \"uploadImage\": \"Carica\",\n \"useBundledImage\": \"Usa l'immagine predefinita\"\n },\n \"browserEngine\": {\n \"fetch\": \"Fetch · HTML statico\",\n \"puppeteer\": \"Puppeteer · browser locale\",\n \"remote\": \"Remote · browser remoto\"\n },\n \"channelDescription\": {\n \"teams\": \"Pubblica questo agente come bot all'interno di Microsoft Teams.\",\n \"whatsapp\": \"Permetti agli utenti di scrivere a questo agente su WhatsApp tramite le API Meta Cloud.\"\n },\n \"channelGuide\": {\n \"docs\": \"Apri la documentazione ufficiale\",\n \"intro\": \"Segui i passaggi nell'ordine. Apri ogni servizio collegato in una nuova scheda del browser e copia i valori nel form a sinistra. Non chiudere questa finestra finché non hai finito.\",\n \"teams\": {\n \"step1\": \"Accedi al portale Microsoft Azure con il tuo account aziendale o scolastico.\",\n \"step2\": \"Crea una nuova risorsa «Azure Bot» e dalle un nome. Quando richiesto, scegli se è Single o Multi-tenant: ricorda la scelta per il passaggio 5.\",\n \"step3\": \"Apri il bot appena creato → «Configuration», copia il «Microsoft App ID» e incollalo nel campo App ID.\",\n \"step4\": \"Accanto al Microsoft App ID clicca «Manage password»: si apre la registrazione dell'app in Microsoft Entra ID (una pagina diversa dal bot). Lì, sotto «Certificates & secrets», crea un nuovo client secret e copia il suo «Value» (non il Secret ID) nel campo App password. Copialo subito: viene mostrato una sola volta.\",\n \"step5\": \"Imposta l'App type uguale a quanto scelto al passaggio 2. Per Single tenant, copia il «Directory (tenant) ID» dalla pagina «Overview» della registrazione dell'app nel campo Tenant ID.\",\n \"step6\": \"Torna nel bot → «Configuration», imposta il «Messaging endpoint» sul Webhook URL mostrato sopra e salva.\",\n \"step7\": \"Apri il bot → «Channels» e aggiungi il canale «Microsoft Teams».\",\n \"step8\": \"Salva il form a sinistra, poi usa il menu della card (⋯ → Scarica app Teams) per ottenere il pacchetto e caricalo in Teams da «App → Gestisci le tue app → Carica un'app».\"\n },\n \"title\": \"Guida alla configurazione\",\n \"whatsapp\": {\n \"step1\": \"Apri il portale Meta for Developers e accedi con il tuo account Facebook (creane uno se non ce l'hai).\",\n \"step2\": \"Crea una nuova app: scegli il tipo «Business», dai un nome, poi aggiungi il prodotto «WhatsApp».\",\n \"step3\": \"Apri WhatsApp → «API Setup». Copia il «Phone number ID» (un numero lungo, non il numero di telefono) e incollalo nel campo Phone number ID.\",\n \"step4\": \"Sempre in «API Setup», genera un access token. Per una connessione che non scade, crea un token «System User» con il permesso whatsapp_business_messaging e incollalo nel campo Access token.\",\n \"step5\": \"Apri Impostazioni app → «Base», clicca «Mostra» accanto a «Chiave segreta dell'app», copiala e incollala nel campo App secret. Serve a verificare che i messaggi in arrivo provengano davvero da Meta.\",\n \"step6\": \"Abbiamo già compilato il campo «Verify token» con un valore pronto all'uso (usa «Rigenera» per crearne uno nuovo). Incollerai esattamente questo valore in Meta al passaggio successivo.\",\n \"step7\": \"Torna su WhatsApp → «Configuration» e modifica il webhook: incolla il Webhook URL mostrato sopra e lo stesso Verify token, salva, poi iscriviti all'evento «messages».\",\n \"step8\": \"Salva il form a sinistra. Invia un messaggio al tuo numero WhatsApp per verificare che l'agente risponda.\"\n }\n },\n \"chartLabel\": {\n \"2g\": \"2G\",\n \"3g\": \"3G\",\n \"4g\": \"4G\",\n \"Africa\": \"Africa\",\n \"America\": \"America\",\n \"Asia\": \"Asia\",\n \"Australia\": \"Australia\",\n \"Europe\": \"Europa\",\n \"Pacific\": \"Pacifico\",\n \"abusive\": \"Offensivo\",\n \"aggressive\": \"Aggressivo\",\n \"api\": \"API\",\n \"critical\": \"Critico\",\n \"dark\": \"Scuro\",\n \"data_leak\": \"Fuga di dati\",\n \"degrading\": \"In peggioramento\",\n \"desktop\": \"Desktop\",\n \"direct\": \"Diretto\",\n \"disengaged\": \"Disinteressato\",\n \"empty_reply\": \"Risposta vuota\",\n \"endpoint\": \"Endpoint\",\n \"excited\": \"Entusiasta\",\n \"failed_action\": \"Azione fallita\",\n \"false_success\": \"Falso successo\",\n \"frustrated\": \"Frustrato\",\n \"goal_met\": \"Obiettivo raggiunto\",\n \"goal_not_met\": \"Obiettivo non raggiunto\",\n \"group\": \"Gruppo\",\n \"hallucination\": \"Allucinazione\",\n \"high\": \"Alto\",\n \"impatient\": \"Impaziente\",\n \"improving\": \"In miglioramento\",\n \"inappropriate_tone\": \"Tono inappropriato\",\n \"light\": \"Chiaro\",\n \"low\": \"Basso\",\n \"medium\": \"Medio\",\n \"mobile\": \"Mobile\",\n \"negative\": \"Negativo\",\n \"neutral\": \"Neutro\",\n \"off_brand\": \"Fuori tono\",\n \"other\": \"Altro\",\n \"polite\": \"Cortese\",\n \"positive\": \"Positivo\",\n \"reasoning\": \"Reasoning\",\n \"refusal_loop\": \"Loop di rifiuto\",\n \"repetition\": \"Ripetizione\",\n \"slow-2g\": \"2G lento\",\n \"stable\": \"Stabile\",\n \"stuck_flow\": \"Flusso bloccato\",\n \"tablet\": \"Tablet\",\n \"teams\": \"Teams\",\n \"unanalyzed\": \"Non analizzato\",\n \"unclear\": \"Non chiaro\",\n \"unknown\": \"Sconosciuto\",\n \"voice\": \"Voce\",\n \"web\": \"Web\",\n \"whatsapp\": \"WhatsApp\"\n },\n \"confirmDescription\": {\n \"documentRefreshTriggerOff\": \"Altrimenti la lettura successiva sovrascriverebbe quello che avete scritto. Potete riaccenderlo dalla card dell'aggiornamento.\",\n \"embeddingBackToPlatform\": \"La base di conoscenza e le memorie vengono ricalcolate con il modello della piattaforma, dal testo già salvato: niente viene riconvertito. Finché non ha finito, le ricerche trovano solo ciò che è già tornato.\",\n \"embeddingBackToPlatformSameFamily\": \"Il tuo endpoint calcola lo stesso modello della piattaforma, quindi i vettori restano quelli che ci sono e non si ricalcola niente: da adesso li calcola il gateway AI della piattaforma.\",\n \"embeddingRemove\": \"Senza il gateway AI della piattaforma nessun altro calcola i vettori: la base di conoscenza, le risposte corrette, le memorie e l’elaborazione dei documenti si fermano finché non attivi di nuovo un modello di embedding sul tuo endpoint. Se la piattaforma riaccende il gateway, ripartono da sole sui suoi vettori.\",\n \"endpointOffWithEmbedding\": \"Oltre ai suoi modelli si fermano la base di conoscenza, le risposte corrette, le memorie e l’elaborazione dei documenti di tutti gli agenti, finché non lo riaccendi.\",\n \"integrationDisconnect\": \"Restano dove sono con i loro documenti, modificabili come gli altri, e smettono di aggiornarsi. Per sincronizzarle di nuovo dovrete ricollegare il provider e collegarle un'altra volta.\",\n \"integrationRemove\": \"Le credenziali salvate vengono cancellate e le sincronizzazioni verso questo provider si fermano. Per riprenderle dovrete configurarlo di nuovo.\",\n \"lastModelOff\": \"Nessun altro modello di questa organizzazione è acceso: non se ne potrà più scegliere uno per un agente nuovo o come predefinito, e gli agenti che li usano risponderanno con il modello predefinito.\",\n \"modelProviderDelete\": \"I modelli salvati e i loro prezzi andranno persi. L'eliminazione non è possibile finché un agente usa uno dei suoi modelli, né finché l’endpoint calcola l’embedding: sposta prima quegli agenti su un altro modello, e rimuovi l’embedding nella sezione Embedding.\",\n \"modelRemove\": \"Gli agenti che usano questo modello smetteranno di rispondere finché non li sposti su un altro modello.\",\n \"revokeVoiceApiKey\": \"Questa chiave serve il canale voce di un agente: la voce smette di funzionare finché non viene spenta e riaccesa nelle impostazioni dell'agente.\"\n },\n \"confirmTitle\": {\n \"deleteAgent\": \"Eliminare questo agente?\",\n \"deleteAllMemories\": \"Eliminare tutte le memorie di questo utente?\",\n \"deleteBulkDocument\": \"Eliminare i documenti selezionati?\",\n \"deleteDocument\": \"Eliminare questo documento?\",\n \"deleteFolder\": \"Eliminare questa cartella?\",\n \"deleteMyConversations\": \"Eliminare tutte le vostre conversazioni?\",\n \"deleteSpreadsheet\": \"Eliminare questo foglio di calcolo?\",\n \"documentRefreshTriggerOff\": \"Spegnere l'aggiornamento automatico?\",\n \"embeddingBackToPlatform\": \"Calcolare di nuovo i vettori sulla piattaforma?\",\n \"embeddingBackToPlatformSameFamily\": \"Calcolare i vettori sulla piattaforma?\",\n \"embeddingRemove\": \"Rimuovere l’embedding dall’endpoint?\",\n \"endpointOffWithEmbedding\": \"Spegnere l’endpoint che calcola i vettori?\",\n \"excludeUserFile\": \"Rimuovere questo file dai vostri file?\",\n \"integrationDisconnect\": \"Rimuovere questa connessione?\",\n \"lastModelOff\": \"Spegnere l’ultimo modello?\",\n \"modelProviderDelete\": \"Eliminare l’endpoint?\",\n \"modelRemove\": \"Rimuovere {id}?\",\n \"unlinkAgent\": \"Rimuovere questo agente dal documento?\",\n \"unlinkDocument\": \"Disassociare questo documento dall'agente?\",\n \"unlinkLastAgentDelete\": \"Rimuovere l'ultimo agente da questo documento?\",\n \"unlinkSyncedFolder\": \"Scollegare questa cartella?\",\n \"webSourceConfirmRemoval\": \"Rimuovere {count} pagine?\",\n \"unlinkWebSource\": \"Scollegare la sorgente?\"\n },\n \"conversationAnalysis\": {\n \"abuseCategory\": {\n \"data_extraction\": \"Estrazione dati\",\n \"harassment\": \"Molestia\",\n \"hate_speech\": \"Incitamento all'odio\",\n \"impersonation\": \"Impersonificazione\",\n \"off_topic_persistent\": \"Fuori tema\",\n \"prompt_injection\": \"Prompt injection\",\n \"self_harm\": \"Autolesionismo\",\n \"sexual_content\": \"Contenuto sessuale\",\n \"spam\": \"Spam\",\n \"violence\": \"Violenza\"\n },\n \"confidence\": {\n \"high\": \"Alta\",\n \"low\": \"Bassa\",\n \"medium\": \"Media\"\n },\n \"engagement\": {\n \"disengaged\": \"Disimpegnato\",\n \"high\": \"Alto\",\n \"low\": \"Basso\",\n \"medium\": \"Medio\"\n },\n \"label\": {\n \"abuseDetected\": \"Abuso\",\n \"conversationSentiment\": \"Sentiment\",\n \"goalMet\": \"Obiettivo raggiunto\",\n \"goalNotMet\": \"Obiettivo non raggiunto\",\n \"llmIssueDetected\": \"Problema LLM\",\n \"riskScore\": \"Punteggio di rischio\",\n \"userEngagement\": \"Coinvolgimento\",\n \"userTone\": \"Tono\"\n },\n \"llmIssue\": {\n \"data_leak\": \"Fuga di dati\",\n \"empty_reply\": \"Risposta vuota\",\n \"failed_action\": \"Azione fallita\",\n \"false_success\": \"Falso successo\",\n \"hallucination\": \"Allucinazione\",\n \"inappropriate_tone\": \"Tono inappropriato\",\n \"off_brand\": \"Fuori brand\",\n \"refusal_loop\": \"Loop di rifiuto\",\n \"repetition\": \"Ripetizione\",\n \"stuck_flow\": \"Flusso bloccato\"\n },\n \"sentiment\": {\n \"excited\": \"Entusiasta\",\n \"frustrated\": \"Frustrato\",\n \"negative\": \"Negativo\",\n \"neutral\": \"Neutro\",\n \"positive\": \"Positivo\"\n },\n \"sentimentTrend\": {\n \"degrading\": \"In peggioramento\",\n \"improving\": \"In miglioramento\",\n \"stable\": \"Stabile\"\n },\n \"title\": \"Analisi conversazione\",\n \"tone\": {\n \"abusive\": \"Offensivo\",\n \"aggressive\": \"Aggressivo\",\n \"impatient\": \"Impaziente\",\n \"neutral\": \"Neutro\",\n \"polite\": \"Cortese\"\n },\n \"trigger\": {\n \"agent_request\": \"Su richiesta\",\n \"manual\": \"Manuale\",\n \"summary_cycle\": \"Automatico\"\n }\n },\n \"crawlMode\": {\n \"depth\": \"Pagina iniziale\",\n \"sitemap\": \"Sitemap XML\"\n },\n \"dataProtection\": {\n \"downloadPdf\": \"Scarica il PDF\"\n },\n \"diagram\": {\n \"classDiagram\": \"Diagramma di classe\",\n \"erDiagram\": \"Diagramma ER\",\n \"flowchart\": \"Diagramma di flusso\",\n \"graph\": \"Grafico\",\n \"sequenceDiagram\": \"Diagramma di sequenza\",\n \"stateDiagram\": \"Diagramma di stato\",\n \"xychart\": \"Grafico XY\"\n },\n \"documentMetadata\": {\n \"affectedDocumentsStat\": \"Documenti coinvolti\",\n \"analyzedPages\": \"analizzate {pages} su\",\n \"chunkSimilarTo\": \"Simile al {score}% a un contenuto in «{docName}»\",\n \"compare\": \"Confronta\",\n \"compareChunks\": \"Confronto semantico chunk\",\n \"filterOnlyRedundantLabel\": \"Mostra solo documenti con chunk ridondanti non gestiti\",\n \"filterRedundant\": \"Mostra ridondanti\",\n \"hasRedundant\": \"Questo documento contiene informazioni ridondanti con altri file\",\n \"isRedundant\": \"Ridondante\",\n \"openInProvider\": \"Apri in {provider}\",\n \"originalChunk\": \"Chunk originale (autorevole)\",\n \"pageCount\": \"nessuna pagina | {n} pagina | {n} pagine\",\n \"readingTime\": \"{minutes} min\",\n \"redundancyAccepted\": \"Confermato\",\n \"redundancyDismissed\": \"Ripristinato\",\n \"redundancyExplainer\": \"Questi blocchi ripetono un contenuto che l'agente trova già in un altro documento, o prima in questo, e la sua ricerca li salta. Conferma per lasciarli fuori, oppure ripristinali per rimetterli nella ricerca, in ogni agente.\",\n \"redundantChunk\": \"Chunk ridondante (duplicato)\",\n \"redundantChunks\": \"nessun chunk ridondante | {n} chunk ridondante ({percent}%) | {n} chunk ridondanti ({percent}%)\",\n \"redundantChunksStat\": \"Chunk ridondanti\",\n \"redundantWarningMessage\": \"Alcuni documenti contengono chunk ridondanti. Saranno esclusi automaticamente per ottimizzare il contesto del chatbot di recupero RAG.\",\n \"redundantWarningServerMessage\": \"Ci sono {chunks} chunk ridondanti non gestiti distribuiti in {docs} documenti di questo agente (su un totale di {totalChunks} chunk e {totalDocs} documenti).\",\n \"redundantWarningTitle\": \"Rilevati contenuti duplicati o ridondanti nella Knowledge Base\",\n \"redundantWith\": \"Ridondante con il chunk {chunkId} di {docName} ({score}% similarità semantica)\",\n \"showAll\": \"Mostra tutti\",\n \"thisDocument\": \"Questo documento\",\n \"viewByChunks\": \"Visualizza a chunk\",\n \"viewDocument\": \"Documento\",\n \"viewOriginal\": \"Vedi originale\",\n \"wordCount\": \"{count} parole\"\n },\n \"documentFailure\": {\n \"audio-no-speech\": \"Nella registrazione non si sente nessun parlato\",\n \"audio-too-large\": \"La registrazione supera {limit} MB, il massimo che si trascrive: carica una copia più corta o più compressa\",\n \"credit-exhausted\": \"Credito esaurito: i documenti nuovi non vengono elaborati\",\n \"endpoint-off\": \"L'endpoint AI dell'organizzazione è spento\",\n \"file-protected\": \"Il file è protetto da password: carica una copia senza password\",\n \"file-type-unsupported\": \"Questo tipo di file non si può leggere\",\n \"file-unreadable\": \"Il file è danneggiato, o non è nel formato che indica il suo nome\",\n \"format-unsupported\": \"Il modello dell'endpoint non legge questo formato con la descrizione AI: usa la conversione normale\",\n \"gateway-disabled\": \"Serve il gateway AI della piattaforma, che questa organizzazione non usa\",\n \"model-unavailable\": \"Il modello scelto per i documenti non è attivo per questa organizzazione\",\n \"no-model\": \"Nessun modello impostato per l'AI dei documenti\",\n \"page-too-large\": \"La pagina è troppo pesante per essere letta, anche senza script e grafica incorporata\",\n \"source-status\": \"La pagina di origine ha risposto HTTP {status}\",\n \"spreadsheet-macros\": \"La cartella di lavoro contiene macro: salvala come .xlsx senza macro\",\n \"spreadsheet-no-table\": \"Nessun foglio ha una riga di intestazione nelle prime trenta righe, quindi non c'è una tabella da interrogare\",\n \"spreadsheet-protected\": \"Il file è protetto da password, oppure è un vecchio .xls rinominato in .xlsx: carica una copia .xlsx senza protezione\",\n \"spreadsheet-too-large\": \"Troppo grande per essere letto come tabelle: il contenuto supera {limit} MB\",\n \"spreadsheet-unreadable\": \"Il file non è una cartella di lavoro .xlsx valida\",\n \"transcription-off\": \"L'audio si trascrive sul gateway AI della piattaforma, che questa organizzazione non usa\"\n },\n \"documentRefreshResult\": {\n \"failed\": \"Fallito\",\n \"gone\": \"Pagina sparita\",\n \"shrunk\": \"Rifiutato\",\n \"unchanged\": \"Invariato\",\n \"updated\": \"Aggiornato\"\n },\n \"documentStatus\": {\n \"failed\": \"Fallito\",\n \"pending\": \"In attesa\",\n \"processing\": \"In elaborazione\",\n \"success\": \"Convertito\"\n },\n \"searchStatus\": {\n \"indexed\": {\n \"label\": \"Disponibile\",\n \"title\": \"Disponibile per la ricerca dell'agente\"\n },\n \"pending\": {\n \"label\": \"In preparazione\",\n \"title\": \"In arrivo nell'indice di ricerca dell'agente\"\n },\n \"failed\": {\n \"label\": \"Non indicizzato\",\n \"title\": \"L'indice di ricerca non ha accolto il documento: rielaboralo per riprovare\"\n },\n \"unavailable\": {\n \"label\": \"Non disponibile\",\n \"title\": \"L'organizzazione non può calcolare gli embedding: il documento resta fuori dalla ricerca finché il gateway o l'endpoint dell'organizzazione non tornano attivi\"\n },\n \"empty\": {\n \"label\": \"Nessun contenuto\",\n \"title\": \"Il documento non ha testo da cercare\"\n }\n },\n \"documentSyncCounter\": {\n \"scanned\": \"file esaminati\",\n \"added\": \"nuovi\",\n \"updated\": \"aggiornati\",\n \"renamedOrMoved\": \"rinominati o spostati\",\n \"removed\": \"rimossi\",\n \"unchanged\": \"invariati\",\n \"skippedUnsupported\": \"formati non supportati\",\n \"skippedTooLarge\": \"troppo grandi\",\n \"failed\": \"falliti\",\n \"scannedPages\": \"pagine esaminate\",\n \"capped\": \"rimandate al prossimo controllo\"\n },\n \"documentSyncInterval\": {\n \"daily\": \"Ogni giorno\",\n \"hourly\": \"Ogni ora\",\n \"monthly\": \"Ogni mese\",\n \"weekly\": \"Ogni settimana\"\n },\n \"documentSyncStatus\": {\n \"pending\": \"Primo import in corso\",\n \"syncing\": \"Sincronizzazione in corso\",\n \"idle\": \"Aggiornata\",\n \"error\": \"Errore\"\n },\n \"documentTrash\": {\n \"back\": \"Torna ai documenti\",\n \"columnDeletedAt\": \"Eliminato il\",\n \"columnDeletedBy\": \"Eliminato da\",\n \"columnPurgedIn\": \"Eliminazione tra\",\n \"daysLeft\": \"Alla prossima pulizia | {count} giorno | {count} giorni\",\n \"empty\": \"Il cestino è vuoto.\",\n \"emptyConsequence\": \"I file originali e i testi estratti vengono distrutti: non sarà più possibile ripristinarli né scaricarli. Un documento condiviso con altri agenti sparisce anche dal loro cestino.\",\n \"emptyQuestion\": \"Il documento nel cestino viene eliminato definitivamente. | I {count} documenti nel cestino vengono eliminati definitivamente.\",\n \"emptySuccess\": \"{count} documento eliminato definitivamente. | {count} documenti eliminati definitivamente.\",\n \"emptyTitle\": \"Svuotare il cestino?\",\n \"emptyTrash\": \"Svuota cestino\",\n \"intro\": \"L'agente non cerca più nei documenti del cestino. Puoi ripristinarli o eliminarli definitivamente.\",\n \"introRetention\": \"Ogni documento resta qui {count} giorno, poi viene eliminato definitivamente. | Ogni documento resta qui {count} giorni, poi viene eliminato definitivamente.\",\n \"openLiveDocument\": \"Apri il documento che lo sostituisce\",\n \"purge\": \"Elimina definitivamente\",\n \"purgeConsequence\": \"Il file originale e il testo estratto vengono distrutti: non sarà più possibile ripristinarlo né scaricarlo.\",\n \"purgeQuestion\": \"«{name}» viene eliminato definitivamente.\",\n \"purgeSuccess\": \"Documento eliminato definitivamente.\",\n \"purgeTitle\": \"Eliminare definitivamente?\",\n \"refusalAgentGone\": \"Tutti gli agenti a cui apparteneva sono stati eliminati, quindi non c'è un posto dove ripristinarlo. Si può solo eliminarlo definitivamente.\",\n \"refusalIdentityTaken\": \"La stessa sorgente ha importato di nuovo questo file: ripristinarlo creerebbe due copie dello stesso documento. Usa quello già presente nella knowledge base.\",\n \"restore\": \"Ripristina\",\n \"restoreCredits\": \"La re-indicizzazione ricalcola gli embedding del documento e consuma crediti.\",\n \"restoreFailed\": \"Non è stato possibile ripristinare il documento.\",\n \"restoreIndexing\": \"Torna ricercabile solo al termine della re-indicizzazione, che avviene in background.\",\n \"restoreQuestion\": \"«{name}» torna nella knowledge base dell'agente, nella sua cartella.\",\n \"restoreSuccess\": \"Documento ripristinato. Sarà ricercabile al termine della re-indicizzazione.\",\n \"restoreSuccessRoot\": \"Documento ripristinato nella radice, perché la sua cartella non esiste più. Sarà ricercabile al termine della re-indicizzazione.\",\n \"restoreTitle\": \"Ripristinare il documento?\",\n \"toggle\": \"Cestino\",\n \"toggleHint\": \"I documenti eliminati da questo agente, che si possono ancora ripristinare\"\n },\n \"documentType\": {\n \"file\": \"File\",\n \"plain-text\": \"Testo\",\n \"revised-answer\": \"Risposta\",\n \"url\": \"Pagina web\"\n },\n \"errors\": {\n \"ACCOUNT_TEMPORARILY_LOCKED\": \"Troppi codici sbagliati: la verifica è bloccata per 15 minuti.\",\n \"BANNED_USER\": \"Questo account è stato bannato. Contatta l'assistenza se pensi che sia un errore.\",\n \"CREDENTIAL_ACCOUNT_NOT_FOUND\": \"Questo account accede con Google o Microsoft e non ha una password da cambiare\",\n \"EMAIL_CODE_NOT_AVAILABLE\": \"Questo account usa un'app di autenticazione: scrivi il suo codice o un codice di recupero.\",\n \"TWO_FACTOR_REQUIRED\": \"Un'organizzazione di questo account richiede la verifica in due passaggi: configurala per continuare\",\n \"PASSKEY_PASSWORD_REQUIRED\": \"Conferma la password per aggiungere una passkey\",\n \"PASSKEY_RECENT_SIGN_IN_REQUIRED\": \"Esci e accedi di nuovo per aggiungere una passkey\",\n \"PASSKEY_NOT_ALLOWED_FOR_SESSION\": \"Una passkey la aggiunge solo il titolare dell'account, dopo l'accesso\",\n \"PASSKEY_USER_VERIFICATION_REQUIRED\": \"Questa passkey non ha chiesto né PIN né impronta né volto: impostane uno sul dispositivo e riprova\",\n \"PASSKEY_NOT_FOUND\": \"Questa passkey non è collegata a nessun account: accedi con la password\",\n \"AUTHENTICATION_FAILED\": \"Non è stato possibile verificare la passkey: riprova\",\n \"FAILED_TO_VERIFY_REGISTRATION\": \"Non è stato possibile salvare la passkey: riprova\",\n \"CHALLENGE_NOT_FOUND\": \"La richiesta è scaduta: riprova\",\n \"EMAIL_NOT_VERIFIED\": \"Verifica il tuo indirizzo email\",\n \"EMAIL_VERIFICATION_REQUIRED_BEFORE_ACCEPTING_OR_REJECTING_INVITATION\": \"Verifica il tuo indirizzo email prima di rispondere all'invito\",\n \"FAILED_TO_UNLINK_LAST_ACCOUNT\": \"Non puoi scollegare l'unico metodo di accesso\",\n \"INVALID_BACKUP_CODE\": \"Il codice di recupero non è valido o è già stato usato.\",\n \"INVALID_CODE\": \"Il codice non è valido. Riprova.\",\n \"INVALID_EMAIL_OR_PASSWORD\": \"Email o password non validi\",\n \"INVALID_PASSWORD\": \"La password non è corretta\",\n \"INVALID_TOKEN\": \"Il link è scaduto o è già stato usato. Richiedine uno nuovo.\",\n \"INVALID_TWO_FACTOR_COOKIE\": \"La verifica è scaduta. Accedi di nuovo.\",\n \"INVITATION_LIMIT_REACHED\": \"Questa organizzazione ha raggiunto il limite di inviti\",\n \"INVITATION_NOT_FOUND\": \"L'invito non è più valido: potrebbe essere scaduto, annullato o avere già ricevuto una risposta\",\n \"INVITER_IS_NO_LONGER_A_MEMBER_OF_THE_ORGANIZATION\": \"Chi ti ha invitato non fa più parte dell'organizzazione, quindi l'invito non è più valido\",\n \"KEY_NOT_FOUND\": \"La chiave API non esiste più: potrebbe essere già stata eliminata\",\n \"MEMBER_NOT_FOUND\": \"Membro non trovato nell'organizzazione\",\n \"NOT_ALLOWED\": \"Non hai i permessi per questa operazione\",\n \"ORGANIZATION_ALREADY_EXISTS\": \"Esiste già un'organizzazione con questo slug\",\n \"ORGANIZATION_MEMBERSHIP_LIMIT_REACHED\": \"Questa organizzazione ha raggiunto il limite di membri\",\n \"ORGANIZATION_NOT_FOUND\": \"L'organizzazione non esiste più\",\n \"ORGANIZATION_SLUG_ALREADY_TAKEN\": \"Questo slug è già usato da un'altra organizzazione\",\n \"OTP_HAS_EXPIRED\": \"Il codice è scaduto. Chiedine uno nuovo.\",\n \"RATE_LIMIT_EXCEEDED\": \"Limite di richieste superato\",\n \"SESSION_NOT_FRESH\": \"Per sicurezza, accedi di nuovo e ripeti l'operazione\",\n \"SOCIAL_ACCOUNT_ALREADY_LINKED\": \"Questo account è già collegato a un altro utente\",\n \"TOO_MANY_ATTEMPTS_REQUEST_NEW_CODE\": \"Troppi tentativi. Accedi di nuovo per ricevere un nuovo codice.\",\n \"TOO_MANY_REQUESTS\": \"Troppi tentativi. Attendi qualche minuto e riprova.\",\n \"TOTP_ALREADY_ENABLED\": \"La verifica in due passaggi con un'app è già attiva.\",\n \"TOTP_NOT_ENABLED\": \"Nessuna app di autenticazione è configurata per questo account.\",\n \"TWO_FACTOR_REQUIRED_TO_ENFORCE\": \"Attiva la verifica in due passaggi sul tuo account prima di renderla obbligatoria.\",\n \"UNAUTHORIZED_SESSION\": \"La sessione è scaduta. Accedi di nuovo.\",\n \"USER_ALREADY_EXISTS\": \"Esiste già un account con questa email\",\n \"USER_ALREADY_EXISTS_USE_ANOTHER_EMAIL\": \"Esiste già un account con questa email\",\n \"USER_IS_ALREADY_A_MEMBER_OF_THIS_ORGANIZATION\": \"Questo utente fa già parte dell'organizzazione\",\n \"USER_IS_ALREADY_INVITED_TO_THIS_ORGANIZATION\": \"Questo utente è già stato invitato nell'organizzazione\",\n \"USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION\": \"Non fai parte di questa organizzazione\",\n \"USER_NOT_FOUND\": \"L'utente non esiste più\",\n \"YOU_ARE_NOT_A_MEMBER_OF_THIS_ORGANIZATION\": \"Non fai parte di questa organizzazione\",\n \"YOU_ARE_NOT_ALLOWED_TO_MANAGE_TWO_FACTOR\": \"Può farlo solo un amministratore di sistema, con il proprio account.\",\n \"YOU_ARE_NOT_THE_RECIPIENT_OF_THE_INVITATION\": \"Questo invito è stato inviato a un altro indirizzo email\",\n \"YOU_CANNOT_BAN_YOURSELF\": \"Non puoi bannare te stesso\",\n \"YOU_CANNOT_IMPERSONATE_ADMINS\": \"Non puoi impersonare un amministratore\",\n \"YOU_CANNOT_LEAVE_THE_ORGANIZATION_AS_THE_ONLY_OWNER\": \"Sei l'unico proprietario: nomina un altro proprietario prima di uscire\",\n \"YOU_CANNOT_LEAVE_THE_ORGANIZATION_WITHOUT_AN_OWNER\": \"L'organizzazione deve avere almeno un proprietario\",\n \"YOU_CANNOT_MANAGE_YOUR_OWN_TWO_FACTOR\": \"La tua verifica in due passaggi e le tue passkey si gestiscono dal profilo.\",\n \"YOU_CANNOT_REMOVE_YOURSELF\": \"Non puoi rimuovere te stesso\",\n \"YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_ORGANIZATIONS\": \"Hai raggiunto il numero massimo di organizzazioni\",\n \"fileAlreadyImported\": \"Questo file è già stato importato come documento\",\n \"invalidToken\": \"Richiesta non più valida\",\n \"passwordsDoNotMatch\": \"Le password non coincidono\",\n \"privateNetworkRequired\": \"Conferma che l'endpoint è su una rete privata\",\n \"refreshIntervalUrlOnly\": \"Solo le pagine web possono aggiornarsi da sole\",\n \"required\": \"Obbligatorio\",\n \"slugAlreadyExists\": \"Lo slug esiste già\",\n \"slugFormat\": \"Lo slug può contenere solo lettere minuscole, numeri e trattini (-)\",\n \"urlAlreadyImported\": \"Questo URL è già stato importato come documento\",\n \"syncSourceUrlOnly\": \"Solo una pagina web può appartenere a una sorgente web\"\n },\n \"externalProvider\": {\n \"domain\": \"Dominio email\",\n \"github\": \"GitHub\",\n \"google\": \"Google\",\n \"microsoft\": \"Microsoft Entra\"\n },\n \"feature\": {\n \"apiTools\": \"API tools\",\n \"byok\": \"Modelli propri (BYOK)\",\n \"endpoints\": \"API endpoints\",\n \"fileUpload\": \"Caricamento file\",\n \"gateway\": \"Modelli della piattaforma\",\n \"group\": {\n \"channels\": \"Canali e pubblicazione\",\n \"models\": \"Modelli\",\n \"tools\": \"Strumenti e dati\"\n },\n \"hubspot\": \"HubSpot\",\n \"leads\": \"Contatti\",\n \"legend\": \"Funzionalità\",\n \"mcpServers\": \"Server MCP\",\n \"proactiveAutomations\": \"Automazioni proattive\",\n \"salesforce\": \"Salesforce\",\n \"sharepoint\": \"SharePoint\",\n \"subAgents\": \"Sotto-agenti\",\n \"teams\": \"Microsoft Teams\",\n \"voice\": \"Conversazione vocale\",\n \"whatsapp\": \"WhatsApp\"\n },\n \"gdprRetention\": {\n \"anonymousLabel\": \"Cancellazione utenti anonimi\",\n \"chatLabel\": \"Anonimizzazione chat\",\n \"defaultDays\": \"Predefinito: {count} giorno. | Predefinito: {count} giorni.\",\n \"defaultDisabled\": \"Predefinito: disattivato.\",\n \"legend\": \"Conservazione dei dati (GDPR)\",\n \"trashLabel\": \"Svuotamento del cestino\",\n \"unitDays\": \"giorni\"\n },\n \"help\": {\n \"aiDescription\": \"Un modello AI analizza il file e genera una descrizione strutturale del contenuto. Utile per documenti con tabelle, grafici o layout complessi.\",\n \"aiDescriptionModel\": \"Il modello AI usato per generare la descrizione\",\n \"aiDescriptionPrompt\": \"Prompt utilizzato per generare la descrizione\",\n \"browserEngine\": \"Come viene caricata la pagina prima dell'estrazione\",\n \"documentFile\": \"PDF, Word, Excel, CSV, testo, immagini e audio.\",\n \"fetchBrowserEngine\": \"veloce, recupera l'HTML statico. Ideale per la maggior parte dei siti.\",\n \"followExternal\": \"Recupera link da domini diversi\",\n \"forceOcr\": \"Forza l'estrazione testo tramite OCR (Document Intelligence). Utile per PDF scansionati o quando l'estrazione normale produce risultati insufficienti.\",\n \"pages\": \"Vuoto: tutte le pagine. Le pagine si leggono con OCR.\",\n \"puppeteerBrowserEngine\": \"esegue JavaScript con un browser locale. Per pagine dinamiche o single-page.\",\n \"remoteBrowserEngine\": \"come Puppeteer, ma su un browser remoto. Aggira blocchi e rilevamento bot.\",\n \"useBrowserEngine\": \"Più lento, ma consente l'analisi di pagine dinamiche\",\n \"useExtractionStrategy\": \"Migliora l'estrazione dei dati con l'AI\",\n \"webSourceWatch\": \"Le pagine nuove vanno nella cartella «{name}».\",\n \"webSourceRemoveMissing\": \"Per una sitemap completa. Molte rimozioni ti aspettano.\",\n \"webSourceRemoveMissingExplained\": \"Per un sito tuo, la cui sitemap elenca tutto ciò che è pubblicato. Se ne mancano troppe in una volta non rimuove niente e chiede conferma.\"\n },\n \"hint\": {\n \"agentModel\": \"Pre-selezionato alla creazione di un nuovo agente.\",\n \"agentOnOwnEndpoint\": \"Questo agente gira sull’endpoint della tua organizzazione.\",\n \"allowedDomains\": \"Cerca solo all'interno di questi domini.\",\n \"approvalChannels\": \"Un tool può chiedere conferma all'utente prima di eseguire: espandi il tool per attivarla. Via API o in esecuzioni schedulate la chiamata viene rifiutata.\",\n \"audience\": \"L'aud atteso nel JWT. Vuoto: non verificato.\",\n \"blockedDomains\": \"Escludi questi domini dai risultati.\",\n \"channel\": {\n \"app\": \"L'agente è accessibile tramite la pagina pubblica dedicata.\",\n \"frontoffice\": \"L'agente è visibile nel pannello Frontoffice.\",\n \"widget\": \"L'agente è incorporabile nei siti web tramite embed script.\"\n },\n \"channelAppDisabled\": \"Il canale App è disabilitato: il link diretto e l'iframe non funzioneranno.\",\n \"channelWidgetDisabled\": \"Il canale Widget è disabilitato: il codice embed e il loader non funzioneranno.\",\n \"costSourceEndpoint\": \"I modelli sull’endpoint della tua organizzazione: li fattura il tuo fornitore, qui il costo è una stima a prezzi di listino.\",\n \"customCss\": \"CSS iniettato nello shadow DOM del widget. Permette di personalizzare l'interfaccia della chat dall'esterno.\",\n \"disallowPromptTraining\": \"Instrada le richieste solo verso provider che non usano i dati per addestrare i modelli AI.\",\n \"dismissableNotice\": \"Verrà nascosto dopo il primo messaggio.\",\n \"documentFolderManaged\": \"Cartella sincronizzata da {provider}: il contenuto si modifica alla sorgente.\",\n \"documentRefresh\": \"Rilegge la pagina alla scadenza e rigenera solo ciò che è cambiato.\",\n \"documentRefreshTriggerOff\": \"Questa pagina si aggiorna da sola, e salvando un testo vostro si spegne.\",\n \"documentSelectionHasManaged\": \"La selezione contiene documenti che arrivano da una sorgente collegata e non si possono modificare a mano.\",\n \"documentSourceInterval\": \"Ogni quanto la cartella viene riletta.\",\n \"documentSourceIntervalExplained\": \"Ogni quanto la cartella viene riletta. I file invariati non vengono riconvertiti.\",\n \"documentSourceName\": \"Il nome con cui la cartella compare qui. Quello remoto non cambia.\",\n \"emailClaim\": \"Il claim JWT che contiene l'email dell'utente (default: email).\",\n \"embedCode\": \"Copia e incolla questo codice per incorporare l'agente nel tuo sito web.\",\n \"embedding\": \"I vettori della base di conoscenza, dei file degli utenti e delle memorie. Si calcolano sul gateway AI della piattaforma, oppure sul tuo endpoint con uno dei due modelli ammessi.\",\n \"embeddingActivation\": \"Prima di salvare, l’endpoint calcola il vettore di una frase di prova, che viene confrontato con quello del modello: un modello diverso viene rifiutato. Passare a un altro modello ricalcola la base di conoscenza e le memorie, e finché non ha finito le ricerche trovano solo ciò che è già nel modello nuovo.\",\n \"embeddingEndpointModel\": \"L’id con cui il tuo endpoint serve il modello\",\n \"embeddingEndpointOff\": \"Accendi l’endpoint per calcolarci i vettori\",\n \"embeddingFamily\": \"Fra quelli che il tuo endpoint serve\",\n \"embeddingFamilyUnknown\": \"L’endpoint non lo dichiara: lo verifica il salvataggio\",\n \"embeddingModelsServed\": \"Il tuo endpoint serve anche questi. Non possono rispondere a un agente: quello con cui si calcolano i vettori si sceglie nella sezione Embedding.\",\n \"embeddingNotConfigured\": \"La base di conoscenza, le risposte corrette, le memorie e l’elaborazione dei documenti sono ferme, perché nessuno calcola i loro vettori. Attiva un modello di embedding sul tuo endpoint per farle ripartire.\",\n \"embeddingReindexing\": \"Finché la reindicizzazione non finisce, le ricerche nella base di conoscenza e nelle memorie trovano solo ciò che è già nel modello nuovo: risultati parziali, mai sbagliati. Non serve fare niente, e se si interrompe riparte da dove era arrivata.\",\n \"embeddingStopped\": \"L’endpoint che calcola i vettori è spento: la base di conoscenza, le risposte corrette, le memorie e l’elaborazione dei documenti sono ferme finché non lo riaccendi.\",\n \"embeddingWithoutEndpoint\": \"I vettori della base di conoscenza, dei file degli utenti e delle memorie si calcolano sul gateway AI della piattaforma. Collega il tuo endpoint per calcolarli lì.\",\n \"embedIframe\": \"Incorpora l'interfaccia della chat direttamente con un iframe.\",\n \"embedPreview\": \"L'agente sarà accessibile al seguente URL.\",\n \"embeddingWithoutEndpointOrGateway\": \"I vettori della base di conoscenza, dei file degli utenti e delle memorie non si calcolano: questa organizzazione non usa il gateway AI della piattaforma. Collega il tuo endpoint per calcolarli lì.\",\n \"embeddingWithoutGateway\": \"I vettori della base di conoscenza, dei file degli utenti e delle memorie. Questa organizzazione non usa il gateway AI della piattaforma, quindi si calcolano solo sul tuo endpoint, con uno dei due modelli ammessi.\",\n \"externalContextSchema\": \"Definisci quali dati contestuali il sito ospitante può inviare all'agente.\",\n \"externalContextSchemaToggle\": \"Abilita la ricezione di dati contestuali dal sito ospitante.\",\n \"feature\": {\n \"apiTools\": \"Gli agenti chiamano come tool le API dell’organizzazione.\",\n \"byok\": \"L’organizzazione collega un suo endpoint compatibile OpenAI e ne usa i modelli.\",\n \"endpoints\": \"Gli agenti rispondono via REST ad altri sistemi.\",\n \"fileUpload\": \"Gli utenti allegano file ai messaggi in chat.\",\n \"gateway\": \"I modelli del gateway AI, e con loro l’embedding della piattaforma, le utility e l’AI dei documenti che li usano.\",\n \"hubspot\": \"I lead raccolti dagli agenti vanno nel CRM HubSpot dell’organizzazione.\",\n \"leads\": \"Gli agenti raccolgono i contatti con un modulo in chat, e la pagina Contatti li elenca.\",\n \"mcpServers\": \"Gli agenti usano i tool di server MCP esterni.\",\n \"proactiveAutomations\": \"Gli agenti ricontrollano da soli quello che l’utente chiede di tenere d’occhio. Spente, i controlli in corso si fermano al giro successivo.\",\n \"salesforce\": \"I lead raccolti dagli agenti vanno nel CRM Salesforce dell’organizzazione.\",\n \"sharepoint\": \"Gli agenti leggono i file di cartelle SharePoint tenute sincronizzate.\",\n \"subAgents\": \"Un agente ne chiama un altro come tool.\",\n \"teams\": \"Gli agenti rispondono nelle chat di Teams.\",\n \"voice\": \"Gli agenti parlano con l’utente in tempo reale.\",\n \"whatsapp\": \"Gli agenti rispondono su WhatsApp Business.\"\n },\n \"fallbackModels\": \"Modelli alternativi tentati in ordine se il modello primario non è disponibile.\",\n \"fieldMappingFallback\": \"Valore usato se il campo sorgente è vuoto o assente.\",\n \"fieldMappingSource\": \"Supporta percorsi annidati (es. metadata.urgency).\",\n \"fieldMappingTransformExtractDomainCompany\": \"Estrae il nome azienda dal dominio email (es. mario{'@'}acme.it → Acme). Ignora i provider gratuiti (gmail, outlook, ecc.).\",\n \"fieldMappingTransformJoinArray\": \"Unisce i valori di un array separandoli con virgola.\",\n \"fieldMappingTransformMapValues\": \"Sostituisce il valore usando la tabella di mappatura.\",\n \"fieldMappingTransformNone\": \"Copia il valore così com'è.\",\n \"fieldMappingTransformSplitFirstLast\": \"Divide il testo sugli spazi.\",\n \"fileUploadDisabledHint\": \"Il caricamento file non è abilitato per questo agente. Puoi abilitarlo nelle impostazioni dell'agente.\",\n \"fileUploadEnabled\": \"Permetti agli utenti di allegare file ai messaggi.\",\n \"freshnessBoost\": \"Applica un boost basandosi su quanto recentemente il documento è stato aggiornato.\",\n \"freshnessScale\": \"Scala temporale spinta (Giorni)\",\n \"freshnessScaleExplanationDays\": \"Un documento modificato oggi ottiene un bonus di +{weight}. Il bonus si dimezza a +{halfWeight} dopo {half} giorni e si azzera praticamente (+{zeroWeight}) dopo {zero} giorni.\",\n \"freshnessScaleExplanationMonths\": \"Un documento modificato oggi ottiene un bonus di +{weight}. Il bonus si dimezza a +{halfWeight} dopo {half} giorni e si azzera praticamente (+{zeroWeight}) dopo {zero} giorni (circa {months} mesi).\",\n \"freshnessScaleTooltip\": \"Il tempo di dimezzamento (half-life) del decadimento esponenziale. Un documento vecchio esattamente quanto questo valore riceverà il 50% del boost massimo. Più è basso, più i documenti vecchi perderanno rapidamente il boost.\",\n \"freshnessWeight\": \"Moltiplicatore del peso del boost di freschezza nella formula.\",\n \"freshnessWeightTooltip\": \"Bonus massimo aggiunto allo score per i documenti appena modificati. Un peso di 0.1 significa che un documento freschissimo otterrà un vantaggio di +0.10 sullo score. Questo vantaggio decadrà esponenzialmente col tempo fino a azzerarsi.\",\n \"gatewayCatalog\": \"I modelli messi a disposizione dalla piattaforma, con il prezzo per milione di token, la dimensione del contesto e le garanzie sulla riservatezza dei dati. Spegni quelli che la tua organizzazione non usa: escono dalla scelta, e un agente che ne usa ancora uno risponde con il modello predefinito.\",\n \"gatewayOffDisconnected\": \"Se il suo endpoint non è acceso e con dei modelli, l’organizzazione è scollegata: nessun agente risponde.\",\n \"gatewayOffNoByok\": \"Anche i modelli propri (BYOK) sono spenti: l’amministratore non può né configurare un endpoint né accenderlo o spegnerlo, e nemmeno spostare l’embedding.\",\n \"gatewayOffStops\": \"Spento, niente di questa organizzazione passa più dal gateway, entro trenta secondi: i modelli del gateway smettono di rispondere, e con loro le utility interne che li usano; la ricerca web si ferma. La base di conoscenza, le risposte corrette, le memorie e l’elaborazione dei documenti continuano solo se l’embedding è sull’endpoint dell’organizzazione: se è sulla piattaforma, si fermano.\",\n \"gatewayOffTodo\": \"L’amministratore deve spostare sull’endpoint dell’organizzazione entrambi i modelli predefiniti, altrimenti non si creano agenti nuovi, e l’embedding (Modelli, sezione Embedding), altrimenti la base di conoscenza e le memorie restano ferme. L’inferenza non scala più il credito; i minuti di voce e l’OCR dei documenti sì.\",\n \"guaranteeAll\": \"{name}: garantita su tutti i provider.\",\n \"guaranteeNone\": \"{name}: non garantita.\",\n \"guaranteeSome\": \"{name}: garantita solo su alcuni provider, il gateway instrada di conseguenza.\",\n \"includeThoughts\": \"Invia i pensieri del modello al client insieme alla risposta.\",\n \"inputSchema\": \"JSON Schema (draft-07) dei parametri di input che l'LLM può fornire.\",\n \"integrationOAuthAdminConsent\": \"Potrebbe servire un amministratore Microsoft 365 della vostra organizzazione.\",\n \"integrationAppCredentialScope\": \"Con Sites.Read.All l'app può leggere ogni sito del tenant. Il connettore legge solo le cartelle che collegate.\",\n \"integrationAppCredentialSteps\": \"In Microsoft Entra ID: Registrazioni app, Nuova registrazione. Poi Autorizzazioni API, Microsoft Graph, Autorizzazioni applicazione, Sites.Read.All, e Concedi consenso amministratore. Poi Certificati e segreti, Nuovo segreto client (annotate la scadenza). Copiate qui l'ID directory (tenant), l'ID applicazione (client) e il valore del segreto.\",\n \"interactiveLogin\": \"Permette agli utenti anonimi di accedere dalla chat. L'external token resta sempre attivo.\",\n \"issuer\": \"L'URL dell'issuer del token JWT (iss).\",\n \"jwksUrl\": \"L'URL dell'endpoint JWKS per la verifica della firma JWT.\",\n \"loadDelay\": \"Attesa prima di caricare il widget, per loader AMD lenti.\",\n \"loaderStrategy\": {\n \"dynamic-import\": \"Usa import() all'interno di un <script> classico. Fallback per pagine dove gli script module sono bloccati o intercettati da loader legacy.\",\n \"inline-module\": \"Inietta un <script type=\\\"module\\\"> inline con un import statico. Bypassa RequireJS e altri loader AMD. Consigliata per la maggior parte dei siti.\",\n \"script-src\": \"Carica il bundle tramite <script type=\\\"module\\\" src=\\\"...\\\">. Usala su siti con Content Security Policy (CSP) restrittiva che blocca gli script inline.\"\n },\n \"mcpServerHealthCheckPath\": \"L'endpoint utilizzato per verificare lo stato del Server MCP (es: /api/health).\",\n \"mcpStatelessServer\": \"Forza il client a connettersi in modalità stateless.\",\n \"mcpHeadersOriginChanged\": \"L'URL punta a un altro host: riscrivi i valori degli header, quelli salvati restano legati all'host precedente.\",\n \"mmr\": \"Bilancia la rilevanza semantica e la diversità dei documenti nei risultati di ricerca per evitare contenuti ridondanti.\",\n \"mmrCandidatesLimit\": \"Numero massimo di chunk candidati pre-selezionati prima di applicare l'MMR.\",\n \"mmrCandidatesLimitTooltip\": \"Quanti risultati pre-selezionare dal database prima di filtrare e diversificare. Esempio: se impostato a 100, il sistema cercherà i 100 chunk più pertinenti e poi estrarrà tra questi quelli più diversi tra loro fino a raggiungere il limite finale per la chat.\",\n \"mmrDiversity\": \"Tradeoff tra rilevanza (0.0) e diversità (1.0).\",\n \"mmrDiversityTooltip\": \"Determina quanto spazio dare a informazioni diverse. Un valore vicino a 0 predilige i risultati più pertinenti anche se simili tra loro. Un valore vicino a 1 forza l'inserimento di risultati con dettagli e temi differenti, riducendo la ripetitività.\",\n \"modelContextWindow\": \"Finestra di contesto: {count}k token.\",\n \"modelDefaultNoneAvailable\": \"Nessun modello disponibile: attiva almeno un modello del tuo endpoint qui sotto.\",\n \"modelDefaultOutsideCatalog\": \"Questo modello non è tra quelli disponibili per la tua organizzazione: scegline un altro. Nel frattempo i nuovi agenti partono con il modello standard della piattaforma.\",\n \"modelDefaults\": \"Valgono per tutta l'organizzazione. Ogni agente può comunque usare un modello diverso, scelto nelle sue impostazioni.\",\n \"modelDisabledForOrganization\": \"Spento per questa organizzazione: gli agenti che lo usano ancora rispondono con il modello predefinito, e non si può scegliere per uno nuovo.\",\n \"modelEndpointBaseUrl\": \"L'indirizzo base dell'API compatibile OpenAI.\",\n \"modelEndpointHttp\": \"Con http la chiave viaggia senza cifratura: usalo solo se l'endpoint è raggiungibile esclusivamente dalla tua rete interna.\",\n \"modelEndpointHttpTitle\": \"Connessione non cifrata (http)\",\n \"modelEndpointKey\": \"Viene salvata cifrata e non viene mai mostrata.\",\n \"modelEndpointKeyStored\": \"Già salvata. Lascia il campo vuoto per non cambiarla.\",\n \"modelEndpointName\": \"Il nome con cui lo riconoscerai nella scelta dei modelli.\",\n \"modelEndpointOffWithEmbedding\": \"Endpoint spento: i suoi modelli non sono disponibili, gli agenti che li usano smettono di rispondere, e con lui si fermano la base di conoscenza, le memorie e i documenti, perché calcola i loro vettori. Riaccendilo per farli ripartire.\",\n \"modelEndpointOnWithoutGateway\": \"Endpoint acceso: i modelli che attivi sono gli unici che gli agenti possono usare, perché questa organizzazione non usa il gateway della piattaforma, e possono essere i predefiniti.\",\n \"modelNotOnEndpoint\": \"Non disponibile per questa organizzazione: il suo endpoint non ha più questo modello, quindi un agente che lo usa non risponde finché non passa a un altro modello.\",\n \"modelSourceEndpoint\": \"Gira su {name}, l’endpoint della tua organizzazione: lo fattura il tuo fornitore, e i costi che vedi qui sono stimati dal listino.\",\n \"modelSourceOff\": \"Non disponibile per questa organizzazione: la sorgente su cui gira è spenta, quindi un agente che lo usa non risponde finché non passa a un altro modello o la sorgente non viene riaccesa.\",\n \"modelSourcePlatform\": \"Gira sul gateway AI della piattaforma e si paga con il credito della tua organizzazione.\",\n \"ownEndpoint\": \"Usa i tuoi modelli accanto a quelli della piattaforma: collega un endpoint compatibile con le API OpenAI e la tua chiave. Gli agenti che usano i suoi modelli non consumano il credito.\",\n \"modelEndpointOn\": \"Endpoint acceso: i modelli che attivi sono a disposizione degli agenti accanto a quelli della piattaforma, e possono essere i predefiniti.\",\n \"modelEndpointOff\": \"Endpoint spento: i suoi modelli non sono disponibili, e gli agenti che li usano smettono di rispondere. Attiva qui sotto i modelli che ti servono, poi accendilo.\",\n \"addModelsRule\": \"Attiva i modelli che i tuoi agenti potranno usare. Il prezzo viene preso dal listino della piattaforma; se un modello non è in listino, ti chiederemo di indicarlo.\",\n \"modelPriceAsk\": \"Questo modello non è nel listino della piattaforma. Scegli un modello del catalogo con un costo simile, oppure inserisci i prezzi per milione di token.\",\n \"modelPriceUnknown\": \"Non è nel listino della piattaforma: indica un prezzo.\",\n \"modelGuaranteedOnSome\": \"Le garanzie che hai acceso valgono solo su alcuni provider di questo modello: il gateway instrada di conseguenza.\",\n \"modelIdByHand\": \"Il nome tecnico con cui l'endpoint identifica il modello.\",\n \"modelNotCompatible\": \"Non compatibile con i flag di riservatezza di questo agente.\",\n \"modelPriceFromListing\": \"Prezzo preso da {id} nel listino della piattaforma.\",\n \"modelPriceListing\": \"Listino della piattaforma, voce {id}, aggiornato il {date}.\",\n \"modelPriceManual\": \"Prezzo inserito a mano il {date}.\",\n \"modelPriceReference\": \"Stesso prezzo di {id}, aggiornato il {date}.\",\n \"modelReference\": \"Un modello del catalogo a cui questo assomiglia.\",\n \"modelRetired\": \"Non più disponibile sulla piattaforma: sposta su un altro modello gli agenti che lo usano.\",\n \"moveDocument\": \"Scegli la cartella di destinazione per «{name}».\",\n \"moveDocuments\": \"Scegli la cartella di destinazione per {n} documento. | Scegli la cartella di destinazione per {n} documenti.\",\n \"multipleChoiceAllowCustomAnswer\": \"Mostra un campo di testo libero sotto le opzioni per consentire all'utente di inserire una risposta personalizzata.\",\n \"multipleChoiceMaxOptions\": \"Numero massimo di opzioni che l'AI può generare (min. 2, max. 10).\",\n \"nameClaim\": \"Claim con il nome dell'utente (default: name).\",\n \"oauthCallbackUrl\": \"Configura questa URL come Callback URL (Redirect URI) nel provider OAuth.\",\n \"outputSchema\": \"JSON Schema (draft-07) della risposta attesa. Solo documentativo.\",\n \"passphrase\": \"Inserisci {passphrase} per confermare l'operazione\",\n \"platformSupported\": \"Resa nativa su WhatsApp e Teams\",\n \"privacyPolicyNotice\": \"Visibile del modulo di contatto.\",\n \"providerOrganizationId\": \"Per Microsoft si riferisce all'identificativo del tenant (tenant ID). Per gli altri inserire il dominio dell'e-mail (es. company.com).\",\n \"providerTimeoutMs\": \"Prima del provider successivo: da 1000 a 789000, solo BYOK.\",\n \"reasoningDefault\": \"Valore predefinito della piattaforma, si applica finché non scegli un valore diverso.\",\n \"reasoningNotSupported\": \"Il reasoning non è supportato per il provider selezionato.\",\n \"reasoningVisibility\": \"Un agente reasoning è sempre visibile solo ai membri dell'organizzazione.\",\n \"sessionExpiresIn\": \"Secondi, almeno 60. Vuoto: 8 ore.\",\n \"showExtendedSteps\": \"Visualizza la timeline con il ragionamento e gli strumenti nella chat.\",\n \"smoothStream\": \"Uniforma lo streaming del testo creando un'esperienza di lettura più naturale.\",\n \"subAgentName\": \"Sono consentiti solo lettere, numeri, underscore (_) e trattini (-).\",\n \"teamsAccentColor\": \"Per impostazione predefinita usa il colore del tema dell'agente.\",\n \"teamsAppVersion\": \"Aumentala e reinstalla per applicare il manifest.\",\n \"tool\": {\n \"fetchTeamsChannelHistory\": \"Sui canali Teams, permette all'agente di leggere su richiesta la conversazione più ampia del canale. Richiede la reinstallazione dell'app Teams.\",\n \"geocode\": \"Converte nomi di luoghi in coordinate geografiche e viceversa.\",\n \"getWeather\": \"Recupera i dati meteo attuali e le previsioni per una località specifica.\",\n \"querySpreadsheet\": \"Risponde alle domande sui file Excel e CSV della knowledge base con ricerche esatte, conteggi e totali, invece di cercarne il testo. Se lo spegni, l'agente non legge affatto questi file. I fogli allegati in chat si interrogano con lo strumento Fogli di calcolo.\",\n \"readDocumentFile\": \"Permette all'agente di leggere il file originale dei documenti PDF/DOCX dalla knowledge base. Utile per tabelle, grafici e contenuti visivi.\",\n \"requestGeolocation\": \"Richiede la posizione GPS dell'utente tramite il browser.\",\n \"retrieveRevisedAnswers\": \"Recupera le risposte verificate dagli amministratori e le usa come fonte primaria.\",\n \"runWorker\": \"Permette all'agente di avviare worker generici che ereditano i suoi tool per gestire sotto-attività indipendenti in parallelo.\",\n \"scheduleWakeup\": \"Quando l'utente lo chiede, l'agente ricontrolla qualcosa da solo a intervalli (da un minuto a un'ora) e scrive nella stessa chat quando trova una novità.\",\n \"searchInKnowledgeBase\": \"Cerca nei documenti caricati nella knowledge base per fornire risposte contestuali.\",\n \"searchInUserFiles\": \"Cerca nei file che l'utente ha caricato personalmente in chat (i suoi file privati), separati dalla knowledge base dell'agente.\",\n \"showArtifact\": \"Mostra contenuti strutturati come testi formattati, codice o documenti.\",\n \"showCalendarEvent\": \"Mostra un evento calendario con opzioni per Google Calendar, Outlook e download .ics.\",\n \"showComparison\": \"Confronta da 2 a 4 elementi affiancati per facilitare la scelta.\",\n \"showContactForm\": \"Mostra un modulo di contatto per raccogliere i dati dell'utente.\",\n \"showDiagram\": \"Mostra un grafico o un diagramma (flusso, sequenza, classe, ER, stato).\",\n \"showEmail\": \"Compone un'email pronta da inviare dal client di posta dell'utente.\",\n \"showForm\": \"Permette di raccogliere input strutturati (testo, numeri, date, scelte) tramite form multi-step.\",\n \"showImageGallery\": \"Raccoglie le immagini in una galleria navigabile con zoom e lightbox.\",\n \"showLocation\": \"Mostra una mappa interattiva con segnaposto e indicazioni stradali.\",\n \"showMessage\": \"Compone un messaggio da inviare tramite WhatsApp, Telegram o SMS.\",\n \"showMultipleChoice\": \"Propone opzioni selezionabili per guidare il flusso della conversazione.\",\n \"showProductList\": \"Mostra un elenco di prodotti con immagini, descrizioni e link d'acquisto.\",\n \"showQrCode\": \"Genera un codice QR a partire da testo, URL o dati strutturati.\",\n \"showSources\": \"Mostra i riferimenti ai documenti della knowledge base utilizzati nella risposta.\",\n \"showSuggestedReply\": \"Suggerisce risposte cliccabili per proseguire la conversazione. Per averle dopo ogni risposta, chiedilo nelle istruzioni dell'agente.\",\n \"showVideo\": \"Riproduce video inline: file diretti (MP4/WebM) o link YouTube/Vimeo.\",\n \"showWeather\": \"Mostra un widget con le previsioni meteo direttamente nella chat.\",\n \"showWebPages\": \"Suggerisce link a pagine web pertinenti alla domanda dell'utente.\",\n \"spreadsheet\": \"Legge, cerca e modifica i file Excel (.xlsx) che l'utente allega nella chat web o nel widget, e restituisce ogni modifica come nuova versione da scaricare. Richiede il caricamento dei file con il tipo Fogli di calcolo.\",\n \"useAllUserFiles\": \"Cerca in tutti i file dell'utente, anche quelli caricati su altri agenti, non solo in quelli di questo agente.\",\n \"useAllUserKb\": \"Legge le memorie che l'utente ha condiviso con tutti gli agenti di questa organizzazione, non solo con questo. La scrittura resta legata a questo agente.\",\n \"userMemory\": \"Permette all'agente di ricordare e richiamare informazioni che l'utente condivide tra le conversazioni (nome, preferenze, ecc.).\"\n },\n \"toolRequiresApproval\": \"Prima di eseguire, l'agente attende l'approvazione in chat.\",\n \"apiToolSecretParameters\": \"Inviati a ogni chiamata, nella query string o nel body JSON, e mai mostrati al modello. Dopo il salvataggio il valore non si vede più: lascialo vuoto per tenerlo.\",\n \"apiToolSecretParametersNew\": \"Inviati a ogni chiamata, nella query string o nel body JSON, e mai mostrati al modello. Scrivi ogni valore: dopo il salvataggio non si vede più.\",\n \"apiToolSecretStored\": \"Salvato: lascialo vuoto per tenerlo\",\n \"apiToolCredentialInSchema\": \"Questi parametri sembrano credenziali, e li compila il modello: {names}. Spostali fra i parametri segreti e toglili dallo schema di input.\",\n \"apiToolCredentialBadge\": \"Un parametro che sembra una credenziale viene compilato dal modello\",\n \"apiToolSecretsOriginChanged\": \"L'URL punta a un altro host: riscrivi i valori degli header e dei parametri segreti, quelli salvati restano legati all'host precedente.\",\n \"apiToolSecretBodyMethod\": \"Una richiesta {method} non ha body\",\n \"toolWorkingSetMode\": {\n \"active\": \"Prima di ogni risposta un modello di valutazione (TypeSafe Jev) sceglie i server MCP, gli API Tools e i sotto-agenti che servono al messaggio, e l’agente vede solo quelli. Se gliene serve un altro, lo riattiva da solo. Ogni valutazione è addebitata all’organizzazione.\",\n \"off\": \"L’agente vede tutti i tool a ogni risposta.\",\n \"shadow\": \"Il modello di valutazione sceglie i tool che servono a ogni messaggio, ma l’agente li vede comunque tutti: la scelta viene solo registrata nel dettaglio del messaggio, per confrontarla con i tool usati davvero prima di attivarla. Ogni valutazione è addebitata all’organizzazione.\"\n },\n \"useColorsForAgentHeader\": \"Colora l'intestazione dell'agente in base al colore principale.\",\n \"userFeedbackComment\": \"L'utente ha lasciato un commento su questa risposta\",\n \"userFeedbackNegative\": \"L'utente ha valutato negativamente questa risposta\",\n \"userFeedbackPositive\": \"L'utente ha valutato positivamente questa risposta\",\n \"userFeedbackReaction\": \"L'utente ha reagito a questa risposta\",\n \"utilityModel\": \"Usato dietro le quinte per compiti come riformulare le domande degli utenti e aggiornare le memorie.\",\n \"voiceApprovalRefused\": \"Durante una chiamata queste azioni non partono: l'approvazione si dà a schermo e al telefono non c'è nessuno a cui chiederla, quindi l'agente le rifiuta e lo dice. Riguarda: {tools}.\",\n \"voiceCascadeTimeoutSeconds\": \"Quanto il fornitore aspetta noi prima di annullare il turno. Deve stare sopra al turno più lento dell'agente: knowledge base, tool e modelli lenti lo allungano.\",\n \"voiceEnabled\": \"Permette di parlare con questo agente. La risposta resta sua, con la sua knowledge base e i suoi strumenti.\",\n \"voiceFillerAfterSeconds\": \"Dice che sta lavorando quando la risposta tarda. Vuoto: quattro secondi.\",\n \"voiceFillerMessage\": \"Vuoto: una frase predefinita nella lingua della voce.\",\n \"voiceFirstMessage\": \"Detta appena si apre la chiamata. Copre anche il primo turno, il più lento.\",\n \"voiceId\": \"Le voci clonate non sono in elenco: il fornitore non le ammette qui.\",\n \"voiceIgnoreBackgroundVoices\": \"Ascolta solo chi parla. Da tenere attivo dove il microfono sente la stanza.\",\n \"voiceLanguage\": \"Usata per riconoscere il parlato e per parlare.\",\n \"voiceMaxSessionSeconds\": \"Una chiamata si paga a minuto e si chiude da sola a questo limite.\",\n \"voiceRemaining\": \"Tempo che resta in questa chiamata\",\n \"voiceSlowAgentOnCall\": \"Una knowledge base grande o server MCP collegati possono far metterci diversi secondi all'agente, e in chiamata quei secondi sono silenzio: le due impostazioni qui sotto sono ciò che tiene compagnia a chi chiama mentre lavora. Se le chiamate sembrano lente, la risposta si accorcia anche con meno passi, un limite di retrieval più basso o un modello più rapido.\",\n \"voiceTurnEagerness\": \"Pronto risponde prima, paziente ti aspetta.\",\n \"voiceTurnTimeoutSeconds\": \"Quanto l’agente aspetta il chiamante zitto prima di riprendere la parola. Niente a che vedere con la sua velocità di risposta.\",\n \"webSearchEnabled\": \"Permetti all'agente di cercare informazioni sul web durante le conversazioni.\",\n \"webSearchNative\": \"Usa le funzionalità di ricerca web integrate di {provider}.\",\n \"webhookUrl\": \"Incolla questo URL nella configurazione del webhook / endpoint di messaggistica della piattaforma.\",\n \"welcomePopup\": \"Mostra un popup di benvenuto con il messaggio iniziale prima che la chat venga aperta.\",\n \"whatsappVerifyToken\": \"Incolla questo token nella configurazione webhook di Meta.\",\n \"zeroDataRetention\": \"Instrada le richieste solo verso provider con accordi ZDR. Restringe il pool di provider disponibili.\",\n \"webSourceUnselected\": \"Le pagine non selezionate arriveranno con i prossimi controlli della sorgente.\",\n \"webSourceInterval\": \"Le pagine nuove seguono la frequenza qui sopra.\",\n \"webPagesRefresh\": \"Alla scadenza si rigenera solo ciò che è cambiato.\",\n \"documentFolderWebSource\": \"Cartella di un sito web: le pagine nuove arrivano da sole e restano modificabili.\"\n },\n \"integrationProvider\": {\n \"hubspot\": \"HubSpot\",\n \"salesforce\": \"Salesforce\",\n \"sharepoint\": \"SharePoint\",\n \"web\": \"Sito web\"\n },\n \"integrationProviderDescription\": {\n \"hubspot\": \"Sincronizza i contatti con HubSpot CRM.\",\n \"salesforce\": \"Sincronizza i contatti con Salesforce CRM.\",\n \"sharepoint\": \"Collega una cartella di SharePoint: i file entrano nella knowledge base e restano aggiornati da soli.\"\n },\n \"integrationSyncStatus\": {\n \"failed\": \"Fallito\",\n \"pending\": \"In attesa\",\n \"success\": \"Successo\"\n },\n \"interval\": {\n \"D\": \"giorno | giorni\",\n \"M\": \"mese | mesi\",\n \"W\": \"settimana | settimane\",\n \"Y\": \"anno | anni\"\n },\n \"invitationStatus\": {\n \"accepted\": \"Accettato\",\n \"canceled\": \"Annullato\",\n \"expired\": \"Scaduto\",\n \"pending\": \"In attesa\"\n },\n \"label\": {\n \"AI\": \"AI\",\n \"acceptInvitationAndCreateAccount\": \"Accetta l'invito e crea il tuo account\",\n \"accountingCredit\": \"Saldo contabile\",\n \"actions\": \"Azioni\",\n \"active\": \"Attiva\",\n \"activeSessions\": \"Sessioni attive\",\n \"actualCost\": \"Costo reale\",\n \"addApiTool\": \"Aggiungi API tool\",\n \"addIntegration\": \"Aggiungi integrazione\",\n \"additionalMetadata\": \"Metadati aggiuntivi\",\n \"admin\": \"Amministratore\",\n \"advancedOptions\": \"Opzioni avanzate\",\n \"agent\": \"Agente\",\n \"agentModel\": \"Modello di default\",\n \"agentTree\": \"Albero agente\",\n \"agents\": \"Agenti\",\n \"agentsUsed\": \"Agenti utilizzati\",\n \"aiDescription\": \"Generato con AI\",\n \"aiDescriptionModel\": \"Modello AI\",\n \"aiDescriptionPrompt\": \"Prompt personalizzato\",\n \"allAgents\": \"Tutti gli agenti\",\n \"allChannels\": \"Tutti i canali\",\n \"allowedDomains\": \"Domini consentiti\",\n \"analysis\": \"Analisi\",\n \"anonymized\": \"Anonimizzata\",\n \"anonymous\": \"Anonimo\",\n \"answer\": \"Risposta\",\n \"answeringOnTheCall\": \"Sto rispondendo…\",\n \"apiKey\": \"API key\",\n \"apiKeys\": \"API key\",\n \"appearance\": \"Aspetto\",\n \"arrayOfObjects\": \"Array di oggetti\",\n \"assistantMessage\": \"Risposta agente\",\n \"attachmentsNotImported\": \"Allegati non importati\",\n \"attempts\": \"Tentativi\",\n \"attention\": \"Attenzione\",\n \"audience\": \"Audience\",\n \"authentication\": \"Autenticazione\",\n \"auto\": \"Auto\",\n \"autoDetected\": \"Rilevati automaticamente\",\n \"autoProvisioning\": \"Auto provisioning\",\n \"autoProvisioningDescription\": \"Gli utenti che si autenticano tramite questi provider di identità o domini verranno automaticamente aggiunti alla tua organizzazione con il ruolo predefinito.\",\n \"autoRefreshError\": \"Errore\",\n \"autoRefreshOff\": \"In pausa\",\n \"autoRefreshOn\": \"Live\",\n \"autoRefreshStoppedErrors\": \"Aggiornamento automatico interrotto dopo errori ripetuti.\",\n \"autoRefreshStoppedUnavailable\": \"Aggiornamento automatico interrotto: questo contenuto non è più accessibile.\",\n \"autoRefreshWarning\": \"Attenzione\",\n \"availableCredit\": \"Saldo disponibile\",\n \"averageLine\": \"Media\",\n \"avgChatsPerUser\": \"Chat per user\",\n \"avgMessagesPerChat\": \"Messaggi per chat\",\n \"banned\": \"Bannato\",\n \"baseUrl\": \"URL di base\",\n \"black\": \"Nero\",\n \"blocked\": \"Bloccato\",\n \"blockedDomains\": \"Domini bloccati\",\n \"blockedReasons\": \"Motivi di blocco\",\n \"body\": \"Testo\",\n \"botName\": \"Nome bot\",\n \"breadcrumbs\": \"Percorso di navigazione\",\n \"browserEngine\": \"Browser engine\",\n \"browsers\": \"Browser\",\n \"budgetTokens\": \"Budget token\",\n \"byChannel\": \"Per canale\",\n \"cached\": \"dalla cache\",\n \"calendarEvent\": \"Evento\",\n \"changePassword\": \"Cambia password\",\n \"channel\": \"Canale\",\n \"channels\": \"Canali\",\n \"chat\": \"Chat\",\n \"chatCreatedAgo\": \"Creata\",\n \"chatOrigin\": \"Chat di origine\",\n \"chatStatistics\": \"Statistiche\",\n \"chatTypes\": \"Tipo di conversazione\",\n \"chatUpdatedAgo\": \"Ultimo messaggio\",\n \"chatWidget\": \"Chat widget\",\n \"chunks\": \"Chunk\",\n \"clear\": \"Pulisci\",\n \"codeEditor\": \"Codice\",\n \"collapseContext\": \"Nascondi contesto\",\n \"comment\": \"Commento\",\n \"comparison\": \"Confronto\",\n \"completeName\": \"Nome e cognome\",\n \"completedAt\": \"Completata il\",\n \"configMcpServer\": \"Configura server MCP\",\n \"configure\": \"Configura\",\n \"confirm\": \"Conferma\",\n \"confirmPassword\": \"Conferma password\",\n \"confirmPrivateNetwork\": \"Confermo che l’endpoint non è raggiungibile da Internet\",\n \"confirmWithEmail\": \"Digita la tua email per confermare\",\n \"confirmWithPassword\": \"Inserisci la password per confermare\",\n \"connectMcpServer\": \"Connetti server MCP\",\n \"connectSubAgent\": \"Collega sotto-agente\",\n \"connectedAccounts\": \"Account collegati\",\n \"connectedIntegrations\": \"Integrazioni collegate\",\n \"mcpConnectionSignedIn\": \"Accesso effettuato\",\n \"mcpConnectionRenewed\": \"Ultimo rinnovo\",\n \"connectionChecking\": \"Verifica connessione…\",\n \"connectionConnected\": \"Connesso\",\n \"connectionError\": \"Errore di connessione\",\n \"connectionIdle\": \"Non verificato\",\n \"connectionStatus\": \"Connessione\",\n \"connectionTypes\": \"Connessione\",\n \"const\": \"Costante\",\n \"contactUs\": \"Contattaci\",\n \"content\": \"Contenuto\",\n \"contentPreview\": \"Anteprima contenuto\",\n \"contextTokens\": \"{count}k contesto\",\n \"conversationLengthBuckets\": \"Lunghezza conversazione\",\n \"conversationOutline\": \"Indice della conversazione\",\n \"conversations\": \"Conversazioni\",\n \"conversationsOverTime\": \"Conversazioni nel tempo\",\n \"cost\": \"Costo\",\n \"costByChannel\": \"Costo per canale\",\n \"costInUSD\": \"Costo in USD\",\n \"costSource\": \"Sorgente del costo\",\n \"costSourceAll\": \"Totale\",\n \"costSourceEndpoint\": \"Endpoint\",\n \"costSourceGateway\": \"Gateway\",\n \"country\": \"Paese\",\n \"crawlMode\": \"Modalità crawling\",\n \"createdAt\": \"Creato il\",\n \"createdBy\": \"Creato da\",\n \"credit\": \"Credito\",\n \"creditUpdatedAt\": \"Credito aggiornato il\",\n \"credits\": \"Crediti\",\n \"crmSync\": \"Sincronizzazione CRM\",\n \"curlExample\": \"Esempio cURL\",\n \"currentAgent\": \"Agente corrente\",\n \"currentLocation\": \"Posizione attuale\",\n \"currentPassword\": \"Password attuale\",\n \"currentSession\": \"Sessione corrente\",\n \"customCss\": \"CSS personalizzato\",\n \"customRange\": \"Personalizzato\",\n \"dailyUsage\": \"Utilizzo giornaliero\",\n \"dark\": \"Scuro\",\n \"darkModePreference\": \"Tema scuro\",\n \"dataLoadFailed\": \"Non è stato possibile caricare questo dato\",\n \"day\": \"Giorno\",\n \"dayRateLimit\": \"Limite al giorno\",\n \"days\": \"{count} giorno | {count} giorni\",\n \"default\": \"Predefinito\",\n \"defaultMappingHint\": \"Se non viene configurata una mappatura, verrà utilizzata quella predefinita per il provider.\",\n \"defaultRole\": \"Ruolo predefinito\",\n \"deleted\": \"Eliminato\",\n \"deprecated\": \"Deprecato\",\n \"description\": \"Descrizione\",\n \"deselectAction\": \"Rimuovi\",\n \"details\": \"Dettagli\",\n \"device\": \"Dispositivo\",\n \"deviceContext\": \"Contesto dispositivo\",\n \"deviceType\": \"Tipo dispositivo\",\n \"diagram\": \"Diagramma\",\n \"disabled\": \"Disabilitato\",\n \"disallowPromptTraining\": \"Prompt Training disabilitato\",\n \"dismissableNotice\": \"Avviso\",\n \"documentOrigin\": \"Origine\",\n \"documentPriority\": \"Priorità documento\",\n \"documentRefresh\": \"Aggiornamento automatico\",\n \"documentRefreshAuto\": \"Automatico\",\n \"documentRefreshInterval\": \"Frequenza\",\n \"documentRefreshLastRead\": \"Ultima lettura\",\n \"documentRefreshNext\": \"Prossimo aggiornamento\",\n \"documentRefreshOutcome\": \"Esito\",\n \"documentRefreshPaused\": \"In pausa\",\n \"documentSourceInterval\": \"Frequenza di controllo\",\n \"documentSourceLastRun\": \"Ultima esecuzione\",\n \"documentSourceLastSync\": \"Ultimo controllo\",\n \"documentSourceNextSync\": \"Prossimo controllo\",\n \"documentSourceSearch\": \"Cerca un sito\",\n \"documentType\": \"Tipo documento\",\n \"documents\": \"Documenti\",\n \"domainFilter\": \"Filtro domini\",\n \"downloadFile\": \"Scarica file\",\n \"downloading\": \"Download in corso\",\n \"editApiTool\": \"Modifica API tool\",\n \"editIntegration\": \"Modifica integrazione\",\n \"editMcpServer\": \"Modifica server MCP\",\n \"editSubAgent\": \"Modifica sotto-agente\",\n \"effectiveCredit\": \"Credito effettivo\",\n \"email\": \"Email\",\n \"emailClaim\": \"Claim email\",\n \"emailDomain\": \"Dominio email\",\n \"emailVerified\": \"Email verificata\",\n \"embed\": \"Incorpora\",\n \"embedCode\": \"Codice embed\",\n \"embedding\": \"Embedding\",\n \"embeddingEndpointModel\": \"Id sull’endpoint\",\n \"embeddingModel\": \"Modello di embedding\",\n \"embeddingModelsCount\": \"Modelli di embedding ({count})\",\n \"embeddingNotConfigured\": \"Non configurato\",\n \"embeddingNotConfiguredReason\": \"Il gateway AI della piattaforma è spento per questa organizzazione\",\n \"embeddingOnEndpoint\": \"Embedding sul tuo endpoint\",\n \"embeddingOnPlatform\": \"Sul gateway AI della piattaforma\",\n \"embeddingReindex\": \"Reindicizzazione della base di conoscenza e delle memorie\",\n \"embeddingReindexDone\": \"Reindicizzato il {date}\",\n \"embeddingReindexPaused\": \"Reindicizzazione in pausa\",\n \"embeddingReindexProgress\": \"Reindicizzazione: {done} vettori su {total}\",\n \"embeddingReindexQueued\": \"Reindicizzazione in coda: parte entro pochi minuti\",\n \"enabled\": \"Abilitato\",\n \"enabledTools\": \"Tool abilitati\",\n \"endDate\": \"Data fine\",\n \"endpointCost\": \"Costo endpoint (stima)\",\n \"endpointModels\": \"Modelli del tuo endpoint\",\n \"engagement\": \"Engagement\",\n \"enum\": \"Valori enum\",\n \"error\": \"Errore\",\n \"estimatedCost\": \"Costo stimato a fine mese\",\n \"estimatedCredit\": \"Credito stimato\",\n \"estimatedMonthlyCost\": \"Stima fine mese\",\n \"excludeDomains\": \"Domini esclusi\",\n \"expandContext\": \"Mostra più contesto\",\n \"expireIn\": \"Scade tra\",\n \"expires\": \"Scade\",\n \"expiresAt\": \"Scadenza\",\n \"exportMyData\": \"Esporta i miei dati\",\n \"externalAuth\": \"Autenticazione esterna\",\n \"externalAuthDescription\": \"Configura i provider di autenticazione esterna per consentire l'autenticazione tramite token JWT emessi da questi provider. Gli utenti autenticati tramite questi provider saranno aggiunti automaticamente alla tua organizzazione con il ruolo predefinito (auto provisioning).\",\n \"externalContext\": \"Contesto esterno\",\n \"externalContextSchema\": \"Schema contesto esterno\",\n \"externalId\": \"ID esterno (CRM)\",\n \"fallbackModels\": \"Modelli di fallback\",\n \"feedback\": \"Segnalazione\",\n \"feedbacks\": \"Feedback\",\n \"fieldMappingFallback\": \"Valore di default\",\n \"fieldMappingSource\": \"Campo sorgente\",\n \"fieldMappingTarget\": \"Campo destinazione {number}\",\n \"fieldMappingTransform\": \"Trasformazione\",\n \"fieldMappingTransformExtractDomainCompany\": \"Estrai azienda da dominio email\",\n \"fieldMappingTransformJoinArray\": \"Unisci array\",\n \"fieldMappingTransformMapValues\": \"Mappa valori\",\n \"fieldMappingTransformNone\": \"Nessuna\",\n \"fieldMappingTransformSplitFirstLast\": \"Dividi primo/ultimo\",\n \"fieldMappingValueMap\": \"Mappatura valori\",\n \"file\": \"File\",\n \"fileUpload\": \"Caricamento file\",\n \"fileUploadAllowedMimeTypes\": \"Tipi di file consentiti\",\n \"fileUploadEnabled\": \"Abilita caricamento file\",\n \"fileUploadMaxFileSize\": \"Dimensione massima file (MB)\",\n \"fileUploadMaxFilesPerChat\": \"File massimi per chat\",\n \"fileUploadMaxFilesPerMessage\": \"File massimi per messaggio\",\n \"files\": \"File\",\n \"filters\": \"Filtri\",\n \"floatingButtonPosition\": \"Posizione bottone\",\n \"folderName\": \"Nome cartella\",\n \"followExternal\": \"Segui link esterni\",\n \"footer\": \"Footer\",\n \"forceOcr\": \"Forza OCR\",\n \"formMaxOptionsPerStep\": \"Opzioni massime consigliate\",\n \"formMaxSteps\": \"Step massimi consigliati\",\n \"frequencyPenalty\": \"Penalità di frequenza\",\n \"freshnessBoost\": \"Boost freschezza\",\n \"freshnessScale\": \"Scala temporale Freschezza\",\n \"freshnessWeight\": \"Peso freschezza\",\n \"fullDuration\": \"Durata (ms)\",\n \"gallery\": \"Galleria ({count} immagini)\",\n \"gatewayCost\": \"Costo gateway\",\n \"gatewayModels\": \"Modelli della piattaforma\",\n \"gdprRequestType\": {\n \"conversations_erasure\": \"Cancellazione conversazioni\",\n \"erasure\": \"Cancellazione dati\",\n \"export\": \"Export dati\"\n },\n \"gdprRequests\": \"Richieste GDPR\",\n \"general\": \"Generale\",\n \"generateSchemaFromJson\": \"Genera schema da JSON\",\n \"goalOutcome\": \"Esito obiettivo\",\n \"granularity\": \"Granularità\",\n \"groupReasoningAgents\": \"Raggruppa\",\n \"hasRedundantChunks\": \"Ha chunk ridondanti\",\n \"header\": \"Header\",\n \"headers\": \"Header HTTP\",\n \"healthCheckPath\": \"Health check\",\n \"hour\": \"Ora\",\n \"hourRateLimit\": \"Limite all'ora\",\n \"hsAccessToken\": \"Access token\",\n \"hsAccessTokenHint\": \"Crea una Private App di HubSpot con i seguenti scope: crm.objects.contacts.read, crm.objects.contacts.write, crm.objects.owners.read.\",\n \"hsDefaultOwnerId\": \"Owner ID predefinito\",\n \"hsDefaultOwnerIdHint\": \"Vuoto: i contatti restano senza owner.\",\n \"hsStaticProperties\": \"Proprietà statiche\",\n \"hsStaticPropertiesHint\": \"Proprietà fisse aggiunte ad ogni contatto.\",\n \"httpHeaderKey\": \"Chiave\",\n \"httpHeaderValue\": \"Valore\",\n \"secretParameters\": \"Parametri segreti\",\n \"secretParameterPosition\": \"Inviato in\",\n \"secretPositionQuery\": \"Query string\",\n \"secretPositionBody\": \"Body\",\n \"apiToolCredentialBadge\": \"Chiave esposta\",\n \"httpHeaders\": \"Header HTTP\",\n \"iframe\": \"Iframe\",\n \"iframeCode\": \"Codice iframe\",\n \"imageLoadError\": \"Immagine non disponibile\",\n \"imageHeld\": \"Immagine da {host}: clicca per caricarla\",\n \"videoHeld\": \"Video da {host}: clicca per caricarlo\",\n \"imageHost\": \"Host\",\n \"imageHosts\": \"Host delle immagini\",\n \"imageHostsHint\": \"Risposte e card caricano da sole solo le immagini di questi host e della piattaforma. Un'immagine di un altro host mostra il suo host e si carica con un clic, così una risposta non può mandare la conversazione a un sito dentro l'url di un'immagine.\",\n \"impersonated\": \"Impersonificato\",\n \"impersonation\": \"Impersonificazione\",\n \"importing\": \"Importazione in corso\",\n \"inStock\": \"Disponibile\",\n \"integrationReconnectNeeded\": \"Da riconnettere\",\n \"integrationAppCredential\": \"App {clientId}\",\n \"modelDefaults\": \"Modelli predefiniti\",\n \"modelNotAvailable\": \"non disponibile\",\n \"modelSourcePlatform\": \"Piattaforma\",\n \"modelSwitchedOff\": \"spento\",\n \"ownEndpoint\": \"Il tuo endpoint (BYOK)\",\n \"price\": \"Prezzo\",\n \"priceListModel\": \"Modello del listino\",\n \"priceToSet\": \"Prezzo da indicare\",\n \"modelPriceOf\": \"Prezzo di {id}\",\n \"context\": \"Contesto\",\n \"someProviders\": \"Alcuni provider\",\n \"modelsActiveSummary\": \"{active} modelli attivi su {count}\",\n \"noModelsYet\": \"Ancora nessun modello\",\n \"notServedAnyMore\": \"Non più offerto dall'endpoint\",\n \"modelIdByHand\": \"Id del modello\",\n \"modelReference\": \"Modello di riferimento\",\n \"msClientId\": \"ID applicazione (client)\",\n \"msClientSecret\": \"Client secret\",\n \"msTenantId\": \"ID directory (tenant)\",\n \"inTest\": \"In test\",\n \"includeDomains\": \"Domini inclusi\",\n \"includeThoughts\": \"Visualizza ragionamento\",\n \"indexStatus\": \"Stato indicizzazione\",\n \"info\": \"Info\",\n \"initialMessage\": \"Messaggio iniziale\",\n \"input\": \"Input\",\n \"inputSchema\": \"Schema di input\",\n \"insertEmail\": \"Inserisci email\",\n \"integration\": \"Integrazione\",\n \"integrationConfig\": \"Configurazione\",\n \"integrationDisabled\": \"Disabilitata\",\n \"integrationEnabled\": \"Abilitata\",\n \"integrationFieldMapping\": \"Mappatura campi\",\n \"integrationProvider\": \"Provider\",\n \"integrationSyncLogs\": \"Log sincronizzazione\",\n \"integrationSyncLogsDescription\": \"La sincronizzazione avviene automaticamente alla creazione di un nuovo contatto.\",\n \"integrations\": \"Integrazioni\",\n \"interactiveLogin\": \"Mostra login/registrazione\",\n \"interface\": \"Interfaccia\",\n \"ipAddress\": \"Indirizzo IP\",\n \"isAutoJoinEnabled\": \"Unisci automaticamente utenti già presenti con la stessa e-mail\",\n \"issuer\": \"Issuer\",\n \"itemsPerPage\": \"Per pagina\",\n \"jsonSample\": \"Esempio JSON\",\n \"jwksUrl\": \"JWKS URL\",\n \"key\": \"Chiave\",\n \"language\": \"Lingua\",\n \"languages\": \"Lingue\",\n \"last14Days\": \"Ultimi 14 giorni\",\n \"last30Days\": \"Ultimi 30 giorni\",\n \"last7Days\": \"Ultimi 7 giorni\",\n \"last90Days\": \"Ultimi 90 giorni\",\n \"lastActive\": \"Ultimo accesso\",\n \"lastActivity\": \"Ultima attività\",\n \"lastMonth\": \"Mese scorso\",\n \"lastRecalledAt\": \"Ultimo richiamo\",\n \"lastReconciledAt\": \"Ultimo allineamento\",\n \"lastRefillAt\": \"Ultima ricarica il\",\n \"lastSync\": \"Aggiornato il\",\n \"lastUsedAt\": \"Ultimo utilizzo\",\n \"latest\": \"Ultima\",\n \"leadId\": \"ID interno\",\n \"left\": \"Sinistra\",\n \"light\": \"Chiaro\",\n \"limit\": \"Limite\",\n \"limitedStock\": \"Ultimi pezzi\",\n \"linkedAgents\": \"Agenti collegati\",\n \"llmIssues\": \"Problemi LLM\",\n \"loadDelay\": \"Ritardo caricamento (ms)\",\n \"loaderStrategy\": \"Strategia di caricamento\",\n \"loaderStrategyDynamicImport\": \"Dynamic import\",\n \"loaderStrategyInlineModule\": \"Inline module\",\n \"loaderStrategyScriptSrc\": \"Script src\",\n \"locale\": \"Lingua\",\n \"location\": \"Posizione\",\n \"logo\": \"Logo\",\n \"logoUrl\": \"Logo URL\",\n \"mainColor\": \"Colore principale\",\n \"manageProfileDescription\": \"Modifica nome, password, avatar e altro\",\n \"maxDepth\": \"Profondità massima\",\n \"maxMessageLength\": \"Lunghezza massima messaggio\",\n \"maxOutputTokens\": \"Token massimi\",\n \"maxPages\": \"Pagine massime\",\n \"maxResults\": \"Risultati massimi\",\n \"maxStepCount\": \"Numero massimo di step\",\n \"maxUses\": \"Utilizzi massimi\",\n \"mcpAuthType\": \"Tipo di autenticazione\",\n \"mcpServer\": \"Server MCP\",\n \"mcpServerUrl\": \"URL del server MPC\",\n \"mcpStatelessServer\": \"Client stateless\",\n \"memberSince\": \"Membro dal\",\n \"memories\": \"Memorie\",\n \"memory\": \"Memoria\",\n \"message\": \"Messaggio\",\n \"messageDetails\": \"Dettaglio messaggio\",\n \"messageNumber\": \"Messaggio {n}\",\n \"messagePlaceholder\": \"Segnaposto\",\n \"messages\": \"Messaggi\",\n \"metadata\": \"Metadati\",\n \"method\": \"Metodo\",\n \"mimeTypeAudio\": \"Audio, trascritti (fino a 25 MB)\",\n \"mimeTypeDocuments\": \"Documenti\",\n \"mimeTypeImages\": \"Immagini\",\n \"mimeTypeSpreadsheets\": \"Fogli di calcolo (.xlsx)\",\n \"mimeTypeText\": \"Testo\",\n \"minuteRateLimit\": \"Limite al minuto\",\n \"mmr\": \"Maximal marginal relevance (MMR)\",\n \"mmrCandidatesLimit\": \"Limite candidati MMR\",\n \"mmrDiversity\": \"Diversità MMR\",\n \"model\": \"Modello\",\n \"modelParameters\": \"Parametri modello\",\n \"month\": \"Mese\",\n \"monthRateLimit\": \"Limite al mese\",\n \"monthlyCost\": \"Costo mensile\",\n \"multipleChoiceAllowCustomAnswer\": \"Consenti risposta personalizzata\",\n \"multipleChoiceMaxOptions\": \"Numero massimo di opzioni\",\n \"name\": \"Nome\",\n \"nameClaim\": \"Claim nome\",\n \"never\": \"Mai\",\n \"newChat\": \"Nuova chat\",\n \"newPassword\": \"Nuova password\",\n \"no\": \"No\",\n \"noDataAvailable\": \"Nessun dato disponibile\",\n \"noDataRetention\": \"ZDR\",\n \"noFieldMapping\": \"Nessuna mappatura personalizzata configurata\",\n \"noIntegrations\": \"Nessuna integrazione configurata\",\n \"noPromptTraining\": \"No training\",\n \"noSyncLogs\": \"Nessun log di sincronizzazione\",\n \"noTimingData\": \"Nessun dato. Effettua una richiesta di chat per vedere i log di timing.\",\n \"notAvailable\": \"Non disponibile\",\n \"notCompatible\": \"non compatibile\",\n \"notConfigured\": \"Non configurata\",\n \"notConnected\": \"Non connesso\",\n \"notSynced\": \"Non sincronizzata\",\n \"notificationTitle\": {\n \"document_error\": \"Elaborazione documento fallita\",\n \"document_sync_removed\": \"Documenti rimossi da una cartella sincronizzata\",\n \"headless_quota_exceeded\": \"Quota giornaliera delle automazioni raggiunta\",\n \"organization\": {\n \"created\": \"Organizzazione creata\",\n \"invite\": \"Invito organizzazione\",\n \"invite_accepted\": \"Invito accettato\",\n \"invite_rejected\": \"Invito rifiutato\",\n \"removed\": \"Rimosso dall'organizzazione\"\n },\n \"password_reset_requested\": \"È stata richiesta la reimpostazione della password\",\n \"two_factor\": {\n \"enabled\": \"Verifica in due passaggi attivata\",\n \"disabled\": \"Verifica in due passaggi disattivata\",\n \"app\": \"La verifica in due passaggi usa un'app\",\n \"reset\": \"Verifica in due passaggi reimpostata\",\n \"passkeyAdded\": \"Passkey aggiunta\",\n \"passkeyRemoved\": \"Passkey rimossa\",\n \"unlocked\": \"Verifica in due passaggi sbloccata\",\n \"passkeyRemovedByAdmin\": \"Passkey rimossa da un amministratore\",\n \"trustedDevicesForgotten\": \"Dispositivi fidati dimenticati\"\n },\n \"web_source_pages_removed\": \"Pagine rimosse perché uscite dalla sitemap\",\n \"web_source_removal_held\": \"Pagine uscite dalla sitemap non rimosse\"\n },\n \"notificationType\": {\n \"agent_wakeup\": \"Controllo di un agente\",\n \"api_key_expiring\": \"Scadenza API key\",\n \"chat_blocked\": \"Chat bloccata\",\n \"chat_warning\": \"Avviso chat\",\n \"document_error\": \"Errore documento\",\n \"document_sync_removed\": \"Contenuti sincronizzati rimossi\",\n \"generic\": \"Generica\",\n \"headless_quota_exceeded\": \"Quota delle automazioni\",\n \"organization\": \"Organizzazione\",\n \"password_reset_requested\": \"Reset password richiesto\",\n \"two_factor\": \"Sicurezza dell'accesso\",\n \"web_source_pages_removed\": \"Pagine uscite dalla sitemap\",\n \"web_source_removal_held\": \"Rimozione da confermare\"\n },\n \"oauthAuthorizationUrl\": \"URL di autorizzazione OAuth\",\n \"oauthClientId\": \"OAuth client ID\",\n \"oauthClientSecret\": \"OAuth client secret\",\n \"oauthScopes\": \"Scopes OAuth\",\n \"oauthTokenUrl\": \"URL token OAuth\",\n \"ocrUsed\": \"OCR\",\n \"older\": \"Più vecchie\",\n \"onChannels\": \"WA · Teams\",\n \"openSource\": \"Apri sorgente\",\n \"operatingSystems\": \"Sistemi operativi\",\n \"or\": \"Oppure\",\n \"organization\": \"Organizzazione\",\n \"organizations\": \"Organizzazioni\",\n \"origin\": \"Origine\",\n \"originalMessage\": \"Risposta originale\",\n \"origins\": \"Sorgenti\",\n \"outOfStock\": \"Non disponibile\",\n \"output\": \"Output\",\n \"outputSchema\": \"Schema di output\",\n \"pages\": \"Pagine\",\n \"passphrase\": \"Inserisci la parola chiave\",\n \"password\": \"Password\",\n \"paused\": \"In pausa\",\n \"peakHours\": \"Ore di punta\",\n \"perMillionTokens\": \"per milione di token\",\n \"period\": \"Periodo\",\n \"phone\": \"Telefono\",\n \"picture\": \"Immagine\",\n \"platformAssistant\": \"Assistente della piattaforma\",\n \"platformContext\": \"Contesto piattaforma\",\n \"preferences\": \"Preferenze\",\n \"presencePenalty\": \"Penalità di presenza\",\n \"preview\": \"Anteprima\",\n \"priceInput\": \"Prezzo input\",\n \"priceOutput\": \"Prezzo output\",\n \"priority\": \"Priorità\",\n \"priority_1\": \"Molto bassa\",\n \"priority_2\": \"Bassa\",\n \"priority_3\": \"Normale\",\n \"priority_4\": \"Alta\",\n \"priority_5\": \"Critica\",\n \"privacy\": \"Privacy\",\n \"privacyPolicyNotice\": \"Informativa privacy\",\n \"processedAt\": \"Processato il\",\n \"processing\": \"Elaborazione in corso…\",\n \"profile\": \"Profilo\",\n \"prompt\": \"Prompt\",\n \"properties\": \"Proprietà\",\n \"provider\": \"Provider\",\n \"providerOrganizationId\": \"ID provider\",\n \"providerTimeoutMs\": \"Timeout provider (ms)\",\n \"qdrantSync\": \"Sync vettoriale\",\n \"qrCode\": \"Codice QR\",\n \"question\": \"Domanda\",\n \"rateLimits\": \"Limiti di utilizzo\",\n \"read\": \"Letto\",\n \"reasoning\": \"Reasoning\",\n \"reasoningAgentTester\": \"Test agente di ragionamento\",\n \"reasoningDetails\": \"Dettagli di ragionamento\",\n \"reasoningEffort\": \"Intensità ragionamento\",\n \"reasoningSummary\": \"Riepilogo ragionamento\",\n \"recommended\": \"Consigliato\",\n \"redundantChunks\": \"Chunk ridondanti\",\n \"referrerDomains\": \"Domini di provenienza\",\n \"refillAmount\": \"Importo ricarica\",\n \"released\": \"Rilascio\",\n \"rememberMe\": \"Ricordami\",\n \"replyWithoutText\": \"Risposta senza testo\",\n \"requestCount\": \"Richieste\",\n \"requestedAt\": \"Richiesta il\",\n \"requests\": \"Richieste\",\n \"requestsPerAgent\": \"Richieste per agente\",\n \"requestsUsed\": \"Richieste utilizzate\",\n \"required\": \"Obbligatorio\",\n \"requiredFields\": \"Campi obbligatori\",\n \"retired\": \"ritirato\",\n \"revisedMessage\": \"Risposta corretta\",\n \"right\": \"Destra\",\n \"riskScoreBands\": \"Fasce di rischio\",\n \"role\": \"Ruolo\",\n \"rootDocuments\": \"Senza cartella\",\n \"scheduledAt\": \"Programmata il\",\n \"schemaRootArray\": \"Array\",\n \"schemaRootObject\": \"Oggetto\",\n \"schemas\": \"Schemi\",\n \"screenCategories\": \"Risoluzione schermo\",\n \"searchAndExecution\": \"Ricerca ed esecuzione\",\n \"searchMode\": \"Modalità di ricerca\",\n \"searchRecencyFilter\": \"Filtro temporale\",\n \"sectionChannelBreakdown\": \"Dettaglio per canale\",\n \"sectionConversationQuality\": \"Qualità conversazione\",\n \"sectionCostTrend\": \"Andamento costi mensili\",\n \"sectionDeviceContext\": \"Dispositivi e contesto (web e widget)\",\n \"sectionTraffic\": \"Traffico (web e widget)\",\n \"security\": \"Sicurezza\",\n \"selectAgent\": \"Seleziona agente\",\n \"selectedHint\": \"Selezionato\",\n \"sentiment\": \"Sentiment\",\n \"sentimentTrends\": \"Trend di sentiment\",\n \"serverInfo\": \"Info MCP server\",\n \"sessionExpiresIn\": \"Durata sessione (secondi)\",\n \"setPassword\": \"Imposta password\",\n \"settings\": \"Impostazioni\",\n \"sfApiVersion\": \"Versione API\",\n \"sfClientId\": \"Client ID\",\n \"sfClientSecret\": \"Client secret\",\n \"sfExternalIdField\": \"Campo ID esterno\",\n \"sfInstanceUrl\": \"Instance URL\",\n \"shareWith\": \"Condividi con gli agenti\",\n \"showExtendedSteps\": \"Mostra i passaggi\",\n \"similarity\": \"Similarità\",\n \"sitemapUrl\": \"URL sitemap\",\n \"size\": \"Dimensione\",\n \"slug\": \"Slug\",\n \"smartRanking\": \"Ranking intelligente\",\n \"smoothStream\": \"Smooth streaming\",\n \"source\": \"Sorgente\",\n \"sources\": \"Fonti\",\n \"spokenExchange\": \"Scambiato a voce\",\n \"startDate\": \"Data inizio\",\n \"startUrl\": \"URL di partenza\",\n \"status\": \"Stato\",\n \"style\": \"Stile\",\n \"subAgent\": \"Sotto-agente\",\n \"subject\": \"Oggetto\",\n \"syncStatus\": \"Stato\",\n \"targetAll\": \"Tutti gli utenti\",\n \"targetOrganization\": \"Organizzazione\",\n \"targetType\": \"Destinatario\",\n \"targetUser\": \"Utente specifico\",\n \"teams\": \"Microsoft Teams\",\n \"teamsAccentColor\": \"Colore del tema\",\n \"teamsAppId\": \"App ID (Microsoft)\",\n \"teamsAppPassword\": \"App password / client secret\",\n \"teamsAppTenantId\": \"Tenant ID\",\n \"teamsAppType\": \"Tipo app\",\n \"teamsAppVersion\": \"Versione app\",\n \"teamsDescriptionFull\": \"Descrizione completa\",\n \"teamsDescriptionShort\": \"Descrizione breve\",\n \"teamsDeveloperName\": \"Nome sviluppatore\",\n \"teamsManifestDetails\": \"Dettagli dell'app (mostrati in Teams)\",\n \"temperature\": \"Temperatura\",\n \"testConnection\": \"Verifica connessione\",\n \"testPlayground\": \"Test playground\",\n \"textColor\": \"Colore del testo\",\n \"theme\": \"Tema\",\n \"thinking\": \"Pensiero\",\n \"thinkingBudget\": \"Budget ragionamento\",\n \"thinkingDisplay\": \"Visualizza ragionamento\",\n \"thinkingEffort\": \"Intensità ragionamento\",\n \"thinkingLevel\": \"Livello ragionamento\",\n \"thinkingType\": \"Tipo pensiero\",\n \"thisMonth\": \"Questo mese\",\n \"timeoutMs\": \"Timeout (ms)\",\n \"timezoneRegions\": \"Fuso orario\",\n \"title\": \"Titolo\",\n \"today\": \"Oggi\",\n \"tokens\": \"token\",\n \"tool\": \"Tool\",\n \"toolApprovalBadge\": \"Conferma utente\",\n \"toolName\": \"Nome del tool: {name}\",\n \"toolRequiresApproval\": \"Chiedi conferma all'utente\",\n \"toolWorkingSet\": \"Selezione dei tool\",\n \"toolWorkingSetMode\": \"Modalità\",\n \"tools\": \"Tool\",\n \"topPages\": \"Pagine principali\",\n \"topTopics\": \"Trending topics\",\n \"total\": \"Totale\",\n \"totalConversations\": \"Chat in totale\",\n \"totalCost\": \"Costo totale\",\n \"totalCostPartlyEstimated\": \"Costo totale, in parte stimato\",\n \"totalItemsCount\": \"Elementi: {total}\",\n \"totalMessages\": \"Messaggi in totale\",\n \"totalPages\": \"di {total}\",\n \"trustedOrigins\": \"Origini attendibili\",\n \"tuning\": \"Tuning\",\n \"type\": \"Tipo\",\n \"uniqueUsers\": \"Utenti unici\",\n \"unitChat\": \"chat\",\n \"unitChatPerUser\": \"chat\",\n \"unitMessages\": \"messaggi\",\n \"unitMessagesPerChat\": \"messaggi\",\n \"unitUsers\": \"utenti\",\n \"unknown\": \"Sconosciuto\",\n \"unread\": \"Non letto\",\n \"updateProfile\": \"Aggiorna profilo\",\n \"updatedAt\": \"Aggiornato il\",\n \"upload\": \"Carica {index}/{total}\",\n \"url\": \"URL pagina web\",\n \"usage\": \"Utilizzo\",\n \"useBrowserEngine\": \"Utilizza il browser\",\n \"useExtractionStrategy\": \"Utilizza l'AI\",\n \"user\": \"Utente\",\n \"userInput\": \"Opzione selezionata\",\n \"userQuestion\": \"Domanda\",\n \"userTones\": \"Tono utente\",\n \"users\": \"Utenti\",\n \"utilityModel\": \"Modello per le funzioni interne\",\n \"value\": \"Valore\",\n \"version\": \"Versione\",\n \"video\": \"Video\",\n \"viewPdfPage\": \"Visualizza pagina PDF\",\n \"visibility\": \"Visibilità\",\n \"visualEditor\": \"Visuale\",\n \"voice\": \"Voce\",\n \"voiceCascadeTimeoutSeconds\": \"Tempo massimo per rispondere (secondi)\",\n \"voiceEnabled\": \"Conversazione vocale\",\n \"voiceFillerAfterSeconds\": \"Riempitivo dopo (secondi)\",\n \"voiceFillerMessage\": \"Frase di attesa\",\n \"voiceFirstMessage\": \"Frase di apertura\",\n \"voiceId\": \"Voce\",\n \"voiceIgnoreBackgroundVoices\": \"Ignora le voci di sottofondo\",\n \"voiceLanguage\": \"Lingua parlata\",\n \"voiceMaxSessionSeconds\": \"Durata massima sessione (secondi)\",\n \"voiceTurnEagerness\": \"Fine del turno\",\n \"voiceTurnTimeoutSeconds\": \"Pausa prima di riprendere la parola (secondi)\",\n \"vote\": \"Voto\",\n \"warnings\": \"Avvisi\",\n \"webSearch\": \"Ricerca web\",\n \"webSearchEnabled\": \"Abilita ricerca web\",\n \"webSearchNative\": \"Nativa\",\n \"webSearchProvider\": \"Provider di ricerca\",\n \"webhookUrl\": \"URL webhook\",\n \"week\": \"Settimana\",\n \"welcome\": \"Benvenuto in {appName}!\",\n \"whatsapp\": \"WhatsApp\",\n \"whatsappAccessToken\": \"Access token\",\n \"whatsappAppSecret\": \"App secret\",\n \"whatsappPhoneNumberId\": \"Phone number ID\",\n \"whatsappVerifyToken\": \"Verify token\",\n \"white\": \"Bianco\",\n \"widgetUrl\": \"URL widget\",\n \"year\": \"Anno\",\n \"yes\": \"Sì\",\n \"yesterday\": \"Ieri\",\n \"zeroDataRetention\": \"Zero data retention (ZDR)\",\n \"webPagesRefresh\": \"Ogni quanto rileggere le pagine\",\n \"webSourceWatch\": \"Cerca anche le pagine nuove\",\n \"webSourceInterval\": \"Ogni quanto cercarle\",\n \"webSourceRemoveMissing\": \"Rimuovi le pagine che escono dalla sitemap\",\n \"apiUrl\": \"URL dell'API\",\n \"createEndpoint\": \"Crea endpoint\",\n \"wakeupCheck\": \"Controllo automatico\",\n \"wakeupNext\": \"Prossimo controllo alle {time}\",\n \"wakeupQuietRun\": \"Nessuna novità nel controllo delle {time} | Nessuna novità in {count} controlli, l'ultimo alle {time}\"\n },\n \"language\": {\n \"de\": \"Tedesco\",\n \"en\": \"Inglese\",\n \"english\": \"Inglese\",\n \"es\": \"Spagnolo\",\n \"fr\": \"Francese\",\n \"french\": \"Francese\",\n \"german\": \"Tedesco\",\n \"it\": \"Italiano\",\n \"italian\": \"Italiano\",\n \"nl\": \"Olandese\",\n \"pt\": \"Portoghese\",\n \"spanish\": \"Spagnolo\"\n },\n \"lead\": {\n \"contactReason\": {\n \"appointment\": \"Appuntamento\",\n \"callback_request\": \"Richiesta di richiamata\",\n \"complaint\": \"Reclamo\",\n \"info_request\": \"Richiesta informazioni\",\n \"other\": \"Altro\",\n \"quote_request\": \"Richiesta preventivo\",\n \"support\": \"Supporto\"\n },\n \"label\": {\n \"budget\": \"Budget\",\n \"company\": \"Azienda\",\n \"contactReason\": \"Motivo del contatto\",\n \"conversationSummary\": \"Riepilogo conversazione\",\n \"preferredContactMethod\": \"Metodo di contatto preferito\",\n \"preferredContactTime\": \"Orario di contatto preferito\",\n \"productInterest\": \"Prodotto di interesse\",\n \"sentiment\": \"Sentiment\",\n \"topics\": \"Argomenti\",\n \"urgency\": \"Urgenza\"\n },\n \"preferredContactMethod\": {\n \"any\": \"Qualsiasi\",\n \"email\": \"Email\",\n \"phone\": \"Telefono\",\n \"whatsapp\": \"WhatsApp\"\n },\n \"preferredContactTime\": {\n \"afternoon\": \"Pomeriggio\",\n \"any\": \"Qualsiasi\",\n \"evening\": \"Sera\",\n \"morning\": \"Mattina\"\n },\n \"sentiment\": {\n \"excited\": \"Entusiasta\",\n \"frustrated\": \"Frustrato\",\n \"negative\": \"Negativo\",\n \"neutral\": \"Neutro\",\n \"positive\": \"Positivo\"\n },\n \"urgency\": {\n \"high\": \"Alta\",\n \"low\": \"Bassa\",\n \"medium\": \"Media\"\n }\n },\n \"mcpAuthType\": {\n \"headers\": \"Intestazioni HTTP (API key)\",\n \"oauth\": \"OAuth 2.0 per utente\"\n },\n \"mcpConnectionStatus\": {\n \"active\": \"In uso\",\n \"orphan\": \"Inutilizzata\",\n \"stale\": \"Scaduta\"\n },\n \"mcpServerStatus\": {\n \"active\": \"Attivo\",\n \"error\": \"Errore\",\n \"inactive\": \"Inattivo\"\n },\n \"member\": {\n \"agentAccess\": {\n \"hint\": \"Lascia vuoto per consentire al membro di usare tutti gli agenti dell'organizzazione. Seleziona degli agenti per limitarlo solo a quelli.\",\n \"managerHint\": \"Owner e admin possono usare tutti gli agenti; il loro accesso non può essere limitato.\"\n }\n },\n \"memorySource\": {\n \"explicit\": \"Esplicita | Esplicite\",\n \"extracted\": \"Estratta | Estratte\"\n },\n \"message\": {\n \"accountLinkAlreadyLinked\": \"Questo account è già collegato a un altro utente. Accedi con quell'utente per scollegarlo prima.\",\n \"accountLinkCancelled\": \"Collegamento annullato sulla pagina del provider. Nulla è cambiato.\",\n \"accountLinkEmailMismatch\": \"Puoi collegare solo account che usano la stessa email del tuo profilo.\",\n \"accountLinkErrorWithCode\": \"Impossibile collegare l'account (codice: {code}). Riprova o segnala questo codice all'assistenza.\",\n \"accountLinkNotAllowed\": \"Questo provider non può essere collegato al tuo profilo: l'email dell'account non è verificata o il collegamento è disabilitato.\",\n \"accountLinkUserInfo\": \"Il provider non ha restituito un profilo utilizzabile, quindi nessun account è stato collegato. Riprova.\",\n \"accountUnlinked\": \"Account disconnesso\",\n \"agentAccessDenied\": \"Non hai accesso a questo agente\",\n \"agentAccessDeniedAction\": \"Vedi gli agenti disponibili\",\n \"agentActivated\": \"Agente attivato con successo\",\n \"agentDeactivated\": \"Agente disattivato con successo\",\n \"agentNotFound\": \"Agente non trovato\",\n \"agentsEmpty\": \"Nessun agente. Crea il primo per iniziare.\",\n \"analyzeChatError\": \"L'analisi non si è conclusa. Riprova fra qualche minuto.\",\n \"analyzeChatInProgress\": \"Analisi della conversazione in corso. Se la conversazione è lunga, può servire circa un minuto.\",\n \"analyzeChatSuccess\": \"Conversazione analizzata con successo\",\n \"apiKeyCreatedForUser\": \"Mostrata una volta sola: copiala e passala in sicurezza.\",\n \"apiKeysEmpty\": \"Le chiavi che crei per l’accesso programmatico compaiono qui.\",\n \"apiToolsEmpty\": \"Nessun API tool. Aggiungi il primo per far chiamare all'agente un servizio esterno.\",\n \"banSuccess\": \"Utente bannato con successo\",\n \"blockChatSuccess\": \"Conversazione bloccata con successo\",\n \"bulkUnlinkAllDeleteConfirm\": \"{count} documenti verranno eliminati definitivamente perché non hanno altri agenti collegati. Vuoi procedere?\",\n \"bulkUnlinkMixedConfirm\": \"{unlinkCount} documenti verranno disassociati e {deleteCount} verranno eliminati definitivamente (non hanno altri agenti collegati). Vuoi procedere?\",\n \"cancelInvitationConfirm\": \"Sei sicuro di voler annullare l'invito per {email}?\",\n \"cancelInvitationSuccess\": \"Invito annullato con successo\",\n \"chatActionError\": \"L'azione non si è conclusa. Riprova fra qualche minuto.\",\n \"chatAnonymized\": \"Il contenuto di questa conversazione è stato cancellato (GDPR): restano solo le metriche aggregate.\",\n \"chatErrorBadRequest\": \"Si è verificato un errore con la richiesta. Inizia una nuova chat per continuare.\",\n \"chatErrorContextWindow\": \"La conversazione è diventata troppo lunga. Inizia una nuova chat per continuare.\",\n \"chatErrorConversationBlocked\": \"Questa conversazione è stata bloccata per violazione delle policy.\",\n \"chatErrorCreditExhausted\": \"Servizio non disponibile. Riprova più tardi.\",\n \"chatErrorGatewayDisabled\": \"Il modello di questo agente non è disponibile: l’organizzazione non usa il gateway AI della piattaforma. Un amministratore può spostare l’agente su uno dei modelli dell’organizzazione.\",\n \"chatErrorGatewayPromptTraining\": \"Il modello \\\"{model}\\\" non supporta l'opzione \\\"Disabilita addestramento prompt\\\". Disattiva questa impostazione nella configurazione del gateway dell'agente oppure scegli un modello compatibile.\",\n \"chatErrorGatewayZdr\": \"Il modello \\\"{model}\\\" non supporta l'opzione \\\"Zero Data Retention\\\". Disattiva ZDR nella configurazione del gateway dell'agente oppure scegli un modello compatibile.\",\n \"chatErrorGeneric\": \"Errore durante la richiesta. Se il problema persiste inizia una nuova chat. Riprovo tra {seconds}…\",\n \"chatErrorInternalServer\": \"Si è verificato un errore del server. Inizia una nuova chat per continuare.\",\n \"chatErrorModelUnavailable\": \"Il modello di questo agente ora non è disponibile: l’endpoint su cui gira è spento o non lo serve più. Un amministratore può riaccenderlo o spostare l’agente su un altro modello.\",\n \"chatErrorNotFound\": \"La conversazione non è più disponibile. Inizia una nuova chat per continuare.\",\n \"chatErrorOriginNotAllowed\": \"L'origine della richiesta non è consentita. Contatta l'amministratore del sistema.\",\n \"chatErrorRateLimit\": \"Il limite di richieste è stato superato. Riprovo tra {seconds} secondi…\",\n \"chatErrorRetrying\": \"Riprovo tra {seconds} secondi…\",\n \"checkYourEmail\": \"Verifica la tua casella email\",\n \"confirm\": \"Sei sicuro di voler procedere?\",\n \"confirmRefillCredits\": \"Sei sicuro di voler ricaricare il credito di {amount}?\",\n \"contentTruncated\": \"Contenuto troncato. Totale caratteri: {total}\",\n \"copied\": \"Copiato negli appunti\",\n \"crawlError\": \"Errore durante il crawling\",\n \"createFolderSuccess\": \"Cartella creata con successo\",\n \"defaultAgentWelcome\": \"Ciao! Come posso aiutarti oggi?\",\n \"defaultPrivacyPolicyNotice\": \"Inviando la richiesta accetti la nostra [Privacy Policy](https://www.iubenda.com/privacy-policy/46350192).\",\n \"deleteAgentConfirm\": \"Le sue cartelle vengono eliminate. Un documento che nessun altro agente usa viene eliminato, uno condiviso resta agli altri agenti.\",\n \"deleteAllMemoriesConfirm\": \"Spariscono definitivamente, ricerca semantica compresa.\",\n \"deleteAllNotificationsConfirm\": \"Eliminare tutte le notifiche?\",\n \"deleteBulkDocumentConfirm\": \"Vengono rimossi da tutti gli agenti collegati e finiscono nel cestino, da cui si possono ripristinare.\",\n \"deleteDocumentConfirm\": \"Viene rimosso da tutti gli agenti collegati e finisce nel cestino, da cui si può ripristinare.\",\n \"deleteDocumentConfirmWithAgents\": \"Finisce nel cestino, da cui si può ripristinare, e viene rimosso dai seguenti agenti:{agents}\",\n \"deleteError\": \"Eliminazione non riuscita. Riprova.\",\n \"deleteFolderConfirm\": \"I documenti al suo interno vengono tolti da questo agente. Un documento che nessun altro agente usa viene eliminato.\",\n \"deleteFolderSuccess\": \"Cartella eliminata con successo\",\n \"deleteMyConversationsConfirm\": \"Non si può annullare.\",\n \"deleteNotificationConfirm\": \"Eliminare questa notifica?\",\n \"deleteProfileBlockedSoleOwner\": \"Sei l'unico proprietario di {organizations}. Trasferisci la proprietà o elimina le organizzazioni prima di poter eliminare l'account.\",\n \"deleteProfileConfirm\": \"Stai per eliminare definitivamente il tuo account: il profilo verrà anonimizzato e il contenuto delle tue conversazioni cancellato. Questa azione non può essere annullata.\",\n \"deleteProfileDescription\": \"Anonimizza il tuo account e cancella il contenuto delle tue conversazioni (diritto all'oblio).\",\n \"diagramRenderError\": \"Impossibile renderizzare il diagramma.\",\n \"documentRefreshPausedReason\": \"La pagina non risponde più, quindi l'aggiornamento automatico è in pausa. Aggiorna ora per riprovare.\",\n \"documentRefreshSet\": \"Aggiornamento automatico impostato su {updated} documenti, {skipped} saltati perché non sono pagine web\",\n \"documentRefreshStarted\": \"Aggiornamento avviato su {queued} documenti, {skipped} saltati\",\n \"documentsEmpty\": \"Questa cartella è ancora vuota. Aggiungi documenti dal menu Crea, oppure inizia con una cartella.\",\n \"documentsEmptyManaged\": \"Nessun file sincronizzato in questa cartella. Il contenuto arriva dalla sorgente collegata: se hai appena collegato la cartella, il primo import può richiedere qualche minuto.\",\n \"documentSourceLinked\": \"Cartella collegata. Il primo import parte tra poco.\",\n \"documentSourceNothingHere\": \"Non c’è nulla qui dentro.\",\n \"documentSourceStale\": \"Lo stato di questa cartella non è aggiornato: l’ultima lettura non è riuscita.\",\n \"documentSourceUnlinked\": \"Cartella scollegata. I documenti restano e ora si modificano come gli altri.\",\n \"embeddingActivated\": \"Embedding salvato: l’endpoint serve il modello dichiarato\",\n \"embeddingBackToPlatform\": \"I vettori si calcolano di nuovo sulla piattaforma\",\n \"embeddingIndexNotUpdated\": \"L’avanzamento non si aggiorna più.\",\n \"embeddingRemoved\": \"Embedding rimosso dall’endpoint\",\n \"empty\": \"Nessun elemento trovato\",\n \"endpointActivated\": \"Endpoint attivato con successo\",\n \"endpointDeactivated\": \"Endpoint disattivato con successo\",\n \"endpointsEmpty\": \"Nessun endpoint. Crea il primo per esporre l'agente via HTTP.\",\n \"error\": \"Errore\",\n \"errorRetry\": \"Qualcosa è andato storto. Riprova.\",\n \"exportError\": \"Errore durante l'esportazione dei dati\",\n \"exportFailed\": \"L'esportazione dei dati non è riuscita. Riprova più tardi.\",\n \"exportMyDataDescription\": \"Scarica una copia completa dei tuoi dati personali in formato ZIP (Art. 15 e 20 GDPR).\",\n \"exportRequested\": \"Stiamo preparando il tuo archivio: riceverai un'email con il link per scaricarlo.\",\n \"exportSuccess\": \"CSV esportato con successo\",\n \"feedbackSubmitError\": \"Invio fallito. Riprova per favore.\",\n \"feedbackSubmittedMessage\": \"Il tuo feedback è stato inviato con successo.\",\n \"feedbackSubmittedTitle\": \"Grazie!\",\n \"feedbacksEmpty\": \"I feedback che gli utenti lasciano sulle risposte dell'agente compariranno qui.\",\n \"fileAlreadyImported\": \"Già importato\",\n \"fileAlreadyImportedExistingList\": \"I seguenti file sono già presenti nell'organizzazione:\\n{names}\",\n \"fileAlreadyImportedLink\": \"Questo file è già stato importato. Vuoi collegarlo all'agente corrente o creare un nuovo documento?\",\n \"fileAlreadyImportedNewList\": \"I seguenti file sono nuovi e verranno importati normalmente:\\n{names}\",\n \"fileAlreadyImportedQuestion\": \"Vuoi collegare i file già presenti all'agente corrente?\",\n \"fileAlreadyLinkedToAgent\": \"I seguenti file sono già collegati all'agente corrente:\\n{names}\",\n \"fileLimitPerChat\": \"Hai raggiunto il limite di {max} file per questa conversazione.\",\n \"fileLimitPerMessage\": \"Puoi allegare al massimo {max} file per messaggio.\",\n \"foldersEmpty\": \"Nessuna cartella ancora. Crea la prima dalla pagina dei documenti per organizzarli.\",\n \"formRenderError\": \"Non è stato possibile mostrare il modulo. Chiedilo di nuovo e l'agente lo invierà.\",\n \"gdprRequestsEmpty\": \"Le richieste di esportazione o cancellazione dei dati di questo utente compaiono qui.\",\n \"geolocationPermissionDenied\": \"Accesso alla posizione negato. Consentilo nelle impostazioni del browser.\",\n \"geolocationUnavailable\": \"Posizione non disponibile. Riprova o inserisci la posizione manualmente.\",\n \"getMcpServerInfoError\": \"Un errore è avvenuto durante il caricamento dei tool.\",\n \"importError\": \"Errore durante l'importazione\",\n \"importSuccess\": \"{count} documenti importati con successo\",\n \"importing\": \"Importazione in corso…\",\n \"info\": \"Informazione\",\n \"insufficientCredit\": \"Credito insufficiente. Riprova più tardi.\",\n \"insufficientCreditMessage\": \"Il tuo credito è insufficiente per completare questa operazione. Contatta l'amministratore del sistema per ulteriori informazioni.\",\n \"integrationConnected\": \"Connessione riuscita.\",\n \"integrationCreated\": \"Integrazione creata con successo\",\n \"integrationDisabled\": \"Integrazione disabilitata\",\n \"integrationDisconnected\": \"Connessione rimossa.\",\n \"integrationDisconnectConfirm\": \"Le cartelle sincronizzate vengono scollegate.\",\n \"integrationEnabled\": \"Integrazione abilitata\",\n \"integrationOAuthDenied\": \"La connessione è stata rifiutata, o manca ancora l’approvazione di un amministratore Microsoft 365.\",\n \"integrationOAuthFailed\": \"La connessione non è andata a buon fine.\",\n \"integrationOAuthStartFailed\": \"Non è stato possibile avviare la connessione.\",\n \"integrationRemoveConfirm\": \"La configurazione di questa integrazione viene rimossa.\",\n \"integrationTestFailed\": \"Verifica connessione fallita: {error}\",\n \"integrationTestSuccess\": \"Connessione verificata con successo\",\n \"integrationUpdated\": \"Integrazione aggiornata con successo\",\n \"invalidJson\": \"L'input non è un JSON valido\",\n \"invitationAccepted\": \"Invito accettato\",\n \"invitationAlreadyHandled\": \"Invito già gestito\",\n \"invitationDeclined\": \"Invito declinato\",\n \"invitationToJoinOrganization\": \"Sei stato invitato a unirti a\",\n \"invitationsEmpty\": \"Nessun invito in sospeso. Invita le persone dalla pagina dei membri.\",\n \"leadSubmitError\": \"Invio fallito. Riprova per favore.\",\n \"leadSubmittedMessage\": \"La richiesta è stata inviata con successo.\",\n \"leadSubmittedTitle\": \"Grazie!\",\n \"leadsEmpty\": \"I lead raccolti dall'agente durante le conversazioni compariranno qui.\",\n \"leftOrganization\": \"Hai lasciato l'organizzazione con successo\",\n \"loadConversationsError\": \"Impossibile caricare le conversazioni\",\n \"loading\": \"Caricamento…\",\n \"loadingError\": \"Errore durante il caricamento\",\n \"mcpConnectionConnectedAt\": \"Accesso effettuato il {date}\",\n \"mcpConnectionDisconnectDescription\": \"Gli agenti non useranno più il tuo account {name}. La prossima volta che ti servirà, l'agente ti chiederà di accedere e potrai scegliere un altro account.\",\n \"mcpConnectionDisconnectQuestion\": \"Scollegare {name}?\",\n \"mcpConnectionDisconnected\": \"Account {name} scollegato\",\n \"mcpConnectionsDescription\": \"I servizi a cui hai effettuato l'accesso con il tuo account. Scollegane uno per impedire agli agenti di usarlo, o per accedere di nuovo con un account diverso.\",\n \"mcpConnectionsAvailableDescription\": \"Le integrazioni degli agenti che usi a cui non hai ancora effettuato l'accesso. Puoi collegarle ora, senza aspettare che l'agente te lo chieda.\",\n \"mcpConnectionConnected\": \"Account {name} collegato\",\n \"mcpConnectionConnectFailed\": \"Accesso a {name} non riuscito. Riprova: se l'errore si ripete, segnalalo a chi gestisce l'agente.\",\n \"mcpConnectionUsedBy\": \"Usata da {agents}\",\n \"mcpConnectionUsedByNone\": \"Nessun agente la usa\",\n \"noMcpConnections\": \"Nessuna integrazione collegata\",\n \"userMcpConnectionsEmpty\": \"Questo utente non ha effettuato l'accesso a nessuna integrazione con il proprio account.\",\n \"mcpConnectionRevokeQuestion\": \"Revocare l'accesso di {user} a {name}?\",\n \"mcpConnectionRevokeDescription\": \"Gli agenti non useranno più il suo account {name}. Chiediamo la revoca anche al fornitore, dove la supporta; altrimenti l'autorizzazione resta valida presso di lui fino alla scadenza. Per usarla di nuovo, {user} dovrà accedere di persona. Riceverà una notifica.\",\n \"mcpConnectionRevokedAtProvider\": \"Accesso a {name} revocato, anche presso il fornitore\",\n \"mcpConnectionRevokedHere\": \"Accesso a {name} revocato qui. Il fornitore non ha confermato la revoca: l'autorizzazione può restare valida presso di lui fino alla scadenza.\",\n \"mcpServerCheckError\": \"Errore durante la verifica del server MCP: {error}\",\n \"mcpServerCheckSuccess\": \"Verifica del server MCP riuscita\",\n \"mcpServerInvalidEndpoint\": \"Questo URL non punta a un endpoint MCP: il server ha risposto con una pagina web. Controlla il percorso, di solito i server MCP lo espongono sotto /mcp.\",\n \"mcpServersEmpty\": \"Nessun server MCP. Collega il primo per dare nuovi strumenti all'agente.\",\n \"membersEmpty\": \"Nessun membro. Invita il primo per iniziare.\",\n \"memoriesEmpty\": \"Le memorie che l'agente salva su questo utente durante le conversazioni compariranno qui.\",\n \"memoryNotSynced\": \"Memoria non sincronizzata con la ricerca semantica: non viene considerata nelle risposte finché lo sweep di riparazione non la ripristina.\",\n \"modelDiscoveryUnavailable\": \"Questo endpoint non fornisce l'elenco dei suoi modelli: inserisci gli id a mano.\",\n \"modelDiscoveryFailed\": \"Non siamo riusciti a leggere l'elenco dei modelli dall'endpoint: vedi solo quelli già salvati.\",\n \"modelPricesUnchanged\": \"Nessun prezzo è cambiato.\",\n \"modelPricesUpdated\": \"Aggiornato il prezzo di un modello: {models}. | Aggiornati i prezzi di {count} modelli: {models}.\",\n \"modelProviderDeleted\": \"Endpoint eliminato.\",\n \"moveDocumentSuccess\": \"Documento spostato con successo\",\n \"noActiveSessions\": \"Nessuna altra sessione attiva\",\n \"noApiKeys\": \"Nessuna chiave API\",\n \"noChats\": \"Nessuna chat disponibile\",\n \"noConnectedAccounts\": \"Nessun account collegato\",\n \"noConversations\": \"Nessuna conversazione trovata\",\n \"noConversationsHint\": \"Inizia una nuova chat per vederla comparire qui.\",\n \"noCreditsData\": \"Nessun dato crediti disponibile\",\n \"noEndpointLogs\": \"Ancora nessuna chiamata a questo endpoint\",\n \"noEndpointModels\": \"Nessun modello disponibile: l'endpoint non ne elenca nessuno.\",\n \"modelRemoved\": \"Modello rimosso.\",\n \"noGdprRequests\": \"Nessuna richiesta GDPR\",\n \"noLinkedAgents\": \"Nessun agente collegato\",\n \"noNotifications\": \"Nessuna notifica\",\n \"noOptions\": \"Nessun elemento\",\n \"noOrganizations\": \"Nessuna organizzazione\",\n \"noResults\": \"Nessun risultato trovato\",\n \"noSearchResults\": \"Nessun elemento corrisponde alla ricerca. Cancellala per vedere tutto.\",\n \"notificationsEmpty\": \"Nessuna notifica inviata. Crea la prima per raggiungere i tuoi utenti.\",\n \"oauthConfigIncomplete\": \"Configurazione OAuth incompleta. Imposta il Client ID nelle impostazioni del server MCP.\",\n \"oauthConnected\": \"Autorizzazione OAuth completata con successo\",\n \"oauthError\": \"Errore durante l'autorizzazione OAuth\",\n \"organizationDisconnected\": \"Né il gateway della piattaforma né un endpoint proprio servono questa organizzazione, quindi i suoi agenti non rispondono.\",\n \"organizationMembersEmpty\": \"Nessun membro. Aggiungi il primo per iniziare.\",\n \"organizationNotSelected\": \"Nessuna organizzazione selezionata\",\n \"organizationsEmpty\": \"Nessuna organizzazione. Crea la prima per iniziare.\",\n \"pageNotFound\": \"Pagina non trovata\",\n \"passwordChangeSuccess\": \"Password cambiata con successo\",\n \"passwordResetSuccess\": \"Password reimpostata. Tutte le sessioni dell'account sono state chiuse: accedi con la nuova password.\",\n \"profileOrganizationsEmpty\": \"Le organizzazioni di cui fai parte compaiono qui.\",\n \"readError\": \"Errore durante la lettura\",\n \"reasoningAgent\": \"Questo è un agente di ragionamento. Non è progettato per mantenere la storia della conversazione, ogni messaggio è processato indipendentemente.\",\n \"recoverPasswordSuccess\": \"Email di recupero inviata con successo\",\n \"refillFailed\": \"Ricarica fallita. Riprova più tardi.\",\n \"refillSuccess\": \"Ricarica completata con successo\",\n \"refreshSuccess\": \"Aggiornamento completato con successo\",\n \"releaseNotesEmpty\": \"Nessuna nota di rilascio pubblicata. Gli aggiornamenti compariranno qui man mano che escono.\",\n \"removeSuccess\": \"Eliminazione completata con successo\",\n \"renameFolderSuccess\": \"Cartella rinominata con successo\",\n \"revisedAnswersEmpty\": \"Nessuna risposta revisionata. Crea la prima per insegnare all'agente una risposta migliore.\",\n \"selectedCount\": \"{count} di {total} selezionati\",\n \"sendInvitationConfirm\": \"Sei sicuro di voler inviare nuovamente l'invito a {email}?\",\n \"sessionRevoked\": \"Sessione disconnessa\",\n \"sessionsEmpty\": \"Un accesso da un altro dispositivo o browser apre una nuova sessione, elencata qui.\",\n \"setPasswordDescription\": \"Per ora accedi solo tramite un account collegato. Imposta una password per entrare anche con email e password: ti inviamo un link per crearla. Crearla chiude tutte le sessioni aperte, anche questa.\",\n \"setPasswordLinkSent\": \"Ti abbiamo mandato il link a {email}.\",\n \"sharedSuccess\": \"Documento condiviso con successo\",\n \"sitemapUrlRequired\": \"L'URL della sitemap è richiesto\",\n \"startUrlRequired\": \"L'URL di partenza è richiesto\",\n \"subAgentsEmpty\": \"Collega un agente per delegargli una parte della conversazione.\",\n \"submitError\": \"Errore durante il salvataggio\",\n \"submitSuccess\": \"Salvataggio completato con successo\",\n \"success\": \"Successo\",\n \"testExecutionError\": \"Errore nell'esecuzione del test\",\n \"toolNameAutoGenerated\": \"Il nome del tool verrà generato in automatico\",\n \"typeToSearch\": \"Inizia a digitare per cercare…\",\n \"unauthorized\": \"Non hai i permessi per gestire i canali.\",\n \"unbanSuccess\": \"Utente sbannato con successo\",\n \"unblockChatSuccess\": \"Conversazione sbloccata con successo\",\n \"unlinkAgentConfirm\": \"Il documento resta disponibile per gli altri agenti collegati.\",\n \"unlinkDocumentConfirm\": \"Resta disponibile per gli altri agenti collegati.\",\n \"unlinkLastAgentDeleteConfirm\": \"Il documento viene eliminato definitivamente, perché nessun altro agente è collegato.\",\n \"unlinkSuccess\": \"Documento disassociato con successo\",\n \"unlinkSyncedFolderConfirm\": \"La sincronizzazione si ferma. La cartella e i suoi documenti restano all'agente e da ora si modificano come gli altri: per toglierli, elimina la cartella.\",\n \"unsavedChanges\": \"Salva o annulla le modifiche prima\",\n \"urlAlreadyImported\": \"Già importato\",\n \"urlAlreadyImportedLink\": \"Questo URL è già stato importato. Vuoi collegarlo all'agente corrente?\",\n \"userApiKeysEmpty\": \"Le chiavi che questo utente crea dal proprio profilo per l'accesso programmatico compariranno qui.\",\n \"userChatsEmpty\": \"Le conversazioni di questo utente con qualsiasi agente compariranno qui.\",\n \"userOrganizationsEmpty\": \"L'utente non appartiene ancora a nessuna organizzazione. Aggiungi la prima.\",\n \"userUpdateSuccess\": \"Profilo utente aggiornato con successo\",\n \"usersEmpty\": \"Nessun utente. Crea il primo per iniziare.\",\n \"voiceCancelled\": \"Ho annullato.\",\n \"voiceConfirmed\": \"Confermo.\",\n \"voiceConnecting\": \"Connessione…\",\n \"voiceConnectionDone\": \"Ho completato il collegamento.\",\n \"voiceFailed\": \"La sessione vocale si è interrotta\",\n \"voiceInterrupted\": \"Riprova, oppure continua per iscritto.\",\n \"voiceListening\": \"In ascolto\",\n \"voiceLocationRefused\": \"Preferisco non condividere la mia posizione.\",\n \"voiceLocationShared\": \"La mia posizione è {place}.\",\n \"voiceMuted\": \"Microfono disattivato\",\n \"voiceNoAnswer\": \"L'agente non è riuscito a produrre una risposta per questa chiamata. Riprova, oppure continua per iscritto.\",\n \"voiceSpeaking\": \"L'agente sta parlando\",\n \"voiceTookTooLong\": \"La risposta ha impiegato troppo tempo per la chiamata. Riprova, oppure continua per iscritto: la risposta comparirà qui appena pronta.\",\n \"warning\": \"Attenzione\",\n \"webSourceCreated\": \"Sorgente creata: la cartella «{name}» riceverà le pagine nuove.\",\n \"webSourceCreateError\": \"Non è stato possibile creare la sorgente, e nessuna pagina è stata importata.\",\n \"webSourceEditable\": \"Le pagine scoperte restano modificabili. Scollegare la sorgente le lascia dove sono, con il loro aggiornamento automatico.\",\n \"webSourceRemovalHeld\": \"La sitemap non elenca più {count} pagine: sono troppe in una volta per rimuoverle senza un controllo, e non è stato rimosso niente.\",\n \"webSourceConfirmRemovalQuestion\": \"Il prossimo controllo toglie dalla knowledge base le pagine che la sitemap non elenca più, fino a {count}. Il loro contenuto resta nel database.\",\n \"unlinkWebSourceConfirm\": \"La sorgente smette di cercare pagine nuove. La cartella e le sue pagine restano, con il loro aggiornamento automatico.\"\n },\n \"messagePart\": {\n \"audioTranscribing\": \"Trascrizione dell'audio…\",\n \"audioTranscript\": \"Trascrizione\",\n \"audioTranscriptFailed\": \"Non è stato possibile trascriverlo\",\n \"audioTranscriptNoSpeech\": \"Non si sente nessun parlato\",\n \"audioTranscriptOff\": \"Non trascritto: la trascrizione è spenta per questa organizzazione\",\n \"disconnectOAuthConnection\": \"Disconnessione in corso…\",\n \"editSpreadsheet\": \"Modifica del foglio di calcolo…\",\n \"editSpreadsheetCells\": \"{count} cella modificata | {count} celle modificate\",\n \"enableTools\": \"Attivazione dei tool…\",\n \"expandChunkContext\": \"Lettura di altro contesto…\",\n \"fetchTeamsChannelHistory\": \"Lettura cronologia canale…\",\n \"geocode\": \"Ricerca della posizione…\",\n \"getWeather\": \"Recupero dati meteo…\",\n \"querySpreadsheet\": \"Interrogazione del foglio di calcolo…\",\n \"readDocumentFile\": \"Lettura del documento originale…\",\n \"readEarlierMessages\": \"Rilettura dei messaggi precedenti…\",\n \"readSpreadsheet\": \"Lettura del foglio di calcolo…\",\n \"reasoning\": \"Ragionamento…\",\n \"recallUserMemory\": \"Richiamo dei ricordi utente…\",\n \"requestGeolocation\": \"Richiesta posizione…\",\n \"requestOAuthConnection\": \"Connessione in corso…\",\n \"requestOAuthConnectionButton\": \"Connetti {name}\",\n \"requestOAuthConnectionInfo\": \"Richiesta autorizzazione per accedere i dati di {name}.\",\n \"requestOAuthConnectionPrompt\": \"Per accedere ai dati di {name} è necessario autorizzare la connessione.\",\n \"requestOAuthConnectionSuccess\": \"Connessione a {name} riuscita.\",\n \"revisedAnswers\": \"Ricerca nelle domande ricorrenti…\",\n \"runSubagent\": \"Delega a un sotto-agente…\",\n \"runWorker\": \"Delega a un worker…\",\n \"saveUserMemory\": \"Aggiornamento memoria utente…\",\n \"scheduleWakeup\": \"Programmo il prossimo controllo…\",\n \"searchingDocuments\": \"Ricerca nella memoria…\",\n \"showArtifact\": \"Preparazione contenuto…\",\n \"showCalendarEvent\": \"Creazione evento calendario…\",\n \"showComparison\": \"Costruzione confronto…\",\n \"showContactForm\": \"Creazione modulo contatto…\",\n \"showDiagram\": \"Generazione diagramma…\",\n \"showEmail\": \"Composizione email…\",\n \"showForm\": \"Creazione form…\",\n \"showImageGallery\": \"Caricamento galleria…\",\n \"showLocation\": \"Caricamento posizione…\",\n \"showMessage\": \"Composizione messaggio…\",\n \"showMultipleChoice\": \"Mostro le opzioni…\",\n \"showProducts\": \"Caricamento prodotti…\",\n \"showQrCode\": \"Generazione codice QR…\",\n \"showSources\": \"Caricamento fonti…\",\n \"showSuggestedReply\": \"Suggerisco una risposta…\",\n \"showVideo\": \"Caricamento video…\",\n \"showWeather\": \"Caricamento previsioni…\",\n \"showWebPages\": \"Caricamento pagine…\",\n \"stepCount\": \"{n} passaggio | {n} passaggi\",\n \"stepDocument\": \"Documento\",\n \"stepDropped\": \"{n} query esclusa: oltre il limite | {n} query escluse: oltre il limite\",\n \"stepError\": \"Errore\",\n \"stepExcerpts\": \"{n} estratto | {n} estratti\",\n \"stepInput\": \"Input\",\n \"stepItems\": \"{n} elemento | {n} elementi\",\n \"stepNoResults\": \"Nessun risultato trovato\",\n \"stepOutput\": \"Output\",\n \"stepRepeated\": \"{n} estratto già trovato prima | {n} estratti già trovati prima\",\n \"stepTimedOut\": \"{n} ricerca non ha risposto in tempo: i risultati possono essere incompleti | {n} ricerche non hanno risposto in tempo: i risultati possono essere incompleti\",\n \"steps\": \"Elaborazione\",\n \"streaming\": \"Caricamento…\",\n \"tool\": \"Esecuzione di un tool…\",\n \"webSearch\": \"Ricerca sul web…\"\n },\n \"organizationLimits\": {\n \"legend\": \"Limiti\",\n \"membersHint\": \"Vuoto: nessun limite. Contano anche gli utenti arrivati dal widget.\",\n \"membersInvalid\": \"Inserisci un numero intero da 1 in su, oppure lascia vuoto.\",\n \"membersLabel\": \"Membri massimi\"\n },\n \"placeholder\": {\n \"allProviders\": \"Tutti i provider\",\n \"apiToolName\": \"es. get-product-availability\",\n \"apiToolUrl\": \"https://api.example.com/resource/{param}\",\n \"askAnything\": \"Scrivi la tua domanda…\",\n \"autoDetect\": \"Rileva automaticamente\",\n \"autoGenerated\": \"Generata automaticamente se lasciato vuoto\",\n \"comment\": \"Scrivi il tuo commento…\",\n \"completeName\": \"Inserisci nome e cognome\",\n \"constValue\": \"Valore costante\",\n \"customAnswer\": \"Scrivi la tua risposta…\",\n \"description\": \"Inserisci la descrizione\",\n \"documentContent\": \"Inserisci il contenuto del documento\",\n \"documentName\": \"Inserisci il nome del documento\",\n \"documentOriginAll\": \"Tutte le origini\",\n \"documentRefreshAll\": \"Tutti gli aggiornamenti\",\n \"documentUrl\": \"Inserisci l'URL della pagina web da importare\",\n \"email\": \"Inserisci l'indirizzo email\",\n \"endDate\": \"Seleziona data fine\",\n \"enterYourQuestion\": \"Inserisci la tua domanda…\",\n \"insert\": \"Inserisci…\",\n \"insertOrigin\": \"https://example.com\",\n \"insertImageHost\": \"images.example.com\",\n \"limit\": \"Inserisci il limite\",\n \"loading\": \"Caricamento…\",\n \"mcpServerHealthCheckPath\": \"Inserisci l'endpoint per il controllo dello stato\",\n \"mcpServerUrl\": \"Inserisci l'URL del server MCP\",\n \"model\": \"Seleziona il modello\",\n \"modelEndpointBaseUrl\": \"https://internal-proxy/v1\",\n \"name\": \"Inserisci il nome\",\n \"noTrustedOrigins\": \"Nessuna origine attendibile configurata\",\n \"noImageHosts\": \"Nessun host: le immagini degli altri host aspettano un clic\",\n \"oauthAuthorizationUrl\": \"es. https://provider.com/oauth/authorize\",\n \"oauthClientId\": \"es. my-client-app\",\n \"oauthClientSecret\": \"Inserisci il client secret\",\n \"oauthScopes\": \"es. read:contacts write:contacts\",\n \"oauthTokenUrl\": \"es. https://provider.com/oauth/token\",\n \"pages\": \"1, 4, 6, 8-12\",\n \"pasteJsonSample\": \"Incolla un esempio JSON per generare lo schema\",\n \"phone\": \"Inserisci il numero di telefono\",\n \"prompt\": \"Inserisci il prompt\",\n \"request\": \"Richiesta…\",\n \"search\": \"Cerca…\",\n \"secretEdit\": \"Lascia vuoto per mantenere il secret attuale\",\n \"select\": \"Seleziona\",\n \"selectAgent\": \"Seleziona un agente\",\n \"selectLanguage\": \"Seleziona lingua\",\n \"selectPriority\": \"Seleziona priorità\",\n \"similarity\": \"Inserisci la similarità\",\n \"sitemapUrl\": \"https://example.com/sitemap.xml\",\n \"slug\": \"Inserisci lo slug\",\n \"startDate\": \"Seleziona data inizio\",\n \"startUrl\": \"https://example.com\",\n \"temperature\": \"Inserisci la temperatura\",\n \"title\": \"Inserisci il titolo\",\n \"uploadFile\": \"Carica un file\",\n \"emailAddress\": \"nome{'@'}azienda.it\"\n },\n \"problemReasons\": {\n \"file-upload-validation\": {\n \"audio-too-large\": \"La registrazione supera 100 MB, il massimo che si trascrive: carica una copia più corta o più compressa, per esempio un m4a o un mp3.\"\n },\n \"gateway-disabled\": {\n \"gateway-disabled\": \"Questa organizzazione non usa il gateway AI della piattaforma, e questo documento ha bisogno di qualcosa che gira lì: l’embedding, se non è attivo sull’endpoint (Modelli, sezione Embedding), oppure il modello AI del documento, da sostituire con uno dell’endpoint.\",\n \"transcription-off\": \"Questa organizzazione non usa il gateway AI della piattaforma, che è dove si trascrivono le registrazioni audio: carica invece la trascrizione come file di testo.\"\n },\n \"input-validation\": {\n \"header-env-placeholder\": \"Un header richiama una variabile d'ambiente della piattaforma, che gli API tool non risolvono più: il valore dell'header parte così come è scritto, quindi scrivi il valore vero.\",\n \"header-origin-changed\": \"L'URL punta a un altro host: riscrivi i valori degli header, quelli salvati restano legati all'host precedente.\",\n \"header-url-host-placeholder\": \"Un tool con header ha bisogno di un host fisso: schema, host e porta del suo URL non possono contenere un segnaposto che compila il modello.\",\n \"header-value-missing\": \"Un header non ha valore: scrivilo, oppure togli l'header.\",\n \"secret-body-method\": \"Una richiesta GET o DELETE non ha body: metti i parametri segreti nella query string, oppure cambia il metodo.\",\n \"secret-env-placeholder\": \"Un parametro segreto richiama una variabile d'ambiente della piattaforma, che gli API tool non risolvono: scrivi il valore vero.\",\n \"secret-origin-changed\": \"L'URL punta a un altro host: riscrivi i valori dei parametri segreti, quelli salvati restano legati all'host precedente.\",\n \"secret-path-placeholder\": \"Un parametro segreto non può riempire un segnaposto del percorso dell'URL: il percorso lo compila il modello, che il segreto non lo vede.\",\n \"secret-url-host-placeholder\": \"Un tool con parametri segreti ha bisogno di un host fisso: schema, host e porta del suo URL non possono contenere un segnaposto che compila il modello.\",\n \"secret-value-missing\": \"Un parametro segreto non ha valore: scrivilo, oppure togli il parametro.\"\n },\n \"model-unavailable\": {\n \"embedding-endpoint-off\": \"L’endpoint che calcola l’embedding di questa organizzazione è spento: riaccendilo nella pagina Modelli.\",\n \"endpoint-off\": \"Questo documento ha bisogno dell’endpoint dell’organizzazione, per l’embedding o per il modello AI del documento, e l’endpoint è spento: riaccendilo nella pagina Modelli.\"\n },\n \"provider-request-failed\": {\n \"timeout\": \"Il provider esterno non ha risposto in tempo: riprova tra qualche istante.\"\n }\n },\n \"problems\": {\n \"conflict\": \"Si è verificato un conflitto. La risorsa potrebbe già esistere.\",\n \"conversation-blocked\": \"Questa conversazione è stata bloccata.\",\n \"credit-exhausted\": \"Crediti esauriti. Contatta l'amministratore.\",\n \"embedding-identity-failed\": \"L’endpoint non serve il modello di embedding dichiarato: i suoi vettori non corrisponderebbero alla base di conoscenza. Controlla l’id del modello.\",\n \"entity-not-found\": \"Risorsa non trovata o disabilitata.\",\n \"feature-disabled\": \"Funzionalità non attiva per la tua organizzazione.\",\n \"file-upload-disabled\": \"Il caricamento file non è abilitato per questo agente.\",\n \"file-upload-validation\": \"File non valido: verifica dimensione, tipo o numero di file.\",\n \"gateway-disabled\": \"Questa organizzazione non usa il gateway AI della piattaforma, quindi i suoi modelli non sono disponibili. Usa un modello dell’endpoint dell’organizzazione.\",\n \"hubspot-missing-scopes\": \"Il token HubSpot non ha i permessi necessari. Aggiungi lo scope \\\"crm.objects.owners.read\\\".\",\n \"input-validation\": \"Validazione input fallita. Verifica il formato dei dati.\",\n \"internal-server-error\": \"Si è verificato un errore imprevisto. Riprova più tardi.\",\n \"mcp-endpoint-invalid\": \"Questo URL non punta a un endpoint MCP. Controlla il percorso, di solito i server MCP lo espongono sotto /mcp.\",\n \"method-not-allowed\": \"Metodo HTTP non consentito per questo endpoint.\",\n \"model-default-unavailable\": \"Un modello predefinito deve essere un modello che l’organizzazione può usare: scegli prima un altro predefinito.\",\n \"model-not-chat\": \"Questo è un modello di embedding, non di chat: non può rispondere a un agente.\",\n \"model-price-missing\": \"Un modello non si attiva senza un prezzo: scegli un modello a cui equivale, o scrivi il prezzo.\",\n \"model-unavailable\": \"Il modello scelto non è disponibile per questa organizzazione: scegline un altro.\",\n \"not-found\": \"Pagina non trovata.\",\n \"oauth-authorization-required\": \"Autorizzazione OAuth richiesta. Completa il flusso di autorizzazione per questo server MCP.\",\n \"oauth-config-incomplete\": \"Configurazione OAuth incompleta. Imposta il Client ID per abilitare OAuth.\",\n \"origin-not-allowed\": \"L'origine della richiesta non è consentita.\",\n \"price-list-unavailable\": \"Il listino del gateway ora non è raggiungibile: riprova, o scrivi il prezzo a mano.\",\n \"provider-request-failed\": \"Il provider esterno ha rifiutato la richiesta.\",\n \"rate-limit-exceeded\": \"Troppe richieste. Riprova più tardi.\",\n \"two-factor-required\": \"Un'organizzazione di cui fai parte richiede la verifica in due passaggi: configurala per continuare.\",\n \"unauthorized\": \"Autenticazione richiesta. Effettua l'accesso.\",\n \"validation-error\": \"Errore di validazione. Verifica i dati inviati.\"\n },\n \"profileSection\": {\n \"backToApp\": \"Torna all'app\",\n \"general\": {\n \"title\": \"Profilo e preferenze\",\n \"description\": \"Il tuo nome, la tua immagine e come vedi l'app.\",\n \"pictureHint\": \"PNG o JPG.\"\n },\n \"notifications\": {\n \"title\": \"Notifiche\",\n \"description\": \"Quali avvisi ricevi, nell'app e per email.\",\n \"groups\": \"Tipi di notifica\",\n \"alwaysOn\": \"Gli avvisi sulla sicurezza dell'account e i messaggi degli amministratori arrivano sempre.\",\n \"loadFailed\": \"Non è stato possibile leggere le tue preferenze.\",\n \"channel\": {\n \"inApp\": \"App\",\n \"email\": \"Email\"\n },\n \"agent_replies\": {\n \"title\": \"Risposte degli agenti\",\n \"summary\": \"Quando un agente a cui hai chiesto di ricontrollare ha una novità per te.\"\n },\n \"documents\": {\n \"title\": \"Documenti e fonti\",\n \"summary\": \"I documenti che non si elaborano e le pagine tolte da una fonte sincronizzata.\"\n },\n \"integrations\": {\n \"title\": \"Integrazioni e chiavi\",\n \"summary\": \"Un accesso a un'integrazione chiuso da un amministratore e le API key in scadenza.\"\n },\n \"flagged_conversations\": {\n \"title\": \"Conversazioni segnalate\",\n \"summary\": \"Le conversazioni che l'analisi ha segnalato o bloccato.\"\n },\n \"usage_limits\": {\n \"title\": \"Limiti di utilizzo\",\n \"summary\": \"Quando l'organizzazione esaurisce le esecuzioni automatiche del giorno.\"\n }\n },\n \"security\": {\n \"title\": \"Sicurezza\",\n \"description\": \"Come entri e da dove sei collegato.\",\n \"signIn\": \"Accesso\",\n \"passwordSummary\": \"Per entrare insieme a {email}.\",\n \"connectedAccountsNote\": \"per entrare senza password\",\n \"connected\": \"Collegato\",\n \"devices\": \"Nessun dispositivo | Un dispositivo | {count} dispositivi\",\n \"deviceOn\": \"{browser} su {os}\"\n },\n \"integrations\": {\n \"title\": \"Integrazioni e API key\",\n \"description\": \"I servizi che gli agenti usano per te e le chiavi per chiamare la piattaforma.\",\n \"available\": \"Da collegare\",\n \"keyExpires\": \"Scade il {date}\",\n \"keyNeverExpires\": \"Senza scadenza\",\n \"keyRequests\": \"Nessuna richiesta | Una richiesta | {count} richieste\"\n },\n \"organizations\": {\n \"title\": \"Organizzazioni\",\n \"description\": \"Dove lavori: cambia organizzazione, crea una chiave, esci.\",\n \"current\": \"Dove sei adesso\",\n \"onlyYou\": \"Solo tu\",\n \"members\": \"{count} membro | {count} membri\",\n \"memberSince\": \"Membro dal {date}\",\n \"asksTwoFactor\": \"Chiede la verifica in due passaggi\"\n },\n \"data\": {\n \"title\": \"I miei dati\",\n \"description\": \"I file caricati nelle chat, una copia di tutto, il tuo account.\",\n \"account\": \"Il tuo account\"\n }\n },\n \"refreshInterval\": {\n \"daily\": \"Ogni giorno\",\n \"manual\": \"Manuale\",\n \"monthly\": \"Ogni mese\",\n \"weekly\": \"Ogni settimana\"\n },\n \"releaseNotes\": {\n \"heading\": \"Novità\",\n \"installed\": \"Stai usando la\",\n \"lead\": \"Ultime funzionalità, miglioramenti e correzioni.\"\n },\n \"role\": {\n \"admin\": \"Amministratore\",\n \"member\": \"Membro\",\n \"owner\": \"Proprietario\",\n \"user\": \"Utente\"\n },\n \"route\": {\n \"agentEndpoints\": \"API endpoints\",\n \"agents\": \"Agenti\",\n \"apiTools\": \"API tools\",\n \"backoffice\": \"Backoffice\",\n \"branding\": \"Branding\",\n \"catalog\": \"Catalogo\",\n \"channels\": \"Canali\",\n \"chatLogs\": \"Chat\",\n \"copatForYou\": \"Eight Wave for-U\",\n \"dashboard\": \"Dashboard\",\n \"dataProtection\": \"Protezione dei dati\",\n \"documents\": \"Documenti\",\n \"endpointLogs\": \"Log endpoint\",\n \"feedbacks\": \"Feedback\",\n \"frontoffice\": \"Frontoffice\",\n \"home\": \"Home\",\n \"integrations\": \"Integrazioni\",\n \"invitations\": \"Inviti\",\n \"leads\": \"Contatti\",\n \"mcpServer\": \"Server MCP\",\n \"members\": \"Membri\",\n \"models\": \"Modelli\",\n \"notFound\": \"Pagina non trovata\",\n \"notifications\": \"Notifiche\",\n \"organizations\": \"Organizzazioni\",\n \"playground\": \"Playground\",\n \"profile\": \"Profilo\",\n \"reasoningLogs\": \"Ragionamento\",\n \"releaseNotes\": \"Note di rilascio\",\n \"requestPasswordReset\": \"Password dimenticata\",\n \"resetPassword\": \"Reimposta password\",\n \"revisedAnswers\": \"Correzioni\",\n \"signIn\": \"Accedi\",\n \"signUp\": \"Registrati\",\n \"subAgents\": \"Sotto-agenti\",\n \"system\": \"Sistema\",\n \"twoFactor\": \"Verifica in due passaggi\",\n \"twoFactorSetup\": \"Configura la verifica in due passaggi\",\n \"users\": \"Utenti\",\n \"video\": \"Video\",\n \"virtualAssistant\": \"Assistente virtuale\"\n },\n \"showForm\": {\n \"completed\": \"Completato\",\n \"otherPlaceholder\": \"Altro…\",\n \"step\": \"Domanda {current} di {total}\"\n },\n \"subAgentStatus\": {\n \"active\": \"Attivo\",\n \"inactive\": \"Inattivo\"\n },\n \"time\": {\n \"future\": \"tra\",\n \"past\": \"fa\",\n \"unit\": {\n \"day\": \"giorno | giorni\",\n \"hour\": \"ora | ore\",\n \"minute\": \"minuto | minuti\",\n \"second\": \"secondo | secondi\"\n }\n },\n \"toolApproval\": {\n \"approved\": \"Approvato: l'azione è stata eseguita.\",\n \"cancelled\": \"Annullato: l'azione non è stata eseguita.\",\n \"confirmed\": \"Confermato: l'agente ha proseguito con l'azione.\",\n \"denied\": \"Rifiutato: l'azione non è stata eseguita.\",\n \"expired\": \"Questa richiesta non è più confermabile: l'azione non è stata eseguita.\",\n \"prompt\": \"Per continuare serve la tua conferma:\"\n },\n \"toolGroup\": {\n \"channels\": \"Canali di messaggistica\",\n \"communication\": \"Comunicazione\",\n \"delegation\": \"Delega e automazione\",\n \"knowledgeSearch\": \"Knowledge base e ricerca\",\n \"locationWeather\": \"Localizzazione e meteo\",\n \"personalization\": \"Personalizzazione\",\n \"richContent\": \"Contenuti interattivi\"\n },\n \"toolGroupInfo\": {\n \"channels\": \"Capacità aggiuntive sulle piattaforme di messaggistica come Microsoft Teams.\",\n \"communication\": \"Email, messaggi, moduli di contatto ed eventi calendario.\",\n \"delegation\": \"Worker generici che l'agente può eseguire in parallelo per gestire sotto-attività indipendenti, e controlli che ripete da solo nel tempo quando l'utente lo chiede.\",\n \"knowledgeSearch\": \"Ricerca nella knowledge base, fonti documentali e suggerimenti di pagine web.\",\n \"locationWeather\": \"Geolocalizzazione, geocodifica, mappe interattive e previsioni meteo.\",\n \"personalization\": \"Memoria per-utente, file caricati dall'utente stesso e fogli di calcolo allegati in chat.\",\n \"richContent\": \"Contenuti strutturati: artefatti, confronti, gallerie di immagini, codici QR e risposte guidate.\"\n },\n \"toolSelection\": {\n \"cost\": \"Costo addebitato all’organizzazione: {cost}\",\n \"enabled\": \"Riattivato\",\n \"exposed\": \"Gruppi esposti al modello: probabilità da {threshold} in su, o usati prima\",\n \"failed\": \"Non riuscita\",\n \"inputTokens\": \"Token in ingresso\",\n \"kind\": {\n \"api\": \"API tool\",\n \"mcp\": \"Server MCP\",\n \"subagent\": \"Sotto-agente\"\n },\n \"latency\": \"Tempo della valutazione, limite {budget} ms\",\n \"leadFailed\": \"La valutazione non è riuscita o non ha risposto entro {budget} ms: tutti i gruppi sono rimasti esposti.\",\n \"missed\": \"Mancato\",\n \"missedActive\": \"{n} gruppo usato era stato escluso, e il modello l'ha dovuto riattivare | {n} gruppi usati erano stati esclusi, e il modello li ha dovuti riattivare\",\n \"missedShadow\": \"{n} gruppo usato sarebbe stato escluso | {n} gruppi usati sarebbero stati esclusi\",\n \"mode\": {\n \"active\": \"Attiva\",\n \"shadow\": \"Ombra\"\n },\n \"modeHint\": {\n \"active\": \"Applicata prima del primo passo: il modello ha visto solo i gruppi con la spunta, e poteva riattivare gli altri.\",\n \"shadow\": \"Registrata in parallelo alla risposta: il modello ha visto tutti i gruppi, e la spunta serve solo al confronto con le chiamate.\"\n },\n \"notCharged\": \"Non addebitata\",\n \"probability\": \"Probabilità che il messaggio abbia bisogno del gruppo; esposto da {threshold}\",\n \"seeded\": \"Usato in precedenza\",\n \"title\": \"Selezione dei tool\",\n \"tools\": \"{n} tool | {n} tool\",\n \"used\": \"Usato\"\n },\n \"tooltip\": {\n \"agentsUsedInfo\": \"Numero di agenti utilizzati rispetto al massimo disponibile.\",\n \"mcpConnectionStatus\": {\n \"active\": \"Gli agenti la usano a nome dell'utente.\",\n \"orphan\": \"Nessun agente la usa più (integrazione eliminata, disattivata o tolta dagli agenti), ma l'accesso è ancora salvato.\",\n \"stale\": \"Scaduta e senza modo di rinnovarla: si cancella al prossimo uso, e l'utente dovrà accedere di nuovo.\"\n },\n \"requestsUsedInfo\": \"Numero di richieste utilizzate rispetto al massimo consentito.\"\n },\n \"turnEvaluation\": {\n \"cost\": \"Costo, non addebitato all'organizzazione: {cost}\",\n \"leadFailed\": \"La valutazione non è riuscita o non ha risposto entro {budget} ms: non è stato registrato niente.\",\n \"modeHint\": \"Registrata dopo la risposta, senza effetti: per ora nessuno legge queste probabilità.\",\n \"probability\": \"Probabilità che il modello di valutazione dà alla domanda: da 0,5 in su propende per il sì\",\n \"question\": {\n \"abusive\": \"Messaggio offensivo\",\n \"asksHuman\": \"Chiede un operatore\",\n \"durableFact\": \"Fatto durevole sull'utente\",\n \"informationGap\": \"Manca un'informazione, non una capacità\",\n \"manipulation\": \"Prova a manipolare l'agente\",\n \"missingInfo\": \"La risposta dice che l'informazione manca\"\n },\n \"title\": \"Valutazione a fine turno\",\n \"version\": \"Versione delle domande: {version}\"\n },\n \"twoFactor\": {\n \"adminBackupCodes\": \"Nessun codice di recupero rimasto | Un codice di recupero rimasto | {count} codici di recupero rimasti\",\n \"adminChanges\": \"Ultime modifiche\",\n \"adminChangesEmpty\": \"Ancora nessuna modifica.\",\n \"adminChangesHint\": \"Dagli avvisi inviati all'utente, che può cancellarli.\",\n \"adminDevicesForgotten\": \"I dispositivi fidati sono stati dimenticati.\",\n \"adminFailedAttempts\": \"Un codice sbagliato di fila | {count} codici sbagliati di fila\",\n \"adminFilterEmpty\": \"Nessun utente in questo stato.\",\n \"adminForgetDevices\": \"Dimentica i dispositivi fidati\",\n \"adminForgetDevicesDescription\": \"Su ognuno il prossimo accesso chiederà di nuovo il codice. Glielo diremo per email.\",\n \"adminForgetDevicesQuestion\": \"Dimenticare i dispositivi fidati di {name}?\",\n \"adminLocked\": \"In pausa dopo troppi codici sbagliati, fino al {date}.\",\n \"adminPasskeySynced\": \"Sincronizzata tra i suoi dispositivi\",\n \"adminRemovePasskeyDescription\": \"Non servirà più per entrare. Le sessioni già aperte restano: se il dispositivo è perso, chiudile da Sessioni attive. Glielo diremo per email.\",\n \"adminRemovePasskeyQuestion\": \"Rimuovere la passkey {passkey} di {name}?\",\n \"adminRequiredPending\": \"Richiesta da {organizations} e non ancora configurata: la prossima pagina si fermerà sulla configurazione.\",\n \"adminStateNoneHint\": \"Nessun secondo fattore e nessuna passkey\",\n \"adminSummaryAll\": \"Tutti\",\n \"adminTrustedDevices\": \"Nessun dispositivo fidato | Un dispositivo fidato, fino al {date} | {count} dispositivi fidati, l'ultimo fino al {date}\",\n \"adminUnlock\": \"Sblocca\",\n \"adminUnlockDescription\": \"Fallo solo se te l'ha chiesto: la pausa rallenta chi sta provando i suoi codici. Glielo diremo per email.\",\n \"adminUnlocked\": \"Sbloccata: può inserire di nuovo il codice.\",\n \"adminUnlockQuestion\": \"Sbloccare la verifica in due passaggi di {name}?\",\n \"adoptionRatio\": \"{count} su {total}\",\n \"adoptionState\": {\n \"totp\": \"Con l'app\",\n \"otp\": \"Con l'email\",\n \"passkey\": \"Con una passkey\",\n \"required\": \"Da configurare\",\n \"none\": \"Senza verifica\"\n },\n \"adoptionTitle\": \"Membri protetti\",\n \"adoptionTitleUsers\": \"Utenti protetti\",\n \"backupCode\": \"Codice di recupero\",\n \"backupCodesDescription\": \"Ogni codice vale una volta sola, al posto di quello dell'app. Conservali in un posto sicuro: senza telefono e senza questi codici, solo un amministratore può ridarti l'accesso.\",\n \"backupCodesFileHeader\": \"Codici di recupero di {name}. Ognuno vale una volta sola.\",\n \"backupCodesReplaced\": \"Ecco i nuovi codici di recupero: quelli vecchi non valgono più. Salvali adesso, non verranno mostrati di nuovo.\",\n \"backupCodesSaved\": \"Ho salvato i codici\",\n \"badge\": \"Verifica in due passaggi\",\n \"challengeApp\": \"Scrivi il codice a 6 cifre della tua app di autenticazione.\",\n \"challengeBackup\": \"Scrivi uno dei codici di recupero che hai salvato.\",\n \"challengeEmailSending\": \"Ti stiamo inviando un codice via email.\",\n \"challengeEmailSent\": \"Ti abbiamo inviato un codice a 6 cifre via email. Scade fra 5 minuti.\",\n \"challengeTitle\": \"Verifica in due passaggi\",\n \"code\": \"Codice a 6 cifre\",\n \"column\": \"2FA\",\n \"disabledMessage\": \"La verifica in due passaggi è disattivata.\",\n \"enabledMessage\": \"La verifica in due passaggi è attiva.\",\n \"manualKey\": \"Non riesci a inquadrarlo? Inserisci questa chiave nell'app:\",\n \"memberOff\": \"Non attiva\",\n \"memberOn\": \"Attiva\",\n \"memberPasskey\": \"Passkey\",\n \"memberPasskeyHint\": \"Accede con una passkey, che rispetta l'obbligo. Con la sola password deve prima configurare la verifica.\",\n \"memberPending\": \"Da configurare\",\n \"memberPendingHint\": \"Accede con la password e non ha un secondo fattore: dovrà configurarlo prima di proseguire\",\n \"memberSocialOnly\": \"Non serve\",\n \"memberSocialOnlyHint\": \"Accede solo con Google o Microsoft, quindi vale la sicurezza del provider\",\n \"methodApp\": \"App di autenticazione\",\n \"methodAppSummary\": \"Un codice che cambia ogni 30 secondi, da Google Authenticator, Microsoft Authenticator, 1Password o simili. Consigliata.\",\n \"methodEmail\": \"Codice via email\",\n \"methodEmailSummary\": \"Un codice inviato a {email} a ogni accesso con la password.\",\n \"newBackupCodes\": \"Nuovi codici di recupero\",\n \"newBackupCodesDescription\": \"I codici che hai ora smettono di funzionare e ne ricevi dieci nuovi.\",\n \"passkeyAdd\": \"Aggiungi una passkey\",\n \"passkeyAddDescription\": \"Conferma la password, poi segui il dispositivo: ti chiederà l'impronta, il volto o il PIN.\",\n \"passkeyAdded\": \"La passkey è pronta: usala al prossimo accesso.\",\n \"passkeyAddNoPasswordDescription\": \"Segui il dispositivo: ti chiederà l'impronta, il volto o il PIN.\",\n \"passkeyAlreadyRegistered\": \"Questo dispositivo ha già una passkey per il tuo account.\",\n \"passkeyCancelled\": \"Il dispositivo non ha creato la passkey: riprova quando vuoi.\",\n \"passkeyCreate\": \"Crea la passkey\",\n \"passkeyCreatedAt\": \"Aggiunta il {date}\",\n \"passkeyDeviceBound\": \"Solo su un dispositivo\",\n \"passkeyDeviceRefused\": \"Il dispositivo non ha creato la passkey. Controlla che abbia un blocco schermo, un'impronta o un PIN e riprova.\",\n \"passkeyFallbackName\": \"Passkey\",\n \"passkeyName\": \"Nome\",\n \"passkeyNameHint\": \"Per riconoscerla nella lista\",\n \"passkeyRemove\": \"Rimuovi\",\n \"passkeyRemoved\": \"Passkey rimossa.\",\n \"passkeyRemoveDescription\": \"Non servirà più per accedere. Puoi aggiungerne una nuova quando vuoi.\",\n \"passkeyRemoveQuestion\": \"Rimuovere la passkey {name}?\",\n \"passkeys\": \"Passkey\",\n \"passkeysDescription\": \"Accedi con l'impronta, il volto o il PIN del dispositivo: niente password e niente codice. Una passkey vale anche per le organizzazioni che richiedono la verifica in due passaggi.\",\n \"passkeysEmpty\": \"Nessuna passkey.\",\n \"passkeySynced\": \"Sincronizzata tra i tuoi dispositivi\",\n \"qrLabel\": \"QR code per l'app di autenticazione\",\n \"requireConsequence\": \"I membri che accedono con la password e non l'hanno ancora attiva verranno fermati alla prossima pagina finché non la configurano.\",\n \"requiredBy\": \"Richiesta da {organizations}.\",\n \"requiredByPasskeyEnough\": \"Richiesta da {organizations}: la tua passkey basta, con la sola password ti verrà chiesto di configurarla.\",\n \"requireHint\": \"Chi accede con la password deve configurarla prima di usare la piattaforma. Chi accede con Google o Microsoft non è toccato.\",\n \"requireLabel\": \"Richiedi la verifica in due passaggi\",\n \"requireOff\": \"La verifica in due passaggi non è più obbligatoria.\",\n \"requireOn\": \"Ora la verifica in due passaggi è obbligatoria.\",\n \"requireQuestion\": \"Richiedere la verifica in due passaggi ai membri?\",\n \"requireTitle\": \"Richiedi la verifica in due passaggi\",\n \"reset\": \"Reimposta la verifica in due passaggi\",\n \"resetConfirm\": \"Reimposta\",\n \"resetDescription\": \"L'app di autenticazione e i codici di recupero smettono di funzionare e l'utente viene disconnesso ovunque. Potrà entrare con la sola password e configurarla di nuovo: lo avvisiamo via email.\",\n \"resetQuestion\": \"Reimpostare la verifica in due passaggi di {name}?\",\n \"scanDescription\": \"Apri l'app di autenticazione, aggiungi un account e inquadra il QR code. Poi scrivi il codice a 6 cifre che mostra.\",\n \"sendAgain\": \"Invia un nuovo codice\",\n \"setupAddAnotherPasskey\": \"Aggiungi una nuova passkey\",\n \"setupAddPasskey\": \"Usa una passkey\",\n \"setupDescription\": \"{organizations} la richiede a chi accede con la password.\",\n \"setupSignInWithPasskey\": \"Accedi con la tua passkey\",\n \"setupTitle\": \"Configura la verifica in due passaggi\",\n \"signInState\": {\n \"totp\": \"App\",\n \"otp\": \"Email\",\n \"passkey\": \"Passkey\",\n \"required\": \"Da configurare\",\n \"none\": \"Non attiva\"\n },\n \"signInWithPasskey\": \"Accedi con una passkey\",\n \"stateNoPassword\": \"Non disponibile per questo account\",\n \"stateOff\": \"Non attiva\",\n \"stateOnApp\": \"Attiva, con un'app di autenticazione\",\n \"stateOnEmail\": \"Attiva, con un codice via email\",\n \"summaryNoPassword\": \"Accedi con Google o Microsoft, quindi vale la sicurezza del provider. Se aggiungi una password, potrai proteggerla anche qui.\",\n \"summaryOff\": \"Chiede un codice, oltre alla password, a ogni accesso con email e password.\",\n \"summaryOnApp\": \"Nessun codice di recupero rimasto: generane di nuovi. | Un codice di recupero rimasto. | {count} codici di recupero rimasti.\",\n \"summaryOnEmail\": \"Il codice arriva a {email}.\",\n \"switchToApp\": \"Usa un'app di autenticazione\",\n \"title\": \"Verifica in due passaggi\",\n \"trustDevice\": \"Ricorda questo dispositivo per 30 giorni\",\n \"turnOff\": \"Disattiva\",\n \"turnOffDescription\": \"Da adesso per entrare basterà la password. Ti mandiamo un'email di conferma.\",\n \"turnOffRequired\": \"Un'organizzazione di cui fai parte la richiede\",\n \"turnOffTitle\": \"Disattiva la verifica in due passaggi\",\n \"turnOn\": \"Attiva\",\n \"turnOnTitle\": \"Attiva la verifica in due passaggi\",\n \"useApp\": \"Usa l'app di autenticazione\",\n \"useBackupCode\": \"Usa un codice di recupero\",\n \"verify\": \"Verifica\"\n },\n \"userFiles\": {\n \"allAgents\": \"Tutti gli agenti\",\n \"chatFilesEmpty\": \"Nessun file caricato in questa chat.\",\n \"chatFilesTitle\": \"File in questa chat\",\n \"deleteSpreadsheet\": \"Elimina file\",\n \"deleteSpreadsheetConfirm\": \"Si cancellano il file caricato e tutte le versioni scritte dall'agente, anche dalla chat. Non si può annullare.\",\n \"emptyHint\": \"I file che carichi in chat vengono aggiunti qui automaticamente e diventano ricercabili dall'agente.\",\n \"emptyTitle\": \"Nessun file\",\n \"exclude\": \"Rimuovi file\",\n \"excludeConfirm\": \"L'agente non potrà più cercarlo. Resta nella chat in cui lo avete caricato.\",\n \"loading\": \"Caricamento…\",\n \"open\": \"Apri file\",\n \"openInChat\": \"Apri nella chat\",\n \"spreadsheetInChatOnly\": \"Solo nella sua chat\",\n \"spreadsheetVersion\": \"Modificato dall'agente\",\n \"subtitle\": \"I file che hai caricato in chat, disponibili all'agente.\",\n \"title\": \"I miei file\",\n \"untitled\": \"File senza nome\",\n \"uploadedAt\": \"Caricato\"\n },\n \"validation\": {\n \"duplicateHeader\": \"Due header hanno lo stesso nome\",\n \"duplicateSecretParameter\": \"Due parametri segreti hanno lo stesso nome\",\n \"invalidPhoneNumber\": \"Il numero inserito non è corretto\",\n \"invalidToolName\": \"Il nome deve essere in snake_case o kebab-case (lettere minuscole, numeri, underscore e trattini)\",\n \"passwordMismatch\": \"Le password non coincidono\"\n },\n \"voiceEagerness\": {\n \"eager\": \"Pronto\",\n \"normal\": \"Normale\",\n \"patient\": \"Paziente\"\n },\n \"weather\": {\n \"airQuality\": \"Qualità dell'aria\",\n \"aqiFair\": \"Discreta\",\n \"aqiGood\": \"Buona\",\n \"aqiHazardous\": \"Pessima\",\n \"aqiModerate\": \"Moderata\",\n \"aqiPoor\": \"Scarsa\",\n \"aqiVeryPoor\": \"Molto scarsa\",\n \"dailyForecast\": \"Previsioni giornaliere\",\n \"feelsLike\": \"Percepita\",\n \"today\": \"Oggi\"\n },\n \"unsubscribe\": {\n \"title\": \"Disiscriviti dalle mail\",\n \"message\": \"Smetti di ricevere per email le notifiche di «{group}». Quelle nell'app non cambiano.\",\n \"action\": \"Disiscriviti\",\n \"doneTitle\": \"Fatto\",\n \"doneMessage\": \"Non riceverai più per email le notifiche di «{group}». Puoi riaccenderle quando vuoi dal tuo profilo.\",\n \"invalidTitle\": \"Link non valido\",\n \"invalidMessage\": \"Questo link non vale più. Puoi spegnere le mail dal tuo profilo, nella sezione Notifiche.\",\n \"openSettings\": \"Apri le preferenze di notifica\"\n }\n}\n","{\n \"action\": {\n \"accept\": \"Accept\",\n \"acceptRedundancy\": \"Confirm redundant\",\n \"activate\": \"Activate\",\n \"add\": \"Add\",\n \"addExistingDocument\": \"Add existing document\",\n \"addField\": \"Add field\",\n \"addFieldMapping\": \"Add mapping\",\n \"addHint\": \"Press enter to add\",\n \"addIntegration\": \"Add integration\",\n \"addMember\": \"Add member\",\n \"addNestedField\": \"Nested field\",\n \"addToCalendar\": \"Add to calendar\",\n \"allDocuments\": \"All documents\",\n \"analyzeChat\": \"Analyze conversation\",\n \"apply\": \"Apply\",\n \"ask\": \"Ask\",\n \"attachFile\": \"Attach a file\",\n \"back\": \"Back\",\n \"backToAgent\": \"Back to agent\",\n \"backToDocuments\": \"Back to documents\",\n \"backToHome\": \"Back to home\",\n \"backToSignIn\": \"Back to sign in\",\n \"ban\": \"Ban user\",\n \"blockChat\": \"Block conversation\",\n \"cancel\": \"Cancel\",\n \"cancelInvitation\": \"Cancel invitation\",\n \"change\": \"Change\",\n \"changeAgent\": \"Change agent\",\n \"changeRole\": \"Change role\",\n \"check\": \"Check\",\n \"clear\": \"Clear\",\n \"clearSearch\": \"Clear search\",\n \"close\": \"Close\",\n \"closeSidebar\": \"Close sidebar\",\n \"collapse\": \"Collapse\",\n \"compare\": \"Compare\",\n \"connect\": \"Connect\",\n \"continue\": \"Continue\",\n \"copied\": \"Copied\",\n \"copy\": \"Copy\",\n \"crawl\": \"Crawl\",\n \"create\": \"Create\",\n \"createAgent\": \"Create agent\",\n \"createApiKey\": \"Create API key\",\n \"createDocument\": \"Create document\",\n \"createFolder\": \"Create folder\",\n \"createNew\": \"Create new\",\n \"createNewChat\": \"Start a new chat\",\n \"createNotification\": \"Create notification\",\n \"createRevise\": \"Revise answer\",\n \"createSubfolder\": \"Create subfolder\",\n \"deactivate\": \"Deactivate\",\n \"decline\": \"Decline\",\n \"delete\": \"Delete\",\n \"deleteAllMemories\": \"Delete all memories\",\n \"deleteAllNotifications\": \"Delete all notifications\",\n \"deleteFolder\": \"Delete folder\",\n \"deleteMyConversations\": \"Delete my conversations\",\n \"deleteProfile\": \"Delete profile\",\n \"deleteRow\": \"Delete row\",\n \"deselectHint\": \"Press enter to remove\",\n \"disableAutoRefresh\": \"Disable automatic update\",\n \"disconnect\": \"Disconnect\",\n \"embeddingBackToPlatform\": \"Back to the platform\",\n \"embeddingRemove\": \"Remove\",\n \"embeddingUseEndpoint\": \"Use the endpoint\",\n \"modelEndpointConnect\": \"Connect your endpoint\",\n \"dismissRedundancy\": \"Restore to search\",\n \"documentRefreshNow\": \"Update now\",\n \"documentSetRefresh\": \"Set update\",\n \"documentSourceSettings\": \"Sync settings\",\n \"documentSourceSyncNow\": \"Sync now\",\n \"documentSourceUnlink\": \"Unlink\",\n \"download\": \"Download\",\n \"downloadIcs\": \"Download .ics\",\n \"downloadTeamsApp\": \"Download Teams app (.zip)\",\n \"downvote\": \"Not helpful\",\n \"dropFile\": \"Drop file here\",\n \"dropFilesToImport\": \"Drop files to import the documents\",\n \"duplicate\": \"Duplicate\",\n \"edit\": \"Edit\",\n \"editAgent\": \"Edit agent\",\n \"editDocument\": \"Edit document\",\n \"editRevise\": \"Update revised answer\",\n \"editSchema\": \"Edit schema\",\n \"enableAutoRefresh\": \"Enable automatic update\",\n \"expand\": \"Expand\",\n \"export\": \"Export\",\n \"exportMyData\": \"Export my data\",\n \"feedback\": \"I want to make a report\",\n \"foldSidebar\": \"Close sidebar\",\n \"forgetPassword\": \"Forgot your password?\",\n \"generate\": \"Generate\",\n \"generateFromJson\": \"Generate from JSON\",\n \"getDirections\": \"Directions\",\n \"getMoreInfo\": \"More informations\",\n \"goBack\": \"Go back\",\n \"hangUp\": \"End the call\",\n \"impersonate\": \"Impersonate\",\n \"import\": \"Import ({count})\",\n \"importFromCrawler\": \"Import from crawler\",\n \"integrationCheck\": \"Check connection\",\n \"integrationConnectMicrosoft\": \"Connect with Microsoft\",\n \"integrationConnectApp\": \"Connect the app\",\n \"integrationUseOwnApp\": \"Use an app of your own tenant\",\n \"integrationAdvancedSetup\": \"Advanced setup\",\n \"integrationDisconnect\": \"Disconnect\",\n \"integrationReconnect\": \"Reconnect\",\n \"integrationRotateSecret\": \"Replace the client secret\",\n \"invite\": \"Invite\",\n \"inviteMember\": \"Invite member\",\n \"leave\": \"Leave\",\n \"link\": \"Link\",\n \"linkExisting\": \"Link existing\",\n \"linkFromProvider\": \"Link from {provider}\",\n \"loadDefaults\": \"Load defaults\",\n \"manageAgentAccess\": \"Manage agent access\",\n \"manageProfile\": \"Manage your profile\",\n \"markAllAsRead\": \"Mark all as read\",\n \"markAsRead\": \"Mark as read\",\n \"moreActions\": \"Actions\",\n \"moveDown\": \"Move down\",\n \"moveHere\": \"Move here\",\n \"moveToFolder\": \"Move to folder\",\n \"moveUp\": \"Move up\",\n \"mute\": \"Mute the microphone\",\n \"next\": \"Next\",\n \"open\": \"Open\",\n \"openFilters\": \"Open the filters\",\n \"openInGmail\": \"Open in Gmail\",\n \"openInMailApp\": \"Open in mail app\",\n \"openInOutlook\": \"Open in Outlook\",\n \"openInSms\": \"Open in SMS\",\n \"openInTelegram\": \"Open in Telegram\",\n \"openInWhatsApp\": \"Open in WhatsApp\",\n \"openInYahooMail\": \"Open in Yahoo Mail\",\n \"openSettings\": \"Open settings\",\n \"openSidebar\": \"Open sidebar\",\n \"pan\": \"Pan\",\n \"pause\": \"Pause\",\n \"pin\": \"Pin\",\n \"playVoicePreview\": \"Play a sample of this voice\",\n \"prev\": \"Previous\",\n \"previewAsPage\": \"Preview as chat page\",\n \"previewAsWidget\": \"Preview as widget\",\n \"previous\": \"Previous\",\n \"proceed\": \"Proceed\",\n \"profileMenu\": \"Profile, theme and language\",\n \"recoverPassword\": \"Recover password\",\n \"refill\": \"Refill\",\n \"refillHistory\": \"Refill history\",\n \"refresh\": \"Refresh\",\n \"refreshPrices\": \"Refresh prices\",\n \"setPrice\": \"Set the price\",\n \"regenerate\": \"Regenerate\",\n \"remove\": \"Remove\",\n \"removeField\": \"Remove field\",\n \"renameChat\": \"Rename\",\n \"renameFolder\": \"Rename folder\",\n \"reorder\": \"Reorder\",\n \"reprocess\": \"Reprocess\",\n \"resendInvitation\": \"Resend invitation\",\n \"reset\": \"Reset\",\n \"resetPassword\": \"Reset password\",\n \"resize\": \"Resize\",\n \"resume\": \"Resume\",\n \"resumeInPlayground\": \"Resume in playground\",\n \"retry\": \"Retry\",\n \"retryNow\": \"Try again now\",\n \"revoke\": \"Revoke\",\n \"revokeAllOtherSessions\": \"Sign out all\",\n \"revokeAllSessions\": \"Revoke all sessions\",\n \"run\": \"Run\",\n \"save\": \"Save\",\n \"scrollToBottom\": \"Back to bottom\",\n \"searchAllFolders\": \"Search in all folders\",\n \"select\": \"Select\",\n \"selectHint\": \"Press enter to select\",\n \"selected\": \"Selected\",\n \"send\": \"Send\",\n \"sendLink\": \"Send link\",\n \"share\": \"Share\",\n \"shareDocumentWithAgents\": \"Share with other agents\",\n \"showLess\": \"Show less\",\n \"showMore\": \"View more {count}\",\n \"signIn\": \"Sign in\",\n \"signInWithSocialProvider\": \"Sign in with {provider}\",\n \"signOut\": \"Sign out\",\n \"signUp\": \"Sign up\",\n \"signUpWithSocialProvider\": \"Sign up with {provider}\",\n \"startNewChat\": \"Start a new chat\",\n \"stop\": \"Stop\",\n \"stopImpersonation\": \"Stop impersonation\",\n \"stopVoicePreview\": \"Stop the sample\",\n \"submit\": \"Submit\",\n \"switch\": \"Switch\",\n \"takePhoto\": \"Take a photo\",\n \"talk\": \"Talk\",\n \"testIntegration\": \"Test connection\",\n \"toggleIntegration\": \"Enable/Disable\",\n \"toggleTheme\": \"Change theme\",\n \"unban\": \"Unban user\",\n \"unblockChat\": \"Unblock conversation\",\n \"unfoldSidebar\": \"Open sidebar\",\n \"unlinkDocument\": \"Unlink from agent\",\n \"unmute\": \"Unmute the microphone\",\n \"unpin\": \"Unpin\",\n \"update\": \"Update\",\n \"upvote\": \"Helpful\",\n \"useColorsForAgentHeader\": \"Use color for header\",\n \"view\": \"View\",\n \"viewAgentTree\": \"View tree\",\n \"viewAll\": \"View all\",\n \"viewChat\": \"View the chat\",\n \"viewDetails\": \"View details\",\n \"viewDocument\": \"View the document\",\n \"viewDocuments\": \"View the documents\",\n \"viewProfile\": \"View profile\",\n \"viewRecentChats\": \"View recent chats\",\n \"welcomePopup\": \"Show welcome popup\",\n \"zoomIn\": \"Zoom In\",\n \"zoomOut\": \"Zoom out\",\n \"createWebSource\": \"Create source\",\n \"webSourceConfirmRemoval\": \"Remove the {count} pages\"\n },\n \"agent\": {\n \"channel\": {\n \"app\": \"App\",\n \"frontoffice\": \"Frontoffice\",\n \"widget\": \"Widget\"\n },\n \"reasoning\": {\n \"high\": \"High\",\n \"low\": \"Low\",\n \"medium\": \"Medium\",\n \"off\": \"Off\"\n },\n \"reasoningSummary\": {\n \"auto\": \"Auto\",\n \"concise\": \"Concise\",\n \"detailed\": \"Detailed\"\n },\n \"searchMode\": {\n \"balanced\": \"Balanced (vector + keywords)\",\n \"keyword\": \"Keyword (full-text only)\",\n \"semantic\": \"Semantic (vector only)\"\n },\n \"status\": {\n \"active\": \"Active\",\n \"draft\": \"Draft\",\n \"inactive\": \"Inactive\"\n },\n \"tool\": {\n \"fetchTeamsChannelHistory\": \"Teams channel history\",\n \"geocode\": \"Geocoding\",\n \"getWeather\": \"Weather data\",\n \"querySpreadsheet\": \"Spreadsheet queries\",\n \"readDocumentFile\": \"Read document files\",\n \"requestGeolocation\": \"Geolocation\",\n \"retrieveRevisedAnswers\": \"Verified answers\",\n \"runWorker\": \"Parallel workers\",\n \"scheduleWakeup\": \"Repeated checks\",\n \"searchInKnowledgeBase\": \"Knowledge base\",\n \"searchInUserFiles\": \"User files\",\n \"showArtifact\": \"Artifacts\",\n \"showCalendarEvent\": \"Calendar event\",\n \"showComparison\": \"Comparison\",\n \"showContactForm\": \"Contact form\",\n \"showDiagram\": \"Diagram or chart\",\n \"showEmail\": \"Email\",\n \"showForm\": \"Multi-step Form\",\n \"showImageGallery\": \"Image gallery\",\n \"showLocation\": \"Interactive map\",\n \"showMessage\": \"Messaging\",\n \"showMultipleChoice\": \"Multiple choice\",\n \"showProductList\": \"Product catalog\",\n \"showQrCode\": \"QR code\",\n \"showSources\": \"Sources & references\",\n \"showSuggestedReply\": \"Suggested replies\",\n \"showVideo\": \"Video\",\n \"showWeather\": \"Weather widget\",\n \"showWebPages\": \"Web page links\",\n \"spreadsheet\": \"Spreadsheets\",\n \"useAllUserFiles\": \"Use all user files\",\n \"useAllUserKb\": \"Use the entire user KB\",\n \"userMemory\": \"User memory\"\n },\n \"toolWorkingSetMode\": {\n \"active\": \"Active\",\n \"off\": \"Off\",\n \"shadow\": \"Shadow (record only)\"\n },\n \"visibility\": {\n \"organization\": \"Organization\",\n \"private\": \"Private\",\n \"public\": \"Public\"\n }\n },\n \"agentApiToolStatus\": {\n \"active\": \"Active\",\n \"inactive\": \"Inactive\"\n },\n \"agentType\": {\n \"chat\": \"Chat\",\n \"reasoning\": \"Reasoning\"\n },\n \"auth\": {\n \"genericError\": \"An error occurred. Try again.\",\n \"haveAccount\": \"Already have an account?\",\n \"noAccount\": \"Don't have an account?\",\n \"popupBlocked\": \"Pop-up blocked. Allow pop-ups for this site and try again.\",\n \"resetSent\": \"If an account exists with this email, you will receive a password reset link.\",\n \"resetSentTitle\": \"Check your email\",\n \"resetTitle\": \"Reset your password\",\n \"signInTitle\": \"Sign in to your account\",\n \"signUpSuccessTitle\": \"Account created!\",\n \"signUpTitle\": \"Create your account\",\n \"verifyEmail\": \"We've sent a verification email to your address. Check your inbox.\"\n },\n \"branding\": {\n \"asset\": {\n \"emailBanner\": \"Email banner\",\n \"emailLogo\": \"Email logo\",\n \"logoDark\": \"Logo on a dark background\",\n \"logoLight\": \"Logo on a light background\",\n \"mark\": \"Mark\"\n },\n \"assetHint\": {\n \"emailBanner\": \"Under the email logo, up to {width} px wide.\",\n \"emailLogo\": \"At the top of every email.\",\n \"logoDark\": \"Dark theme. Without it, the light logo.\",\n \"logoLight\": \"Sidebar and header.\",\n \"mark\": \"Square: sign-in card, folded sidebar and app icons.\"\n },\n \"bundledImage\": \"Default image\",\n \"color\": {\n \"accent\": \"Accent\",\n \"brand\": \"Brand\",\n \"info\": \"Info\"\n },\n \"colors\": \"Colors\",\n \"colorsHint\": \"The light and the dark theme each have their own palette: a dark theme usually wants a lighter brand. Text on these colors stays readable whatever you pick.\",\n \"darkLogo\": \"The dark logo\",\n \"images\": \"Images\",\n \"imagesHint\": \"SVG, PNG or WebP, up to {maxSize} KB and {maxSide} pixels per side. Each preview shows the image on both themes: check that it reads on the dark one too. The email images are converted to PNG, or to JPEG when they have no transparency, since many mail clients show neither SVG nor WebP.\",\n \"lightLogo\": \"The light logo\",\n \"loadFailed\": \"The theme of this deployment could not be read.\",\n \"markBesideName\": \"The mark beside the name\",\n \"mode\": \"Light and dark\",\n \"modeDark\": \"Always dark\",\n \"modeHint\": \"A fixed theme hides the users' switch.\",\n \"modeLight\": \"Always light\",\n \"modeSystem\": \"User's choice\",\n \"neutralMark\": \"The initial of the name\",\n \"noImage\": \"No image\",\n \"notRuntimeContent\": \"The theme can only be viewed here: this frontend is built without VITE_RUNTIME_BRANDING and keeps its compile-time look, while a saved theme would still reach the emails and the chat widget of every organization.\",\n \"notRuntimeTitle\": \"This build does not read the theme\",\n \"palette\": {\n \"dark\": \"Dark theme\",\n \"light\": \"Light theme\"\n },\n \"removeImage\": \"Remove the image\",\n \"replaceImage\": \"Replace\",\n \"saveAndReload\": \"Save and reload\",\n \"saveFailed\": \"Theme not saved\",\n \"saveFailedHint\": \"The theme could not be saved. Try again in a moment.\",\n \"savedMeanwhile\": \"Someone else saved the theme\",\n \"savedMeanwhileHint\": \"The theme changed after this page opened, and saving would undo those changes. Reload the page to see them, then make yours again.\",\n \"text\": {\n \"companyName\": \"Company name\",\n \"description\": \"Description\",\n \"productName\": \"Product name\",\n \"productTagline\": \"Tagline\",\n \"shortName\": \"Short name\"\n },\n \"textHint\": {\n \"companyName\": \"Email footer. Empty: no footer.\",\n \"description\": \"One sentence about the product: the description of the installed app.\",\n \"productName\": \"Browser tab, installed app, emails and Teams app. Once you change it, an image you do not upload is no longer Eight Wave's: the initial of the name, or none in the emails.\",\n \"productTagline\": \"Above the short name. Empty: none.\",\n \"shortName\": \"The strong line of the logo, and the name under the icon of the installed app.\"\n },\n \"texts\": \"Names\",\n \"unsupportedType\": \"Use an SVG, PNG or WebP image.\",\n \"uploadFailed\": \"Image not saved\",\n \"uploadFailedHint\": \"The image could not be uploaded. Try again, or check its format and size.\",\n \"uploadImage\": \"Upload\",\n \"useBundledImage\": \"Use the default image\"\n },\n \"browserEngine\": {\n \"fetch\": \"Fetch · static HTML\",\n \"puppeteer\": \"Puppeteer · local browser\",\n \"remote\": \"Remote · remote browser\"\n },\n \"channelDescription\": {\n \"teams\": \"Publish this agent as a bot inside Microsoft Teams.\",\n \"whatsapp\": \"Let users chat with this agent on WhatsApp via the Meta Cloud API.\"\n },\n \"channelGuide\": {\n \"docs\": \"Open the official documentation\",\n \"intro\": \"Follow the steps in order. Open each linked service in a new browser tab and copy the values into the form on the left. Don't close this window until you've finished.\",\n \"teams\": {\n \"step1\": \"Sign in to the Microsoft Azure portal with your work or school account.\",\n \"step2\": \"Create a new «Azure Bot» resource and give it a name. When asked, choose whether it's Single or Multi-tenant: remember your choice for step 5.\",\n \"step3\": \"Open the bot you just created → «Configuration», copy the «Microsoft App ID» and paste it into the App ID field.\",\n \"step4\": \"Next to the Microsoft App ID, click «Manage password»: this opens the app's registration in Microsoft Entra ID (a different page from the bot). There, under «Certificates & secrets», create a new client secret and copy its «Value» (not the Secret ID) into the App password field. Copy it right away: it's shown only once.\",\n \"step5\": \"Set the App type to match what you chose in step 2. For Single tenant, copy the «Directory (tenant) ID» from the app registration «Overview» page into the Tenant ID field.\",\n \"step6\": \"Back in the bot → «Configuration», set the «Messaging endpoint» to the Webhook URL shown above and save.\",\n \"step7\": \"Open the bot → «Channels» and add the «Microsoft Teams» channel.\",\n \"step8\": \"Save the form on the left, then use the card menu (⋯ → Download Teams app) to get the package and upload it in Teams from «Apps → Manage your apps → Upload an app».\"\n },\n \"title\": \"Setup guide\",\n \"whatsapp\": {\n \"step1\": \"Open the Meta for Developers portal and sign in with your Facebook account (create one if you don't have it yet).\",\n \"step2\": \"Create a new app: choose the «Business» type, give it a name, then add the «WhatsApp» product to it.\",\n \"step3\": \"Open WhatsApp → «API Setup». Copy the «Phone number ID» (a long number, not the phone number itself) and paste it into the Phone number ID field.\",\n \"step4\": \"Still in «API Setup», generate an access token. For a connection that doesn't expire, create a «System User» token with the whatsapp_business_messaging permission, then paste it into the Access token field.\",\n \"step5\": \"Open App settings → «Basic», click «Show» next to «App secret», copy it and paste it into the App secret field. This lets us verify that incoming messages really come from Meta.\",\n \"step6\": \"We've already filled the «Verify token» field with a ready-to-use value (use «Regenerate» for a new one). You'll paste this exact value into Meta in the next step.\",\n \"step7\": \"Go back to WhatsApp → «Configuration» and edit the webhook: paste the Webhook URL shown above and the same Verify token, save, then subscribe to the «messages» event.\",\n \"step8\": \"Save the form on the left. Send a message to your WhatsApp number to check that the agent replies.\"\n }\n },\n \"chartLabel\": {\n \"2g\": \"2G\",\n \"3g\": \"3G\",\n \"4g\": \"4G\",\n \"Africa\": \"Africa\",\n \"America\": \"America\",\n \"Asia\": \"Asia\",\n \"Australia\": \"Australia\",\n \"Europe\": \"Europe\",\n \"Pacific\": \"Pacific\",\n \"abusive\": \"Abusive\",\n \"aggressive\": \"Aggressive\",\n \"api\": \"API\",\n \"critical\": \"Critical\",\n \"dark\": \"Dark\",\n \"data_leak\": \"Data leak\",\n \"degrading\": \"Degrading\",\n \"desktop\": \"Desktop\",\n \"direct\": \"Direct\",\n \"disengaged\": \"Disengaged\",\n \"empty_reply\": \"Empty reply\",\n \"endpoint\": \"Endpoint\",\n \"excited\": \"Excited\",\n \"failed_action\": \"Failed action\",\n \"false_success\": \"False success\",\n \"frustrated\": \"Frustrated\",\n \"goal_met\": \"Goal met\",\n \"goal_not_met\": \"Goal not met\",\n \"group\": \"Group\",\n \"hallucination\": \"Hallucination\",\n \"high\": \"High\",\n \"impatient\": \"Impatient\",\n \"improving\": \"Improving\",\n \"inappropriate_tone\": \"Inappropriate tone\",\n \"light\": \"Light\",\n \"low\": \"Low\",\n \"medium\": \"Medium\",\n \"mobile\": \"Mobile\",\n \"negative\": \"Negative\",\n \"neutral\": \"Neutral\",\n \"off_brand\": \"Off-brand\",\n \"other\": \"Other\",\n \"polite\": \"Polite\",\n \"positive\": \"Positive\",\n \"reasoning\": \"Reasoning\",\n \"refusal_loop\": \"Refusal loop\",\n \"repetition\": \"Repetition\",\n \"slow-2g\": \"Slow 2G\",\n \"stable\": \"Stable\",\n \"stuck_flow\": \"Stuck flow\",\n \"tablet\": \"Tablet\",\n \"teams\": \"Teams\",\n \"unanalyzed\": \"Unanalyzed\",\n \"unclear\": \"Unclear\",\n \"unknown\": \"Unknown\",\n \"voice\": \"Voice\",\n \"web\": \"Web\",\n \"whatsapp\": \"WhatsApp\"\n },\n \"confirmDescription\": {\n \"documentRefreshTriggerOff\": \"Otherwise the next reading would overwrite what you wrote. You can turn it back on from the update card.\",\n \"embeddingBackToPlatform\": \"The knowledge base and the memories are embedded again with the platform model, from the text already stored: nothing is converted again. Until it is done the searches find only what is already back.\",\n \"embeddingBackToPlatformSameFamily\": \"Your endpoint computes the same model as the platform, so the vectors stay as they are and nothing is computed again: from now on the platform AI gateway computes them.\",\n \"embeddingRemove\": \"Without the platform AI gateway nothing else computes the vectors: the knowledge base, the corrected answers, the memories and the document processing stop until you activate an embedding model on your endpoint again. If the platform switches the gateway back on, they start again on its vectors by themselves.\",\n \"endpointOffWithEmbedding\": \"Besides its models, the knowledge base, the corrected answers, the memories and the document processing of every agent stop, until you switch it back on.\",\n \"integrationDisconnect\": \"They stay where they are with their documents, editable like any other, and stop updating. To sync them again you will have to connect the provider and link them once more.\",\n \"integrationRemove\": \"The stored credentials are deleted and the syncs towards this provider stop. To resume them you will have to configure it again.\",\n \"lastModelOff\": \"No other model of this organization is on: nothing can be picked for a new agent or as a default any more, and the agents on these models will answer with the default model.\",\n \"modelProviderDelete\": \"The saved models and their prices will be lost. Deletion is not possible while an agent uses one of its models, nor while the endpoint computes the embedding: move those agents to another model first, and remove the embedding in the Embedding section.\",\n \"modelRemove\": \"The agents using this model will stop answering until you move them to another model.\",\n \"revokeVoiceApiKey\": \"This key answers the voice channel of an agent: its voice stops working until the voice is turned off and on again in the agent settings.\"\n },\n \"confirmTitle\": {\n \"deleteAgent\": \"Delete this agent?\",\n \"deleteAllMemories\": \"Delete every memory of this user?\",\n \"deleteBulkDocument\": \"Delete the selected documents?\",\n \"deleteDocument\": \"Delete this document?\",\n \"deleteFolder\": \"Delete this folder?\",\n \"deleteMyConversations\": \"Delete all your conversations?\",\n \"deleteSpreadsheet\": \"Delete this spreadsheet?\",\n \"documentRefreshTriggerOff\": \"Turn the automatic update off?\",\n \"embeddingBackToPlatform\": \"Compute the vectors on the platform again?\",\n \"embeddingBackToPlatformSameFamily\": \"Compute the vectors on the platform?\",\n \"embeddingRemove\": \"Remove the embedding from the endpoint?\",\n \"endpointOffWithEmbedding\": \"Switch off the endpoint that computes the vectors?\",\n \"excludeUserFile\": \"Remove this file from your files?\",\n \"integrationDisconnect\": \"Remove this connection?\",\n \"lastModelOff\": \"Switch off the last model?\",\n \"modelProviderDelete\": \"Delete the endpoint?\",\n \"modelRemove\": \"Remove {id}?\",\n \"unlinkAgent\": \"Remove this agent from the document?\",\n \"unlinkDocument\": \"Unlink this document from the agent?\",\n \"unlinkLastAgentDelete\": \"Remove the last agent from this document?\",\n \"unlinkSyncedFolder\": \"Unlink this folder?\",\n \"webSourceConfirmRemoval\": \"Remove {count} pages?\",\n \"unlinkWebSource\": \"Unlink the source?\"\n },\n \"conversationAnalysis\": {\n \"abuseCategory\": {\n \"data_extraction\": \"Data extraction\",\n \"harassment\": \"Harassment\",\n \"hate_speech\": \"Hate speech\",\n \"impersonation\": \"Impersonation\",\n \"off_topic_persistent\": \"Off-topic\",\n \"prompt_injection\": \"Prompt injection\",\n \"self_harm\": \"Self harm\",\n \"sexual_content\": \"Sexual content\",\n \"spam\": \"Spam\",\n \"violence\": \"Violence\"\n },\n \"confidence\": {\n \"high\": \"High\",\n \"low\": \"Low\",\n \"medium\": \"Medium\"\n },\n \"engagement\": {\n \"disengaged\": \"Disengaged\",\n \"high\": \"High\",\n \"low\": \"Low\",\n \"medium\": \"Medium\"\n },\n \"label\": {\n \"abuseDetected\": \"Abuse\",\n \"conversationSentiment\": \"Sentiment\",\n \"goalMet\": \"Goal met\",\n \"goalNotMet\": \"Goal not met\",\n \"llmIssueDetected\": \"LLM issue\",\n \"riskScore\": \"Risk score\",\n \"userEngagement\": \"Engagement\",\n \"userTone\": \"Tone\"\n },\n \"llmIssue\": {\n \"data_leak\": \"Data leak\",\n \"empty_reply\": \"Empty reply\",\n \"failed_action\": \"Failed action\",\n \"false_success\": \"False success\",\n \"hallucination\": \"Hallucination\",\n \"inappropriate_tone\": \"Inappropriate tone\",\n \"off_brand\": \"Off-brand\",\n \"refusal_loop\": \"Refusal loop\",\n \"repetition\": \"Repetition\",\n \"stuck_flow\": \"Stuck flow\"\n },\n \"sentiment\": {\n \"excited\": \"Excited\",\n \"frustrated\": \"Frustrated\",\n \"negative\": \"Negative\",\n \"neutral\": \"Neutral\",\n \"positive\": \"Positive\"\n },\n \"sentimentTrend\": {\n \"degrading\": \"Degrading\",\n \"improving\": \"Improving\",\n \"stable\": \"Stable\"\n },\n \"title\": \"Conversation analysis\",\n \"tone\": {\n \"abusive\": \"Abusive\",\n \"aggressive\": \"Aggressive\",\n \"impatient\": \"Impatient\",\n \"neutral\": \"Neutral\",\n \"polite\": \"Polite\"\n },\n \"trigger\": {\n \"agent_request\": \"On request\",\n \"manual\": \"Manual\",\n \"summary_cycle\": \"Automatic\"\n }\n },\n \"crawlMode\": {\n \"depth\": \"Depth crawling\",\n \"sitemap\": \"XML sitemap\"\n },\n \"dataProtection\": {\n \"downloadPdf\": \"Download PDF\"\n },\n \"diagram\": {\n \"classDiagram\": \"Class diagram\",\n \"erDiagram\": \"ER diagram\",\n \"flowchart\": \"Flowchart\",\n \"graph\": \"Graph\",\n \"sequenceDiagram\": \"Sequence diagram\",\n \"stateDiagram\": \"State diagram\",\n \"xychart\": \"XY chart\"\n },\n \"documentMetadata\": {\n \"affectedDocumentsStat\": \"Affected documents\",\n \"analyzedPages\": \"analyze {pages} on\",\n \"chunkSimilarTo\": \"{score}% similar to content in “{docName}”\",\n \"compare\": \"Compare\",\n \"compareChunks\": \"Semantic chunk comparison\",\n \"filterOnlyRedundantLabel\": \"Show only documents with unmanaged redundant chunks\",\n \"filterRedundant\": \"Show redundant\",\n \"hasRedundant\": \"This document contains redundant information with other files\",\n \"isRedundant\": \"Redundant\",\n \"openInProvider\": \"Open in {provider}\",\n \"originalChunk\": \"Original chunk (authoritative)\",\n \"pageCount\": \"no pages | {n} page | {n} pages\",\n \"readingTime\": \"{minutes} min\",\n \"redundancyAccepted\": \"Confirmed\",\n \"redundancyDismissed\": \"Restored\",\n \"redundancyExplainer\": \"These blocks repeat content the agent already finds in another document, or earlier in this one, and its search skips them. Confirm to leave them out, or restore them to put them back in search, in every agent.\",\n \"redundantChunk\": \"Redundant chunk (duplicate)\",\n \"redundantChunks\": \"no redundant chunks | {n} redundant chunk ({percent}%) | {n} redundant chunks ({percent}%)\",\n \"redundantChunksStat\": \"Redundant chunks\",\n \"redundantWarningMessage\": \"Some documents contain duplicate or redundant semantic chunks. They are automatically skipped during query retrieval to clean and optimize RAG context windows.\",\n \"redundantWarningServerMessage\": \"There are {chunks} unmanaged redundant semantic chunks distributed across {docs} documents for this agent (out of {totalChunks} chunks and {totalDocs} documents).\",\n \"redundantWarningTitle\": \"Duplicate or redundant content detected inside Knowledge Base\",\n \"redundantWith\": \"Redundant with chunk {chunkId} of {docName} ({score}% semantic similarity)\",\n \"showAll\": \"Show all\",\n \"thisDocument\": \"This document\",\n \"viewByChunks\": \"View by chunks\",\n \"viewDocument\": \"Document\",\n \"viewOriginal\": \"View original\",\n \"wordCount\": \"{count} words\"\n },\n \"documentFailure\": {\n \"audio-no-speech\": \"No speech could be heard in the recording\",\n \"audio-too-large\": \"The recording is over {limit} MB, the most that is transcribed: upload a shorter or more compressed copy\",\n \"credit-exhausted\": \"No credit left: new documents are not processed\",\n \"endpoint-off\": \"The organization's own AI endpoint is switched off\",\n \"file-protected\": \"The file is password protected: upload a copy without the password\",\n \"file-type-unsupported\": \"This type of file cannot be read\",\n \"file-unreadable\": \"The file is damaged, or not in the format its name says\",\n \"format-unsupported\": \"The endpoint's model cannot read this format with the AI description: use the normal conversion\",\n \"gateway-disabled\": \"It needs the platform AI gateway, which this organization does not use\",\n \"model-unavailable\": \"The model chosen for documents is not switched on for this organization\",\n \"no-model\": \"No model is set for the AI of documents\",\n \"page-too-large\": \"The page is too heavy to be read, even without its scripts and inline graphics\",\n \"source-status\": \"The source page answered HTTP {status}\",\n \"spreadsheet-macros\": \"The workbook contains macros: save it as an .xlsx without macros\",\n \"spreadsheet-no-table\": \"No sheet has a header row in its first thirty rows, so there is no table to query\",\n \"spreadsheet-protected\": \"The file is password protected, or an old .xls renamed to .xlsx: upload an unprotected .xlsx copy\",\n \"spreadsheet-too-large\": \"Too large to be read as tables: its content takes more than {limit} MB\",\n \"spreadsheet-unreadable\": \"The file is not a valid .xlsx workbook\",\n \"transcription-off\": \"Audio is transcribed on the platform AI gateway, which this organization does not use\"\n },\n \"documentRefreshResult\": {\n \"failed\": \"Failed\",\n \"gone\": \"Page gone\",\n \"shrunk\": \"Refused\",\n \"unchanged\": \"Unchanged\",\n \"updated\": \"Updated\"\n },\n \"documentStatus\": {\n \"failed\": \"Failed\",\n \"pending\": \"Pending\",\n \"processing\": \"Processing\",\n \"success\": \"Converted\"\n },\n \"searchStatus\": {\n \"indexed\": {\n \"label\": \"Available\",\n \"title\": \"Available for the agent's search\"\n },\n \"pending\": {\n \"label\": \"Preparing\",\n \"title\": \"On its way to the agent's search index\"\n },\n \"failed\": {\n \"label\": \"Not indexed\",\n \"title\": \"The search index did not take the document: reprocess it to try again\"\n },\n \"unavailable\": {\n \"label\": \"Unavailable\",\n \"title\": \"The organization cannot compute embeddings: the document stays out of the search until the gateway or the organization's endpoint is back on\"\n },\n \"empty\": {\n \"label\": \"No content\",\n \"title\": \"The document has no text to search\"\n }\n },\n \"documentSyncCounter\": {\n \"scanned\": \"files checked\",\n \"added\": \"added\",\n \"updated\": \"updated\",\n \"renamedOrMoved\": \"renamed or moved\",\n \"removed\": \"removed\",\n \"unchanged\": \"unchanged\",\n \"skippedUnsupported\": \"unsupported formats\",\n \"skippedTooLarge\": \"too large\",\n \"failed\": \"failed\",\n \"scannedPages\": \"pages checked\",\n \"capped\": \"left for the next check\"\n },\n \"documentSyncInterval\": {\n \"daily\": \"Every day\",\n \"hourly\": \"Every hour\",\n \"monthly\": \"Every month\",\n \"weekly\": \"Every week\"\n },\n \"documentSyncStatus\": {\n \"pending\": \"First import in progress\",\n \"syncing\": \"Syncing\",\n \"idle\": \"Up to date\",\n \"error\": \"Error\"\n },\n \"documentTrash\": {\n \"back\": \"Back to documents\",\n \"columnDeletedAt\": \"Deleted on\",\n \"columnDeletedBy\": \"Deleted by\",\n \"columnPurgedIn\": \"Deleted for good in\",\n \"daysLeft\": \"At the next cleanup | {count} day | {count} days\",\n \"empty\": \"The trash is empty.\",\n \"emptyConsequence\": \"The original files and the extracted text are destroyed: they can no longer be restored or downloaded. A document shared with other agents leaves their trash too.\",\n \"emptyQuestion\": \"The document in the trash is deleted permanently. | The {count} documents in the trash are deleted permanently.\",\n \"emptySuccess\": \"{count} document deleted permanently. | {count} documents deleted permanently.\",\n \"emptyTitle\": \"Empty the trash?\",\n \"emptyTrash\": \"Empty trash\",\n \"intro\": \"The agent no longer searches the documents in the trash. You can restore them or delete them permanently.\",\n \"introRetention\": \"Each document stays here for {count} day, then it is deleted for good. | Each document stays here for {count} days, then it is deleted for good.\",\n \"openLiveDocument\": \"Open the document in its place\",\n \"purge\": \"Delete permanently\",\n \"purgeConsequence\": \"The original file and the extracted text are destroyed: it can no longer be restored or downloaded.\",\n \"purgeQuestion\": \"\\\"{name}\\\" is deleted permanently.\",\n \"purgeSuccess\": \"Document deleted permanently.\",\n \"purgeTitle\": \"Delete permanently?\",\n \"refusalAgentGone\": \"Every agent this document belonged to has been deleted, so there is nowhere to restore it. It can only be deleted permanently.\",\n \"refusalIdentityTaken\": \"The same source has imported this file again: restoring it would make two copies of one document. Use the one already in the knowledge base.\",\n \"restore\": \"Restore\",\n \"restoreCredits\": \"Indexing computes the embeddings of the document again and uses credits.\",\n \"restoreFailed\": \"The document could not be restored.\",\n \"restoreIndexing\": \"It becomes searchable again only once it is indexed, which happens in the background.\",\n \"restoreQuestion\": \"\\\"{name}\\\" goes back to the knowledge base of the agent, in its folder.\",\n \"restoreSuccess\": \"Document restored. It becomes searchable once it is indexed.\",\n \"restoreSuccessRoot\": \"Document restored at the root, because its folder no longer exists. It becomes searchable once it is indexed.\",\n \"restoreTitle\": \"Restore the document?\",\n \"toggle\": \"Trash\",\n \"toggleHint\": \"Documents deleted from this agent, which can still be restored\"\n },\n \"documentType\": {\n \"file\": \"File\",\n \"plain-text\": \"Plain text\",\n \"revised-answer\": \"Revised answer\",\n \"url\": \"Web page\"\n },\n \"errors\": {\n \"ACCOUNT_TEMPORARILY_LOCKED\": \"Too many wrong codes: verification is locked for 15 minutes.\",\n \"BANNED_USER\": \"This account has been banned. Contact support if you think this is a mistake.\",\n \"CREDENTIAL_ACCOUNT_NOT_FOUND\": \"This account signs in with Google or Microsoft and has no password to change\",\n \"EMAIL_CODE_NOT_AVAILABLE\": \"This account uses an authenticator app: enter its code or a backup code.\",\n \"TWO_FACTOR_REQUIRED\": \"An organization of this account requires two-step verification: set it up to continue\",\n \"PASSKEY_PASSWORD_REQUIRED\": \"Confirm your password to add a passkey\",\n \"PASSKEY_RECENT_SIGN_IN_REQUIRED\": \"Sign out and sign in again to add a passkey\",\n \"PASSKEY_NOT_ALLOWED_FOR_SESSION\": \"Passkeys can be added only by the account owner, signed in\",\n \"PASSKEY_USER_VERIFICATION_REQUIRED\": \"This passkey did not ask for a PIN, a fingerprint or a face: set one up on the device and try again\",\n \"PASSKEY_NOT_FOUND\": \"This passkey is not linked to any account: sign in with your password\",\n \"AUTHENTICATION_FAILED\": \"The passkey could not be verified: try again\",\n \"FAILED_TO_VERIFY_REGISTRATION\": \"The passkey could not be saved: try again\",\n \"CHALLENGE_NOT_FOUND\": \"The request expired: try again\",\n \"EMAIL_NOT_VERIFIED\": \"Verify your email address\",\n \"EMAIL_VERIFICATION_REQUIRED_BEFORE_ACCEPTING_OR_REJECTING_INVITATION\": \"Verify your email address before answering the invitation\",\n \"FAILED_TO_UNLINK_LAST_ACCOUNT\": \"You cannot unlink your only sign-in method\",\n \"INVALID_BACKUP_CODE\": \"The backup code is not valid or has already been used.\",\n \"INVALID_CODE\": \"The code is not valid. Try again.\",\n \"INVALID_EMAIL_OR_PASSWORD\": \"Invalid email or password\",\n \"INVALID_PASSWORD\": \"The password is not correct\",\n \"INVALID_TOKEN\": \"This link has expired or has already been used. Request a new one.\",\n \"INVALID_TWO_FACTOR_COOKIE\": \"The verification has expired. Sign in again.\",\n \"INVITATION_LIMIT_REACHED\": \"This organization has reached its invitation limit\",\n \"INVITATION_NOT_FOUND\": \"The invitation is no longer valid: it may have expired, been cancelled or already been answered\",\n \"INVITER_IS_NO_LONGER_A_MEMBER_OF_THE_ORGANIZATION\": \"The person who invited you is no longer in the organization, so the invitation is no longer valid\",\n \"KEY_NOT_FOUND\": \"The API key no longer exists: it may have already been deleted\",\n \"MEMBER_NOT_FOUND\": \"Member not found in the organization\",\n \"NOT_ALLOWED\": \"You do not have permission to do this\",\n \"ORGANIZATION_ALREADY_EXISTS\": \"An organization with this slug already exists\",\n \"ORGANIZATION_MEMBERSHIP_LIMIT_REACHED\": \"This organization has reached its member limit\",\n \"ORGANIZATION_NOT_FOUND\": \"The organization no longer exists\",\n \"ORGANIZATION_SLUG_ALREADY_TAKEN\": \"This slug is already used by another organization\",\n \"OTP_HAS_EXPIRED\": \"The code has expired. Ask for a new one.\",\n \"RATE_LIMIT_EXCEEDED\": \"Rate limit exceeded\",\n \"SESSION_NOT_FRESH\": \"For your security, sign in again and repeat the operation\",\n \"SOCIAL_ACCOUNT_ALREADY_LINKED\": \"This account is already linked to another user\",\n \"TOO_MANY_ATTEMPTS_REQUEST_NEW_CODE\": \"Too many attempts. Sign in again to get a new code.\",\n \"TOO_MANY_REQUESTS\": \"Too many attempts. Wait a few minutes and try again.\",\n \"TOTP_ALREADY_ENABLED\": \"Two-step verification with an app is already on.\",\n \"TOTP_NOT_ENABLED\": \"No authenticator app is set up for this account.\",\n \"TWO_FACTOR_REQUIRED_TO_ENFORCE\": \"Turn on two-step verification on your own account before requiring it.\",\n \"UNAUTHORIZED_SESSION\": \"Your session has expired. Sign in again.\",\n \"USER_ALREADY_EXISTS\": \"An account with this email already exists\",\n \"USER_ALREADY_EXISTS_USE_ANOTHER_EMAIL\": \"An account with this email already exists\",\n \"USER_IS_ALREADY_A_MEMBER_OF_THIS_ORGANIZATION\": \"This user is already a member of the organization\",\n \"USER_IS_ALREADY_INVITED_TO_THIS_ORGANIZATION\": \"This user has already been invited to the organization\",\n \"USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION\": \"You are not a member of this organization\",\n \"USER_NOT_FOUND\": \"The user no longer exists\",\n \"YOU_ARE_NOT_A_MEMBER_OF_THIS_ORGANIZATION\": \"You are not a member of this organization\",\n \"YOU_ARE_NOT_ALLOWED_TO_MANAGE_TWO_FACTOR\": \"Only a system administrator, signed in as themselves, can do this.\",\n \"YOU_ARE_NOT_THE_RECIPIENT_OF_THE_INVITATION\": \"This invitation was sent to another email address\",\n \"YOU_CANNOT_BAN_YOURSELF\": \"You cannot ban yourself\",\n \"YOU_CANNOT_IMPERSONATE_ADMINS\": \"You cannot impersonate an administrator\",\n \"YOU_CANNOT_LEAVE_THE_ORGANIZATION_AS_THE_ONLY_OWNER\": \"You are the only owner: make someone else an owner before leaving\",\n \"YOU_CANNOT_LEAVE_THE_ORGANIZATION_WITHOUT_AN_OWNER\": \"The organization needs at least one owner\",\n \"YOU_CANNOT_MANAGE_YOUR_OWN_TWO_FACTOR\": \"Your own two-step verification and passkeys are managed from your profile.\",\n \"YOU_CANNOT_REMOVE_YOURSELF\": \"You cannot remove yourself\",\n \"YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_ORGANIZATIONS\": \"You have reached the maximum number of organizations\",\n \"fileAlreadyImported\": \"This file has already been imported as a document\",\n \"invalidToken\": \"Request no longer valid\",\n \"passwordsDoNotMatch\": \"Passwords do not coincide\",\n \"privateNetworkRequired\": \"Confirm that this endpoint is on a private network\",\n \"refreshIntervalUrlOnly\": \"Only web pages can update themselves\",\n \"required\": \"Required\",\n \"slugAlreadyExists\": \"The slug already exists\",\n \"slugFormat\": \"The slug can only contain lowercase letters, numbers, and hyphens (-)\",\n \"urlAlreadyImported\": \"This URL has already been imported as a document\",\n \"syncSourceUrlOnly\": \"Only a web page can belong to a web source\"\n },\n \"externalProvider\": {\n \"domain\": \"Email domain\",\n \"github\": \"GitHub\",\n \"google\": \"Google\",\n \"microsoft\": \"Microsoft Entra\"\n },\n \"feature\": {\n \"apiTools\": \"API tools\",\n \"byok\": \"Own models (BYOK)\",\n \"endpoints\": \"API endpoints\",\n \"fileUpload\": \"File upload\",\n \"gateway\": \"Platform models\",\n \"group\": {\n \"channels\": \"Channels and publishing\",\n \"models\": \"Models\",\n \"tools\": \"Tools and data\"\n },\n \"hubspot\": \"HubSpot\",\n \"leads\": \"Contacts\",\n \"legend\": \"Features\",\n \"mcpServers\": \"MCP servers\",\n \"proactiveAutomations\": \"Proactive automations\",\n \"salesforce\": \"Salesforce\",\n \"sharepoint\": \"SharePoint\",\n \"subAgents\": \"Sub-agents\",\n \"teams\": \"Microsoft Teams\",\n \"voice\": \"Voice conversation\",\n \"whatsapp\": \"WhatsApp\"\n },\n \"gdprRetention\": {\n \"anonymousLabel\": \"Anonymous user erasure\",\n \"chatLabel\": \"Chat anonymization\",\n \"defaultDays\": \"Default: {count} day. | Default: {count} days.\",\n \"defaultDisabled\": \"Default: disabled.\",\n \"legend\": \"Data retention (GDPR)\",\n \"trashLabel\": \"Trash emptying\",\n \"unitDays\": \"days\"\n },\n \"help\": {\n \"aiDescription\": \"An AI model analyzes the file and generates a structural description of the content. Useful for documents with tables, charts, or complex layouts.\",\n \"aiDescriptionModel\": \"The AI model used to generate the description.\",\n \"aiDescriptionPrompt\": \"Prompt used to generate the description\",\n \"browserEngine\": \"How the page is loaded before extraction\",\n \"documentFile\": \"PDF, Word, Excel, CSV, text, images and audio.\",\n \"fetchBrowserEngine\": \"fast, fetches the static HTML. Best for most sites.\",\n \"followExternal\": \"Retrieve links from different domains\",\n \"forceOcr\": \"Force text extraction via OCR (Document Intelligence). Useful for scanned PDFs or when the normal extraction produces insufficient results.\",\n \"pages\": \"Empty: all pages. Pages are read with OCR.\",\n \"puppeteerBrowserEngine\": \"runs JavaScript with a local browser. For dynamic or single-page apps.\",\n \"remoteBrowserEngine\": \"like Puppeteer, but on a remote browser. Bypasses blocks and bot detection.\",\n \"useBrowserEngine\": \"Slower, but allows analysis of dynamic pages\",\n \"useExtractionStrategy\": \"Improve data extraction with AI\",\n \"webSourceWatch\": \"New pages go into the folder “{name}”.\",\n \"webSourceRemoveMissing\": \"For a complete sitemap. Many removals wait for you.\",\n \"webSourceRemoveMissingExplained\": \"For a site of your own, whose sitemap lists everything published. If too many go missing at once, nothing is removed until you confirm.\"\n },\n \"hint\": {\n \"agentModel\": \"Pre-selected when you create a new agent.\",\n \"agentOnOwnEndpoint\": \"This agent runs on your organization's endpoint.\",\n \"allowedDomains\": \"Only search within these domains.\",\n \"approvalChannels\": \"A tool can ask the user to confirm before it runs: expand a tool to turn it on. On API endpoints and scheduled runs the call is refused.\",\n \"audience\": \"Expected aud of the JWT. Empty: not checked.\",\n \"blockedDomains\": \"Exclude these domains from results.\",\n \"channel\": {\n \"app\": \"The agent is accessible via the dedicated public page.\",\n \"frontoffice\": \"The agent is visible in the Frontoffice panel.\",\n \"widget\": \"The agent can be embedded in websites via embed script.\"\n },\n \"channelAppDisabled\": \"The App channel is disabled: the direct link and iframe will not work.\",\n \"channelWidgetDisabled\": \"The Widget channel is disabled: the embed code and loader will not work.\",\n \"costSourceEndpoint\": \"The models on your organization's endpoint: your provider bills them, the cost here is a list-price estimate.\",\n \"customCss\": \"CSS injected into the widget shadow DOM. Allows styling the chat interface from the outside.\",\n \"disallowPromptTraining\": \"Route requests only to providers that do not use your data to train AI models.\",\n \"dismissableNotice\": \"It will be hidden after the first message.\",\n \"documentFolderManaged\": \"Folder synced from {provider}: its content is changed at the source.\",\n \"documentRefresh\": \"Reads the page again when due and regenerates only what changed.\",\n \"documentRefreshTriggerOff\": \"This page updates itself, and saving your own text stops that.\",\n \"documentSelectionHasManaged\": \"The selection contains documents that come from a connected source and cannot be changed by hand.\",\n \"documentSourceInterval\": \"How often the folder is read again.\",\n \"documentSourceIntervalExplained\": \"How often the folder is read again. Files that have not changed are not converted again.\",\n \"documentSourceName\": \"The name this folder has here. The remote one does not change.\",\n \"emailClaim\": \"The JWT claim containing the user email (default: email).\",\n \"embedCode\": \"Copy and paste this code to embed the agent in your website.\",\n \"embedding\": \"The vectors of the knowledge base, of the users' files and of the memories. They are computed on the platform AI gateway, or on your endpoint with one of the two models it can serve.\",\n \"embeddingActivation\": \"Before saving, the endpoint embeds a test sentence and its vector is compared with the model's own: a different model is refused. Moving to another model embeds the knowledge base and the memories again, and until it is done the searches find only what is already in the new model.\",\n \"embeddingEndpointModel\": \"The id your endpoint serves the model under\",\n \"embeddingEndpointOff\": \"Switch the endpoint on to compute the vectors there\",\n \"embeddingFamily\": \"Among those your endpoint serves\",\n \"embeddingFamilyUnknown\": \"Your endpoint does not declare it: the save checks it\",\n \"embeddingModelsServed\": \"Your endpoint serves these too. They cannot answer an agent: the one the vectors are computed with is chosen in the Embedding section.\",\n \"embeddingNotConfigured\": \"The knowledge base, the corrected answers, the memories and the document processing are stopped, because nothing computes their vectors. Activate an embedding model on your endpoint to start them again.\",\n \"embeddingReindexing\": \"Until the reindex ends, the searches in the knowledge base and in the memories find only what is already in the new model: partial results, never wrong ones. Nothing has to be done, and an interrupted run picks up where it stopped.\",\n \"embeddingStopped\": \"The endpoint that computes the vectors is off: the knowledge base, the corrected answers, the memories and the document processing are stopped until you switch it back on.\",\n \"embeddingWithoutEndpoint\": \"The vectors of the knowledge base, of the users' files and of the memories are computed on the platform AI gateway. Connect your endpoint to compute them there.\",\n \"embedIframe\": \"Embed the chat interface directly using an iframe. \",\n \"embedPreview\": \"The agent will be accessible at the following URL.\",\n \"embeddingWithoutEndpointOrGateway\": \"The vectors of the knowledge base, of the users' files and of the memories are not computed: this organization does not use the platform AI gateway. Connect your endpoint to compute them there.\",\n \"embeddingWithoutGateway\": \"The vectors of the knowledge base, of the users' files and of the memories. This organization does not use the platform AI gateway, so they are computed only on your endpoint, with one of the two models allowed.\",\n \"externalContextSchema\": \"Define which contextual data the hosting site can send to the agent.\",\n \"externalContextSchemaToggle\": \"Enable receiving contextual data from the hosting site.\",\n \"feature\": {\n \"apiTools\": \"Agents call the organization's own APIs as tools.\",\n \"byok\": \"The organization connects its own OpenAI compatible endpoint and uses its models.\",\n \"endpoints\": \"Agents answer other systems over REST.\",\n \"fileUpload\": \"Users attach files to their chat messages.\",\n \"gateway\": \"The AI gateway models, and with them the platform's embedding, and the utilities and the document AI that use them.\",\n \"hubspot\": \"Leads collected by the agents go to the organization's HubSpot CRM.\",\n \"leads\": \"Agents collect contacts with a form in the chat, and the Contacts page lists them.\",\n \"mcpServers\": \"Agents use the tools of external MCP servers.\",\n \"proactiveAutomations\": \"Agents check again by themselves what the user asks them to keep an eye on. Off, the checks under way stop at their next round.\",\n \"salesforce\": \"Leads collected by the agents go to the organization's Salesforce CRM.\",\n \"sharepoint\": \"Agents read the files of SharePoint folders kept in sync.\",\n \"subAgents\": \"An agent calls another one as a tool.\",\n \"teams\": \"Agents answer in Teams chats.\",\n \"voice\": \"Agents talk with the user in real time.\",\n \"whatsapp\": \"Agents answer on WhatsApp Business.\"\n },\n \"fallbackModels\": \"Alternative models tried in order if the primary model is unavailable.\",\n \"fieldMappingFallback\": \"Value used if the source field is empty or missing.\",\n \"fieldMappingSource\": \"Supports nested paths (e.g. metadata.urgency).\",\n \"fieldMappingTransformExtractDomainCompany\": \"Extracts the company name from the email domain (e.g. mario{'@'}acme.com → Acme). Skips free providers (gmail, outlook, etc.).\",\n \"fieldMappingTransformJoinArray\": \"Joins array values into a comma-separated string.\",\n \"fieldMappingTransformMapValues\": \"Replaces the value using the value map lookup table.\",\n \"fieldMappingTransformNone\": \"Copies the value as-is.\",\n \"fieldMappingTransformSplitFirstLast\": \"Splits text on spaces.\",\n \"fileUploadDisabledHint\": \"File upload is not enabled for this agent. You can enable it in the agent settings.\",\n \"fileUploadEnabled\": \"Allow users to attach files to their messages.\",\n \"freshnessBoost\": \"Applies a boost based on how recently the document was updated.\",\n \"freshnessScale\": \"Freshness scale (days)\",\n \"freshnessScaleExplanationDays\": \"A document updated today gets a +{weight} bonus. This bonus halves to +{halfWeight} after {half} days and practically drops to zero (+{zeroWeight}) after {zero} days.\",\n \"freshnessScaleExplanationMonths\": \"A document updated today gets a +{weight} bonus. This bonus halves to +{halfWeight} after {half} days and practically drops to zero (+{zeroWeight}) after {zero} days (approx. {months} months).\",\n \"freshnessScaleTooltip\": \"The half-life of the exponential decay. A document as old as this value will receive 50% of the maximum boost. Lower values cause older documents to lose the boost more quickly.\",\n \"freshnessWeight\": \"Weight multiplier of the freshness boost in the formula.\",\n \"freshnessWeightTooltip\": \"Maximum score bonus added to newly updated documents. A weight of 0.1 means a brand new document gets a +0.10 score advantage. This bonus decays exponentially over time until it reaches zero.\",\n \"gatewayCatalog\": \"The models the platform makes available, with the price per million tokens, the context size and the data privacy guarantees. Switch off the ones your organization does not use: they leave the pickers, and an agent still on one answers with the default model.\",\n \"gatewayOffDisconnected\": \"Unless its own endpoint is on and serves models, the organization is disconnected: no agent answers.\",\n \"gatewayOffNoByok\": \"Own models (BYOK) are off too: its administrator can neither set up an endpoint nor switch one on or off, nor move the embedding.\",\n \"gatewayOffStops\": \"Switched off, nothing of this organization reaches the gateway, within thirty seconds: the gateway models stop answering, and so do the internal utilities on them; the web search stops. The knowledge base, the corrected answers, the memories and the document processing go on only if the embedding is on the organization's own endpoint: on the platform's, they stop.\",\n \"gatewayOffTodo\": \"The administrator has to move both default models to the organization's own endpoint, or new agents cannot be created, and the embedding too (Models, Embedding section), or the knowledge base and the memories stay stopped. The inference is no longer charged to the credit; the voice minutes and the document OCR still are.\",\n \"guaranteeAll\": \"{name}: guaranteed on every provider.\",\n \"guaranteeNone\": \"{name}: not guaranteed.\",\n \"guaranteeSome\": \"{name}: guaranteed on some providers only, the gateway routes accordingly.\",\n \"includeThoughts\": \"Streams the model's thoughts to the client along with the response.\",\n \"inputSchema\": \"JSON Schema (draft-07) of the input parameters the LLM can provide.\",\n \"integrationOAuthAdminConsent\": \"A Microsoft 365 administrator of your organization may need to approve this.\",\n \"integrationAppCredentialScope\": \"With Sites.Read.All the app can read every site of the tenant. The connector reads only the folders you link.\",\n \"integrationAppCredentialSteps\": \"In Microsoft Entra ID: App registrations, New registration. Then API permissions, Microsoft Graph, Application permissions, Sites.Read.All, and Grant admin consent. Then Certificates & secrets, New client secret (note when it expires). Copy the Directory (tenant) ID, the Application (client) ID and the secret value here.\",\n \"interactiveLogin\": \"Lets anonymous users sign in from the chat. The external token stays active.\",\n \"issuer\": \"The issuer URL of the JWT token (iss).\",\n \"jwksUrl\": \"The JWKS endpoint URL for JWT signature verification.\",\n \"loadDelay\": \"Wait before loading the widget, for slow AMD loaders.\",\n \"loaderStrategy\": {\n \"dynamic-import\": \"Uses import() inside a classic <script>. Fallback for pages where module scripts are blocked or intercepted by legacy loaders.\",\n \"inline-module\": \"Injects an inline <script type=\\\"module\\\"> with a static import. Bypasses RequireJS and other AMD loaders. Recommended for most sites.\",\n \"script-src\": \"Loads the bundle via <script type=\\\"module\\\" src=\\\"...\\\">. Use this on sites with strict Content Security Policy (CSP) that block inline scripts.\"\n },\n \"mcpServerHealthCheckPath\": \"The endpoint used to check the health of the MCP Server (e.g., /api/health).\",\n \"mcpStatelessServer\": \"Force the client to connect in stateless mode.\",\n \"mcpHeadersOriginChanged\": \"The URL points to another host: type the values of the headers again, the saved ones stay with the previous host.\",\n \"mmr\": \"Balances semantic relevance and document diversity in search results to avoid redundant content.\",\n \"mmrCandidatesLimit\": \"Maximum number of candidate chunks pre-selected before applying MMR.\",\n \"mmrCandidatesLimitTooltip\": \"The number of top candidate chunks retrieved from the database before applying the MMR diversity filter. For example, if set to 100, the system selects the 100 highest-scoring chunks first, then filters them to find the most diverse subset.\",\n \"mmrDiversity\": \"Tradeoff between relevance (0.0) and diversity (1.0).\",\n \"mmrDiversityTooltip\": \"Controls how diverse the search results should be. A value near 0 focuses solely on relevance (even if results are similar). A value near 1 forces the inclusion of results with different details and themes, reducing redundancy.\",\n \"modelContextWindow\": \"Context window: {count}k tokens.\",\n \"modelDefaultNoneAvailable\": \"No model available: switch on at least one model of your endpoint below.\",\n \"modelDefaultOutsideCatalog\": \"This model is not among those available to your organization: pick another one. Meanwhile new agents start on the platform's standard model.\",\n \"modelDefaults\": \"They apply to the whole organization. Each agent can still use a different model, chosen in its own settings.\",\n \"modelDisabledForOrganization\": \"Switched off for this organization: the agents still on it answer with the default model, and it cannot be picked for a new one.\",\n \"modelEndpointBaseUrl\": \"The base address of the OpenAI compatible API.\",\n \"modelEndpointHttp\": \"Over http the key travels unencrypted: use it only if the endpoint is reachable from your internal network alone.\",\n \"modelEndpointHttpTitle\": \"Unencrypted connection (http)\",\n \"modelEndpointKey\": \"It is stored encrypted and never shown again.\",\n \"modelEndpointKeyStored\": \"Already saved. Leave the field empty to keep it.\",\n \"modelEndpointName\": \"The name you will recognise it by when choosing models.\",\n \"modelEndpointOffWithEmbedding\": \"Endpoint off: its models are not available, the agents on them stop answering, and the knowledge base, the memories and the documents stop with it, because it computes their vectors. Turn it back on to start them again.\",\n \"modelEndpointOnWithoutGateway\": \"Endpoint on: the models you switch on are the only ones the agents can use, since this organization does not use the platform gateway, and can be the defaults.\",\n \"modelNotOnEndpoint\": \"Not available to this organization: its endpoint no longer has this model, so an agent on it does not answer until it is moved to another model.\",\n \"modelSourceEndpoint\": \"Runs on {name}, your organization's own endpoint: your provider bills it, and the costs shown here are estimated from the price list.\",\n \"modelSourceOff\": \"Not available to this organization: the source it runs on is switched off, so an agent on it does not answer until it is moved to another model or the source is switched back on.\",\n \"modelSourcePlatform\": \"Runs on the platform AI gateway and is paid with your organization's credit.\",\n \"ownEndpoint\": \"Use your own models next to the platform ones: connect an OpenAI compatible endpoint with your own key. The agents that run on its models are not charged to your credit.\",\n \"modelEndpointOn\": \"Endpoint on: the models you switch on are available to the agents next to the platform ones, and can be the defaults.\",\n \"modelEndpointOff\": \"Endpoint off: its models are not available, and the agents on them stop answering. Switch on the models you need below, then turn it on.\",\n \"addModelsRule\": \"Switch on the models your agents will be able to use. The price comes from the platform price list; if a model is not in the list, you will be asked to enter it.\",\n \"modelPriceAsk\": \"This model is not in the platform price list. Pick a catalog model with a similar cost, or enter the prices per million tokens.\",\n \"modelPriceUnknown\": \"Not in the platform price list: enter a price.\",\n \"modelGuaranteedOnSome\": \"The guarantees you switched on hold only on some providers of this model: the gateway routes accordingly.\",\n \"modelIdByHand\": \"The technical name the endpoint uses to identify the model.\",\n \"modelNotCompatible\": \"Not compatible with the privacy flags of this agent.\",\n \"modelPriceFromListing\": \"Price taken from {id} in the platform price list.\",\n \"modelPriceListing\": \"Platform price list, entry {id}, updated on {date}.\",\n \"modelPriceManual\": \"Price typed by hand on {date}.\",\n \"modelPriceReference\": \"Same price as {id}, updated on {date}.\",\n \"modelReference\": \"A catalog model this one costs like.\",\n \"modelRetired\": \"No longer available on the platform: move the agents using it to another model.\",\n \"moveDocument\": \"Choose the destination folder for «{name}».\",\n \"moveDocuments\": \"Choose the destination folder for {n} document. | Choose the destination folder for {n} documents.\",\n \"multipleChoiceAllowCustomAnswer\": \"Show a free-text field below the options so the user can type a custom answer.\",\n \"multipleChoiceMaxOptions\": \"Maximum number of options the AI can generate (min. 2, max. 10).\",\n \"nameClaim\": \"Claim with the user name (default: name).\",\n \"oauthCallbackUrl\": \"Set this URL as the Callback URL (Redirect URI) in the OAuth provider.\",\n \"outputSchema\": \"JSON Schema (draft-07) of the expected response. Informational only.\",\n \"passphrase\": \"Enter {passphrase} to confirm the operation\",\n \"platformSupported\": \"Renders natively on WhatsApp and Teams\",\n \"privacyPolicyNotice\": \"Displayed at the bottom of the contact form. Supports Markdown.\",\n \"providerOrganizationId\": \"For Microsoft this refers to the tenant identifier (tenant ID). \\nFor others, enter the email domain (e.g. company.com).\",\n \"providerTimeoutMs\": \"Before the next provider: 1000 to 789000, BYOK only.\",\n \"reasoningDefault\": \"Platform default, applied until you choose a different value.\",\n \"reasoningNotSupported\": \"Reasoning is not supported for the selected provider.\",\n \"reasoningVisibility\": \"A reasoning agent is always visible to the members of its organization only.\",\n \"sessionExpiresIn\": \"Seconds, at least 60. Empty: 8 hours.\",\n \"showExtendedSteps\": \"Shows reasoning and tool calls as an expandable timeline in the chat.\",\n \"smoothStream\": \"Smooths text streaming creating a more natural reading experience.\",\n \"subAgentName\": \"Only letters, numbers, underscores (_) and hyphens (-) are allowed.\",\n \"teamsAccentColor\": \"Defaults to the agent's theme color.\",\n \"teamsAppVersion\": \"Raise it and reinstall to apply manifest changes.\",\n \"tool\": {\n \"fetchTeamsChannelHistory\": \"On Teams channels, lets the agent read the wider channel conversation on demand. Requires reinstalling the Teams app.\",\n \"geocode\": \"Converts place names to geographic coordinates and vice versa.\",\n \"getWeather\": \"Fetches current weather data and forecasts for a specific location.\",\n \"querySpreadsheet\": \"Answers questions on the Excel and CSV files of the knowledge base with exact searches, counts and totals, instead of searching their text. Turned off, the agent does not read these files at all. The spreadsheets attached in the chat are queried with the Spreadsheets tool.\",\n \"readDocumentFile\": \"Allows the agent to read the original file of PDF/DOCX documents from the knowledge base. Useful for tables, charts, and visual content.\",\n \"requestGeolocation\": \"Requests the user's GPS location via the browser.\",\n \"retrieveRevisedAnswers\": \"Retrieves administrator-verified answers and uses them as the primary source of truth.\",\n \"runWorker\": \"Lets the agent run generic workers that inherit its tools to handle independent sub-tasks in parallel.\",\n \"scheduleWakeup\": \"When the user asks for it, the agent checks something again by itself at intervals (from one minute to one hour) and writes in the same chat when it finds news.\",\n \"searchInKnowledgeBase\": \"Searches uploaded documents in the knowledge base to provide contextual answers.\",\n \"searchInUserFiles\": \"Searches the files this user personally uploaded in chat (their private files), kept separate from the agent knowledge base.\",\n \"showArtifact\": \"Displays structured content such as formatted text, code, or documents.\",\n \"showCalendarEvent\": \"Shows a calendar event with options for Google Calendar, Outlook, and .ics download.\",\n \"showComparison\": \"Compares 2 to 4 items side by side to help the user decide.\",\n \"showContactForm\": \"Displays a contact form to collect user information.\",\n \"showDiagram\": \"Renders a chart or a diagram (flowchart, sequence, class, ER, state).\",\n \"showEmail\": \"Composes a ready-to-send email from the user's email client.\",\n \"showForm\": \"Allows collecting structured input (text, numbers, dates, choices) via multi-step forms.\",\n \"showImageGallery\": \"Collects images in a browsable gallery with zoom and lightbox.\",\n \"showLocation\": \"Displays an interactive map with a marker and directions.\",\n \"showMessage\": \"Composes a message to send via WhatsApp, Telegram, or SMS.\",\n \"showMultipleChoice\": \"Presents selectable options to guide the conversation flow.\",\n \"showProductList\": \"Shows a product list with images, descriptions, and purchase links.\",\n \"showQrCode\": \"Generates a QR code from text, URLs, or structured data.\",\n \"showSources\": \"Shows references to the knowledge base documents used in the response.\",\n \"showSuggestedReply\": \"Suggests clickable replies to continue the conversation. To have them after every answer, ask for it in the agent's instructions.\",\n \"showVideo\": \"Plays videos inline: direct files (MP4/WebM) or YouTube/Vimeo links.\",\n \"showWeather\": \"Displays a weather forecast widget directly in the chat.\",\n \"showWebPages\": \"Suggests links to web pages relevant to the user's question.\",\n \"spreadsheet\": \"Reads, searches and edits the Excel files (.xlsx) users attach in the web chat or the widget, and returns each edit as a new version to download. Needs file uploads with the Spreadsheets type.\",\n \"useAllUserFiles\": \"Searches all the user's files, including those uploaded on other agents, not just this agent's.\",\n \"useAllUserKb\": \"Reads the memories the user shared with every agent of this organization, not just this one. Writing stays scoped to this agent.\",\n \"userMemory\": \"Lets the agent remember and recall facts the user shares across conversations (name, preferences, etc.).\"\n },\n \"toolRequiresApproval\": \"The agent waits for approval in the chat before running.\",\n \"apiToolSecretParameters\": \"Sent with every call, in the query string or in the JSON body, and never shown to the model. Once saved a value is not shown again: leave it empty to keep it.\",\n \"apiToolSecretParametersNew\": \"Sent with every call, in the query string or in the JSON body, and never shown to the model. Type every value: once saved it is not shown again.\",\n \"apiToolSecretStored\": \"Saved: leave it empty to keep it\",\n \"apiToolCredentialInSchema\": \"These parameters look like credentials, and the model fills them in: {names}. Move them to the secret parameters and remove them from the input schema.\",\n \"apiToolCredentialBadge\": \"A parameter that looks like a credential is filled in by the model\",\n \"apiToolSecretsOriginChanged\": \"The URL points to another host: type the values of the headers and of the secret parameters again, the saved ones stay with the previous host.\",\n \"apiToolSecretBodyMethod\": \"A {method} request sends no body\",\n \"toolWorkingSetMode\": {\n \"active\": \"Before each reply, an evaluation model (TypeSafe Jev) picks the MCP servers, API tools and sub-agents the message needs, and the agent sees only those. When it needs another one, it brings it back on its own. Each evaluation is charged to the organization.\",\n \"off\": \"The agent sees every tool on every reply.\",\n \"shadow\": \"The evaluation model picks the tools each message needs, but the agent still sees them all: the choice is only recorded in the message detail, to compare it with the tools actually used before turning it on. Each evaluation is charged to the organization.\"\n },\n \"useColorsForAgentHeader\": \"Color the agent header based on the main color.\",\n \"userFeedbackComment\": \"The user left a comment on this answer\",\n \"userFeedbackNegative\": \"The user rated this answer negatively\",\n \"userFeedbackPositive\": \"The user rated this answer positively\",\n \"userFeedbackReaction\": \"The user reacted to this answer\",\n \"utilityModel\": \"Used behind the scenes for tasks such as rephrasing user questions and updating memories.\",\n \"voiceApprovalRefused\": \"During a call these actions do not run: approval is given on screen and on the phone there is nobody to ask, so the agent refuses them and says so. Affected: {tools}.\",\n \"voiceCascadeTimeoutSeconds\": \"How long the provider waits for us before cancelling the turn. It must sit above the agent's slowest turn: a knowledge base, tools and slow models all stretch it.\",\n \"voiceEnabled\": \"Let people talk to this agent. The answer is still this agent, with its knowledge and tools.\",\n \"voiceFillerAfterSeconds\": \"Says it is working when the answer is late. Empty: four seconds.\",\n \"voiceFillerMessage\": \"Empty: a default sentence in the voice language.\",\n \"voiceFirstMessage\": \"Said as soon as the call opens. It also covers the slower first turn.\",\n \"voiceId\": \"Cloned voices are not listed: the provider forbids them here.\",\n \"voiceIgnoreBackgroundVoices\": \"Listen only to who is talking. Leave on where the microphone hears a room.\",\n \"voiceLanguage\": \"Used to recognise speech and to speak.\",\n \"voiceMaxSessionSeconds\": \"A call is billed by the minute and stops on its own at this limit.\",\n \"voiceRemaining\": \"Time left in this call\",\n \"voiceSlowAgentOnCall\": \"A large knowledge base or connected MCP servers can take an agent several seconds to answer, and on a call those seconds are silence: the two settings below are what keeps the caller company while it works. If your calls feel slow, the answer itself gets shorter with fewer steps, a smaller retrieval limit or a faster model.\",\n \"voiceTurnEagerness\": \"Eager answers sooner, patient waits for you.\",\n \"voiceTurnTimeoutSeconds\": \"How long the agent lets the caller stay silent before speaking again. Nothing to do with how fast it answers.\",\n \"webSearchEnabled\": \"Allow the agent to search the web during conversations.\",\n \"webSearchNative\": \"Uses {provider}'s built-in web search capabilities.\",\n \"webhookUrl\": \"Paste this URL into the platform's webhook / messaging endpoint configuration.\",\n \"welcomePopup\": \"Show a welcome popup with the initial message before the chat is opened.\",\n \"whatsappVerifyToken\": \"Paste this token into the Meta webhook configuration.\",\n \"zeroDataRetention\": \"Route requests only to ZDR-compliant providers. Restricts the pool of available providers.\",\n \"webSourceUnselected\": \"Pages you leave unselected will arrive with the next checks of the source.\",\n \"webSourceInterval\": \"New pages follow the schedule above.\",\n \"webPagesRefresh\": \"When due, only what changed is regenerated.\",\n \"documentFolderWebSource\": \"Website folder: new pages arrive on their own and stay editable.\"\n },\n \"integrationProvider\": {\n \"hubspot\": \"HubSpot\",\n \"salesforce\": \"Salesforce\",\n \"sharepoint\": \"SharePoint\",\n \"web\": \"Website\"\n },\n \"integrationProviderDescription\": {\n \"hubspot\": \"Sync contacts and leads with HubSpot CRM.\",\n \"salesforce\": \"Sync contacts and leads with Salesforce CRM.\",\n \"sharepoint\": \"Link a SharePoint folder: its files join the knowledge base and stay up to date on their own.\"\n },\n \"integrationSyncStatus\": {\n \"failed\": \"Failed\",\n \"pending\": \"Pending\",\n \"success\": \"Success\"\n },\n \"interval\": {\n \"D\": \"day | days\",\n \"M\": \"month | months\",\n \"W\": \"week | weeks\",\n \"Y\": \"year | years\"\n },\n \"invitationStatus\": {\n \"accepted\": \"Accepted\",\n \"canceled\": \"Canceled\",\n \"expired\": \"Expired\",\n \"pending\": \"Pending\"\n },\n \"label\": {\n \"AI\": \"AI\",\n \"acceptInvitationAndCreateAccount\": \"Accept the invitation and create your account\",\n \"accountingCredit\": \"Accounting balance\",\n \"actions\": \"Actions\",\n \"active\": \"Active\",\n \"activeSessions\": \"Active sessions\",\n \"actualCost\": \"Actual cost\",\n \"addApiTool\": \"Add API tool\",\n \"addIntegration\": \"Add integration\",\n \"additionalMetadata\": \"Additional metadata\",\n \"admin\": \"Admin\",\n \"advancedOptions\": \"Advanced options\",\n \"agent\": \"Agent\",\n \"agentModel\": \"Default model\",\n \"agentTree\": \"Agent tree\",\n \"agents\": \"Agents\",\n \"agentsUsed\": \"Agents used\",\n \"aiDescription\": \"AI generated\",\n \"aiDescriptionModel\": \"AI model\",\n \"aiDescriptionPrompt\": \"Custom prompt\",\n \"allAgents\": \"All agents\",\n \"allChannels\": \"All channels\",\n \"allowedDomains\": \"Allowed domains\",\n \"analysis\": \"Analysis\",\n \"anonymized\": \"Anonymized\",\n \"anonymous\": \"Anonymous\",\n \"answer\": \"Answer\",\n \"answeringOnTheCall\": \"Answering…\",\n \"apiKey\": \"API key\",\n \"apiKeys\": \"API keys\",\n \"appearance\": \"Appearance\",\n \"arrayOfObjects\": \"Array of objects\",\n \"assistantMessage\": \"Agent response\",\n \"attachmentsNotImported\": \"Attachments not imported\",\n \"attempts\": \"Attempts\",\n \"attention\": \"Attention\",\n \"audience\": \"Audience\",\n \"authentication\": \"Authentication\",\n \"auto\": \"Auto\",\n \"autoDetected\": \"Automatically detected\",\n \"autoProvisioning\": \"Auto provisioning\",\n \"autoProvisioningDescription\": \"Users who authenticate through these identity providers or domains will be automatically added to your organization with the default role.\",\n \"autoRefreshError\": \"Error\",\n \"autoRefreshOff\": \"Paused\",\n \"autoRefreshOn\": \"Live\",\n \"autoRefreshStoppedErrors\": \"Automatic update stopped after repeated errors.\",\n \"autoRefreshStoppedUnavailable\": \"Automatic update stopped: this content is no longer accessible.\",\n \"autoRefreshWarning\": \"Warning\",\n \"availableCredit\": \"Available balance\",\n \"averageLine\": \"Average\",\n \"avgChatsPerUser\": \"Chats per user\",\n \"avgMessagesPerChat\": \"Messages per chat\",\n \"banned\": \"Banned\",\n \"baseUrl\": \"Base URL\",\n \"black\": \"Black\",\n \"blocked\": \"Blocked\",\n \"blockedDomains\": \"Blocked domains\",\n \"blockedReasons\": \"Blocked reasons\",\n \"body\": \"Body\",\n \"botName\": \"Bot name\",\n \"breadcrumbs\": \"Breadcrumbs\",\n \"browserEngine\": \"Browser engine\",\n \"browsers\": \"Browsers\",\n \"budgetTokens\": \"Budget tokens\",\n \"byChannel\": \"By channel\",\n \"cached\": \"cached\",\n \"calendarEvent\": \"Event\",\n \"changePassword\": \"Change password\",\n \"channel\": \"Channel\",\n \"channels\": \"Channels\",\n \"chat\": \"Chat\",\n \"chatCreatedAgo\": \"Created\",\n \"chatOrigin\": \"Chat origin\",\n \"chatStatistics\": \"Statistics\",\n \"chatTypes\": \"Conversation type\",\n \"chatUpdatedAgo\": \"Last message\",\n \"chatWidget\": \"Chat widget\",\n \"chunks\": \"Chunks\",\n \"clear\": \"Clear\",\n \"codeEditor\": \"Code\",\n \"collapseContext\": \"Hide context\",\n \"comment\": \"Comment\",\n \"comparison\": \"Comparison\",\n \"completeName\": \"Full name\",\n \"completedAt\": \"Completed at\",\n \"configMcpServer\": \"Configure MCP server\",\n \"configure\": \"Configure\",\n \"confirm\": \"Confirm\",\n \"confirmPassword\": \"Confirm password\",\n \"confirmPrivateNetwork\": \"I confirm the endpoint cannot be reached from the internet\",\n \"confirmWithEmail\": \"Type your email to confirm\",\n \"confirmWithPassword\": \"Enter your password to confirm\",\n \"connectMcpServer\": \"Connect MCP server\",\n \"connectSubAgent\": \"Connect sub-agent\",\n \"connectedAccounts\": \"Connected accounts\",\n \"connectedIntegrations\": \"Connected integrations\",\n \"mcpConnectionSignedIn\": \"Signed in\",\n \"mcpConnectionRenewed\": \"Last renewed\",\n \"connectionChecking\": \"Connection checking…\",\n \"connectionConnected\": \"Connected\",\n \"connectionError\": \"Connection error\",\n \"connectionIdle\": \"Not verified\",\n \"connectionStatus\": \"Connection\",\n \"connectionTypes\": \"Connection type\",\n \"const\": \"Constant\",\n \"contactUs\": \"Contact us\",\n \"content\": \"Content\",\n \"contentPreview\": \"Content preview\",\n \"contextTokens\": \"{count}k context\",\n \"conversationLengthBuckets\": \"Conversation length\",\n \"conversationOutline\": \"Conversation outline\",\n \"conversations\": \"Conversations\",\n \"conversationsOverTime\": \"Conversations over time\",\n \"cost\": \"Cost\",\n \"costByChannel\": \"Cost per channel\",\n \"costInUSD\": \"Cost in USD\",\n \"costSource\": \"Cost source\",\n \"costSourceAll\": \"Total\",\n \"costSourceEndpoint\": \"Endpoint\",\n \"costSourceGateway\": \"Gateway\",\n \"country\": \"Country\",\n \"crawlMode\": \"Crawl mode\",\n \"createdAt\": \"Created at\",\n \"createdBy\": \"Created by\",\n \"credit\": \"Credit\",\n \"creditUpdatedAt\": \"Credit updated at\",\n \"credits\": \"Credits\",\n \"crmSync\": \"CRM sync\",\n \"curlExample\": \"cURL example\",\n \"currentAgent\": \"Current agent\",\n \"currentLocation\": \"Current location\",\n \"currentPassword\": \"Current password\",\n \"currentSession\": \"Current session\",\n \"customCss\": \"Custom CSS\",\n \"customRange\": \"Custom range\",\n \"dailyUsage\": \"Daily usage\",\n \"dark\": \"Dark\",\n \"darkModePreference\": \"Dark mode\",\n \"dataLoadFailed\": \"Could not load this data\",\n \"day\": \"Day\",\n \"dayRateLimit\": \"Day rate limit\",\n \"days\": \"{count} day | {count} days\",\n \"default\": \"Default\",\n \"defaultMappingHint\": \"If no mapping is configured, the default one for the provider will be used.\",\n \"defaultRole\": \"Default role\",\n \"deleted\": \"Deleted\",\n \"deprecated\": \"Deprecated\",\n \"description\": \"Description\",\n \"deselectAction\": \"Remove\",\n \"details\": \"Details\",\n \"device\": \"Device\",\n \"deviceContext\": \"Device context\",\n \"deviceType\": \"Device type\",\n \"diagram\": \"Diagram\",\n \"disabled\": \"Disabled\",\n \"disallowPromptTraining\": \"Prompt Training disallowed\",\n \"dismissableNotice\": \"Notice\",\n \"documentOrigin\": \"Origin\",\n \"documentPriority\": \"Document priority\",\n \"documentRefresh\": \"Automatic update\",\n \"documentRefreshAuto\": \"Automatic\",\n \"documentRefreshInterval\": \"Frequency\",\n \"documentRefreshLastRead\": \"Last read\",\n \"documentRefreshNext\": \"Next update\",\n \"documentRefreshOutcome\": \"Outcome\",\n \"documentRefreshPaused\": \"Paused\",\n \"documentSourceInterval\": \"Check frequency\",\n \"documentSourceLastRun\": \"Last run\",\n \"documentSourceLastSync\": \"Last check\",\n \"documentSourceNextSync\": \"Next check\",\n \"documentSourceSearch\": \"Search a site\",\n \"documentType\": \"Document type\",\n \"documents\": \"Documents\",\n \"domainFilter\": \"Domain filter\",\n \"downloadFile\": \"Download file\",\n \"downloading\": \"Downloading\",\n \"editApiTool\": \"Edit API tool\",\n \"editIntegration\": \"Edit integration\",\n \"editMcpServer\": \"Edit MCP server\",\n \"editSubAgent\": \"Edit sub-agent\",\n \"effectiveCredit\": \"Effective credit\",\n \"email\": \"Email\",\n \"emailClaim\": \"Email claim\",\n \"emailDomain\": \"Email domain\",\n \"emailVerified\": \"Email verified\",\n \"embed\": \"Embed\",\n \"embedCode\": \"Embed code\",\n \"embedding\": \"Embedding\",\n \"embeddingEndpointModel\": \"Id on the endpoint\",\n \"embeddingModel\": \"Embedding model\",\n \"embeddingModelsCount\": \"Embedding models ({count})\",\n \"embeddingNotConfigured\": \"Not configured\",\n \"embeddingNotConfiguredReason\": \"The platform AI gateway is off for this organization\",\n \"embeddingOnEndpoint\": \"Embedding on your endpoint\",\n \"embeddingOnPlatform\": \"On the platform AI gateway\",\n \"embeddingReindex\": \"Reindex of the knowledge base and the memories\",\n \"embeddingReindexDone\": \"Reindexed on {date}\",\n \"embeddingReindexPaused\": \"Reindex paused\",\n \"embeddingReindexProgress\": \"Reindexing: {done} of {total} vectors done\",\n \"embeddingReindexQueued\": \"Reindex queued: it starts within a few minutes\",\n \"enabled\": \"Enabled\",\n \"enabledTools\": \"Enabled tools\",\n \"endDate\": \"End date\",\n \"endpointCost\": \"Endpoint cost (estimate)\",\n \"endpointModels\": \"Your endpoint's models\",\n \"engagement\": \"Engagement\",\n \"enum\": \"Enum values\",\n \"error\": \"Error\",\n \"estimatedCost\": \"Estimated end-of-month cost\",\n \"estimatedCredit\": \"Estimated credit\",\n \"estimatedMonthlyCost\": \"Month-end estimate\",\n \"excludeDomains\": \"Exclude domains\",\n \"expandContext\": \"Show more context\",\n \"expireIn\": \"Expires in\",\n \"expires\": \"Expires\",\n \"expiresAt\": \"Expiration\",\n \"exportMyData\": \"Export my data\",\n \"externalAuth\": \"External authentication\",\n \"externalAuthDescription\": \"Configure external authentication providers to allow authentication via JWT tokens issued by these providers. Users authenticated through these providers will be automatically added to your organization with the default role (auto provisioning).\",\n \"externalContext\": \"External context\",\n \"externalContextSchema\": \"External context schema\",\n \"externalId\": \"External ID (CRM)\",\n \"fallbackModels\": \"Fallback models\",\n \"feedback\": \"Feedback\",\n \"feedbacks\": \"Feedback\",\n \"fieldMappingFallback\": \"Fallback value\",\n \"fieldMappingSource\": \"Source field\",\n \"fieldMappingTarget\": \"Target field {number}\",\n \"fieldMappingTransform\": \"Transform\",\n \"fieldMappingTransformExtractDomainCompany\": \"Extract company from email domain\",\n \"fieldMappingTransformJoinArray\": \"Join array\",\n \"fieldMappingTransformMapValues\": \"Map values\",\n \"fieldMappingTransformNone\": \"None\",\n \"fieldMappingTransformSplitFirstLast\": \"Split first/last\",\n \"fieldMappingValueMap\": \"Value map\",\n \"file\": \"File\",\n \"fileUpload\": \"File upload\",\n \"fileUploadAllowedMimeTypes\": \"Allowed file types\",\n \"fileUploadEnabled\": \"Enable file upload\",\n \"fileUploadMaxFileSize\": \"Max file size (MB)\",\n \"fileUploadMaxFilesPerChat\": \"Max files per chat\",\n \"fileUploadMaxFilesPerMessage\": \"Max files per message\",\n \"files\": \"Files\",\n \"filters\": \"Filters\",\n \"floatingButtonPosition\": \"Button position\",\n \"folderName\": \"Folder name\",\n \"followExternal\": \"Follow external links\",\n \"footer\": \"Footer\",\n \"forceOcr\": \"Force OCR\",\n \"formMaxOptionsPerStep\": \"Suggested max options\",\n \"formMaxSteps\": \"Suggested max steps\",\n \"frequencyPenalty\": \"Frequency penalty\",\n \"freshnessBoost\": \"Freshness boost\",\n \"freshnessScale\": \"Freshness scale\",\n \"freshnessWeight\": \"Freshness weight\",\n \"fullDuration\": \"Duration (ms)\",\n \"gallery\": \"Gallery ({count} images)\",\n \"gatewayCost\": \"Gateway cost\",\n \"gatewayModels\": \"Platform models\",\n \"gdprRequestType\": {\n \"conversations_erasure\": \"Conversations erasure\",\n \"erasure\": \"Data erasure\",\n \"export\": \"Data export\"\n },\n \"gdprRequests\": \"GDPR requests\",\n \"general\": \"General\",\n \"generateSchemaFromJson\": \"Generate schema from JSON\",\n \"goalOutcome\": \"Goal outcome\",\n \"granularity\": \"Granularity\",\n \"groupReasoningAgents\": \"Group\",\n \"hasRedundantChunks\": \"Has redundant chunks\",\n \"header\": \"Header\",\n \"headers\": \"HTTP headers\",\n \"healthCheckPath\": \"Health check\",\n \"hour\": \"Hour\",\n \"hourRateLimit\": \"Hour rate limit\",\n \"hsAccessToken\": \"Access token\",\n \"hsAccessTokenHint\": \"Create a HubSpot Private App with the following scopes: crm.objects.contacts.read, crm.objects.contacts.write, crm.objects.owners.read.\",\n \"hsDefaultOwnerId\": \"Default owner ID\",\n \"hsDefaultOwnerIdHint\": \"Empty: contacts get no owner.\",\n \"hsStaticProperties\": \"Static properties\",\n \"hsStaticPropertiesHint\": \"Fixed properties added to every contact.\",\n \"httpHeaderKey\": \"Key\",\n \"httpHeaderValue\": \"Value\",\n \"secretParameters\": \"Secret parameters\",\n \"secretParameterPosition\": \"Sent in\",\n \"secretPositionQuery\": \"Query string\",\n \"secretPositionBody\": \"Body\",\n \"apiToolCredentialBadge\": \"Key exposed\",\n \"httpHeaders\": \"HTTP headers\",\n \"iframe\": \"Iframe\",\n \"iframeCode\": \"Iframe code\",\n \"imageLoadError\": \"Image not available\",\n \"imageHeld\": \"Image from {host}: click to load\",\n \"videoHeld\": \"Video from {host}: click to load\",\n \"imageHost\": \"Host\",\n \"imageHosts\": \"Image hosts\",\n \"imageHostsHint\": \"Answers and cards load images by themselves only from these hosts and from the platform. An image from any other host shows its host and loads on a click, so an answer cannot send the conversation to a site through an image url.\",\n \"impersonated\": \"Impersonated\",\n \"impersonation\": \"Impersonation\",\n \"importing\": \"Importing\",\n \"inStock\": \"In stock\",\n \"integrationReconnectNeeded\": \"Reconnect needed\",\n \"integrationAppCredential\": \"App {clientId}\",\n \"modelDefaults\": \"Default models\",\n \"modelNotAvailable\": \"not available\",\n \"modelSourcePlatform\": \"Platform\",\n \"modelSwitchedOff\": \"switched off\",\n \"ownEndpoint\": \"Your own endpoint (BYOK)\",\n \"price\": \"Price\",\n \"priceListModel\": \"Price list model\",\n \"priceToSet\": \"Price to set\",\n \"modelPriceOf\": \"Price of {id}\",\n \"context\": \"Context\",\n \"someProviders\": \"Some providers\",\n \"modelsActiveSummary\": \"{active} of {count} models active\",\n \"noModelsYet\": \"No models yet\",\n \"notServedAnyMore\": \"No longer offered by the endpoint\",\n \"modelIdByHand\": \"Model id\",\n \"modelReference\": \"Reference model\",\n \"msClientId\": \"Application (client) ID\",\n \"msClientSecret\": \"Client secret\",\n \"msTenantId\": \"Directory (tenant) ID\",\n \"inTest\": \"In testing\",\n \"includeDomains\": \"Include domains\",\n \"includeThoughts\": \"View reasoning\",\n \"indexStatus\": \"Index status\",\n \"info\": \"Info\",\n \"initialMessage\": \"Initial message\",\n \"input\": \"Input\",\n \"inputSchema\": \"Input schema\",\n \"insertEmail\": \"Insert email\",\n \"integration\": \"Integration\",\n \"integrationConfig\": \"Configuration\",\n \"integrationDisabled\": \"Disabled\",\n \"integrationEnabled\": \"Enabled\",\n \"integrationFieldMapping\": \"Field mapping\",\n \"integrationProvider\": \"Provider\",\n \"integrationSyncLogs\": \"Sync logs\",\n \"integrationSyncLogsDescription\": \"Synchronization occurs automatically when a new lead is created.\",\n \"integrations\": \"Integrations\",\n \"interactiveLogin\": \"Show login/registration\",\n \"interface\": \"Interface\",\n \"ipAddress\": \"IP address\",\n \"isAutoJoinEnabled\": \"Automatically merge existing users with the same email\",\n \"issuer\": \"Issuer\",\n \"itemsPerPage\": \"Per page\",\n \"jsonSample\": \"JSON sample\",\n \"jwksUrl\": \"JWKS URL\",\n \"key\": \"Key\",\n \"language\": \"Language\",\n \"languages\": \"Languages\",\n \"last14Days\": \"Last 14 days\",\n \"last30Days\": \"Last 30 days\",\n \"last7Days\": \"Last 7 days\",\n \"last90Days\": \"Last 90 days\",\n \"lastActive\": \"Last active\",\n \"lastActivity\": \"Last activity\",\n \"lastMonth\": \"Last month\",\n \"lastRecalledAt\": \"Last recalled\",\n \"lastReconciledAt\": \"Last reconciled at\",\n \"lastRefillAt\": \"Last refill at\",\n \"lastSync\": \"Last sync\",\n \"lastUsedAt\": \"Last used\",\n \"latest\": \"Latest\",\n \"leadId\": \"Lead ID\",\n \"left\": \"Left\",\n \"light\": \"Light\",\n \"limit\": \"Limit\",\n \"limitedStock\": \"Limited stock\",\n \"linkedAgents\": \"Linked agents\",\n \"llmIssues\": \"LLM issues\",\n \"loadDelay\": \"Load Delay (ms)\",\n \"loaderStrategy\": \"Loader strategy\",\n \"loaderStrategyDynamicImport\": \"Dynamic import\",\n \"loaderStrategyInlineModule\": \"Inline module\",\n \"loaderStrategyScriptSrc\": \"Script src\",\n \"locale\": \"Language\",\n \"location\": \"Location\",\n \"logo\": \"Logo\",\n \"logoUrl\": \"Logo URL\",\n \"mainColor\": \"Main color\",\n \"manageProfileDescription\": \"Edit your name, password, avatar and more\",\n \"maxDepth\": \"Max depth\",\n \"maxMessageLength\": \"Max message length\",\n \"maxOutputTokens\": \"Max tokens\",\n \"maxPages\": \"Max pages\",\n \"maxResults\": \"Max results\",\n \"maxStepCount\": \"Max steps\",\n \"maxUses\": \"Max uses\",\n \"mcpAuthType\": \"Authentication type\",\n \"mcpServer\": \"MCP server\",\n \"mcpServerUrl\": \"MPC server URL\",\n \"mcpStatelessServer\": \"Stateless client\",\n \"memberSince\": \"Member since\",\n \"memories\": \"Memories\",\n \"memory\": \"Memory\",\n \"message\": \"Message\",\n \"messageDetails\": \"Message detail\",\n \"messageNumber\": \"Message {n}\",\n \"messagePlaceholder\": \"Placeholder\",\n \"messages\": \"Messages\",\n \"metadata\": \"Metadata\",\n \"method\": \"Method\",\n \"mimeTypeAudio\": \"Audio, transcribed (up to 25 MB)\",\n \"mimeTypeDocuments\": \"Documents\",\n \"mimeTypeImages\": \"Images\",\n \"mimeTypeSpreadsheets\": \"Spreadsheets (.xlsx)\",\n \"mimeTypeText\": \"Text\",\n \"minuteRateLimit\": \"Minute rate limit\",\n \"mmr\": \"Maximal marginal relevance (MMR)\",\n \"mmrCandidatesLimit\": \"Candidates limit\",\n \"mmrDiversity\": \"MMR diversity\",\n \"model\": \"Model\",\n \"modelParameters\": \"Model parameters\",\n \"month\": \"Month\",\n \"monthRateLimit\": \"Month rate limit\",\n \"monthlyCost\": \"Monthly cost\",\n \"multipleChoiceAllowCustomAnswer\": \"Allow custom answer\",\n \"multipleChoiceMaxOptions\": \"Maximum number of options\",\n \"name\": \"Name\",\n \"nameClaim\": \"Name claim\",\n \"never\": \"Never\",\n \"newChat\": \"New chat\",\n \"newPassword\": \"New password\",\n \"no\": \"No\",\n \"noDataAvailable\": \"No data available\",\n \"noDataRetention\": \"ZDR\",\n \"noFieldMapping\": \"No custom field mapping configured\",\n \"noIntegrations\": \"No integrations configured\",\n \"noPromptTraining\": \"No training\",\n \"noSyncLogs\": \"No sync logs found\",\n \"noTimingData\": \"No data yet. Make a chat request to see timing logs.\",\n \"notAvailable\": \"Not available\",\n \"notCompatible\": \"not compatible\",\n \"notConfigured\": \"Not configured\",\n \"notConnected\": \"Not connected\",\n \"notSynced\": \"Not synced\",\n \"notificationTitle\": {\n \"document_error\": \"Document processing failed\",\n \"document_sync_removed\": \"Documents removed from a synchronised folder\",\n \"headless_quota_exceeded\": \"Daily automation quota reached\",\n \"organization\": {\n \"created\": \"Organization created\",\n \"invite\": \"Organization invite\",\n \"invite_accepted\": \"Invitation accepted\",\n \"invite_rejected\": \"Invitation rejected\",\n \"removed\": \"Removed from organization\"\n },\n \"password_reset_requested\": \"A password reset has been requested\",\n \"two_factor\": {\n \"enabled\": \"Two-step verification turned on\",\n \"disabled\": \"Two-step verification turned off\",\n \"app\": \"Two-step verification uses an app\",\n \"reset\": \"Two-step verification reset\",\n \"passkeyAdded\": \"Passkey added\",\n \"passkeyRemoved\": \"Passkey removed\",\n \"unlocked\": \"Two-step verification unlocked\",\n \"passkeyRemovedByAdmin\": \"Passkey removed by an administrator\",\n \"trustedDevicesForgotten\": \"Trusted devices forgotten\"\n },\n \"web_source_pages_removed\": \"Pages removed because they left the sitemap\",\n \"web_source_removal_held\": \"Pages that left a sitemap were not removed\"\n },\n \"notificationType\": {\n \"agent_wakeup\": \"Agent check\",\n \"api_key_expiring\": \"API Key expiring\",\n \"chat_blocked\": \"Chat blocked\",\n \"chat_warning\": \"Chat warning\",\n \"document_error\": \"Document error\",\n \"document_sync_removed\": \"Synchronised content removed\",\n \"generic\": \"Generic\",\n \"headless_quota_exceeded\": \"Automation quota\",\n \"organization\": \"Organization\",\n \"password_reset_requested\": \"Password reset requested\",\n \"two_factor\": \"Sign-in security\",\n \"web_source_pages_removed\": \"Pages that left a sitemap\",\n \"web_source_removal_held\": \"Removal to confirm\"\n },\n \"oauthAuthorizationUrl\": \"OAuth authorization URL\",\n \"oauthClientId\": \"OAuth client ID\",\n \"oauthClientSecret\": \"OAuth client secret\",\n \"oauthScopes\": \"OAuth scopes\",\n \"oauthTokenUrl\": \"OAuth token URL\",\n \"ocrUsed\": \"OCR\",\n \"older\": \"Older\",\n \"onChannels\": \"WA · Teams\",\n \"openSource\": \"Open source\",\n \"operatingSystems\": \"Operating systems\",\n \"or\": \"Or\",\n \"organization\": \"Organization\",\n \"organizations\": \"Organizations\",\n \"origin\": \"Origine\",\n \"originalMessage\": \"Original answer\",\n \"origins\": \"Origins\",\n \"outOfStock\": \"Out of stock\",\n \"output\": \"Output\",\n \"outputSchema\": \"Output schema\",\n \"pages\": \"Pages\",\n \"passphrase\": \"Enter passphrase\",\n \"password\": \"Password\",\n \"paused\": \"Paused\",\n \"peakHours\": \"Peak hours\",\n \"perMillionTokens\": \"per million tokens\",\n \"period\": \"Period\",\n \"phone\": \"Phone number\",\n \"picture\": \"Picture\",\n \"platformAssistant\": \"Platform assistant\",\n \"platformContext\": \"Platform context\",\n \"preferences\": \"Preferences\",\n \"presencePenalty\": \"Presence penalty\",\n \"preview\": \"Preview\",\n \"priceInput\": \"Input price\",\n \"priceOutput\": \"Output price\",\n \"priority\": \"Priority\",\n \"priority_1\": \"Lowest\",\n \"priority_2\": \"Low\",\n \"priority_3\": \"Normal\",\n \"priority_4\": \"High\",\n \"priority_5\": \"Critical\",\n \"privacy\": \"Privacy\",\n \"privacyPolicyNotice\": \"Visible in the contact form.\",\n \"processedAt\": \"Processed at\",\n \"processing\": \"Processing…\",\n \"profile\": \"Profile\",\n \"prompt\": \"Prompt\",\n \"properties\": \"Properties\",\n \"provider\": \"Provider\",\n \"providerOrganizationId\": \"Provider ID\",\n \"providerTimeoutMs\": \"Provider timeout (ms)\",\n \"qdrantSync\": \"Vector sync\",\n \"qrCode\": \"QR code\",\n \"question\": \"Question\",\n \"rateLimits\": \"Rate limits\",\n \"read\": \"Read\",\n \"reasoning\": \"Reasoning\",\n \"reasoningAgentTester\": \"Reasoning agent tester\",\n \"reasoningDetails\": \"Reasoning details\",\n \"reasoningEffort\": \"Reasoning effort\",\n \"reasoningSummary\": \"Reasoning summary\",\n \"recommended\": \"Recommended\",\n \"redundantChunks\": \"Redundant chunks\",\n \"referrerDomains\": \"Referrer domains\",\n \"refillAmount\": \"Refill amount\",\n \"released\": \"Released\",\n \"rememberMe\": \"Remember me\",\n \"replyWithoutText\": \"Reply without text\",\n \"requestCount\": \"Requests\",\n \"requestedAt\": \"Requested at\",\n \"requests\": \"Requests\",\n \"requestsPerAgent\": \"Requests per agent\",\n \"requestsUsed\": \"Requests used\",\n \"required\": \"Required\",\n \"requiredFields\": \"Required fields\",\n \"retired\": \"retired\",\n \"revisedMessage\": \"Revised answer\",\n \"right\": \"Right\",\n \"riskScoreBands\": \"Risk score bands\",\n \"role\": \"Role\",\n \"rootDocuments\": \"Without folder\",\n \"scheduledAt\": \"Scheduled at\",\n \"schemaRootArray\": \"Array\",\n \"schemaRootObject\": \"Object\",\n \"schemas\": \"Schemas\",\n \"screenCategories\": \"Screen resolution\",\n \"searchAndExecution\": \"Search & execution\",\n \"searchMode\": \"Search mode\",\n \"searchRecencyFilter\": \"Recency filter\",\n \"sectionChannelBreakdown\": \"Channel breakdown\",\n \"sectionConversationQuality\": \"Conversation quality\",\n \"sectionCostTrend\": \"Monthly cost trend\",\n \"sectionDeviceContext\": \"Devices & context (web and widget)\",\n \"sectionTraffic\": \"Traffic (web and widget)\",\n \"security\": \"Security\",\n \"selectAgent\": \"Select an agent\",\n \"selectedHint\": \"Selected\",\n \"sentiment\": \"Sentiment\",\n \"sentimentTrends\": \"Sentiment trends\",\n \"serverInfo\": \"MCP Server info\",\n \"sessionExpiresIn\": \"Session duration (seconds)\",\n \"setPassword\": \"Set password\",\n \"settings\": \"Settings\",\n \"sfApiVersion\": \"API version\",\n \"sfClientId\": \"Client ID\",\n \"sfClientSecret\": \"Client secret\",\n \"sfExternalIdField\": \"External ID field\",\n \"sfInstanceUrl\": \"Instance URL\",\n \"shareWith\": \"Share with agents\",\n \"showExtendedSteps\": \"Extended steps view\",\n \"similarity\": \"Similarity\",\n \"sitemapUrl\": \"Sitemap URL\",\n \"size\": \"Size\",\n \"slug\": \"Slug\",\n \"smartRanking\": \"Smart ranking\",\n \"smoothStream\": \"Smooth streaming\",\n \"source\": \"Source\",\n \"sources\": \"Sources\",\n \"spokenExchange\": \"Exchanged by voice\",\n \"startDate\": \"Start date\",\n \"startUrl\": \"Start URL\",\n \"status\": \"Status\",\n \"style\": \"Style\",\n \"subAgent\": \"Sub-agent\",\n \"subject\": \"Subject\",\n \"syncStatus\": \"Sync status\",\n \"targetAll\": \"All users\",\n \"targetOrganization\": \"Organization\",\n \"targetType\": \"Target\",\n \"targetUser\": \"Specific user\",\n \"teams\": \"Microsoft Teams\",\n \"teamsAccentColor\": \"Accent color\",\n \"teamsAppId\": \"App ID (Microsoft)\",\n \"teamsAppPassword\": \"App password / client secret\",\n \"teamsAppTenantId\": \"Tenant ID\",\n \"teamsAppType\": \"App type\",\n \"teamsAppVersion\": \"App version\",\n \"teamsDescriptionFull\": \"Full description\",\n \"teamsDescriptionShort\": \"Short description\",\n \"teamsDeveloperName\": \"Developer name\",\n \"teamsManifestDetails\": \"App details (shown in Teams)\",\n \"temperature\": \"Temperature\",\n \"testConnection\": \"Test connection\",\n \"testPlayground\": \"Test playground\",\n \"textColor\": \"Text color\",\n \"theme\": \"Theme\",\n \"thinking\": \"Thinking\",\n \"thinkingBudget\": \"Thinking budget\",\n \"thinkingDisplay\": \"Thinking display\",\n \"thinkingEffort\": \"Thinking effort\",\n \"thinkingLevel\": \"Thinking level\",\n \"thinkingType\": \"Thinking type\",\n \"thisMonth\": \"This month\",\n \"timeoutMs\": \"Timeout (ms)\",\n \"timezoneRegions\": \"Timezone region\",\n \"title\": \"Title\",\n \"today\": \"Today\",\n \"tokens\": \"tokens\",\n \"tool\": \"Tool\",\n \"toolApprovalBadge\": \"User confirm\",\n \"toolName\": \"Tool name: {name}\",\n \"toolRequiresApproval\": \"Ask the user to confirm\",\n \"toolWorkingSet\": \"Tool selection\",\n \"toolWorkingSetMode\": \"Mode\",\n \"tools\": \"Tools\",\n \"topPages\": \"Top pages\",\n \"topTopics\": \"Trending topics\",\n \"total\": \"Total\",\n \"totalConversations\": \"Chat in total\",\n \"totalCost\": \"Total cost\",\n \"totalCostPartlyEstimated\": \"Total cost, partly estimated\",\n \"totalItemsCount\": \"Items: {total}\",\n \"totalMessages\": \"Messages in total\",\n \"totalPages\": \"of {total}\",\n \"trustedOrigins\": \"Trusted origins\",\n \"tuning\": \"Tuning\",\n \"type\": \"Type\",\n \"uniqueUsers\": \"Unique users\",\n \"unitChat\": \"chats\",\n \"unitChatPerUser\": \"chats\",\n \"unitMessages\": \"messages\",\n \"unitMessagesPerChat\": \"messages\",\n \"unitUsers\": \"users\",\n \"unknown\": \"Unknown\",\n \"unread\": \"Unread\",\n \"updateProfile\": \"Update profile\",\n \"updatedAt\": \"Updated at\",\n \"upload\": \"Upload {index}/{total}\",\n \"url\": \"Web page URL\",\n \"usage\": \"Usage\",\n \"useBrowserEngine\": \"Browser engine\",\n \"useExtractionStrategy\": \"Use AI\",\n \"user\": \"User\",\n \"userInput\": \"Selected option\",\n \"userQuestion\": \"Question\",\n \"userTones\": \"User tone\",\n \"users\": \"Users\",\n \"utilityModel\": \"Model for internal tasks\",\n \"value\": \"Value\",\n \"version\": \"Version\",\n \"video\": \"Video\",\n \"viewPdfPage\": \"View PDF page\",\n \"visibility\": \"Visibility\",\n \"visualEditor\": \"Visual\",\n \"voice\": \"Voice\",\n \"voiceCascadeTimeoutSeconds\": \"Answer deadline (seconds)\",\n \"voiceEnabled\": \"Voice conversation\",\n \"voiceFillerAfterSeconds\": \"Filler after (seconds)\",\n \"voiceFillerMessage\": \"Filler phrase\",\n \"voiceFirstMessage\": \"Opening line\",\n \"voiceId\": \"Voice\",\n \"voiceIgnoreBackgroundVoices\": \"Ignore background voices\",\n \"voiceLanguage\": \"Spoken language\",\n \"voiceMaxSessionSeconds\": \"Session limit (seconds)\",\n \"voiceTurnEagerness\": \"End of turn\",\n \"voiceTurnTimeoutSeconds\": \"Pause before speaking again (seconds)\",\n \"vote\": \"Vote\",\n \"warnings\": \"Warnings\",\n \"webSearch\": \"Web search\",\n \"webSearchEnabled\": \"Enable web search\",\n \"webSearchNative\": \"Built-in\",\n \"webSearchProvider\": \"Search provider\",\n \"webhookUrl\": \"Webhook URL\",\n \"week\": \"Week\",\n \"welcome\": \"Welcome to {appName}!\",\n \"whatsapp\": \"WhatsApp\",\n \"whatsappAccessToken\": \"Access token\",\n \"whatsappAppSecret\": \"App secret\",\n \"whatsappPhoneNumberId\": \"Phone number ID\",\n \"whatsappVerifyToken\": \"Verify token\",\n \"white\": \"White\",\n \"widgetUrl\": \"Widget URL\",\n \"year\": \"Year\",\n \"yes\": \"Yes\",\n \"yesterday\": \"Yesterday\",\n \"zeroDataRetention\": \"Zero data retention (ZDR)\",\n \"webPagesRefresh\": \"How often to read the pages again\",\n \"webSourceWatch\": \"Also look for new pages\",\n \"webSourceInterval\": \"How often to look for them\",\n \"webSourceRemoveMissing\": \"Remove pages that leave the sitemap\",\n \"apiUrl\": \"API URL\",\n \"createEndpoint\": \"Create endpoint\",\n \"wakeupCheck\": \"Automatic check\",\n \"wakeupNext\": \"Next check at {time}\",\n \"wakeupQuietRun\": \"Nothing new at the {time} check | Nothing new in {count} checks, the last at {time}\"\n },\n \"language\": {\n \"de\": \"German\",\n \"en\": \"English\",\n \"english\": \"English\",\n \"es\": \"Spanish\",\n \"fr\": \"French\",\n \"french\": \"French\",\n \"german\": \"German\",\n \"it\": \"Italian\",\n \"italian\": \"Italian\",\n \"nl\": \"Dutch\",\n \"pt\": \"Portuguese\",\n \"spanish\": \"Spanish\"\n },\n \"lead\": {\n \"contactReason\": {\n \"appointment\": \"Appointment\",\n \"callback_request\": \"Callback request\",\n \"complaint\": \"Complaint\",\n \"info_request\": \"Information request\",\n \"other\": \"Other\",\n \"quote_request\": \"Quote request\",\n \"support\": \"Support\"\n },\n \"label\": {\n \"budget\": \"Budget\",\n \"company\": \"Company\",\n \"contactReason\": \"Contact reason\",\n \"conversationSummary\": \"Conversation summary\",\n \"preferredContactMethod\": \"Preferred contact method\",\n \"preferredContactTime\": \"Preferred contact time\",\n \"productInterest\": \"Product interest\",\n \"sentiment\": \"Sentiment\",\n \"topics\": \"Topics\",\n \"urgency\": \"Urgency\"\n },\n \"preferredContactMethod\": {\n \"any\": \"Any\",\n \"email\": \"Email\",\n \"phone\": \"Phone\",\n \"whatsapp\": \"WhatsApp\"\n },\n \"preferredContactTime\": {\n \"afternoon\": \"Afternoon\",\n \"any\": \"Any\",\n \"evening\": \"Evening\",\n \"morning\": \"Morning\"\n },\n \"sentiment\": {\n \"excited\": \"Excited\",\n \"frustrated\": \"Frustrated\",\n \"negative\": \"Negative\",\n \"neutral\": \"Neutral\",\n \"positive\": \"Positive\"\n },\n \"urgency\": {\n \"high\": \"High\",\n \"low\": \"Low\",\n \"medium\": \"Medium\"\n }\n },\n \"mcpAuthType\": {\n \"headers\": \"HTTP headers (API key)\",\n \"oauth\": \"OAuth 2.0 per user\"\n },\n \"mcpConnectionStatus\": {\n \"active\": \"In use\",\n \"orphan\": \"Unused\",\n \"stale\": \"Expired\"\n },\n \"mcpServerStatus\": {\n \"active\": \"Active\",\n \"error\": \"Error\",\n \"inactive\": \"Inactive\"\n },\n \"member\": {\n \"agentAccess\": {\n \"hint\": \"Leave empty to let this member use every organization agent. Select agents to limit them to those only.\",\n \"managerHint\": \"Owners and admins can use every agent; their access cannot be restricted.\"\n }\n },\n \"memorySource\": {\n \"explicit\": \"Explicit | Explicit\",\n \"extracted\": \"Extracted | Extracted\"\n },\n \"message\": {\n \"accountLinkAlreadyLinked\": \"This account is already linked to another user. Sign in with that user to unlink it first.\",\n \"accountLinkCancelled\": \"Linking was cancelled on the provider's page. Nothing was changed.\",\n \"accountLinkEmailMismatch\": \"You can only link accounts that use the same email as your profile.\",\n \"accountLinkErrorWithCode\": \"Unable to link the account (code: {code}). Try again or contact support with this code.\",\n \"accountLinkNotAllowed\": \"This provider cannot be linked to your profile: the account's email is not verified or linking is disabled.\",\n \"accountLinkUserInfo\": \"The provider did not return a usable profile, so no account was linked. Try again.\",\n \"accountUnlinked\": \"Account disconnected\",\n \"agentAccessDenied\": \"You do not have access to this agent\",\n \"agentAccessDeniedAction\": \"View available agents\",\n \"agentActivated\": \"Agent activated successfully\",\n \"agentDeactivated\": \"Agent deactivated successfully\",\n \"agentNotFound\": \"Agent not found\",\n \"agentsEmpty\": \"No agents yet. Create the first one to get started.\",\n \"analyzeChatError\": \"The analysis did not complete. Try again in a few minutes.\",\n \"analyzeChatInProgress\": \"Analyzing the conversation. A long conversation can take about a minute.\",\n \"analyzeChatSuccess\": \"Conversation analyzed successfully\",\n \"apiKeyCreatedForUser\": \"Shown only once: copy it and pass it on securely.\",\n \"apiKeysEmpty\": \"The keys you create for programmatic access appear here.\",\n \"apiToolsEmpty\": \"No API tools yet. Add the first one to let the agent call an external service.\",\n \"banSuccess\": \"User banned successfully\",\n \"blockChatSuccess\": \"Conversation blocked successfully\",\n \"bulkUnlinkAllDeleteConfirm\": \"{count} document(s) will be permanently deleted because they have no other linked agents. Do you want to proceed?\",\n \"bulkUnlinkMixedConfirm\": \"{unlinkCount} document(s) will be unlinked and {deleteCount} will be permanently deleted (they have no other linked agents). Do you want to proceed?\",\n \"cancelInvitationConfirm\": \"Are you sure you want to cancel the invitation for {email}?\",\n \"cancelInvitationSuccess\": \"Invitation cancelled successfully\",\n \"chatActionError\": \"The action did not complete. Try again in a few minutes.\",\n \"chatAnonymized\": \"The content of this conversation has been erased (GDPR): only aggregate metrics remain.\",\n \"chatErrorBadRequest\": \"An error occurred with the request. Start a new chat to continue.\",\n \"chatErrorContextWindow\": \"The conversation has become too long. Start a new chat to continue.\",\n \"chatErrorConversationBlocked\": \"This conversation has been blocked for policy violations.\",\n \"chatErrorCreditExhausted\": \"Service unavailable. Try again later.\",\n \"chatErrorGatewayDisabled\": \"This agent's model is not available: the organization does not use the platform AI gateway. An administrator can move the agent to one of the organization's own models.\",\n \"chatErrorGatewayPromptTraining\": \"Model \\\"{model}\\\" does not support the \\\"Disable prompt training\\\" option. Disable this setting in the agent's gateway configuration or choose a compatible model.\",\n \"chatErrorGatewayZdr\": \"Model \\\"{model}\\\" does not support the \\\"Zero Data Retention\\\" option. Disable ZDR in the agent's gateway configuration or choose a compatible model.\",\n \"chatErrorGeneric\": \"An error occurred. Start a new chat if the problem persists. Retrying in {seconds}…\",\n \"chatErrorInternalServer\": \"A server error occurred. Start a new chat to continue.\",\n \"chatErrorModelUnavailable\": \"This agent's model is not available right now: the endpoint it runs on is switched off or no longer serves it. An administrator can switch it back on or move the agent to another model.\",\n \"chatErrorNotFound\": \"The conversation is no longer available. Start a new chat to continue.\",\n \"chatErrorOriginNotAllowed\": \"The request origin is not allowed. Contact the system administrator.\",\n \"chatErrorRateLimit\": \"The rate limit has been exceeded. Retrying in {seconds} seconds…\",\n \"chatErrorRetrying\": \"Retrying in {seconds} seconds…\",\n \"checkYourEmail\": \"Check your email inbox\",\n \"confirm\": \"Are you sure you want to proceed?\",\n \"confirmRefillCredits\": \"Are you sure you want to refill the credit of {amount} €?\",\n \"contentTruncated\": \"Content truncated. Total characters: {total}\",\n \"copied\": \"Copied to clipboard\",\n \"crawlError\": \"Error during crawling\",\n \"createFolderSuccess\": \"Folder created successfully\",\n \"defaultAgentWelcome\": \"Hello! How can I help you today?\",\n \"defaultPrivacyPolicyNotice\": \"By sending the request you accept our [Privacy Policy](https://www.iubenda.com/privacy-policy/46350192).\",\n \"deleteAgentConfirm\": \"Its folders are deleted. A document no other agent uses is deleted, a shared one stays with the other agents.\",\n \"deleteAllMemoriesConfirm\": \"They go for good, semantic search included.\",\n \"deleteAllNotificationsConfirm\": \"Delete every notification?\",\n \"deleteBulkDocumentConfirm\": \"They are removed from every agent linked to them and go to the trash, where they can be restored.\",\n \"deleteDocumentConfirm\": \"It is removed from every agent linked to it and goes to the trash, where it can be restored.\",\n \"deleteDocumentConfirmWithAgents\": \"It goes to the trash, where it can be restored, and is removed from the following agents:{agents}\",\n \"deleteError\": \"The deletion failed. Try again.\",\n \"deleteFolderConfirm\": \"Its documents are removed from this agent. A document no other agent uses is deleted.\",\n \"deleteFolderSuccess\": \"Folder deleted successfully\",\n \"deleteMyConversationsConfirm\": \"This cannot be undone.\",\n \"deleteNotificationConfirm\": \"Delete this notification?\",\n \"deleteProfileBlockedSoleOwner\": \"You are the sole owner of {organizations}. Transfer ownership or delete the organizations before deleting your account.\",\n \"deleteProfileConfirm\": \"You are about to permanently delete your account: your profile will be anonymized and the content of your conversations erased. This action cannot be undone.\",\n \"deleteProfileDescription\": \"Anonymize your account and erase the content of your conversations (right to be forgotten).\",\n \"diagramRenderError\": \"Could not render diagram.\",\n \"documentRefreshPausedReason\": \"The page no longer responds, so the automatic update is paused. Update now to try again.\",\n \"documentRefreshSet\": \"Automatic update set on {updated} documents, {skipped} skipped because they are not web pages\",\n \"documentRefreshStarted\": \"Update started on {queued} documents, {skipped} skipped\",\n \"documentsEmpty\": \"Nothing in this folder yet. Add documents from the Create menu, or start with a folder.\",\n \"documentsEmptyManaged\": \"No synced files in this folder. Its content comes from the connected source: if you have just linked it, the first import can take a few minutes.\",\n \"documentSourceLinked\": \"Folder linked. The first import starts shortly.\",\n \"documentSourceNothingHere\": \"Nothing in here.\",\n \"documentSourceStale\": \"The state of this folder is not up to date: the last read failed.\",\n \"documentSourceUnlinked\": \"Folder unlinked. Its documents stay, and can now be edited like any other.\",\n \"embeddingActivated\": \"Embedding saved: the endpoint serves the declared model\",\n \"embeddingBackToPlatform\": \"The vectors are computed on the platform again\",\n \"embeddingIndexNotUpdated\": \"The progress stopped updating.\",\n \"embeddingRemoved\": \"Embedding removed from the endpoint\",\n \"empty\": \"No items found\",\n \"endpointActivated\": \"Endpoint activated successfully\",\n \"endpointDeactivated\": \"Endpoint deactivated successfully\",\n \"endpointsEmpty\": \"No endpoints yet. Create the first one to expose the agent over HTTP.\",\n \"error\": \"Error\",\n \"errorRetry\": \"Something went wrong. Try again.\",\n \"exportError\": \"Error while exporting data\",\n \"exportFailed\": \"The data export failed. Try again later.\",\n \"exportMyDataDescription\": \"Download a complete copy of your personal data as a ZIP archive (GDPR Art. 15 and 20).\",\n \"exportRequested\": \"We are preparing your archive: you will receive an email with the download link.\",\n \"exportSuccess\": \"CSV exported successfully\",\n \"feedbackSubmitError\": \"Submission failed. Try again.\",\n \"feedbackSubmittedMessage\": \"Your feedback has been submitted successfully.\",\n \"feedbackSubmittedTitle\": \"Thank you!\",\n \"feedbacksEmpty\": \"Feedback that users leave on the agent's answers will appear here.\",\n \"fileAlreadyImported\": \"Already imported\",\n \"fileAlreadyImportedExistingList\": \"The following files are already present in the organization:\\n{names}\",\n \"fileAlreadyImportedLink\": \"This file has already been imported. Do you want to link the existing document to the current agent or create a new one?\",\n \"fileAlreadyImportedNewList\": \"The following files are new and will be imported normally:\\n{names}\",\n \"fileAlreadyImportedQuestion\": \"Do you want to link the existing files to the current agent?\",\n \"fileAlreadyLinkedToAgent\": \"The following files are already linked to the current agent:\\n{names}\",\n \"fileLimitPerChat\": \"You have reached the limit of {max} files for this conversation.\",\n \"fileLimitPerMessage\": \"You can attach at most {max} files per message.\",\n \"foldersEmpty\": \"No folders yet. Create the first one from the documents page to organize them.\",\n \"formRenderError\": \"The form could not be shown. Ask again and the agent will send it.\",\n \"gdprRequestsEmpty\": \"Export or deletion requests for this user appear here.\",\n \"geolocationPermissionDenied\": \"Location access denied. Allow it in your browser settings.\",\n \"geolocationUnavailable\": \"Location unavailable. Try again or enter your location manually.\",\n \"getMcpServerInfoError\": \"An error occurred while loading the tools.\",\n \"importError\": \"Error during import\",\n \"importSuccess\": \"{count} documents imported successfully\",\n \"importing\": \"Importing…\",\n \"info\": \"Information\",\n \"insufficientCredit\": \"Insufficient credit. Try again later.\",\n \"insufficientCreditMessage\": \"Your credit is insufficient to complete this operation. Contact the system administrator for more information.\",\n \"integrationConnected\": \"Connected successfully.\",\n \"integrationCreated\": \"Integration created successfully\",\n \"integrationDisabled\": \"Integration disabled\",\n \"integrationDisconnected\": \"Connection removed.\",\n \"integrationDisconnectConfirm\": \"The folders it keeps in sync are unlinked.\",\n \"integrationEnabled\": \"Integration enabled\",\n \"integrationOAuthDenied\": \"The connection was refused, or a Microsoft 365 administrator has not approved it yet.\",\n \"integrationOAuthFailed\": \"The connection did not succeed.\",\n \"integrationOAuthStartFailed\": \"The connection could not be started.\",\n \"integrationRemoveConfirm\": \"This integration's configuration is removed.\",\n \"integrationTestFailed\": \"Connection test failed: {error}\",\n \"integrationTestSuccess\": \"Connection verified successfully\",\n \"integrationUpdated\": \"Integration updated successfully\",\n \"invalidJson\": \"The input is not valid JSON\",\n \"invitationAccepted\": \"Invitation accepted\",\n \"invitationAlreadyHandled\": \"Invitation already handled\",\n \"invitationDeclined\": \"Invitation declined\",\n \"invitationToJoinOrganization\": \"You have been invited to join\",\n \"invitationsEmpty\": \"No pending invitations. Invite people from the members page.\",\n \"leadSubmitError\": \"Failed to submit. Try again.\",\n \"leadSubmittedMessage\": \"Your information has been submitted successfully.\",\n \"leadSubmittedTitle\": \"Thank you!\",\n \"leadsEmpty\": \"Leads collected by the agent during conversations will appear here.\",\n \"leftOrganization\": \"You have successfully left the organization\",\n \"loadConversationsError\": \"Failed to load conversations\",\n \"loading\": \"Loading…\",\n \"loadingError\": \"Error while loading\",\n \"mcpConnectionConnectedAt\": \"Signed in on {date}\",\n \"mcpConnectionDisconnectDescription\": \"The agents will no longer use your {name} account. The next time you need it, the agent will ask you to sign in, and you can choose a different account.\",\n \"mcpConnectionDisconnectQuestion\": \"Disconnect {name}?\",\n \"mcpConnectionDisconnected\": \"{name} account disconnected\",\n \"mcpConnectionsDescription\": \"The services you signed in to with your account. Disconnect one to stop the agents from using it, or to sign in again with a different account.\",\n \"mcpConnectionsAvailableDescription\": \"The integrations of the agents you use that you have not signed in to yet. You can connect them now, without waiting for the agent to ask.\",\n \"mcpConnectionConnected\": \"{name} account connected\",\n \"mcpConnectionConnectFailed\": \"Signing in to {name} did not work. Try again, and if it keeps failing, tell whoever runs the agent.\",\n \"mcpConnectionUsedBy\": \"Used by {agents}\",\n \"mcpConnectionUsedByNone\": \"No agent uses it\",\n \"noMcpConnections\": \"No connected integrations\",\n \"userMcpConnectionsEmpty\": \"This user has not signed in to any integration with their own account.\",\n \"mcpConnectionRevokeQuestion\": \"Revoke {user}'s sign-in to {name}?\",\n \"mcpConnectionRevokeDescription\": \"The agents will no longer use their {name} account. The provider is asked to revoke it too, where it supports that; otherwise the authorization stays valid there until it expires. To use it again, {user} has to sign in themselves. They will receive a notification.\",\n \"mcpConnectionRevokedAtProvider\": \"Sign-in to {name} revoked, at the provider too\",\n \"mcpConnectionRevokedHere\": \"Sign-in to {name} revoked here. The provider did not confirm the revocation: the authorization may stay valid there until it expires.\",\n \"mcpServerCheckError\": \"Error while checking MCP Server: {error}\",\n \"mcpServerCheckSuccess\": \"MCP Server check successful\",\n \"mcpServerInvalidEndpoint\": \"This URL does not point to an MCP endpoint: the server replied with a web page. Check the path, MCP servers usually expose it under /mcp.\",\n \"mcpServersEmpty\": \"No MCP servers yet. Connect the first one to give the agent new tools.\",\n \"membersEmpty\": \"No members yet. Invite the first one to get started.\",\n \"memoriesEmpty\": \"Memories the agent saves about this user during conversations will appear here.\",\n \"memoryNotSynced\": \"Memory not synced with semantic search: it is not considered in answers until the repair sweep heals it.\",\n \"modelDiscoveryUnavailable\": \"This endpoint does not provide the list of its models: enter the ids by hand.\",\n \"modelDiscoveryFailed\": \"We could not read the list of models from the endpoint: only the models already saved are shown.\",\n \"modelPricesUnchanged\": \"No price changed.\",\n \"modelPricesUpdated\": \"Updated the price of one model: {models}. | Updated the prices of {count} models: {models}.\",\n \"modelProviderDeleted\": \"Endpoint deleted.\",\n \"moveDocumentSuccess\": \"Document moved successfully\",\n \"noActiveSessions\": \"No other active sessions\",\n \"noApiKeys\": \"No API keys\",\n \"noChats\": \"No chat available\",\n \"noConnectedAccounts\": \"No connected accounts\",\n \"noConversations\": \"No conversations found\",\n \"noConversationsHint\": \"Start a new chat to see it appear here.\",\n \"noCreditsData\": \"No credit data available\",\n \"noEndpointLogs\": \"No calls to this endpoint yet\",\n \"noEndpointModels\": \"No model available: the endpoint listed none.\",\n \"modelRemoved\": \"Model removed.\",\n \"noGdprRequests\": \"No GDPR requests\",\n \"noLinkedAgents\": \"No linked agents\",\n \"noNotifications\": \"No notifications\",\n \"noOptions\": \"No options\",\n \"noOrganizations\": \"No organizations\",\n \"noResults\": \"No results\",\n \"noSearchResults\": \"Nothing matches your search. Clear it to see everything.\",\n \"notificationsEmpty\": \"No notifications sent yet. Create the first one to reach your users.\",\n \"oauthConfigIncomplete\": \"OAuth configuration incomplete. Set the Client ID in the MCP server settings.\",\n \"oauthConnected\": \"OAuth authorization completed successfully\",\n \"oauthError\": \"Error during OAuth authorization\",\n \"organizationDisconnected\": \"Neither the platform gateway nor an endpoint of its own serves this organization, so its agents do not answer.\",\n \"organizationMembersEmpty\": \"No members yet. Add the first one to get started.\",\n \"organizationNotSelected\": \"No organization selected\",\n \"organizationsEmpty\": \"No organizations yet. Create the first one to get started.\",\n \"pageNotFound\": \"Page not found\",\n \"passwordChangeSuccess\": \"Password changed successfully\",\n \"passwordResetSuccess\": \"Password reset. Every session of the account has been closed: sign in with the new password.\",\n \"profileOrganizationsEmpty\": \"The organizations you belong to appear here.\",\n \"readError\": \"Error while reading\",\n \"reasoningAgent\": \"This is a reasoning agent. It is not designed to maintain the conversation history, each message is processed independently.\",\n \"recoverPasswordSuccess\": \"Recovery email sent successfully\",\n \"refillFailed\": \"Refill failed. Try again later.\",\n \"refillSuccess\": \"Refill completed successfully\",\n \"refreshSuccess\": \"Refresh completed successfully\",\n \"releaseNotesEmpty\": \"No release notes published yet. Updates will be listed here as they ship.\",\n \"removeSuccess\": \"Removal completed successfully\",\n \"renameFolderSuccess\": \"Folder renamed successfully\",\n \"revisedAnswersEmpty\": \"No revised answers yet. Create the first one to teach the agent a better reply.\",\n \"selectedCount\": \"{count} of {total} selected\",\n \"sendInvitationConfirm\": \"Are you sure you want to resend the invitation to {email}?\",\n \"sessionRevoked\": \"Session signed out\",\n \"sessionsEmpty\": \"Signing in from another device or browser opens a new session, listed here.\",\n \"setPasswordDescription\": \"For now you sign in only through a connected account. Set a password to sign in with email and password too: we will email you a link to create it. Creating it closes every open session, this one included.\",\n \"setPasswordLinkSent\": \"We sent the link to {email}.\",\n \"sharedSuccess\": \"Document shared successfully\",\n \"sitemapUrlRequired\": \"Sitemap URL is required\",\n \"startUrlRequired\": \"Start URL is required\",\n \"subAgentsEmpty\": \"Connect an agent to delegate part of the conversation to it.\",\n \"submitError\": \"Error while saving\",\n \"submitSuccess\": \"Save completed successfully\",\n \"success\": \"Success\",\n \"testExecutionError\": \"Error executing test\",\n \"toolNameAutoGenerated\": \"The tool name will be generated automatically\",\n \"typeToSearch\": \"Start typing to search…\",\n \"unauthorized\": \"You do not have permission to manage channels.\",\n \"unbanSuccess\": \"User unbanned successfully\",\n \"unblockChatSuccess\": \"Conversation unblocked successfully\",\n \"unlinkAgentConfirm\": \"The document stays available to the other agents linked to it.\",\n \"unlinkDocumentConfirm\": \"It stays available to the other agents linked to it.\",\n \"unlinkLastAgentDeleteConfirm\": \"The document is permanently deleted, because no other agent is linked to it.\",\n \"unlinkSuccess\": \"Document unlinked successfully\",\n \"unlinkSyncedFolderConfirm\": \"Syncing stops. The folder and its documents stay with the agent and can be edited like any other from now on: to remove them, delete the folder.\",\n \"unsavedChanges\": \"Save or discard your changes first\",\n \"urlAlreadyImported\": \"Already imported\",\n \"urlAlreadyImportedLink\": \"This URL has already been imported. Do you want to link it to the current agent?\",\n \"userApiKeysEmpty\": \"Keys this user creates from their profile for programmatic access will appear here.\",\n \"userChatsEmpty\": \"Conversations this user has with any agent will appear here.\",\n \"userOrganizationsEmpty\": \"This user does not belong to any organization yet. Add the first one.\",\n \"userUpdateSuccess\": \"User profile updated successfully\",\n \"usersEmpty\": \"No users yet. Create the first one to get started.\",\n \"voiceCancelled\": \"I have cancelled.\",\n \"voiceConfirmed\": \"I confirm.\",\n \"voiceConnecting\": \"Connecting…\",\n \"voiceConnectionDone\": \"I have completed the connection.\",\n \"voiceFailed\": \"The voice session stopped\",\n \"voiceInterrupted\": \"Try again, or continue in writing.\",\n \"voiceListening\": \"Listening\",\n \"voiceLocationRefused\": \"I would rather not share my location.\",\n \"voiceLocationShared\": \"My location is {place}.\",\n \"voiceMuted\": \"Microphone muted\",\n \"voiceNoAnswer\": \"The agent could not produce an answer for this call. Try again, or continue in writing.\",\n \"voiceSpeaking\": \"The agent is speaking\",\n \"voiceTookTooLong\": \"The answer took too long for the call. Try again, or continue in writing: the answer will appear here as soon as it is ready.\",\n \"warning\": \"Warning\",\n \"webSourceCreated\": \"Source created: the folder “{name}” will receive new pages.\",\n \"webSourceCreateError\": \"The source could not be created, and no page was imported.\",\n \"webSourceEditable\": \"Discovered pages stay editable. Unlinking the source leaves them where they are, with their automatic refresh.\",\n \"webSourceRemovalHeld\": \"The sitemap no longer lists {count} pages: too many at once to remove without a check, so nothing was removed.\",\n \"webSourceConfirmRemovalQuestion\": \"The next check takes out of the knowledge base the pages the sitemap no longer lists, up to {count}. Their content stays in the database.\",\n \"unlinkWebSourceConfirm\": \"The source stops looking for new pages. The folder and its pages stay, with their automatic refresh.\"\n },\n \"messagePart\": {\n \"audioTranscribing\": \"Transcribing the audio…\",\n \"audioTranscript\": \"Transcript\",\n \"audioTranscriptFailed\": \"It could not be transcribed\",\n \"audioTranscriptNoSpeech\": \"No speech could be heard in it\",\n \"audioTranscriptOff\": \"Not transcribed: transcription is off for this organization\",\n \"disconnectOAuthConnection\": \"Disconnecting…\",\n \"editSpreadsheet\": \"Editing the spreadsheet…\",\n \"editSpreadsheetCells\": \"{count} cell changed | {count} cells changed\",\n \"enableTools\": \"Enabling tools…\",\n \"expandChunkContext\": \"Reading more context…\",\n \"fetchTeamsChannelHistory\": \"Reading channel history…\",\n \"geocode\": \"Looking up a location…\",\n \"getWeather\": \"Fetching weather data…\",\n \"querySpreadsheet\": \"Querying the spreadsheet…\",\n \"readDocumentFile\": \"Reading the original document…\",\n \"readEarlierMessages\": \"Rereading earlier messages…\",\n \"readSpreadsheet\": \"Reading the spreadsheet…\",\n \"reasoning\": \"Reasoning…\",\n \"recallUserMemory\": \"Recalling user memories…\",\n \"requestGeolocation\": \"Requesting location…\",\n \"requestOAuthConnection\": \"Connecting…\",\n \"requestOAuthConnectionButton\": \"Connect {name}\",\n \"requestOAuthConnectionInfo\": \"Authorization requested to access {name}'s data.\",\n \"requestOAuthConnectionPrompt\": \"To access {name} data, you need to authorize the connection.\",\n \"requestOAuthConnectionSuccess\": \"Successfully connected to {name}.\",\n \"revisedAnswers\": \"Search frequently asked questions…\",\n \"runSubagent\": \"Delegating to a sub-agent…\",\n \"runWorker\": \"Delegating to a worker…\",\n \"saveUserMemory\": \"Updating user memory…\",\n \"scheduleWakeup\": \"Scheduling the next check…\",\n \"searchingDocuments\": \"Memory search…\",\n \"showArtifact\": \"Preparing content…\",\n \"showCalendarEvent\": \"Creating calendar event…\",\n \"showComparison\": \"Building comparison…\",\n \"showContactForm\": \"Creating contact form…\",\n \"showDiagram\": \"Rendering diagram…\",\n \"showEmail\": \"Composing email…\",\n \"showForm\": \"Creating form…\",\n \"showImageGallery\": \"Loading gallery…\",\n \"showLocation\": \"Loading location…\",\n \"showMessage\": \"Composing message…\",\n \"showMultipleChoice\": \"Show the options…\",\n \"showProducts\": \"Loading products…\",\n \"showQrCode\": \"Generating QR code…\",\n \"showSources\": \"Loading sources…\",\n \"showSuggestedReply\": \"Suggest a reply…\",\n \"showVideo\": \"Loading video…\",\n \"showWeather\": \"Loading forecast…\",\n \"showWebPages\": \"Loading pages…\",\n \"stepCount\": \"{n} step | {n} steps\",\n \"stepDocument\": \"Document\",\n \"stepDropped\": \"{n} query left out: over the limit | {n} queries left out: over the limit\",\n \"stepError\": \"Error\",\n \"stepExcerpts\": \"{n} excerpt | {n} excerpts\",\n \"stepInput\": \"Input\",\n \"stepItems\": \"{n} item | {n} items\",\n \"stepNoResults\": \"No results found\",\n \"stepOutput\": \"Output\",\n \"stepRepeated\": \"{n} excerpt already found earlier | {n} excerpts already found earlier\",\n \"stepTimedOut\": \"{n} search did not answer in time: results may be missing | {n} searches did not answer in time: results may be missing\",\n \"steps\": \"Processing\",\n \"streaming\": \"Loading…\",\n \"tool\": \"Running a tool…\",\n \"webSearch\": \"Searching the web…\"\n },\n \"organizationLimits\": {\n \"legend\": \"Limits\",\n \"membersHint\": \"Empty: no limit. Users who arrive from the widget count too.\",\n \"membersInvalid\": \"Enter a whole number of at least 1, or leave it empty.\",\n \"membersLabel\": \"Maximum members\"\n },\n \"placeholder\": {\n \"allProviders\": \"All providers\",\n \"apiToolName\": \"e.g. get-product-availability\",\n \"apiToolUrl\": \"https://api.example.com/resource/{param}\",\n \"askAnything\": \"Type your message…\",\n \"autoDetect\": \"Auto detect\",\n \"autoGenerated\": \"Auto-generated if left blank\",\n \"comment\": \"Write your comment…\",\n \"completeName\": \"Enter full name\",\n \"constValue\": \"Constant value\",\n \"customAnswer\": \"Type your answer…\",\n \"description\": \"Enter description\",\n \"documentContent\": \"Enter document content\",\n \"documentName\": \"Enter document name\",\n \"documentOriginAll\": \"All origins\",\n \"documentRefreshAll\": \"All updates\",\n \"documentUrl\": \"Enter the URL of the web page to import\",\n \"email\": \"Enter your email address\",\n \"endDate\": \"Select end date\",\n \"enterYourQuestion\": \"Enter your question…\",\n \"insert\": \"Type here…\",\n \"insertOrigin\": \"https://example.com\",\n \"insertImageHost\": \"images.example.com\",\n \"limit\": \"Enter the limit\",\n \"loading\": \"Loading…\",\n \"mcpServerHealthCheckPath\": \"Enter the health check endpoint\",\n \"mcpServerUrl\": \"Enter the MCP server URL\",\n \"model\": \"Select model\",\n \"modelEndpointBaseUrl\": \"https://internal-proxy/v1\",\n \"name\": \"Enter name\",\n \"noTrustedOrigins\": \"No trusted origins configured\",\n \"noImageHosts\": \"No image hosts: images from other hosts wait for a click\",\n \"oauthAuthorizationUrl\": \"e.g. https://provider.com/oauth/authorize\",\n \"oauthClientId\": \"e.g. my-client-app\",\n \"oauthClientSecret\": \"Enter the client secret\",\n \"oauthScopes\": \"e.g. read:contacts write:contacts\",\n \"oauthTokenUrl\": \"e.g. https://provider.com/oauth/token\",\n \"pages\": \"1, 4, 6, 8-12\",\n \"pasteJsonSample\": \"Paste a JSON example to generate the schema\",\n \"phone\": \"Enter your phone number\",\n \"prompt\": \"Enter the prompt\",\n \"request\": \"Request…\",\n \"search\": \"Search…\",\n \"secretEdit\": \"Leave blank to keep the current secret\",\n \"select\": \"Select\",\n \"selectAgent\": \"Select an agent\",\n \"selectLanguage\": \"Select language\",\n \"selectPriority\": \"Select priority\",\n \"similarity\": \"Enter the similarity\",\n \"sitemapUrl\": \"https://example.com/sitemap.xml\",\n \"slug\": \"Enter a URL-friendly slug\",\n \"startDate\": \"Select start date\",\n \"startUrl\": \"https://example.com\",\n \"temperature\": \"Enter the temperature\",\n \"title\": \"Enter title\",\n \"uploadFile\": \"Upload a file\",\n \"emailAddress\": \"name{'@'}company.com\"\n },\n \"problemReasons\": {\n \"file-upload-validation\": {\n \"audio-too-large\": \"The recording is over 100 MB, the most that is transcribed: upload a shorter or more compressed copy, for example an m4a or an mp3.\"\n },\n \"gateway-disabled\": {\n \"gateway-disabled\": \"This organization does not use the platform AI gateway, and this document needs something that runs there: the embedding, if it is not active on the endpoint (Models, Embedding section), or the document's AI model, to replace with one of the endpoint.\",\n \"transcription-off\": \"This organization does not use the platform AI gateway, which is where audio recordings are transcribed: upload the transcript as a text file instead.\"\n },\n \"input-validation\": {\n \"header-env-placeholder\": \"A header refers to an environment variable of the platform, which API tools no longer resolve: header values are sent exactly as written, so type the value itself.\",\n \"header-origin-changed\": \"The URL points to another host: type the values of the headers again, the saved ones stay with the previous host.\",\n \"header-url-host-placeholder\": \"A tool with headers needs a fixed host: the scheme, host and port of its URL cannot hold a placeholder the model fills in.\",\n \"header-value-missing\": \"A header has no value: type it, or remove the header.\",\n \"secret-body-method\": \"A GET or DELETE request sends no body: put the secret parameters in the query string, or change the method.\",\n \"secret-env-placeholder\": \"A secret parameter refers to an environment variable of the platform, which API tools do not resolve: type the value itself.\",\n \"secret-origin-changed\": \"The URL points to another host: type the values of the secret parameters again, the saved ones stay with the previous host.\",\n \"secret-path-placeholder\": \"A secret parameter cannot fill a placeholder of the URL path: the path is filled in by the model, which never sees the secret.\",\n \"secret-url-host-placeholder\": \"A tool with secret parameters needs a fixed host: the scheme, host and port of its URL cannot hold a placeholder the model fills in.\",\n \"secret-value-missing\": \"A secret parameter has no value: type it, or remove the parameter.\"\n },\n \"model-unavailable\": {\n \"embedding-endpoint-off\": \"The endpoint that computes this organization's embedding is off: switch it back on in the Models page.\",\n \"endpoint-off\": \"This document needs the organization's endpoint, for the embedding or for the document's AI model, and the endpoint is off: switch it back on in the Models page.\"\n },\n \"provider-request-failed\": {\n \"timeout\": \"The external provider did not answer in time: try again in a moment.\"\n }\n },\n \"problems\": {\n \"conflict\": \"A conflict occurred. The resource may already exist.\",\n \"conversation-blocked\": \"This conversation has been blocked.\",\n \"credit-exhausted\": \"Credits exhausted. Contact your administrator.\",\n \"embedding-identity-failed\": \"The endpoint does not serve the declared embedding model: its vectors would not match the knowledge base. Check the model id.\",\n \"entity-not-found\": \"Resource not found or disabled.\",\n \"feature-disabled\": \"This feature is not enabled for your organization.\",\n \"file-upload-disabled\": \"File upload is not enabled for this agent.\",\n \"file-upload-validation\": \"Invalid file: check size, type, or number of files.\",\n \"gateway-disabled\": \"This organization does not use the platform AI gateway, so its models are not available. Use a model of the organization's own endpoint.\",\n \"hubspot-missing-scopes\": \"The HubSpot token is missing required permissions. Add the \\\"crm.objects.owners.read\\\" scope.\",\n \"input-validation\": \"Input validation failed. Check the data format.\",\n \"internal-server-error\": \"An unexpected error occurred. Try again later.\",\n \"mcp-endpoint-invalid\": \"This URL does not point to an MCP endpoint. Check the path, MCP servers usually expose it under /mcp.\",\n \"method-not-allowed\": \"HTTP method not allowed for this endpoint.\",\n \"model-default-unavailable\": \"A default model has to be a model the organization can use: pick another default first.\",\n \"model-not-chat\": \"This is an embedding model, not a chat model: it cannot answer an agent.\",\n \"model-price-missing\": \"A model cannot be switched on without a price: pick a model it costs like, or type the price.\",\n \"model-unavailable\": \"The chosen model is not available to this organization: pick another one.\",\n \"not-found\": \"Page not found.\",\n \"oauth-authorization-required\": \"OAuth authorization required. Complete the authorization flow for this MCP server.\",\n \"oauth-config-incomplete\": \"OAuth configuration incomplete. Set the Client ID to enable OAuth.\",\n \"origin-not-allowed\": \"Request origin is not allowed.\",\n \"price-list-unavailable\": \"The gateway price list cannot be reached right now: try again, or type the price by hand.\",\n \"provider-request-failed\": \"The external provider refused the request.\",\n \"rate-limit-exceeded\": \"Too many requests. Try again later.\",\n \"two-factor-required\": \"An organization you belong to requires two-step verification: set it up to continue.\",\n \"unauthorized\": \"Authentication required. Sign in.\",\n \"validation-error\": \"Validation error. Check the submitted data.\"\n },\n \"profileSection\": {\n \"backToApp\": \"Back to the app\",\n \"general\": {\n \"title\": \"Profile and preferences\",\n \"description\": \"Your name and picture, and how the app looks to you.\",\n \"pictureHint\": \"PNG or JPG.\"\n },\n \"notifications\": {\n \"title\": \"Notifications\",\n \"description\": \"Which notices you get, in the app and by email.\",\n \"groups\": \"Notification types\",\n \"alwaysOn\": \"Account security notices and messages from administrators always arrive.\",\n \"loadFailed\": \"Your preferences could not be read.\",\n \"channel\": {\n \"inApp\": \"App\",\n \"email\": \"Email\"\n },\n \"agent_replies\": {\n \"title\": \"Agent replies\",\n \"summary\": \"When an agent you asked to check again has news for you.\"\n },\n \"documents\": {\n \"title\": \"Documents and sources\",\n \"summary\": \"Documents that fail to process, and pages removed from a synced source.\"\n },\n \"integrations\": {\n \"title\": \"Integrations and keys\",\n \"summary\": \"An integration sign-in ended by an administrator, and API keys about to expire.\"\n },\n \"flagged_conversations\": {\n \"title\": \"Flagged conversations\",\n \"summary\": \"Conversations the analysis flagged or blocked.\"\n },\n \"usage_limits\": {\n \"title\": \"Usage limits\",\n \"summary\": \"When the organization uses up the day's automatic runs.\"\n }\n },\n \"security\": {\n \"title\": \"Security\",\n \"description\": \"How you sign in, and where you are signed in.\",\n \"signIn\": \"Sign-in\",\n \"passwordSummary\": \"Used with {email} to sign in.\",\n \"connectedAccountsNote\": \"to sign in without a password\",\n \"connected\": \"Connected\",\n \"devices\": \"No devices | One device | {count} devices\",\n \"deviceOn\": \"{browser} on {os}\"\n },\n \"integrations\": {\n \"title\": \"Integrations and API keys\",\n \"description\": \"Services your agents reach for you, and keys to call the platform.\",\n \"available\": \"To connect\",\n \"keyExpires\": \"Expires {date}\",\n \"keyNeverExpires\": \"No expiry\",\n \"keyRequests\": \"No requests | One request | {count} requests\"\n },\n \"organizations\": {\n \"title\": \"Organizations\",\n \"description\": \"Where you work: switch, create an API key, leave.\",\n \"current\": \"Where you are now\",\n \"onlyYou\": \"Only you\",\n \"members\": \"{count} member | {count} members\",\n \"memberSince\": \"Member since {date}\",\n \"asksTwoFactor\": \"Asks for two-step verification\"\n },\n \"data\": {\n \"title\": \"My data\",\n \"description\": \"Files you uploaded in chats, a copy of everything, your account.\",\n \"account\": \"Your account\"\n }\n },\n \"refreshInterval\": {\n \"daily\": \"Every day\",\n \"manual\": \"Manual\",\n \"monthly\": \"Every month\",\n \"weekly\": \"Every week\"\n },\n \"releaseNotes\": {\n \"heading\": \"What's new\",\n \"installed\": \"You're on\",\n \"lead\": \"Latest features, improvements and fixes.\"\n },\n \"role\": {\n \"admin\": \"Administrator\",\n \"member\": \"Member\",\n \"owner\": \"Owner\",\n \"user\": \"User\"\n },\n \"route\": {\n \"agentEndpoints\": \"API endpoints\",\n \"agents\": \"Agents\",\n \"apiTools\": \"API tools\",\n \"backoffice\": \"Backoffice\",\n \"branding\": \"Branding\",\n \"catalog\": \"Catalog\",\n \"channels\": \"Channels\",\n \"chatLogs\": \"Chat logs\",\n \"copatForYou\": \"Eight Wave for-U\",\n \"dashboard\": \"Dashboard\",\n \"dataProtection\": \"Data protection\",\n \"documents\": \"Documents\",\n \"endpointLogs\": \"Endpoint logs\",\n \"feedbacks\": \"Feedback\",\n \"frontoffice\": \"Frontoffice\",\n \"home\": \"Home\",\n \"integrations\": \"Integrations\",\n \"invitations\": \"Invitations\",\n \"leads\": \"Contacts\",\n \"mcpServer\": \"MCP server\",\n \"members\": \"Members\",\n \"models\": \"Models\",\n \"notFound\": \"Page not found\",\n \"notifications\": \"Notifications\",\n \"organizations\": \"Organizations\",\n \"playground\": \"Playground\",\n \"profile\": \"Profile\",\n \"reasoningLogs\": \"Reasoning logs\",\n \"releaseNotes\": \"Release notes\",\n \"requestPasswordReset\": \"Forgot password\",\n \"resetPassword\": \"Reset password\",\n \"revisedAnswers\": \"Revised answers\",\n \"signIn\": \"Sign in\",\n \"signUp\": \"Sign up\",\n \"subAgents\": \"Sub-agents\",\n \"system\": \"System\",\n \"twoFactor\": \"Two-step verification\",\n \"twoFactorSetup\": \"Set up two-step verification\",\n \"users\": \"Users\",\n \"video\": \"Video\",\n \"virtualAssistant\": \"Virtual assistant\"\n },\n \"showForm\": {\n \"completed\": \"Form completed\",\n \"otherPlaceholder\": \"Other…\",\n \"step\": \"Step {current} of {total}\"\n },\n \"subAgentStatus\": {\n \"active\": \"Active\",\n \"inactive\": \"Inactive\"\n },\n \"time\": {\n \"future\": \"in\",\n \"past\": \"ago\",\n \"unit\": {\n \"day\": \"day | days\",\n \"hour\": \"hour | hours\",\n \"minute\": \"minute | minutes\",\n \"second\": \"second | seconds\"\n }\n },\n \"toolApproval\": {\n \"approved\": \"Approved: the action was performed.\",\n \"cancelled\": \"Cancelled: the action was not performed.\",\n \"confirmed\": \"Confirmed: the agent proceeded with the action.\",\n \"denied\": \"Denied: the action was not performed.\",\n \"expired\": \"This request is no longer answerable: the action was not performed.\",\n \"prompt\": \"Your confirmation is needed to continue:\"\n },\n \"toolGroup\": {\n \"channels\": \"Messaging channels\",\n \"communication\": \"Communication\",\n \"delegation\": \"Delegation & automation\",\n \"knowledgeSearch\": \"Knowledge base & search\",\n \"locationWeather\": \"Location & weather\",\n \"personalization\": \"Personalization\",\n \"richContent\": \"Interactive content\"\n },\n \"toolGroupInfo\": {\n \"channels\": \"Extra capabilities on messaging platforms like Microsoft Teams.\",\n \"communication\": \"Emails, messages, contact forms, and calendar events.\",\n \"delegation\": \"Generic workers the agent can run in parallel to handle independent sub-tasks, and checks it repeats by itself over time when the user asks.\",\n \"knowledgeSearch\": \"Knowledge base search, document sources, and web page suggestions.\",\n \"locationWeather\": \"Geolocation, geocoding, interactive maps, and weather forecasts.\",\n \"personalization\": \"Per-user memory, the user's own uploaded files and the spreadsheets they attach.\",\n \"richContent\": \"Structured content: artifacts, comparisons, image galleries, QR codes, and guided replies.\"\n },\n \"toolSelection\": {\n \"cost\": \"Cost charged to the organization: {cost}\",\n \"enabled\": \"Brought back\",\n \"exposed\": \"Groups exposed to the model: probability {threshold} or higher, or used earlier\",\n \"failed\": \"Failed\",\n \"inputTokens\": \"Input tokens\",\n \"kind\": {\n \"api\": \"API tool\",\n \"mcp\": \"MCP server\",\n \"subagent\": \"Sub-agent\"\n },\n \"latency\": \"Evaluation time, limit {budget} ms\",\n \"leadFailed\": \"The evaluation failed or did not answer within {budget} ms: every group stayed exposed.\",\n \"missed\": \"Missed\",\n \"missedActive\": \"{n} used group had been left out, and the model had to bring it back | {n} used groups had been left out, and the model had to bring them back\",\n \"missedShadow\": \"{n} used group would have been left out | {n} used groups would have been left out\",\n \"mode\": {\n \"active\": \"Active\",\n \"shadow\": \"Shadow\"\n },\n \"modeHint\": {\n \"active\": \"Applied before the first step: the model saw only the groups with a check, and could bring the others back.\",\n \"shadow\": \"Recorded alongside the reply: the model saw every group, and the check is only compared with the calls.\"\n },\n \"notCharged\": \"Not charged\",\n \"probability\": \"Probability that the message needs the group; exposed from {threshold}\",\n \"seeded\": \"Used earlier\",\n \"title\": \"Tool selection\",\n \"tools\": \"{n} tool | {n} tools\",\n \"used\": \"Used\"\n },\n \"tooltip\": {\n \"agentsUsedInfo\": \"Number of agents used compared to the maximum available.\",\n \"mcpConnectionStatus\": {\n \"active\": \"The agents use it on the user's behalf.\",\n \"orphan\": \"No agent uses it any more (the integration was deleted, switched off or removed from the agents), but the sign-in is still stored.\",\n \"stale\": \"Expired with no way to renew it: it is deleted the next time it is used, and the user will have to sign in again.\"\n },\n \"requestsUsedInfo\": \"Number of requests used compared to the maximum allowed.\"\n },\n \"turnEvaluation\": {\n \"cost\": \"Cost, not charged to the organization: {cost}\",\n \"leadFailed\": \"The evaluation failed or did not answer within {budget} ms: nothing was recorded.\",\n \"modeHint\": \"Recorded after the reply, with no effect: nothing reads these probabilities yet.\",\n \"probability\": \"Probability the evaluation model gives to the question: from 0.5 it leans towards yes\",\n \"question\": {\n \"abusive\": \"Abusive message\",\n \"asksHuman\": \"Asks for a human operator\",\n \"durableFact\": \"Lasting fact about the user\",\n \"informationGap\": \"A piece of information is missing, not a capability\",\n \"manipulation\": \"Tries to manipulate the agent\",\n \"missingInfo\": \"The reply says the information is missing\"\n },\n \"title\": \"Evaluation after the reply\",\n \"version\": \"Questions version {version}\"\n },\n \"twoFactor\": {\n \"adminBackupCodes\": \"No backup codes left | One backup code left | {count} backup codes left\",\n \"adminChanges\": \"Latest changes\",\n \"adminChangesEmpty\": \"No changes yet.\",\n \"adminChangesHint\": \"From the notices sent to the user, who can delete them.\",\n \"adminDevicesForgotten\": \"The trusted devices were forgotten.\",\n \"adminFailedAttempts\": \"One wrong code in a row | {count} wrong codes in a row\",\n \"adminFilterEmpty\": \"No user is in this state.\",\n \"adminForgetDevices\": \"Forget trusted devices\",\n \"adminForgetDevicesDescription\": \"On each of them the next sign-in asks for the code again. We will tell them by email.\",\n \"adminForgetDevicesQuestion\": \"Forget the trusted devices of {name}?\",\n \"adminLocked\": \"Paused after too many wrong codes, until {date}.\",\n \"adminPasskeySynced\": \"Synced across their devices\",\n \"adminRemovePasskeyDescription\": \"It will no longer sign them in. Sessions already open stay open: if the device is lost, close them from Active sessions. We will tell them by email.\",\n \"adminRemovePasskeyQuestion\": \"Remove the passkey {passkey} of {name}?\",\n \"adminRequiredPending\": \"Required by {organizations} and not set up yet: their next page stops on the setup.\",\n \"adminStateNoneHint\": \"No second factor and no passkey\",\n \"adminSummaryAll\": \"All\",\n \"adminTrustedDevices\": \"No trusted devices | One trusted device, until {date} | {count} trusted devices, the last one until {date}\",\n \"adminUnlock\": \"Unlock\",\n \"adminUnlockDescription\": \"Do it only if they asked: the pause slows down whoever is trying their codes. We will tell them by email.\",\n \"adminUnlocked\": \"Unlocked: they can enter their code again.\",\n \"adminUnlockQuestion\": \"Unlock the two-step verification of {name}?\",\n \"adoptionRatio\": \"{count} of {total}\",\n \"adoptionState\": {\n \"totp\": \"With the app\",\n \"otp\": \"With email\",\n \"passkey\": \"With a passkey\",\n \"required\": \"To set up\",\n \"none\": \"No verification\"\n },\n \"adoptionTitle\": \"Protected members\",\n \"adoptionTitleUsers\": \"Protected users\",\n \"backupCode\": \"Backup code\",\n \"backupCodesDescription\": \"Each code works once, in place of the app's. Keep them somewhere safe: without your phone and without these codes, only an administrator can restore your access.\",\n \"backupCodesFileHeader\": \"{name} backup codes. Each one works once.\",\n \"backupCodesReplaced\": \"Here are your new backup codes: the old ones no longer work. Save them now, they will not be shown again.\",\n \"backupCodesSaved\": \"I saved the codes\",\n \"badge\": \"Two-step verification\",\n \"challengeApp\": \"Enter the 6-digit code from your authenticator app.\",\n \"challengeBackup\": \"Enter one of the backup codes you saved.\",\n \"challengeEmailSending\": \"We are sending a code to your email.\",\n \"challengeEmailSent\": \"We sent a 6-digit code to your email. It expires in 5 minutes.\",\n \"challengeTitle\": \"Two-step verification\",\n \"code\": \"6-digit code\",\n \"column\": \"2FA\",\n \"disabledMessage\": \"Two-step verification is off.\",\n \"enabledMessage\": \"Two-step verification is on.\",\n \"manualKey\": \"Can't scan it? Enter this key in the app:\",\n \"memberOff\": \"Off\",\n \"memberOn\": \"On\",\n \"memberPasskey\": \"Passkey\",\n \"memberPasskeyHint\": \"Signs in with a passkey, which meets the policy. With the password alone, the setup comes first.\",\n \"memberPending\": \"To set up\",\n \"memberPendingHint\": \"Signs in with a password and has no second factor: they will be asked to set it up before going on\",\n \"memberSocialOnly\": \"Not needed\",\n \"memberSocialOnlyHint\": \"Signs in only with Google or Microsoft, whose own security applies\",\n \"methodApp\": \"Authenticator app\",\n \"methodAppSummary\": \"A code that changes every 30 seconds, from Google Authenticator, Microsoft Authenticator, 1Password or similar. Recommended.\",\n \"methodEmail\": \"Code by email\",\n \"methodEmailSummary\": \"A code sent to {email} at every sign-in with the password.\",\n \"newBackupCodes\": \"New backup codes\",\n \"newBackupCodesDescription\": \"The codes you have now stop working, and you get ten new ones.\",\n \"passkeyAdd\": \"Add a passkey\",\n \"passkeyAddDescription\": \"Confirm your password, then follow your device: it will ask for your fingerprint, your face or its PIN.\",\n \"passkeyAdded\": \"The passkey is ready: use it next time you sign in.\",\n \"passkeyAddNoPasswordDescription\": \"Follow your device: it will ask for your fingerprint, your face or its PIN.\",\n \"passkeyAlreadyRegistered\": \"This device already holds a passkey for your account.\",\n \"passkeyCancelled\": \"The device did not create the passkey: try again when you are ready.\",\n \"passkeyCreate\": \"Create the passkey\",\n \"passkeyCreatedAt\": \"Added on {date}\",\n \"passkeyDeviceBound\": \"On one device only\",\n \"passkeyDeviceRefused\": \"The device did not create the passkey. Check that it has a screen lock, a fingerprint or a PIN, then try again.\",\n \"passkeyFallbackName\": \"Passkey\",\n \"passkeyName\": \"Name\",\n \"passkeyNameHint\": \"To recognize it in the list\",\n \"passkeyRemove\": \"Remove\",\n \"passkeyRemoved\": \"The passkey was removed.\",\n \"passkeyRemoveDescription\": \"It will no longer sign you in. You can add a new one at any time.\",\n \"passkeyRemoveQuestion\": \"Remove the passkey {name}?\",\n \"passkeys\": \"Passkeys\",\n \"passkeysDescription\": \"Sign in with your fingerprint, your face or the PIN of your device: no password and no code. A passkey also meets an organization that requires two-step verification.\",\n \"passkeysEmpty\": \"No passkeys yet.\",\n \"passkeySynced\": \"Synced across your devices\",\n \"qrLabel\": \"QR code for the authenticator app\",\n \"requireConsequence\": \"Members who sign in with a password and have not set it up yet will be stopped at their next page until they do.\",\n \"requiredBy\": \"Required by {organizations}.\",\n \"requiredByPasskeyEnough\": \"Required by {organizations}: your passkey is enough, while the password alone will ask you to set it up.\",\n \"requireHint\": \"Members who sign in with a password must set it up before using the platform. Those who sign in with Google or Microsoft are not affected.\",\n \"requireLabel\": \"Require two-step verification\",\n \"requireOff\": \"Two-step verification is no longer required.\",\n \"requireOn\": \"Two-step verification is now required.\",\n \"requireQuestion\": \"Require two-step verification from the members?\",\n \"requireTitle\": \"Require two-step verification\",\n \"reset\": \"Reset two-step verification\",\n \"resetConfirm\": \"Reset\",\n \"resetDescription\": \"The authenticator app and the backup codes stop working and the user is signed out everywhere. They can sign in with the password alone and set it up again: we will tell them by email.\",\n \"resetQuestion\": \"Reset the two-step verification of {name}?\",\n \"scanDescription\": \"Open your authenticator app, add an account and scan the QR code. Then enter the 6-digit code it shows.\",\n \"sendAgain\": \"Send a new code\",\n \"setupAddAnotherPasskey\": \"Add a new passkey\",\n \"setupAddPasskey\": \"Use a passkey instead\",\n \"setupDescription\": \"{organizations} requires it for everyone who signs in with a password.\",\n \"setupSignInWithPasskey\": \"Sign in with your passkey\",\n \"setupTitle\": \"Set up two-step verification\",\n \"signInState\": {\n \"totp\": \"App\",\n \"otp\": \"Email\",\n \"passkey\": \"Passkey\",\n \"required\": \"To set up\",\n \"none\": \"Off\"\n },\n \"signInWithPasskey\": \"Sign in with a passkey\",\n \"stateNoPassword\": \"Not available for this account\",\n \"stateOff\": \"Off\",\n \"stateOnApp\": \"On, with an authenticator app\",\n \"stateOnEmail\": \"On, with a code by email\",\n \"summaryNoPassword\": \"You sign in with Google or Microsoft, so their own security applies. Add a password and you can protect it here too.\",\n \"summaryOff\": \"Asks for a code, besides the password, every time you sign in with email and password.\",\n \"summaryOnApp\": \"No backup codes left: generate new ones. | One backup code left. | {count} backup codes left.\",\n \"summaryOnEmail\": \"The code goes to {email}.\",\n \"switchToApp\": \"Use an authenticator app\",\n \"title\": \"Two-step verification\",\n \"trustDevice\": \"Trust this device for 30 days\",\n \"turnOff\": \"Turn off\",\n \"turnOffDescription\": \"From now on the password alone is enough to sign in. We will send you an email to confirm.\",\n \"turnOffRequired\": \"An organization you belong to requires it\",\n \"turnOffTitle\": \"Turn off two-step verification\",\n \"turnOn\": \"Turn on\",\n \"turnOnTitle\": \"Turn on two-step verification\",\n \"useApp\": \"Use the authenticator app\",\n \"useBackupCode\": \"Use a backup code\",\n \"verify\": \"Verify\"\n },\n \"userFiles\": {\n \"allAgents\": \"All agents\",\n \"chatFilesEmpty\": \"No files uploaded in this chat.\",\n \"chatFilesTitle\": \"Files in this chat\",\n \"deleteSpreadsheet\": \"Delete file\",\n \"deleteSpreadsheetConfirm\": \"The uploaded file and every version the agent wrote of it are deleted, from the chat too. This cannot be undone.\",\n \"emptyHint\": \"Files you upload in chat are added here automatically and become searchable by the agent.\",\n \"emptyTitle\": \"No files yet\",\n \"exclude\": \"Remove file\",\n \"excludeConfirm\": \"The agent will not be able to search it any more. It stays in the chat you uploaded it to.\",\n \"loading\": \"Loading…\",\n \"open\": \"Open file\",\n \"openInChat\": \"Open in chat\",\n \"spreadsheetInChatOnly\": \"In its chat only\",\n \"spreadsheetVersion\": \"Edited by the agent\",\n \"subtitle\": \"Files you uploaded in chat, available to the agent.\",\n \"title\": \"My files\",\n \"untitled\": \"Untitled file\",\n \"uploadedAt\": \"Uploaded\"\n },\n \"validation\": {\n \"duplicateHeader\": \"Two headers have the same name\",\n \"duplicateSecretParameter\": \"Two secret parameters have the same name\",\n \"invalidPhoneNumber\": \"The number entered is incorrect\",\n \"invalidToolName\": \"Name must be snake_case or kebab-case (lowercase letters, numbers, underscores, and hyphens)\",\n \"passwordMismatch\": \"Passwords do not match\"\n },\n \"voiceEagerness\": {\n \"eager\": \"Eager\",\n \"normal\": \"Normal\",\n \"patient\": \"Patient\"\n },\n \"weather\": {\n \"airQuality\": \"Air quality\",\n \"aqiFair\": \"Fair\",\n \"aqiGood\": \"Good\",\n \"aqiHazardous\": \"Hazardous\",\n \"aqiModerate\": \"Moderate\",\n \"aqiPoor\": \"Poor\",\n \"aqiVeryPoor\": \"Very poor\",\n \"dailyForecast\": \"Daily forecast\",\n \"feelsLike\": \"Feels like\",\n \"today\": \"Today\"\n },\n \"unsubscribe\": {\n \"title\": \"Unsubscribe from these emails\",\n \"message\": \"Stop getting “{group}” notifications by email. The ones in the app do not change.\",\n \"action\": \"Unsubscribe\",\n \"doneTitle\": \"Done\",\n \"doneMessage\": \"You will no longer get “{group}” notifications by email. You can turn them back on from your profile at any time.\",\n \"invalidTitle\": \"Link not valid\",\n \"invalidMessage\": \"This link no longer works. You can turn the emails off from your profile, in the Notifications section.\",\n \"openSettings\": \"Open notification settings\"\n }\n}\n","{\n \"invalidType\": \"Expected {expected}, received {received}\",\n \"invalidTypeReceivedUndefined\": \"Required\",\n \"invalidTypeReceivedNull\": \"Required\",\n \"invalidValue\": \"Invalid value, expected {expected} | Invalid value, expected one of {expected}\",\n \"unrecognizedKeys\": \"Unrecognized keys: {keys}\",\n \"invalidKey\": \"Invalid key in {origin}\",\n \"invalidUnion\": \"Invalid value\",\n \"invalidElement\": \"Invalid value in {origin}\",\n \"custom\": \"Invalid value\",\n \"notMultipleOf\": \"The number must be a multiple of {multipleOf}\",\n \"invalidFormat\": {\n \"starts_with\": \"Must start with {prefix}\",\n \"ends_with\": \"Must end with {suffix}\",\n \"includes\": \"Must include {includes}\",\n \"regex\": \"Must match the pattern {pattern}\",\n \"default\": \"Invalid format, expected {format}\"\n },\n \"tooSmall\": {\n \"number\": {\n \"exact\": \"Enter exactly {minimum}\",\n \"inclusive\": \"Enter a value greater than or equal to {minimum}\",\n \"notInclusive\": \"Enter a value greater than {minimum}\"\n },\n \"int\": {\n \"exact\": \"Enter exactly {minimum}\",\n \"inclusive\": \"Enter a value greater than or equal to {minimum}\",\n \"notInclusive\": \"Enter a value greater than {minimum}\"\n },\n \"bigint\": {\n \"exact\": \"Enter exactly {minimum}\",\n \"inclusive\": \"Enter a value greater than or equal to {minimum}\",\n \"notInclusive\": \"Enter a value greater than {minimum}\"\n },\n \"date\": {\n \"exact\": \"The date must be exactly {minimum}\",\n \"inclusive\": \"The date must be on or after {minimum}\",\n \"notInclusive\": \"The date must be after {minimum}\"\n },\n \"string\": {\n \"exact\": \"Enter exactly {minimum} character(s)\",\n \"inclusive\": \"Minimum length {minimum} character(s)\",\n \"notInclusive\": \"Enter more than {minimum} character(s)\"\n },\n \"array\": {\n \"exact\": \"Enter exactly {minimum} item(s)\",\n \"inclusive\": \"Enter at least {minimum} item(s)\",\n \"notInclusive\": \"Enter more than {minimum} item(s)\"\n },\n \"set\": {\n \"exact\": \"Enter exactly {minimum} item(s)\",\n \"inclusive\": \"Enter at least {minimum} item(s)\",\n \"notInclusive\": \"Enter more than {minimum} item(s)\"\n },\n \"file\": {\n \"exact\": \"Upload a file of exactly {minimum} bytes\",\n \"inclusive\": \"Upload a file of at least {minimum} bytes\",\n \"notInclusive\": \"Upload a file of more than {minimum} bytes\"\n }\n },\n \"tooBig\": {\n \"number\": {\n \"exact\": \"Enter exactly {maximum}\",\n \"inclusive\": \"Enter a value less than or equal to {maximum}\",\n \"notInclusive\": \"Enter a value less than {maximum}\"\n },\n \"int\": {\n \"exact\": \"Enter exactly {maximum}\",\n \"inclusive\": \"Enter a value less than or equal to {maximum}\",\n \"notInclusive\": \"Enter a value less than {maximum}\"\n },\n \"bigint\": {\n \"exact\": \"Enter exactly {maximum}\",\n \"inclusive\": \"Enter a value less than or equal to {maximum}\",\n \"notInclusive\": \"Enter a value less than {maximum}\"\n },\n \"date\": {\n \"exact\": \"The date must be exactly {maximum}\",\n \"inclusive\": \"The date must be on or before {maximum}\",\n \"notInclusive\": \"The date must be before {maximum}\"\n },\n \"string\": {\n \"exact\": \"Enter exactly {maximum} character(s)\",\n \"inclusive\": \"Maximum length {maximum} character(s)\",\n \"notInclusive\": \"Enter less than {maximum} character(s)\"\n },\n \"array\": {\n \"exact\": \"Enter exactly {maximum} item(s)\",\n \"inclusive\": \"Enter at most {maximum} item(s)\",\n \"notInclusive\": \"Enter less than {maximum} item(s)\"\n },\n \"set\": {\n \"exact\": \"Enter exactly {maximum} item(s)\",\n \"inclusive\": \"Enter at most {maximum} item(s)\",\n \"notInclusive\": \"Enter less than {maximum} item(s)\"\n },\n \"file\": {\n \"exact\": \"Upload a file of exactly {maximum} bytes\",\n \"inclusive\": \"Upload a file of at most {maximum} bytes\",\n \"notInclusive\": \"Upload a file of less than {maximum} bytes\"\n }\n },\n \"types\": {\n \"regex\": \"input\",\n \"email\": \"email address\",\n \"url\": \"URL\",\n \"emoji\": \"emoji\",\n \"uuid\": \"UUID\",\n \"uuidv4\": \"UUIDv4\",\n \"uuidv6\": \"UUIDv6\",\n \"nanoid\": \"nanoid\",\n \"guid\": \"GUID\",\n \"cuid\": \"cuid\",\n \"cuid2\": \"cuid2\",\n \"ulid\": \"ULID\",\n \"xid\": \"XID\",\n \"ksuid\": \"KSUID\",\n \"datetime\": \"ISO date and time\",\n \"date\": \"ISO date\",\n \"time\": \"ISO time\",\n \"duration\": \"ISO duration\",\n \"ipv4\": \"IPv4 address\",\n \"ipv6\": \"IPv6 address\",\n \"cidrv4\": \"IPv4 range\",\n \"cidrv6\": \"IPv6 range\",\n \"base64\": \"base64 encoded string\",\n \"base64url\": \"base64 encoded URL\",\n \"json_string\": \"JSON string\",\n \"e164\": \"E.164 number\",\n \"jwt\": \"JWT\",\n \"template_literal\": \"input\"\n }\n}\n","{\n \"invalidType\": \"Previsto {expected}, ricevuto {received}\",\n \"invalidTypeReceivedUndefined\": \"Obbligatorio\",\n \"invalidTypeReceivedNull\": \"Obbligatorio\",\n \"invalidValue\": \"Valore non valido, previsto {expected} | Valore non valido, atteso uno tra {expected}\",\n \"unrecognizedKeys\": \"Chiavi non riconosciute: {keys}\",\n \"invalidKey\": \"Chiave non valida in {origin}\",\n \"invalidUnion\": \"Valore non valido\",\n \"invalidElement\": \"Valore non valido in {origin}\",\n \"custom\": \"Valore non valido\",\n \"notMultipleOf\": \"Il numero dev'essere un multiplo di {multipleOf}\",\n \"invalidFormat\": {\n \"starts_with\": \"Deve iniziare con {prefix}\",\n \"ends_with\": \"Deve terminare con {suffix}\",\n \"includes\": \"Deve includere {includes}\",\n \"regex\": \"Deve corrispondere al pattern {pattern}\",\n \"default\": \"Formato non valido, previsto {format}\"\n },\n \"tooSmall\": {\n \"number\": {\n \"exact\": \"Inserire esattamente {minimum}\",\n \"inclusive\": \"Inserire un valore maggiore o uguale a {minimum}\",\n \"notInclusive\": \"Inserire un valore maggiore di {minimum}\"\n },\n \"int\": {\n \"exact\": \"Inserire esattamente {minimum}\",\n \"inclusive\": \"Inserire un valore maggiore o uguale a {minimum}\",\n \"notInclusive\": \"Inserire un valore maggiore di {minimum}\"\n },\n \"bigint\": {\n \"exact\": \"Inserire esattamente {minimum}\",\n \"inclusive\": \"Inserire un valore maggiore o uguale a {minimum}\",\n \"notInclusive\": \"Inserire un valore maggiore di {minimum}\"\n },\n \"date\": {\n \"exact\": \"La data dev'essere esattamente il {minimum}\",\n \"inclusive\": \"La data dev'essere successiva o uguale al {minimum}\",\n \"notInclusive\": \"La data dev'essere successiva al {minimum}\"\n },\n \"string\": {\n \"exact\": \"Inserire esattamente {minimum} carattere/i\",\n \"inclusive\": \"Lunghezza minima {minimum} carattere/i\",\n \"notInclusive\": \"Inserire più di {minimum} carattere/i\"\n },\n \"array\": {\n \"exact\": \"Inserire esattamente {minimum} elemento/i\",\n \"inclusive\": \"Inserire almeno {minimum} elemento/i\",\n \"notInclusive\": \"Inserire più di {minimum} elemento/i\"\n },\n \"set\": {\n \"exact\": \"Inserire esattamente {minimum} elemento/i\",\n \"inclusive\": \"Inserire almeno {minimum} elemento/i\",\n \"notInclusive\": \"Inserire più di {minimum} elemento/i\"\n },\n \"file\": {\n \"exact\": \"Inserire un file di esattamente {minimum} byte\",\n \"inclusive\": \"Inserire un file di almeno {minimum} byte\",\n \"notInclusive\": \"Inserire un file di più di {minimum} byte\"\n }\n },\n \"tooBig\": {\n \"number\": {\n \"exact\": \"Inserire esattamente {maximum}\",\n \"inclusive\": \"Inserire un valore minore o uguale a {maximum}\",\n \"notInclusive\": \"Inserire un valore minore di {maximum}\"\n },\n \"int\": {\n \"exact\": \"Inserire esattamente {maximum}\",\n \"inclusive\": \"Inserire un valore minore o uguale a {maximum}\",\n \"notInclusive\": \"Inserire un valore minore di {maximum}\"\n },\n \"bigint\": {\n \"exact\": \"Inserire esattamente {maximum}\",\n \"inclusive\": \"Inserire un valore minore o uguale a {maximum}\",\n \"notInclusive\": \"Inserire un valore minore di {maximum}\"\n },\n \"date\": {\n \"exact\": \"La data dev'essere esattamente il {maximum}\",\n \"inclusive\": \"La data dev'essere precedente o uguale al {maximum}\",\n \"notInclusive\": \"La data dev'essere precedente al {maximum}\"\n },\n \"string\": {\n \"exact\": \"Inserire esattamente {maximum} carattere/i\",\n \"inclusive\": \"Lunghezza massima {maximum} carattere/i\",\n \"notInclusive\": \"Inserire meno di {maximum} carattere/i\"\n },\n \"array\": {\n \"exact\": \"Inserire esattamente {maximum} elemento/i\",\n \"inclusive\": \"Inserire al massimo {maximum} elemento/i\",\n \"notInclusive\": \"Inserire meno di {maximum} elemento/i\"\n },\n \"set\": {\n \"exact\": \"Inserire esattamente {maximum} elemento/i\",\n \"inclusive\": \"Inserire al massimo {maximum} elemento/i\",\n \"notInclusive\": \"Inserire meno di {maximum} elemento/i\"\n },\n \"file\": {\n \"exact\": \"Inserire un file di esattamente {maximum} byte\",\n \"inclusive\": \"Inserire un file di al massimo {maximum} byte\",\n \"notInclusive\": \"Inserire un file di meno di {maximum} byte\"\n }\n },\n \"types\": {\n \"regex\": \"input\",\n \"email\": \"indirizzo email\",\n \"url\": \"URL\",\n \"emoji\": \"emoji\",\n \"uuid\": \"UUID\",\n \"uuidv4\": \"UUIDv4\",\n \"uuidv6\": \"UUIDv6\",\n \"nanoid\": \"nanoid\",\n \"guid\": \"GUID\",\n \"cuid\": \"cuid\",\n \"cuid2\": \"cuid2\",\n \"ulid\": \"ULID\",\n \"xid\": \"XID\",\n \"ksuid\": \"KSUID\",\n \"datetime\": \"data e ora ISO\",\n \"date\": \"data ISO\",\n \"time\": \"ora ISO\",\n \"duration\": \"durata ISO\",\n \"ipv4\": \"indirizzo IPv4\",\n \"ipv6\": \"indirizzo IPv6\",\n \"cidrv4\": \"intervallo IPv4\",\n \"cidrv6\": \"intervallo IPv6\",\n \"base64\": \"stringa codificata in base64\",\n \"base64url\": \"URL codificata in base64\",\n \"json_string\": \"stringa JSON\",\n \"e164\": \"numero E.164\",\n \"jwt\": \"JWT\",\n \"template_literal\": \"input\"\n }\n}\n","import { createI18n } from 'vue-i18n'\nimport it from './it.json'\nimport en from './en.json'\nimport enErrors from '@volverjs/zod-vue-i18n/locales/v4/en.json'\nimport itErrors from '@volverjs/zod-vue-i18n/locales/v4/it.json'\n\nexport const SUPPORTED_LOCALES = ['it', 'en'] as const\nexport type SupportedLocale = (typeof SUPPORTED_LOCALES)[number]\n\nfunction detectLocale(): SupportedLocale {\n const browserLang = navigator.language.split('-')[0]\n return (SUPPORTED_LOCALES as readonly string[]).includes(browserLang)\n ? (browserLang as SupportedLocale)\n : 'en'\n}\n\n/*\n * Setup i18n\n * https://vue-i18n.intlify.dev/\n */\n\nexport const i18n = createI18n<false>({\n locale: detectLocale(),\n legacy: false,\n globalInjection: true,\n fallbackWarn: false,\n messages: {\n it: {\n ...it,\n errors: { ...itErrors, ...it.errors },\n },\n en: {\n ...en,\n errors: { ...enErrors, ...en.errors },\n },\n },\n numberFormats: {\n it: {\n currencyEUR: {\n style: 'currency',\n currency: 'EUR',\n currencySign: 'accounting',\n notation: 'standard',\n maximumFractionDigits: 4,\n useGrouping: true,\n },\n currencyUSD: {\n style: 'currency',\n currency: 'USD',\n currencySign: 'accounting',\n notation: 'standard',\n maximumFractionDigits: 4,\n useGrouping: true,\n },\n EUR: {\n style: 'currency',\n currency: 'EUR',\n currencyDisplay: 'narrowSymbol',\n notation: 'standard',\n maximumFractionDigits: 2,\n useGrouping: true,\n },\n USD: {\n style: 'currency',\n currency: 'USD',\n currencyDisplay: 'narrowSymbol',\n notation: 'standard',\n maximumFractionDigits: 2,\n useGrouping: true,\n },\n decimal: {\n style: 'decimal',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n useGrouping: true,\n },\n integer: {\n style: 'decimal',\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n useGrouping: true,\n },\n compact: {\n style: 'decimal',\n notation: 'compact',\n compactDisplay: 'short',\n minimumFractionDigits: 0,\n maximumFractionDigits: 1,\n useGrouping: true,\n },\n seconds: {\n style: 'unit',\n unit: 'second',\n unitDisplay: 'long',\n maximumFractionDigits: 1,\n },\n },\n en: {\n currencyEUR: {\n style: 'currency',\n currency: 'EUR',\n currencySign: 'accounting',\n notation: 'standard',\n maximumFractionDigits: 4,\n useGrouping: true,\n },\n currencyUSD: {\n style: 'currency',\n currency: 'USD',\n currencySign: 'accounting',\n notation: 'standard',\n maximumFractionDigits: 4,\n useGrouping: true,\n },\n EUR: {\n style: 'currency',\n currency: 'EUR',\n currencyDisplay: 'narrowSymbol',\n notation: 'standard',\n maximumFractionDigits: 2,\n useGrouping: true,\n },\n USD: {\n style: 'currency',\n currency: 'USD',\n currencyDisplay: 'narrowSymbol',\n notation: 'standard',\n maximumFractionDigits: 2,\n useGrouping: true,\n },\n decimal: {\n style: 'decimal',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n useGrouping: true,\n },\n integer: {\n style: 'decimal',\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n useGrouping: true,\n },\n compact: {\n style: 'decimal',\n notation: 'compact',\n compactDisplay: 'short',\n minimumFractionDigits: 0,\n maximumFractionDigits: 1,\n useGrouping: true,\n },\n seconds: {\n style: 'unit',\n unit: 'second',\n unitDisplay: 'long',\n maximumFractionDigits: 1,\n },\n },\n },\n datetimeFormats: {\n it: {\n short: {\n dateStyle: 'short',\n },\n 'month-short': {\n month: 'short',\n },\n 'date-medium': {\n dateStyle: 'medium',\n },\n 'date-time': {\n dateStyle: 'short',\n timeStyle: 'short',\n },\n 'date-time-medium': {\n dateStyle: 'medium',\n timeStyle: 'short',\n },\n time: {\n timeStyle: 'short',\n },\n 'weekday-day': {\n weekday: 'short',\n day: 'numeric',\n },\n },\n en: {\n short: {\n dateStyle: 'short',\n },\n 'month-short': {\n month: 'short',\n },\n 'date-medium': {\n dateStyle: 'medium',\n },\n 'date-time': {\n dateStyle: 'short',\n timeStyle: 'short',\n },\n 'date-time-medium': {\n dateStyle: 'medium',\n timeStyle: 'short',\n },\n time: {\n timeStyle: 'short',\n },\n 'weekday-day': {\n weekday: 'short',\n day: 'numeric',\n },\n },\n },\n})\n\n/**\n * `onResponse` hook for the better-auth clients. better-auth writes its error\n * messages in English only, so the `message` of an error response is replaced\n * by the translation of its code (`errors.<CODE>`), and every `error.message`\n * a page shows arrives in the user's language. A code with no translation\n * keeps better-auth's text, the `YOU_ARE_NOT_ALLOWED_TO_*` codes share one\n * message, a 429 reads as `errors.TOO_MANY_REQUESTS` whatever its body, and a\n * body that is not JSON (a proxy's page) gets the generic error instead of no\n * message. It never throws: a failure leaves the response as it came.\n */\nexport async function translateAuthError({\n response,\n}: {\n response: Response\n}): Promise<Response | undefined> {\n if (response.ok) {\n return\n }\n try {\n let body: Record<string, unknown> | undefined\n try {\n const parsed = await response.clone().json()\n body = parsed && typeof parsed === 'object' ? parsed : {}\n } catch {\n body = undefined\n }\n const code = typeof body?.code === 'string' ? body.code : undefined\n let key = `errors.${code}`\n if (response.status === 429) {\n key = 'errors.TOO_MANY_REQUESTS'\n } else if (code?.startsWith('YOU_ARE_NOT_ALLOWED_TO_')) {\n key = 'errors.NOT_ALLOWED'\n } else if (!body) {\n key = 'auth.genericError'\n }\n if (!i18n.global.te(key)) {\n return\n }\n return new Response(\n JSON.stringify({ ...body, message: i18n.global.t(key) }),\n {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n },\n )\n } catch {\n return\n }\n}\n","import type { MaybeRefOrGetter } from 'vue'\nimport type {\n BetterAuthClientOptions,\n BetterAuthClientPlugin,\n} from 'better-auth/client'\nimport type { AdditionalFieldsOptions } from 'auth/src/additional-fields'\nimport { computed, ref, watch, toValue } from 'vue'\nimport { createAuthClient } from 'better-auth/vue'\nimport {\n inferAdditionalFields,\n anonymousClient,\n} from 'better-auth/client/plugins'\nimport { translateAuthError } from 'i18n'\nimport {\n getSessionCookie,\n setSessionCookie,\n getAnonymousUserIdCookie,\n setAnonymousUserIdCookie,\n clearAnonymousUserIdCookie,\n BACKEND_URL,\n AUTH_BASE_PATH,\n} from '~/utils'\n\nfunction anonymousReauthClient() {\n return {\n id: 'anonymous-reauth' as const,\n getActions: ($fetch) => ({\n signIn: {\n anonymousReauth: async (data: { userId: string }) => {\n return $fetch<{\n token: string\n user: Record<string, unknown>\n }>('/sign-in/anonymous-reauth', {\n method: 'POST',\n body: data,\n })\n },\n },\n }),\n pathMethods: {\n '/sign-in/anonymous-reauth': 'POST' as const,\n },\n } satisfies BetterAuthClientPlugin\n}\n\nfunction externalAuthClient() {\n return {\n id: 'external-auth' as const,\n getActions: ($fetch) => ({\n signIn: {\n externalToken: async (data: { token: string }) => {\n return $fetch<{\n token: string\n user: Record<string, unknown>\n }>('/sign-in/external-token', {\n method: 'POST',\n body: data,\n })\n },\n },\n }),\n pathMethods: {\n '/sign-in/external-token': 'POST' as const,\n },\n atomListeners: [\n {\n matcher: (path: string) => path === '/sign-in/external-token',\n signal: '$sessionSignal' as const,\n },\n ],\n } satisfies BetterAuthClientPlugin\n}\n\n/**\n * The `type` better-auth's `oauthPopup` completion page posts. Written here\n * rather than imported: `better-auth/plugins` would pull every server plugin\n * into the widget bundle.\n */\nconst OAUTH_POPUP_MESSAGE_TYPE = 'better-auth:oauth-popup'\n\n/**\n * A random nonce tying the popup's answer to the call that opened it.\n * `getRandomValues` rather than `randomUUID`, which only exists on pages\n * served over HTTPS.\n */\nfunction createPopupNonce(): string {\n const bytes = crypto.getRandomValues(new Uint8Array(16))\n return Array.from(bytes, (b) => b.toString(16).padStart(2, '0')).join('')\n}\n\ntype AuthClientOptions = {\n baseURL?: string\n basePath?: string\n plugins: [\n ReturnType<typeof inferAdditionalFields<AdditionalFieldsOptions>>,\n ReturnType<typeof anonymousClient>,\n ReturnType<typeof anonymousReauthClient>,\n ReturnType<typeof externalAuthClient>,\n ]\n}\n\nexport type AuthClient = ReturnType<typeof createAuthClient<AuthClientOptions>>\n\ntype ClientFetchOptions = NonNullable<BetterAuthClientOptions['fetchOptions']>\n\nexport function useChatbotAuth(\n options: {\n baseUrl?: string\n basePath?: string\n externalToken?: MaybeRefOrGetter<string | undefined>\n awaitExternalToken?: boolean\n /**\n * Host-session mode: the widget never signs in on its own and sends\n * no Authorization header; the session comes from the host\n * platform's better-auth cookie (sent thanks to\n * `credentials: 'include'`). The session belongs to the host, so\n * account management is hidden and `signOut` is a no-op. Intended\n * for the widget embedded in the platform itself (Backoffice\n * copilot, spec platform-copilot-session-bridge.md); it only works\n * where the host cookie context works, not on third-party embeds.\n */\n useHostSession?: MaybeRefOrGetter<boolean | undefined>\n isActive?: MaybeRefOrGetter<boolean>\n cookieName?: string\n /** Called when a session is established or the user changes. */\n onSignedIn?: (detail: { userId: string; isAnonymous: boolean }) => void\n /** Called when the session ends without an immediate replacement. */\n onSignedOut?: () => void\n /**\n * Called when an external token sign-in fails (expired token, invalid\n * signature or disabled config): the host should provide a fresh token.\n */\n onExternalAuthExpired?: () => void\n } = {},\n) {\n const _token = ref(getSessionCookie(options.cookieName))\n const useHostSession = computed(\n () => toValue(options.useHostSession) ?? false,\n )\n\n const token = computed({\n get: () => _token.value,\n set: (token: string) => {\n setSessionCookie(token, options.cookieName)\n _token.value = token\n },\n })\n\n const headers = computed(() =>\n !useHostSession.value && token.value\n ? { Authorization: `Bearer ${token.value}` }\n : undefined,\n )\n\n // Both fetch callbacks are typed by hand. createAuthClient is generic over\n // its options and TypeScript defers context-sensitive functions inside a\n // generic argument until inference is done, by which point the inferred\n // options type no longer carries them and their parameters fall to\n // implicit any. Annotating them with the public option type restores the\n // contextual type without touching how the client itself is inferred.\n const onFetchSuccess: NonNullable<ClientFetchOptions['onSuccess']> = (\n ctx,\n ) => {\n if (useHostSession.value) {\n // The host session token must never be persisted as the widget's\n // own Bearer: it would keep impersonating the host after the mode\n // is turned off.\n return\n }\n const newTokenFromHeader = ctx.response.headers.get('set-auth-token')\n if (newTokenFromHeader) {\n token.value = newTokenFromHeader\n }\n }\n\n // Only host-session mode may exchange cookies: with credentials on, an\n // anonymous sign-in's Set-Cookie would REPLACE the user's platform session\n // cookie on the backend origin.\n const customFetchImpl: NonNullable<\n ClientFetchOptions['customFetchImpl']\n > = (input, init) =>\n fetch(input, {\n ...init,\n credentials: useHostSession.value ? 'include' : init?.credentials,\n })\n\n const client = createAuthClient({\n baseURL: options.baseUrl ?? BACKEND_URL,\n basePath: options.basePath ?? AUTH_BASE_PATH,\n plugins: [\n inferAdditionalFields<AdditionalFieldsOptions>(),\n anonymousClient(),\n anonymousReauthClient(),\n externalAuthClient(),\n ],\n fetchOptions: {\n onSuccess: onFetchSuccess,\n onResponse: translateAuthError,\n auth: {\n type: 'Bearer',\n // Host-session mode relies on the cookie alone: the widget's\n // stored Bearer (e.g. a previous anonymous session) would\n // shadow it.\n token: () => (useHostSession.value ? '' : token.value),\n },\n customFetchImpl,\n },\n }) as AuthClient\n\n const session = client.useSession()\n const isAuthenticating = ref(false)\n const externalToken = computed(() => toValue(options.externalToken))\n const isActive = computed(() => toValue(options.isActive) ?? true)\n\n /**\n * External token currently authorized for automatic (re-)authentication.\n * Follows the `externalToken` option and imperative sign-in calls; cleared\n * by `signOut`, so the watchers never re-login with a token the host has\n * withdrawn.\n */\n const activeExternalToken = ref(externalToken.value)\n\n // External token / host-session mode: the host application owns the auth\n // lifecycle, so the widget must not offer account management (sign-out,\n // profile).\n const isExternalAuth = computed(\n () =>\n !!externalToken.value ||\n !!options.awaitExternalToken ||\n !!activeExternalToken.value ||\n useHostSession.value,\n )\n\n /**\n * Serializes sign-in operations: a request arriving while another is in\n * flight runs right after it instead of being dropped. Each task re-checks\n * state when it starts, so superseded requests no-op.\n */\n let authChain: Promise<void> = Promise.resolve()\n function runExclusiveAuth(task: () => Promise<void>): Promise<void> {\n const run = authChain.then(task, task)\n authChain = run\n return run\n }\n\n // Notify the host on session transitions, whatever flow caused them\n // (anonymous, external token, email, social).\n watch(\n () => session.value.data?.user,\n (user, previousUser) => {\n if (user && user.id !== previousUser?.id) {\n options.onSignedIn?.({\n userId: user.id,\n isAnonymous: !!user.isAnonymous,\n })\n }\n if (!user && previousUser) {\n options.onSignedOut?.()\n }\n },\n )\n\n async function signInAnonymously(): Promise<void> {\n const { data } = await client.signIn.anonymous()\n if (data?.token) {\n token.value = data.token\n if (data.user?.id) {\n setAnonymousUserIdCookie(\n data.user.id as string,\n options.cookieName,\n )\n }\n }\n }\n\n /**\n * Attempts to create a new session for an existing anonymous user.\n * Returns true if re-auth succeeded, false otherwise.\n */\n async function tryAnonymousReauth(): Promise<boolean> {\n const storedUserId = getAnonymousUserIdCookie(options.cookieName)\n if (!storedUserId) {\n return false\n }\n try {\n const { data } = await client.signIn.anonymousReauth({\n userId: storedUserId,\n })\n if (data?.token) {\n token.value = data.token\n await session.value.refetch()\n return true\n }\n } catch {\n // user record may have been deleted — fall back to creating a new one\n }\n return false\n }\n\n /** Re-authenticates the stored anonymous user, or creates a fresh one. */\n async function reauthOrSignInAnonymously(): Promise<void> {\n const reauthed = await tryAnonymousReauth()\n if (!reauthed) {\n await signInAnonymously()\n }\n }\n\n /**\n * The external token was rejected (expired, invalid or config disabled):\n * notify the host so it can provide a fresh one, then apply the fallback\n * (keep waiting in `awaitExternalToken` mode, anonymous otherwise).\n */\n async function handleExternalTokenFailure(\n failedExternalToken: string,\n ): Promise<void> {\n if (activeExternalToken.value !== failedExternalToken) {\n // Withdrawn (sign-out) or replaced while the request was in flight\n return\n }\n options.onExternalAuthExpired?.()\n if (options.awaitExternalToken) {\n return\n }\n await reauthOrSignInAnonymously()\n }\n\n /** Raw token exchange; must run inside `runExclusiveAuth`. */\n async function exchangeExternalToken(\n newExternalToken: string,\n ): Promise<void> {\n isAuthenticating.value = true\n try {\n const { data } = await client.signIn.externalToken({\n token: newExternalToken,\n })\n if (activeExternalToken.value !== newExternalToken) {\n // Withdrawn (sign-out) or replaced while the request was in flight\n return\n }\n if (data?.token) {\n token.value = data.token\n await session.value.refetch()\n return\n }\n await handleExternalTokenFailure(newExternalToken)\n } catch {\n await handleExternalTokenFailure(newExternalToken)\n } finally {\n isAuthenticating.value = false\n }\n }\n\n /** External token currently queued or in flight, to drop duplicate requests. */\n let pendingExternalToken: string | undefined\n\n /**\n * Last external token an exchange was attempted with, whatever the\n * trigger. The session watcher consults it so a token that was already\n * tried is never auto-retried: a rejected token must not loop between\n * exchange and fallback. Deliberate retries (prop change, imperative\n * `signIn`, 401 handler) bypass it.\n */\n let attemptedExternalToken: string | undefined\n\n /** The cookie-restored external session was reconciled with the host state. */\n let externalSessionReconciled = false\n\n async function signInWithExternalToken(\n newExternalToken: string,\n ): Promise<void> {\n if (!newExternalToken || pendingExternalToken === newExternalToken) {\n return\n }\n activeExternalToken.value = newExternalToken\n attemptedExternalToken = newExternalToken\n pendingExternalToken = newExternalToken\n try {\n await runExclusiveAuth(async () => {\n if (activeExternalToken.value !== newExternalToken) {\n // Superseded while waiting for the previous operation\n return\n }\n await exchangeExternalToken(newExternalToken)\n })\n } finally {\n pendingExternalToken = undefined\n }\n }\n\n async function signInAnonymouslyWithFallback(): Promise<void> {\n if (isAuthenticating.value) {\n // The `[isActive, session]` watcher retries on the next session change\n return\n }\n await runExclusiveAuth(async () => {\n if (activeExternalToken.value || useHostSession.value) {\n // A host-owned sign-in was requested in the meantime\n return\n }\n isAuthenticating.value = true\n try {\n await reauthOrSignInAnonymously()\n } finally {\n isAuthenticating.value = false\n }\n })\n }\n\n watch(\n [isActive, session],\n ([newIsActive, newSession]) => {\n if (!newIsActive) {\n return\n }\n if (\n !newSession.isPending &&\n !newSession.isRefetching &&\n !isAuthenticating.value &&\n !newSession.data\n ) {\n if (useHostSession.value) {\n // Host-session mode: the session comes from the host\n // cookie, the widget never signs in on its own. No\n // session means the host is not (or no longer) logged in.\n return\n }\n if (activeExternalToken.value) {\n signInWithExternalToken(activeExternalToken.value)\n return\n }\n if (options.awaitExternalToken) {\n return\n }\n signInAnonymouslyWithFallback()\n return\n }\n\n const user = newSession.data?.user\n\n if (useHostSession.value) {\n // Host-session mode: the session is read from (and owned by)\n // the host cookie, none of the widget-session housekeeping\n // below applies.\n return\n }\n\n // A session created by an external token exchange (the only kind\n // with `hardExpiresAt`) may have been restored from the cookie\n // after a page navigation, where prop changes cannot be observed:\n // reconcile it once with the auth state the host declares now.\n if (\n newSession.data?.session?.hardExpiresAt &&\n !externalSessionReconciled\n ) {\n externalSessionReconciled = true\n if (!activeExternalToken.value) {\n // The host no longer provides a token (it logged out\n // before this page load): drop the stale session. The\n // usual fallback rules apply (keep waiting in\n // `awaitExternalToken` mode, anonymous otherwise).\n signOut()\n return\n }\n if (attemptedExternalToken !== activeExternalToken.value) {\n // Re-exchange the current token, so a token minted for a\n // different user replaces the restored session and an\n // expired one raises `external-auth-expired` right away.\n signInWithExternalToken(activeExternalToken.value)\n return\n }\n }\n\n // Upgrade an anonymous session restored from the cookie when an\n // external token is available (e.g. the user logged into the host\n // app between page loads). Attempted once per token.\n if (\n user?.isAnonymous &&\n activeExternalToken.value &&\n attemptedExternalToken !== activeExternalToken.value\n ) {\n signInWithExternalToken(activeExternalToken.value)\n return\n }\n\n // Backfill userId cookie for existing anonymous sessions\n if (\n user?.isAnonymous &&\n user.id &&\n !getAnonymousUserIdCookie(options.cookieName)\n ) {\n setAnonymousUserIdCookie(user.id as string, options.cookieName)\n }\n },\n { immediate: true },\n )\n\n // Host-session mode toggle: on entry re-read the session from the host\n // cookie (the widget Bearer is already suppressed by the mode); on exit\n // re-read without the cookie, so the `[isActive, session]` watcher\n // re-establishes the widget's own flow (anonymous or external token).\n watch(useHostSession, () => {\n session.value.refetch()\n })\n\n watch(externalToken, (newToken, previousToken) => {\n if (newToken) {\n // Track the intent even when inactive: the `[isActive, session]`\n // watcher signs in with it once the widget becomes active.\n activeExternalToken.value = newToken\n if (isActive.value) {\n signInWithExternalToken(newToken)\n }\n return\n }\n // The host withdrew the token (logged out): sign out without\n // re-authenticating; the fallback rules apply (keep waiting in\n // `awaitExternalToken` mode, anonymous otherwise).\n if (previousToken && activeExternalToken.value === previousToken) {\n signOut()\n }\n })\n\n function onError(error: { type: string; title: string; status: number }) {\n if (error.status !== 401) {\n return\n }\n if (useHostSession.value) {\n // The widget cannot recover a host session on its own (a 401\n // here means the host session expired): re-read it so the UI\n // reflects the signed-out state.\n session.value.refetch()\n return\n }\n if (activeExternalToken.value) {\n signInWithExternalToken(activeExternalToken.value)\n return\n }\n if (options.awaitExternalToken) {\n return\n }\n signInAnonymouslyWithFallback()\n }\n\n const userId = computed(() => session.value.data?.user?.id)\n\n /**\n * The second step of an email sign-in for an account with two-step\n * verification (docs/specs/released/two-factor-authentication.md, D4). better-auth\n * keeps the challenge in a cookie, which a cross-origin widget never\n * holds: the backend hands its value over in the sign-in answer and takes\n * it back in a header.\n */\n const twoFactorChallenge = ref<{ token: string; methods: string[] }>()\n\n // Auth methods for widget login screen\n async function signInWithEmail(\n email: string,\n password: string,\n rememberMe?: boolean,\n ) {\n const result = await client.signIn.email({\n email,\n password,\n rememberMe,\n })\n const challenge = result.data as {\n twoFactorRedirect?: boolean\n twoFactorToken?: string | null\n twoFactorMethods?: string[]\n } | null\n if (challenge?.twoFactorRedirect) {\n twoFactorChallenge.value = challenge.twoFactorToken\n ? {\n token: challenge.twoFactorToken,\n methods: challenge.twoFactorMethods ?? [],\n }\n : undefined\n // The sign-in already linked and removed the anonymous user, as\n // below: its userId can no longer be re-authenticated.\n clearAnonymousUserIdCookie(options.cookieName)\n return result\n }\n // Capture the session token from the response body. Relying solely on\n // the `set-auth-token` header is unreliable here, so we mirror the\n // anonymous/social flows and store the token explicitly.\n if (result.data?.token) {\n token.value = result.data.token\n // Signing in from an anonymous session links (and deletes) the\n // anonymous user server-side, so its stored userId can no longer\n // be re-authenticated — drop it so a later sign-out falls straight\n // back to a fresh anonymous session.\n clearAnonymousUserIdCookie(options.cookieName)\n }\n return result\n }\n\n const TWO_FACTOR_PATHS = {\n totp: '/two-factor/verify-totp',\n otp: '/two-factor/verify-otp',\n backup: '/two-factor/verify-backup-code',\n } as const\n\n /** Fetch options of a request that answers the challenge in flight. */\n function twoFactorRequest(challenge: { token: string }) {\n return {\n method: 'POST' as const,\n headers: { 'x-two-factor-token': challenge.token },\n // No bearer: the challenge is the identity of this request, and a\n // session token would turn it into a verification of that session.\n auth: { type: 'Bearer' as const, token: '' },\n }\n }\n\n const lostChallenge = {\n data: null,\n error: { code: 'INVALID_TWO_FACTOR_COOKIE', message: undefined },\n }\n\n /** Answers the challenge with a code of the app, the email or a backup code. */\n async function verifyTwoFactor(\n kind: keyof typeof TWO_FACTOR_PATHS,\n code: string,\n ) {\n const challenge = twoFactorChallenge.value\n if (!challenge) {\n return lostChallenge\n }\n const result = await client.$fetch<{ token?: string }>(\n TWO_FACTOR_PATHS[kind],\n { ...twoFactorRequest(challenge), body: { code } },\n )\n if (result.data?.token) {\n token.value = result.data.token\n twoFactorChallenge.value = undefined\n }\n return result\n }\n\n /** Sends the code by email, for an account whose factor is the email. */\n async function sendTwoFactorCode() {\n const challenge = twoFactorChallenge.value\n if (!challenge) {\n return lostChallenge\n }\n return client.$fetch<{ status: boolean }>(\n '/two-factor/send-otp',\n twoFactorRequest(challenge),\n )\n }\n\n /** Back to the sign-in form: the challenge left behind simply expires. */\n function cancelTwoFactor() {\n twoFactorChallenge.value = undefined\n }\n\n function signUpWithEmail(params: {\n email: string\n password: string\n name: string\n }) {\n return client.signUp.email(params)\n }\n\n function requestPasswordReset(email: string, redirectTo: string) {\n return client.requestPasswordReset({ email, redirectTo })\n }\n\n /**\n * Opens a popup for social OAuth sign-in.\n *\n * The popup navigates top-level to better-auth's `/oauth-popup/start` on\n * the backend origin, so the OAuth `state` cookie is set first-party there\n * and survives the round trip (a cross-origin XHR `signIn.social` would set\n * it as a third-party cookie that browsers drop, causing `state_mismatch`).\n * The server binds the flow to this page's origin and, on the callback,\n * posts the token of the session it just created to that origin only. The\n * message is taken only from the popup this call opened, from the backend\n * origin, carrying the nonce this call generated.\n *\n * better-auth's own `signIn.popup` is not used: it keeps the token to\n * itself, and the widget authenticates with its own stored Bearer.\n */\n async function signInWithSocialPopup(\n provider: 'google' | 'microsoft',\n onAuthSuccess?: () => void,\n ): Promise<{ popupBlocked: boolean }> {\n const baseUrl = options.baseUrl ?? BACKEND_URL\n const basePath = options.basePath ?? AUTH_BASE_PATH\n const nonce = createPopupNonce()\n const startUrl = new URL(`${baseUrl}/${basePath}/oauth-popup/start`)\n startUrl.searchParams.set('provider', provider)\n startUrl.searchParams.set('popupOrigin', window.location.origin)\n startUrl.searchParams.set('popupNonce', nonce)\n\n const popup = window.open(\n startUrl.toString(),\n 'eightwave-oauth',\n 'width=600,height=700,menubar=no,toolbar=no',\n )\n\n if (!popup) {\n return { popupBlocked: true }\n }\n\n return new Promise((resolve) => {\n const allowedOrigin = new URL(baseUrl).origin\n // Resolve too if the user closes the popup without completing OAuth.\n const closedPollId = setInterval(() => {\n if (popup?.closed) {\n finish()\n }\n }, 500)\n\n function finish() {\n window.removeEventListener('message', onOAuthMessage)\n clearInterval(closedPollId)\n resolve({ popupBlocked: false })\n }\n\n function onOAuthMessage(event: MessageEvent) {\n const isTrustedOAuthMessage =\n event.origin === allowedOrigin &&\n event.source === popup &&\n event.data?.type === OAUTH_POPUP_MESSAGE_TYPE &&\n event.data.nonce === nonce\n if (!isTrustedOAuthMessage) {\n return\n }\n popup?.close()\n // A refusal or a failure at the provider comes back as\n // `error`, with no token: the user simply stays as they were.\n if (typeof event.data.token === 'string' && event.data.token) {\n token.value = event.data.token\n // Same as the email flow: the anonymous user was linked\n // and deleted server-side, its stored userId is stale.\n clearAnonymousUserIdCookie(options.cookieName)\n session.value.refetch().then(() => onAuthSuccess?.())\n }\n finish()\n }\n\n window.addEventListener('message', onOAuthMessage)\n })\n }\n\n /**\n * Signs the current user out and clears the locally stored session token.\n * Withdraws the active external token first, so the watchers never\n * re-authenticate with it: in external mode the host signs the widget back\n * in (prop change or `signInWithExternalToken`), while in the other modes\n * the `[isActive, session]` watcher re-establishes an anonymous session\n * (re-using the stored anonymous userId cookie when present).\n */\n async function signOut(): Promise<void> {\n if (useHostSession.value) {\n // The session belongs to the host application (cookie): revoking\n // it from the widget would log the user out of the host too.\n // Leaving host-session mode is the host's move (prop change).\n return\n }\n activeExternalToken.value = undefined\n const revokedToken = token.value\n try {\n await client.signOut()\n } finally {\n // A concurrent exchange may have stored a fresh session token\n // while the revoke request was in flight (e.g. a host `signIn`\n // racing the mount-time reconcile): only clear our own token,\n // never the newer one.\n if (token.value === revokedToken) {\n token.value = ''\n }\n await session.value.refetch()\n }\n }\n\n return {\n client,\n session,\n isAuthenticating,\n isExternalAuth,\n token,\n headers,\n onError,\n userId,\n signInWithEmail,\n twoFactorChallenge,\n verifyTwoFactor,\n sendTwoFactorCode,\n cancelTwoFactor,\n signUpWithEmail,\n requestPasswordReset,\n signInSocial: client.signIn.social,\n signInWithSocialPopup,\n signInWithExternalToken,\n signOut,\n }\n}\n","import { getCurrentInstance, onBeforeUnmount, onMounted } from 'vue'\n\n/**\n * Prevents external focus-trapping libraries (e.g. Bootstrap 5 modals) from\n * stealing focus away from elements inside this custom element's shadow root.\n *\n * Bootstrap modals attach a `focusin` listener on `document` that pulls focus\n * back whenever it leaves the modal subtree. Because our custom element lives\n * outside the modal in the DOM, every focus event that escapes the shadow root\n * is treated as a \"focus escape\" and gets redirected back into the modal.\n *\n * Fix: intercept `focusin` at the shadow root boundary in the **bubble phase**\n * and stop its propagation. The event still reaches every internal element\n * normally (capture → target → bubble up through the shadow tree), but is\n * stopped at the shadow root before it can re-target and continue to `document`.\n *\n * Must be called inside a `.ce.vue` root component's `<script setup>`.\n */\nexport function useFocusTrapBypass() {\n let shadowRoot: ShadowRoot | null = null\n\n const stopFocusPropagation = (event: Event) => {\n event.stopPropagation()\n }\n\n onMounted(() => {\n const instance = getCurrentInstance()\n const rootNode = instance?.proxy?.$el?.getRootNode()\n\n if (!(rootNode instanceof ShadowRoot)) {\n return\n }\n\n shadowRoot = rootNode\n shadowRoot.addEventListener('focusin', stopFocusPropagation)\n })\n\n onBeforeUnmount(() => {\n if (!shadowRoot) {\n return\n }\n\n shadowRoot.removeEventListener('focusin', stopFocusPropagation)\n shadowRoot = null\n })\n}\n"],"ignoreList":[5,6],"mappings":";;;;;;;;;;AAEA,IAAM8F,IAAsB,iBACtBC,IAAgC,QAChCC,IAAmB;AAEzB,SAASC,EAAU,GAAc,GAAe,GAAgB;CAC5D,IAAI;EAKA,SAAS,SAAS,GAAGC,EAAK,GAAGC,EAAM,oBAAoBC,IADnDA,IAAS,IAAI,KAAK,0CACkD;CAC5E,SAASC,GAAO;EACZ,EAAO,KACH,iEACAA,CACJ;CACJ;AACJ;AAEA,SAASC,EAAU,GAAsB;CACrC,IAAI;EAIA,IAAMC,IAAS,GAAGL,EAAK,IACjBM,IAAM,SAAS,OAChB,MAAM,IAAI,CAAC,CACX,MAAM,MAAUC,EAAM,WAAWF,CAAM,CAAC;EAC7C,OAAOC,IAAMA,EAAI,MAAMD,EAAO,MAAM,IAAI;CAC5C,SAASF,GAAO;EAKZ,OAJAV,EAAO,KACH,iEACAU,CACJ,GACO;CACX;AACJ;AAIA,SAAgBK,EACZ,GACA,IAAqBZ,GACvB;CACE,EAAUa,GAAYC,GAAOA,IAAQZ,IAAmB,CAAC;AAC7D;AAGA,SAAgBa,EAAiB,IAAqBf,GAAqB;CACvE,OAAOQ,EAAUK,CAAU;AAC/B;AAGA,SAAgBG,EACZ,GACA,IAAqBhB,GACvB;CACE,EACI,GAAGa,IAAaZ,KAChBgB,GACAf,CACJ;AACJ;AAGA,SAAgBgB,EACZ,IAAqBlB,GACvB;CACE,OAAOQ,EAAU,GAAGK,IAAaZ,GAA+B;AACpE;AAIA,SAAgBkB,EACZ,IAAqBnB,GACvB;CACE,EAAU,GAAGa,IAAaZ,KAAiC,IAAI,CAAC;AACpE;;;AC7EA,IAAamB,IAAA,KAAA,GACAC,IAAA,KAAA,GACAC,IAAiB;;;ACG9B,SAAgBC,EAAgB,GAY7B;CACC,IAAMC,IAAQC,EAAiB,GACzBC,IAAWD,EAAmB,GAC9BE,IAAcF,EAAiB,GAE/BG,IAAgBH,EAAY,GAC5BI,IAAeJ,EAAI,EAAK,GACxBK,IAAWL,EAAI,EAAK,GACpBM,IAAYN,EAAI,EAAK;CAE3B,eAAeO,IAAO;EAClB,IAAMC,IAAUC,EAAQC,EAAQ,gBAAgB,GAC1CC,IAAUF,EAAQC,EAAQ,OAAO;EACvC,IAAI,CAACF,KAAW,CAACG,GACb;EAEJ,IAAMC,IAAY1C,EAAuB;GACrC,SAASwC,EAAQ,WAAA,KAAA;GACjB,UAAUA,EAAQ;GAClB,eAAeD,EAAQC,EAAQ,OAAO;EAC1C,CAAC;EACD,EAAU,QAAQ;EAClB,IAAI;GACA,IAAMG,IAAS,MAAMD,EAAU,eAAeJ,GAASG,CAAO;GAY9D,AAXA,EAAY,QAAQE,EAAO,aAC3B,EAAc,QAAQA,EAAO,oBAAoB,KAC7CA,EAAO,gBACP,EAAa,QAAQ,IACrB,EAAS,QAAQA,EAAO,YAAY,KAAA,GACpC,EAAM,QAAQ,KAAA,MAEd,EAAa,QAAQ,IACrB,EAAS,QAAQ,KAAA,GACjB,EAAM,QAAQA,EAAO,SAAS,KAAA,IAElC,EAAS,QAAQ;EACrB,QAAQ;GAKJ,AAJA,EAAS,QAAQ,IACjB,EAAc,QAAQ,KAAA,GACtB,EAAM,QAAQ,KAAA,GACd,EAAS,QAAQ,KAAA,GACjB,EAAa,QAAQ;EACzB,UAAU;GACN,EAAU,QAAQ;EACtB;CACJ;CAeA,AAZAC,EACI,OACUL,EAAQC,EAAQ,gBAAgB,SAChCD,EAAQC,EAAQ,OAAO,CACjC,SACM;EACF,EAAK;CACT,GACA,EAAE,WAAW,GAAK,CACtB,GAGAI,QACUL,EAAQC,EAAQ,OAAO,SACvB;EACF,AAAIN,EAAa,SACbG,EAAK;CAEb,CACJ;CAGA,IAAMQ,IAASC,QACLjB,EAAM,OAAO,aAAaE,EAAS,OAAO,SACpD,GAEMgB,IAAgBD,QAClB1C,EAAqByC,EAAO,OAAO,WAAWA,EAAO,OAAO,SAAS,CACzE,GACMG,IAAYF,QAAeD,EAAO,OAAO,SAAS;CAuBxD,OAAO;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQR;EACR;EACA;EACA,YAhCeS,QAAe;GAC9B,IAAMG,IAAQJ,EAAO,OAAO;GAC5B,IAAII,KAASA,MAAU,QACnB,OAAO,CAAC,SAAS,UAAUA,GAAO;GAEtC,IAAMC,IAAcX,EAAQC,EAAQ,WAAW;GAI/C,OAHIU,IACO,CAAC,SAAS,UAAUA,GAAa,IAErC,CAAC,OAAO;EACnB,CAsBI;EACA,YArBeJ,QACfD,EAAO,QACD;GACI,wBAAwBG,EAAU;GAClC,4BAA4BD,EAAc;EAC9C,IACA,KAAA,CAeN;CACJ;AACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GK/Ha8lC,IAAoB,CAAC,MAAM,IAAI;AAG5C,SAASC,IAAgC;CACrC,IAAMC,IAAc,UAAU,SAAS,MAAM,GAAG,CAAC,CAAC;CAClD,OAAQF,EAAwC,SAASE,CAAW,IAC7DA,IACD;AACV;AAOA,IAAaC,IAAOC,EAAkB;CAClC,QAAQH,EAAa;CACrB,QAAQ;CACR,iBAAiB;CACjB,cAAc;CACd,UAAU;EACN,IAAI;GACA,GAAGlpC;GACH,QAAQ;IAAE,GAAGC;IAAU,GAAGD,EAAG;GAAO;EACxC;EACA,IAAI;GACA,GAAGE;GACH,QAAQ;IAAE,GAAGC;IAAU,GAAGD,EAAG;GAAO;EACxC;CACJ;CACA,eAAe;EACX,IAAI;GACA,aAAa;IACT,OAAO;IACP,UAAU;IACV,cAAc;IACd,UAAU;IACV,uBAAuB;IACvB,aAAa;GACjB;GACA,aAAa;IACT,OAAO;IACP,UAAU;IACV,cAAc;IACd,UAAU;IACV,uBAAuB;IACvB,aAAa;GACjB;GACA,KAAK;IACD,OAAO;IACP,UAAU;IACV,iBAAiB;IACjB,UAAU;IACV,uBAAuB;IACvB,aAAa;GACjB;GACA,KAAK;IACD,OAAO;IACP,UAAU;IACV,iBAAiB;IACjB,UAAU;IACV,uBAAuB;IACvB,aAAa;GACjB;GACA,SAAS;IACL,OAAO;IACP,uBAAuB;IACvB,uBAAuB;IACvB,aAAa;GACjB;GACA,SAAS;IACL,OAAO;IACP,uBAAuB;IACvB,uBAAuB;IACvB,aAAa;GACjB;GACA,SAAS;IACL,OAAO;IACP,UAAU;IACV,gBAAgB;IAChB,uBAAuB;IACvB,uBAAuB;IACvB,aAAa;GACjB;GACA,SAAS;IACL,OAAO;IACP,MAAM;IACN,aAAa;IACb,uBAAuB;GAC3B;EACJ;EACA,IAAI;GACA,aAAa;IACT,OAAO;IACP,UAAU;IACV,cAAc;IACd,UAAU;IACV,uBAAuB;IACvB,aAAa;GACjB;GACA,aAAa;IACT,OAAO;IACP,UAAU;IACV,cAAc;IACd,UAAU;IACV,uBAAuB;IACvB,aAAa;GACjB;GACA,KAAK;IACD,OAAO;IACP,UAAU;IACV,iBAAiB;IACjB,UAAU;IACV,uBAAuB;IACvB,aAAa;GACjB;GACA,KAAK;IACD,OAAO;IACP,UAAU;IACV,iBAAiB;IACjB,UAAU;IACV,uBAAuB;IACvB,aAAa;GACjB;GACA,SAAS;IACL,OAAO;IACP,uBAAuB;IACvB,uBAAuB;IACvB,aAAa;GACjB;GACA,SAAS;IACL,OAAO;IACP,uBAAuB;IACvB,uBAAuB;IACvB,aAAa;GACjB;GACA,SAAS;IACL,OAAO;IACP,UAAU;IACV,gBAAgB;IAChB,uBAAuB;IACvB,uBAAuB;IACvB,aAAa;GACjB;GACA,SAAS;IACL,OAAO;IACP,MAAM;IACN,aAAa;IACb,uBAAuB;GAC3B;EACJ;CACJ;CACA,iBAAiB;EACb,IAAI;GACA,OAAO,EACH,WAAW,QACf;GACA,eAAe,EACX,OAAO,QACX;GACA,eAAe,EACX,WAAW,SACf;GACA,aAAa;IACT,WAAW;IACX,WAAW;GACf;GACA,oBAAoB;IAChB,WAAW;IACX,WAAW;GACf;GACA,MAAM,EACF,WAAW,QACf;GACA,eAAe;IACX,SAAS;IACT,KAAK;GACT;EACJ;EACA,IAAI;GACA,OAAO,EACH,WAAW,QACf;GACA,eAAe,EACX,OAAO,QACX;GACA,eAAe,EACX,WAAW,SACf;GACA,aAAa;IACT,WAAW;IACX,WAAW;GACf;GACA,oBAAoB;IAChB,WAAW;IACX,WAAW;GACf;GACA,MAAM,EACF,WAAW,QACf;GACA,eAAe;IACX,SAAS;IACT,KAAK;GACT;EACJ;CACJ;AACJ,CAAC;AAYD,eAAsBopC,EAAmB,EACrC,eAG8B;CAC9B,IAAI,GAAS,IAGb,IAAI;EACA,IAAIC;EACJ,IAAI;GACA,IAAMC,IAAS,MAAMC,EAAS,MAAM,CAAC,CAAC,KAAK;GAC3C,IAAOD,KAAU,OAAOA,KAAW,WAAWA,IAAS,CAAC;EAC5D,QAAQ;GACJ,IAAO,KAAA;EACX;EACA,IAAME,IAAO,OAAOH,GAAM,QAAS,WAAWA,EAAK,OAAO,KAAA,GACtDI,IAAM,UAAUD;EAWpB,OAVID,EAAS,WAAW,MACpB,IAAM,6BACCC,GAAM,WAAW,yBAAyB,IACjD,IAAM,uBACEH,MACR,IAAM,sBAELH,EAAK,OAAO,GAAGO,CAAG,IAGhB,IAAI,SACP,KAAK,UAAU;GAAE,GAAGJ;GAAM,SAASH,EAAK,OAAO,EAAEO,CAAG;EAAE,CAAC,GACvD;GACI,QAAQF,EAAS;GACjB,YAAYA,EAAS;GACrB,SAASA,EAAS;EACtB,CACJ,IATI;CAUR,QAAQ;EACJ;CACJ;AACJ;;;AChPA,SAASG,IAAwB;CAC7B,OAAO;EACH,IAAI;EACJ,aAAa,OAAY,EACrB,QAAQ,EACJ,iBAAiB,OAAO,MACbC,EAGJ,6BAA6B;GAC5B,QAAQ;GACR,MAAMC;EACV,CAAC,EAET,EACJ;EACA,aAAa,EACT,6BAA6B,OACjC;CACJ;AACJ;AAEA,SAASC,IAAqB;CAC1B,OAAO;EACH,IAAI;EACJ,aAAa,OAAY,EACrB,QAAQ,EACJ,eAAe,OAAO,MACXF,EAGJ,2BAA2B;GAC1B,QAAQ;GACR,MAAMC;EACV,CAAC,EAET,EACJ;EACA,aAAa,EACT,2BAA2B,OAC/B;EACA,eAAe,CACX;GACI,UAAU,MAAiBE,MAAS;GACpC,QAAQ;EACZ,CACJ;CACJ;AACJ;AAOA,IAAMC,IAA2B;AAOjC,SAASC,IAA2B;CAChC,IAAMC,IAAQ,OAAO,gCAAgB,IAAI,WAAW,EAAE,CAAC;CACvD,OAAO,MAAM,KAAKA,IAAQ,MAAMC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;AAC5E;AAiBA,SAAgBC,EACZ,IA2BI,CAAC,GACP;CACE,IAAMC,IAASpoC,EAAIV,EAAiBoB,EAAQ,UAAU,CAAC,GACjD2nC,IAAiBrnC,QACbP,EAAQC,EAAQ,cAAc,KAAK,EAC7C,GAEMrB,IAAQ2B,EAAS;EACnB,WAAWonC,EAAO;EAClB,MAAM,MAAkB;GAEpB,AADAjpC,EAAiBE,GAAOqB,EAAQ,UAAU,GAC1C,EAAO,QAAQrB;EACnB;CACJ,CAAC,GAEKipC,IAAUtnC,QACZ,CAACqnC,EAAe,SAAShpC,EAAM,QACzB,EAAE,eAAe,UAAUA,EAAM,QAAQ,IACzC,KAAA,CACV,GAkCMkpC,IAASC,EAAiB;EAC5B,SAAS9nC,EAAQ,WAAA,KAAA;EACjB,UAAUA,EAAQ,YAAA;EAClB,SAAS;GACL+nC,EAA+C;GAC/CC,EAAgB;GAChBhB,EAAsB;GACtBG,EAAmB;EACvB;EACA,cAAc;GACV,YAnCJ,MACC;IACD,IAAIQ,EAAe,OAIf;IAEJ,IAAMM,IAAqBC,EAAI,SAAS,QAAQ,IAAI,gBAAgB;IACpE,AAAID,MACA,EAAM,QAAQA;GAEtB;GAwBQ,YAAYvB;GACZ,MAAM;IACF,MAAM;IAIN,aAAciB,EAAe,QAAQ,KAAKhpC,EAAM;GACpD;GACA,kBAzBH,GAAO,MACR,MAAMwpC,GAAO;IACT,GAAGC;IACH,aAAaT,EAAe,QAAQ,YAAYS,GAAM;GAC1D,CAAC;EAsBD;CACJ,CAAC,GAEKC,IAAUR,EAAO,WAAW,GAC5BS,IAAmBhpC,EAAI,EAAK,GAC5BipC,IAAgBjoC,QAAeP,EAAQC,EAAQ,aAAa,CAAC,GAC7DwoC,IAAWloC,QAAeP,EAAQC,EAAQ,QAAQ,KAAK,EAAI,GAQ3DyoC,IAAsBnpC,EAAIipC,EAAc,KAAK,GAK7CG,IAAiBpoC,QAEf,CAAC,CAACioC,EAAc,SAChB,CAAC,CAACvoC,EAAQ,sBACV,CAAC,CAACyoC,EAAoB,SACtBd,EAAe,KACvB,GAOIgB,IAA2B,QAAQ,QAAQ;CAC/C,SAASC,EAAiB,GAA0C;EAChE,IAAMC,IAAMF,EAAU,KAAKG,GAAMA,CAAI;EAErC,OADA,IAAYD,GACLA;CACX;CAIA,QACUR,EAAQ,MAAM,MAAM,OACzB,GAAM,MAAiB;EAOpB,AANIU,KAAQA,EAAK,OAAOC,GAAc,MAClChpC,EAAQ,aAAa;GACjB,QAAQ+oC,EAAK;GACb,aAAa,CAAC,CAACA,EAAK;EACxB,CAAC,GAED,CAACA,KAAQC,KACThpC,EAAQ,cAAc;CAE9B,CACJ;CAEA,eAAeipC,IAAmC;EAC9C,IAAM,EAAE,YAAS,MAAMpB,EAAO,OAAO,UAAU;EAC/C,AAAIX,GAAM,UACN,EAAM,QAAQA,EAAK,OACfA,EAAK,MAAM,MACXroC,EACIqoC,EAAK,KAAK,IACVlnC,EAAQ,UACZ;CAGZ;CAMA,eAAekpC,IAAuC;EAClD,IAAMC,IAAepqC,EAAyBiB,EAAQ,UAAU;EAChE,IAAI,CAACmpC,GACD,OAAO;EAEX,IAAI;GACA,IAAM,EAAE,YAAS,MAAMtB,EAAO,OAAO,gBAAgB,EACjD,QAAQsB,EACZ,CAAC;GACD,IAAIjC,GAAM,OAGN,OAFA,EAAM,QAAQA,EAAK,OACnB,MAAMmB,EAAQ,MAAM,QAAQ,GACrB;EAEf,QAAQ,CAER;EACA,OAAO;CACX;CAGA,eAAee,IAA2C;EAEtD,AAAK,MADkBF,EAAmB,KAEtC,MAAMD,EAAkB;CAEhC;CAOA,eAAeI,EACX,GACa;EACb,AAAIZ,EAAoB,UAAUa,MAIlCtpC,EAAQ,wBAAwB,GAC5B,GAAQ,sBAGZ,MAAMopC,EAA0B;CACpC;CAGA,eAAeG,EACX,GACa;EACb,EAAiB,QAAQ;EACzB,IAAI;GACA,IAAM,EAAE,YAAS,MAAM1B,EAAO,OAAO,cAAc,EAC/C,OAAO2B,EACX,CAAC;GACD,IAAIf,EAAoB,UAAUe,GAE9B;GAEJ,IAAItC,GAAM,OAAO;IAEb,AADA,EAAM,QAAQA,EAAK,OACnB,MAAMmB,EAAQ,MAAM,QAAQ;IAC5B;GACJ;GACA,MAAMgB,EAA2BG,CAAgB;EACrD,QAAQ;GACJ,MAAMH,EAA2BG,CAAgB;EACrD,UAAU;GACN,EAAiB,QAAQ;EAC7B;CACJ;CAGA,IAAIC,GASAC,GAGAC,IAA4B;CAEhC,eAAeC,EACX,GACa;EACb,IAAKJ,KAAoBC,MAAyBD,GAGlD;GAEA,AAFA,EAAoB,QAAQA,GAC5B,IAAyBA,GACzB,IAAuBA;GACvB,IAAI;IACA,MAAMZ,EAAiB,YAAY;KAC/B,AAAIH,EAAoB,UAAUe,KAIlC,MAAMD,EAAsBC,CAAgB;IAChD,CAAC;GACL,UAAU;IACN,IAAuB,KAAA;GAC3B;EAb4B;CAchC;CAEA,eAAeK,IAA+C;EAC1D,AAAIvB,EAAiB,SAIrB,MAAMM,EAAiB,YAAY;GAC/B,IAAI,IAAoB,SAASjB,EAAe,QAIhD;MAAiB,QAAQ;IACzB,IAAI;KACA,MAAMyB,EAA0B;IACpC,UAAU;KACN,EAAiB,QAAQ;IAC7B;GALyB;EAM7B,CAAC;CACL;CAkGA,AAhGAhpC,EACI,CAACooC,GAAUH,CAAO,IACjB,CAACyB,GAAaC,OAAgB;EAC3B,IAAI,CAACD,GACD;EAEJ,IACI,CAACC,EAAW,aACZ,CAACA,EAAW,gBACZ,CAACzB,EAAiB,SAClB,CAACyB,EAAW,MACd;GACE,IAAIpC,EAAe,OAIf;GAEJ,IAAIc,EAAoB,OAAO;IAC3B,EAAwBA,EAAoB,KAAK;IACjD;GACJ;GACA,IAAIzoC,EAAQ,oBACR;GAEJ,EAA8B;GAC9B;EACJ;EAEA,IAAM+oC,IAAOgB,EAAW,MAAM;EAE9B,IAAI,GAAe,OAWnB;OACIA,EAAW,MAAM,SAAS,iBAC1B,CAACJ,GACH;IAEE,IADA,IAA4B,IACxB,CAAClB,EAAoB,OAAO;KAK5B,EAAQ;KACR;IACJ;IACA,IAAIiB,MAA2BjB,EAAoB,OAAO;KAItD,EAAwBA,EAAoB,KAAK;KACjD;IACJ;GACJ;GAKA,AACIM,GAAM,eACNN,EAAoB,SACpBiB,MAA2BjB,EAAoB,QAE/CmB,EAAwBnB,EAAoB,KAAK,IAMjDM,GAAM,eACNA,EAAK,MACL,CAAChqC,EAAyBiB,EAAQ,UAAU,KAE5CnB,EAAyBkqC,EAAK,IAAc/oC,EAAQ,UAAU;EApBlE;CAsBJ,GACA,EAAE,WAAW,GAAK,CACtB,GAMAI,EAAMunC,SAAsB;EACxB,EAAQ,MAAM,QAAQ;CAC1B,CAAC,GAEDvnC,EAAMmoC,IAAgB,GAAU,MAAkB;EAC9C,AAAIyB,KAGA,EAAoB,QAAQA,GACxBxB,EAAS,SACToB,EAAwBI,CAAQ,KAOpCC,KAAiBxB,EAAoB,UAAUwB,KAC/CC,EAAQ;CAEhB,CAAC;CAED,SAASC,EAAQ,GAAwD;EACrE,AAAI/rC,EAAM,WAAW,QAGjBupC,EAAe,QAIfU,EAAQ,MAAM,QAAQ,IAGtBI,EAAoB,QACpBmB,EAAwBnB,EAAoB,KAAK,IAGjDzoC,EAAQ,sBAGZ6pC,EAA8B;CAClC;CAEA,IAAM/qC,IAASwB,QAAe+nC,EAAQ,MAAM,MAAM,MAAM,EAAE,GASpD+B,IAAqB9qC,EAA0C;CAGrE,eAAe+qC,EACX,GACA,GACA,GACF;EACE,IAAMlqC,IAAS,MAAM0nC,EAAO,OAAO,MAAM;GACrC;GACA;GACA;EACJ,CAAC,GACKyC,IAAYnqC,EAAO;EA4BzB,OAvBImqC,GAAW,qBACX,EAAmB,QAAQA,EAAU,iBAC/B;GACI,OAAOA,EAAU;GACjB,SAASA,EAAU,oBAAoB,CAAC;EAC5C,IACA,KAAA,GAGNtrC,EAA2BgB,EAAQ,UAAU,GACtCG,MAKPA,EAAO,MAAM,UACb,EAAM,QAAQA,EAAO,KAAK,OAK1BnB,EAA2BgB,EAAQ,UAAU,IAE1CG;CACX;CAEA,IAAMoqC,IAAmB;EACrB,MAAM;EACN,KAAK;EACL,QAAQ;CACZ;CAGA,SAASC,EAAiB,GAA8B;EACpD,OAAO;GACH,QAAQ;GACR,SAAS,EAAE,sBAAsBF,EAAU,MAAM;GAGjD,MAAM;IAAE,MAAM;IAAmB,OAAO;GAAG;EAC/C;CACJ;CAEA,IAAMG,IAAgB;EAClB,MAAM;EACN,OAAO;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;CACnE;CAGA,eAAeC,EACX,GACA,GACF;EACE,IAAMJ,IAAYF,EAAmB;EACrC,IAAI,CAACE,GACD,OAAOG;EAEX,IAAMtqC,IAAS,MAAM0nC,EAAO,OACxB0C,EAAiBI,IACjB;GAAE,GAAGH,EAAiBF,CAAS;GAAG,MAAM,EAAE,QAAK;EAAE,CACrD;EAKA,OAJInqC,EAAO,MAAM,UACb,EAAM,QAAQA,EAAO,KAAK,OAC1B,EAAmB,QAAQ,KAAA,IAExBA;CACX;CAGA,eAAeyqC,IAAoB;EAC/B,IAAMN,IAAYF,EAAmB;EAIrC,OAHKE,IAGEzC,EAAO,OACV,wBACA2C,EAAiBF,CAAS,CAC9B,IALWG;CAMf;CAGA,SAASI,IAAkB;EACvB,EAAmB,QAAQ,KAAA;CAC/B;CAEA,SAASC,EAAgB,GAItB;EACC,OAAOjD,EAAO,OAAO,MAAMkD,CAAM;CACrC;CAEA,SAASC,EAAqB,GAAe,GAAoB;EAC7D,OAAOnD,EAAO,qBAAqB;GAAE;GAAO;EAAW,CAAC;CAC5D;CAiBA,eAAeoD,GACX,GACA,GACkC;EAClC,IAAMC,IAAUlrC,EAAQ,WAAA,KAAA,GAClBmrC,IAAWnrC,EAAQ,YAAA,QACnBorC,IAAQ9D,EAAiB,GACzB+D,IAAW,IAAI,IAAI,GAAGH,EAAQ,GAAGC,EAAS,mBAAmB;EAGnE,AAFAE,EAAS,aAAa,IAAI,YAAYC,CAAQ,GAC9CD,EAAS,aAAa,IAAI,eAAe,OAAO,SAAS,MAAM,GAC/DA,EAAS,aAAa,IAAI,cAAcD,CAAK;EAE7C,IAAMG,IAAQ,OAAO,KACjBF,EAAS,SAAS,GAClB,mBACA,4CACJ;EAMA,OAJKE,IAIE,IAAI,SAAS,MAAY;GAC5B,IAAMC,IAAgB,IAAI,IAAIN,CAAO,CAAC,CAAC,QAEjCO,IAAe,kBAAkB;IACnC,AAAIF,GAAO,UACPG,EAAO;GAEf,GAAG,GAAG;GAEN,SAASA,IAAS;IAGd,AAFA,OAAO,oBAAoB,WAAWC,CAAc,GACpD,cAAcF,CAAY,GAC1BG,EAAQ,EAAE,cAAc,GAAM,CAAC;GACnC;GAEA,SAASD,EAAe,GAAqB;IAMzC,AAJIE,EAAM,WAAWL,KACjBK,EAAM,WAAWN,KACjBM,EAAM,MAAM,SAASxE,KACrBwE,EAAM,KAAK,UAAUT,MAIzBG,GAAO,MAAM,GAGT,OAAOM,EAAM,KAAK,SAAU,YAAYA,EAAM,KAAK,UACnD,EAAM,QAAQA,EAAM,KAAK,OAGzB7sC,EAA2BgB,EAAQ,UAAU,GAC7CqoC,EAAQ,MAAM,QAAQ,CAAC,CAAC,WAAWyD,IAAgB,CAAC,IAExDJ,EAAO;GACX;GAEA,OAAO,iBAAiB,WAAWC,CAAc;EACrD,CAAC,IAzCU,EAAE,cAAc,GAAK;CA0CpC;CAUA,eAAezB,IAAyB;EACpC,IAAIvC,EAAe,OAIf;EAEJ,EAAoB,QAAQ,KAAA;EAC5B,IAAMoE,IAAeptC,EAAM;EAC3B,IAAI;GACA,MAAMkpC,EAAO,QAAQ;EACzB,UAAU;GAQN,AAHIlpC,EAAM,UAAUotC,MAChB,EAAM,QAAQ,KAElB,MAAM1D,EAAQ,MAAM,QAAQ;EAChC;CACJ;CAEA,OAAO;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAcR,EAAO,OAAO;EAC5B;EACA;EACA;CACJ;AACJ;;;AC3wBA,SAAgBmE,IAAqB;CACjC,IAAIC,IAAgC,MAE9BC,KAAwB,MAAiB;EAC3C,EAAM,gBAAgB;CAC1B;CAcA,AAZAC,QAAgB;EAEZ,IAAMC,IADWC,EACA,CAAA,EAAU,OAAO,KAAK,YAAY;EAEnD,AAAMD,aAAoB,eAI1B,IAAaA,GACbH,EAAW,iBAAiB,WAAWC,CAAoB;CAC/D,CAAC,GAEDI,QAAsB;EAClB,AAKAL,OADAA,EAAW,oBAAoB,WAAWC,CAAoB,GACjD;CACjB,CAAC;AACL"}
|
|
1
|
+
{"version":3,"file":"composables.js","names":["action","agent","agentApiToolStatus","agentType","auth","branding","browserEngine","channelDescription","channelGuide","chartLabel","confirmDescription","confirmTitle","conversationAnalysis","crawlMode","dataProtection","diagram","documentMetadata","documentFailure","documentRefreshResult","documentStatus","searchStatus","documentSyncCounter","documentSyncInterval","documentSyncStatus","documentTrash","documentType","errors","externalProvider","feature","gdprRetention","help","hint","integrationProvider","integrationProviderDescription","integrationSyncStatus","interval","invitationStatus","label","language","lead","mcpAuthType","mcpConnectionStatus","mcpServerStatus","member","memorySource","message","messagePart","organizationLimits","placeholder","platformLink","problemReasons","problems","profileSection","refreshInterval","releaseNotes","role","nav","route","showForm","subAgentStatus","time","toolApproval","toolGroup","toolGroupInfo","toolSelection","tooltip","turnEvaluation","twoFactor","userFiles","validation","voiceEagerness","weather","unsubscribe","invalidType","invalidTypeReceivedUndefined","invalidTypeReceivedNull","invalidValue","unrecognizedKeys","invalidKey","invalidUnion","invalidElement","custom","notMultipleOf","invalidFormat","tooSmall","tooBig","types","it","itErrors","en","enErrors","createChatbotApiClient","useChatbotStore","logger","useLocalizedString","resolveContrastColor","agentThemeStyle","DEFAULT_COOKIE_NAME","DEFAULT_USER_ID_COOKIE_SUFFIX","MAX_AGE_ONE_YEAR","setCookie","name","value","maxAge","error","getCookie","prefix","row","entry","setSessionCookie","cookieName","token","getSessionCookie","setAnonymousUserIdCookie","userId","getAnonymousUserIdCookie","clearAnonymousUserIdCookie","BACKEND_URL","FRONTEND_URL","AUTH_BASE_PATH","useChatbotAgent","agent","ref","branding","authMethods","deploymentCss","requiresAuth","notFound","isLoading","load","orgSlug","toValue","options","agentId","apiClient","result","watch","source","computed","contrastColor","mainColor","theme","systemTheme","it_default$1","\"accept\"","\"acceptRedundancy\"","\"activate\"","\"add\"","\"addExistingDocument\"","\"addField\"","\"addFieldMapping\"","\"addHint\"","\"addIntegration\"","\"addMember\"","\"addNestedField\"","\"addToCalendar\"","\"allDocuments\"","\"analyzeChat\"","\"apply\"","\"ask\"","\"attachFile\"","\"back\"","\"backToAgent\"","\"backToDocuments\"","\"backToHome\"","\"backToSignIn\"","\"ban\"","\"blockChat\"","\"cancel\"","\"cancelInvitation\"","\"change\"","\"changeAgent\"","\"changeRole\"","\"check\"","\"clear\"","\"clearSearch\"","\"close\"","\"closeSidebar\"","\"collapse\"","\"compare\"","\"connect\"","\"continue\"","\"copied\"","\"copy\"","\"crawl\"","\"create\"","\"createAgent\"","\"createApiKey\"","\"createDocument\"","\"createFolder\"","\"createNew\"","\"createNewChat\"","\"createNotification\"","\"createRevise\"","\"createSubfolder\"","\"deactivate\"","\"decline\"","\"delete\"","\"deleteAllMemories\"","\"deleteAllNotifications\"","\"deleteFolder\"","\"deleteMyConversations\"","\"deleteProfile\"","\"deleteRow\"","\"deselectHint\"","\"disableAutoRefresh\"","\"disconnect\"","\"embeddingBackToPlatform\"","\"embeddingRemove\"","\"embeddingUseEndpoint\"","\"modelEndpointConnect\"","\"dismissRedundancy\"","\"documentRefreshNow\"","\"documentSetRefresh\"","\"documentSourceSettings\"","\"documentSourceSyncNow\"","\"documentSourceUnlink\"","\"download\"","\"downloadIcs\"","\"downloadTeamsApp\"","\"downvote\"","\"dropFile\"","\"dropFilesToImport\"","\"duplicate\"","\"edit\"","\"editAgent\"","\"editDocument\"","\"editRevise\"","\"editSchema\"","\"enableAutoRefresh\"","\"expand\"","\"export\"","\"exportMyData\"","\"feedback\"","\"foldSidebar\"","\"forgetPassword\"","\"generate\"","\"generateFromJson\"","\"getDirections\"","\"getMoreInfo\"","\"goBack\"","\"hangUp\"","\"impersonate\"","\"import\"","\"importFromCrawler\"","\"integrationCheck\"","\"integrationConnectMicrosoft\"","\"integrationConnectApp\"","\"integrationUseOwnApp\"","\"integrationAdvancedSetup\"","\"integrationDisconnect\"","\"integrationReconnect\"","\"integrationRotateSecret\"","\"invite\"","\"inviteMember\"","\"leave\"","\"link\"","\"linkExisting\"","\"linkFromProvider\"","\"loadDefaults\"","\"manageAgentAccess\"","\"manageProfile\"","\"markAllAsRead\"","\"markAsRead\"","\"moreActions\"","\"moveDown\"","\"moveHere\"","\"moveToFolder\"","\"moveUp\"","\"mute\"","\"next\"","\"open\"","\"openFilters\"","\"openInGmail\"","\"openInMailApp\"","\"openInOutlook\"","\"openInSms\"","\"openInTelegram\"","\"openInWhatsApp\"","\"openInYahooMail\"","\"openSettings\"","\"openSidebar\"","\"pan\"","\"pause\"","\"pin\"","\"playVoicePreview\"","\"prev\"","\"previewAsPage\"","\"previewAsWidget\"","\"previous\"","\"proceed\"","\"profileMenu\"","\"recoverPassword\"","\"refill\"","\"refillHistory\"","\"refresh\"","\"refreshPrices\"","\"setPrice\"","\"regenerate\"","\"remove\"","\"removeField\"","\"renameChat\"","\"renameFolder\"","\"reorder\"","\"reprocess\"","\"resendInvitation\"","\"reset\"","\"resetPassword\"","\"resize\"","\"resume\"","\"resumeInPlayground\"","\"retry\"","\"retryNow\"","\"revoke\"","\"revokeAllOtherSessions\"","\"revokeAllSessions\"","\"run\"","\"save\"","\"scrollToBottom\"","\"searchAllFolders\"","\"select\"","\"selectHint\"","\"selected\"","\"send\"","\"sendLink\"","\"share\"","\"shareDocumentWithAgents\"","\"showLess\"","\"showMore\"","\"signIn\"","\"signInWithSocialProvider\"","\"signOut\"","\"signUp\"","\"signUpWithSocialProvider\"","\"startNewChat\"","\"stop\"","\"stopImpersonation\"","\"stopVoicePreview\"","\"submit\"","\"switch\"","\"takePhoto\"","\"talk\"","\"testIntegration\"","\"toggleIntegration\"","\"toggleTheme\"","\"unban\"","\"unblockChat\"","\"unfoldSidebar\"","\"unlinkDocument\"","\"unmute\"","\"unpin\"","\"update\"","\"upvote\"","\"useColorsForAgentHeader\"","\"view\"","\"viewAgentTree\"","\"viewAll\"","\"viewChat\"","\"viewDetails\"","\"viewDocument\"","\"viewDocuments\"","\"viewProfile\"","\"viewRecentChats\"","\"welcomePopup\"","\"zoomIn\"","\"zoomOut\"","\"createWebSource\"","\"webSourceConfirmRemoval\"","\"channel\"","\"app\"","\"frontoffice\"","\"widget\"","\"reasoning\"","\"high\"","\"low\"","\"medium\"","\"off\"","\"reasoningSummary\"","\"auto\"","\"concise\"","\"detailed\"","\"searchMode\"","\"balanced\"","\"keyword\"","\"semantic\"","\"status\"","\"active\"","\"draft\"","\"inactive\"","\"tool\"","\"fetchTeamsChannelHistory\"","\"geocode\"","\"getWeather\"","\"querySpreadsheet\"","\"readDocumentFile\"","\"requestGeolocation\"","\"retrieveRevisedAnswers\"","\"runWorker\"","\"scheduleWakeup\"","\"searchInKnowledgeBase\"","\"searchInUserFiles\"","\"showArtifact\"","\"showCalendarEvent\"","\"showComparison\"","\"showContactForm\"","\"showDiagram\"","\"showEmail\"","\"showForm\"","\"showImageGallery\"","\"showLocation\"","\"showMessage\"","\"showMultipleChoice\"","\"showProductList\"","\"showQrCode\"","\"showSources\"","\"showSuggestedReply\"","\"showVideo\"","\"showWeather\"","\"showWebPages\"","\"spreadsheet\"","\"useAllUserFiles\"","\"useAllUserKb\"","\"userMemory\"","\"toolWorkingSetMode\"","\"shadow\"","\"visibility\"","\"organization\"","\"private\"","\"public\"","\"chat\"","\"genericError\"","\"haveAccount\"","\"noAccount\"","\"popupBlocked\"","\"resetSent\"","\"resetSentTitle\"","\"resetTitle\"","\"signInTitle\"","\"signUpSuccessTitle\"","\"signUpTitle\"","\"verifyEmail\"","\"asset\"","\"emailBanner\"","\"emailLogo\"","\"logoDark\"","\"logoLight\"","\"mark\"","\"assetHint\"","\"bundledImage\"","\"color\"","\"accent\"","\"brand\"","\"info\"","\"colors\"","\"colorsHint\"","\"darkLogo\"","\"images\"","\"imagesHint\"","\"lightLogo\"","\"loadFailed\"","\"markBesideName\"","\"mode\"","\"modeDark\"","\"modeHint\"","\"modeLight\"","\"modeSystem\"","\"neutralMark\"","\"noImage\"","\"notRuntimeContent\"","\"notRuntimeTitle\"","\"palette\"","\"dark\"","\"light\"","\"removeImage\"","\"replaceImage\"","\"saveAndReload\"","\"saveFailed\"","\"saveFailedHint\"","\"savedMeanwhile\"","\"savedMeanwhileHint\"","\"text\"","\"companyName\"","\"description\"","\"productName\"","\"productTagline\"","\"shortName\"","\"textHint\"","\"texts\"","\"unsupportedType\"","\"uploadFailed\"","\"uploadFailedHint\"","\"uploadImage\"","\"useBundledImage\"","\"fetch\"","\"puppeteer\"","\"remote\"","\"teams\"","\"whatsapp\"","\"docs\"","\"intro\"","\"step1\"","\"step2\"","\"step3\"","\"step4\"","\"step5\"","\"step6\"","\"step7\"","\"step8\"","\"title\"","\"Africa\"","\"America\"","\"Asia\"","\"Australia\"","\"Europe\"","\"Pacific\"","\"abusive\"","\"aggressive\"","\"api\"","\"critical\"","\"data_leak\"","\"degrading\"","\"desktop\"","\"direct\"","\"disengaged\"","\"empty_reply\"","\"endpoint\"","\"excited\"","\"failed_action\"","\"false_success\"","\"frustrated\"","\"goal_met\"","\"goal_not_met\"","\"group\"","\"hallucination\"","\"impatient\"","\"improving\"","\"inappropriate_tone\"","\"mobile\"","\"negative\"","\"neutral\"","\"off_brand\"","\"other\"","\"polite\"","\"positive\"","\"refusal_loop\"","\"repetition\"","\"stable\"","\"stuck_flow\"","\"tablet\"","\"unanalyzed\"","\"unclear\"","\"unknown\"","\"voice\"","\"web\"","\"documentRefreshTriggerOff\"","\"embeddingBackToPlatformSameFamily\"","\"endpointOffWithEmbedding\"","\"integrationRemove\"","\"lastModelOff\"","\"modelProviderDelete\"","\"modelRemove\"","\"revokeVoiceApiKey\"","\"deleteAgent\"","\"deleteBulkDocument\"","\"deleteDocument\"","\"deleteSpreadsheet\"","\"excludeUserFile\"","\"unlinkAgent\"","\"unlinkLastAgentDelete\"","\"unlinkSyncedFolder\"","\"unlinkWebSource\"","\"abuseCategory\"","\"data_extraction\"","\"harassment\"","\"hate_speech\"","\"impersonation\"","\"off_topic_persistent\"","\"prompt_injection\"","\"self_harm\"","\"sexual_content\"","\"spam\"","\"violence\"","\"confidence\"","\"engagement\"","\"label\"","\"abuseDetected\"","\"conversationSentiment\"","\"goalMet\"","\"goalNotMet\"","\"llmIssueDetected\"","\"riskScore\"","\"userEngagement\"","\"userTone\"","\"llmIssue\"","\"sentiment\"","\"sentimentTrend\"","\"tone\"","\"trigger\"","\"agent_request\"","\"manual\"","\"summary_cycle\"","\"depth\"","\"sitemap\"","\"downloadPdf\"","\"classDiagram\"","\"erDiagram\"","\"flowchart\"","\"graph\"","\"sequenceDiagram\"","\"stateDiagram\"","\"xychart\"","\"affectedDocumentsStat\"","\"analyzedPages\"","\"chunkSimilarTo\"","\"compareChunks\"","\"filterOnlyRedundantLabel\"","\"filterRedundant\"","\"hasRedundant\"","\"isRedundant\"","\"openInProvider\"","\"originalChunk\"","\"pageCount\"","\"readingTime\"","\"redundancyAccepted\"","\"redundancyDismissed\"","\"redundancyExplainer\"","\"redundantChunk\"","\"redundantChunks\"","\"redundantChunksStat\"","\"redundantWarningMessage\"","\"redundantWarningServerMessage\"","\"redundantWarningTitle\"","\"redundantWith\"","\"showAll\"","\"thisDocument\"","\"viewByChunks\"","\"viewOriginal\"","\"wordCount\"","\"failed\"","\"gone\"","\"shrunk\"","\"unchanged\"","\"updated\"","\"pending\"","\"processing\"","\"success\"","\"indexed\"","\"unavailable\"","\"empty\"","\"scanned\"","\"added\"","\"renamedOrMoved\"","\"removed\"","\"skippedUnsupported\"","\"skippedTooLarge\"","\"scannedPages\"","\"capped\"","\"daily\"","\"hourly\"","\"monthly\"","\"weekly\"","\"syncing\"","\"idle\"","\"error\"","\"columnDeletedAt\"","\"columnDeletedBy\"","\"columnPurgedIn\"","\"daysLeft\"","\"emptyConsequence\"","\"emptyQuestion\"","\"emptySuccess\"","\"emptyTitle\"","\"emptyTrash\"","\"introRetention\"","\"openLiveDocument\"","\"purge\"","\"purgeConsequence\"","\"purgeQuestion\"","\"purgeSuccess\"","\"purgeTitle\"","\"refusalAgentGone\"","\"refusalIdentityTaken\"","\"restore\"","\"restoreCredits\"","\"restoreFailed\"","\"restoreIndexing\"","\"restoreQuestion\"","\"restoreSuccess\"","\"restoreSuccessRoot\"","\"restoreTitle\"","\"toggle\"","\"toggleHint\"","\"file\"","\"url\"","\"ACCOUNT_TEMPORARILY_LOCKED\"","\"BANNED_USER\"","\"CREDENTIAL_ACCOUNT_NOT_FOUND\"","\"EMAIL_CODE_NOT_AVAILABLE\"","\"TWO_FACTOR_REQUIRED\"","\"PASSKEY_PASSWORD_REQUIRED\"","\"PASSKEY_RECENT_SIGN_IN_REQUIRED\"","\"PASSKEY_NOT_ALLOWED_FOR_SESSION\"","\"PASSKEY_USER_VERIFICATION_REQUIRED\"","\"PASSKEY_NOT_FOUND\"","\"AUTHENTICATION_FAILED\"","\"FAILED_TO_VERIFY_REGISTRATION\"","\"CHALLENGE_NOT_FOUND\"","\"EMAIL_NOT_VERIFIED\"","\"EMAIL_VERIFICATION_REQUIRED_BEFORE_ACCEPTING_OR_REJECTING_INVITATION\"","\"FAILED_TO_UNLINK_LAST_ACCOUNT\"","\"INVALID_BACKUP_CODE\"","\"INVALID_CODE\"","\"INVALID_EMAIL_OR_PASSWORD\"","\"INVALID_PASSWORD\"","\"INVALID_TOKEN\"","\"INVALID_TWO_FACTOR_COOKIE\"","\"INVITATION_LIMIT_REACHED\"","\"INVITATION_NOT_FOUND\"","\"INVITER_IS_NO_LONGER_A_MEMBER_OF_THE_ORGANIZATION\"","\"KEY_NOT_FOUND\"","\"MEMBER_NOT_FOUND\"","\"NOT_ALLOWED\"","\"ORGANIZATION_ALREADY_EXISTS\"","\"ORGANIZATION_MEMBERSHIP_LIMIT_REACHED\"","\"ORGANIZATION_NOT_FOUND\"","\"ORGANIZATION_SLUG_ALREADY_TAKEN\"","\"OTP_HAS_EXPIRED\"","\"RATE_LIMIT_EXCEEDED\"","\"SESSION_NOT_FRESH\"","\"SOCIAL_ACCOUNT_ALREADY_LINKED\"","\"TOO_MANY_ATTEMPTS_REQUEST_NEW_CODE\"","\"TOO_MANY_REQUESTS\"","\"TOTP_ALREADY_ENABLED\"","\"TOTP_NOT_ENABLED\"","\"TWO_FACTOR_REQUIRED_TO_ENFORCE\"","\"UNAUTHORIZED_SESSION\"","\"USER_ALREADY_EXISTS\"","\"USER_ALREADY_EXISTS_USE_ANOTHER_EMAIL\"","\"USER_IS_ALREADY_A_MEMBER_OF_THIS_ORGANIZATION\"","\"USER_IS_ALREADY_INVITED_TO_THIS_ORGANIZATION\"","\"USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION\"","\"USER_NOT_FOUND\"","\"YOU_ARE_NOT_A_MEMBER_OF_THIS_ORGANIZATION\"","\"YOU_ARE_NOT_ALLOWED_TO_MANAGE_TWO_FACTOR\"","\"YOU_ARE_NOT_THE_RECIPIENT_OF_THE_INVITATION\"","\"YOU_CANNOT_BAN_YOURSELF\"","\"YOU_CANNOT_IMPERSONATE_ADMINS\"","\"YOU_CANNOT_LEAVE_THE_ORGANIZATION_AS_THE_ONLY_OWNER\"","\"YOU_CANNOT_LEAVE_THE_ORGANIZATION_WITHOUT_AN_OWNER\"","\"YOU_CANNOT_MANAGE_YOUR_OWN_TWO_FACTOR\"","\"YOU_CANNOT_REMOVE_YOURSELF\"","\"YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_ORGANIZATIONS\"","\"fileAlreadyImported\"","\"invalidToken\"","\"passwordsDoNotMatch\"","\"privateNetworkRequired\"","\"refreshIntervalUrlOnly\"","\"required\"","\"slugAlreadyExists\"","\"slugFormat\"","\"urlAlreadyImported\"","\"syncSourceUrlOnly\"","\"domain\"","\"github\"","\"google\"","\"microsoft\"","\"apiTools\"","\"byok\"","\"endpoints\"","\"fileUpload\"","\"gateway\"","\"channels\"","\"models\"","\"tools\"","\"hubspot\"","\"leads\"","\"legend\"","\"mcpServers\"","\"proactiveAutomations\"","\"salesforce\"","\"sharepoint\"","\"subAgents\"","\"anonymousLabel\"","\"chatLabel\"","\"defaultDays\"","\"defaultDisabled\"","\"trashLabel\"","\"unitDays\"","\"aiDescription\"","\"aiDescriptionModel\"","\"aiDescriptionPrompt\"","\"browserEngine\"","\"documentFile\"","\"fetchBrowserEngine\"","\"followExternal\"","\"forceOcr\"","\"pages\"","\"puppeteerBrowserEngine\"","\"remoteBrowserEngine\"","\"useBrowserEngine\"","\"useExtractionStrategy\"","\"webSourceWatch\"","\"webSourceRemoveMissing\"","\"webSourceRemoveMissingExplained\"","\"D\"","\"M\"","\"W\"","\"Y\"","\"accepted\"","\"canceled\"","\"expired\"","\"de\"","\"en\"","\"english\"","\"es\"","\"fr\"","\"french\"","\"german\"","\"it\"","\"italian\"","\"nl\"","\"pt\"","\"spanish\"","\"contactReason\"","\"appointment\"","\"callback_request\"","\"complaint\"","\"info_request\"","\"quote_request\"","\"support\"","\"budget\"","\"company\"","\"conversationSummary\"","\"preferredContactMethod\"","\"preferredContactTime\"","\"productInterest\"","\"topics\"","\"urgency\"","\"any\"","\"email\"","\"phone\"","\"afternoon\"","\"evening\"","\"morning\"","\"headers\"","\"oauth\"","\"orphan\"","\"stale\"","\"agentAccess\"","\"hint\"","\"managerHint\"","\"explicit\"","\"extracted\"","\"audioTranscribing\"","\"audioTranscript\"","\"audioTranscriptFailed\"","\"audioTranscriptNoSpeech\"","\"audioTranscriptOff\"","\"disconnectOAuthConnection\"","\"requestAccountLink\"","\"unlinkAccount\"","\"editSpreadsheet\"","\"editSpreadsheetCells\"","\"enableTools\"","\"expandChunkContext\"","\"readEarlierMessages\"","\"readSpreadsheet\"","\"recallUserMemory\"","\"requestOAuthConnection\"","\"requestOAuthConnectionButton\"","\"requestOAuthConnectionInfo\"","\"requestOAuthConnectionPrompt\"","\"requestOAuthConnectionSuccess\"","\"revisedAnswers\"","\"runSubagent\"","\"saveUserMemory\"","\"searchingDocuments\"","\"showProducts\"","\"stepCount\"","\"stepDocument\"","\"stepDropped\"","\"stepError\"","\"stepExcerpts\"","\"stepInput\"","\"stepItems\"","\"stepNoResults\"","\"stepOutput\"","\"stepRepeated\"","\"stepTimedOut\"","\"steps\"","\"streaming\"","\"webSearch\"","\"membersHint\"","\"membersInvalid\"","\"membersLabel\"","\"allProviders\"","\"apiToolName\"","\"apiToolUrl\"","\"askAnything\"","\"autoDetect\"","\"autoGenerated\"","\"comment\"","\"completeName\"","\"constValue\"","\"customAnswer\"","\"documentContent\"","\"documentName\"","\"documentOriginAll\"","\"documentRefreshAll\"","\"documentStatusAll\"","\"documentUrl\"","\"endDate\"","\"enterYourQuestion\"","\"insert\"","\"insertOrigin\"","\"insertImageHost\"","\"limit\"","\"loading\"","\"mcpServerHealthCheckPath\"","\"mcpServerUrl\"","\"model\"","\"modelEndpointBaseUrl\"","\"name\"","\"noTrustedOrigins\"","\"noImageHosts\"","\"oauthAuthorizationUrl\"","\"oauthClientId\"","\"oauthClientSecret\"","\"oauthScopes\"","\"oauthTokenUrl\"","\"pasteJsonSample\"","\"prompt\"","\"request\"","\"search\"","\"secretEdit\"","\"selectAgent\"","\"selectLanguage\"","\"selectPriority\"","\"similarity\"","\"sitemapUrl\"","\"slug\"","\"startDate\"","\"startUrl\"","\"temperature\"","\"uploadFile\"","\"emailAddress\"","\"cardTitle\"","\"summaryAvailable\"","\"summaryReplaces\"","\"summaryLinkedHere\"","\"summaryLinkedElsewhere\"","\"summaryExpired\"","\"summaryInvalid\"","\"summaryLinked\"","\"requestedAt\"","\"doNotConfirm\"","\"confirmOnlyIf\"","\"replace\"","\"linked\"","\"identitiesTitle\"","\"identitiesDescription\"","\"linkedAt\"","\"unlinkQuestion\"","\"unlinkDescription\"","\"unlinked\"","\"timeout\"","\"conflict\"","\"unauthorized\"","\"backToApp\"","\"general\"","\"pictureHint\"","\"notifications\"","\"groups\"","\"alwaysOn\"","\"inApp\"","\"agent_replies\"","\"summary\"","\"documents\"","\"integrations\"","\"flagged_conversations\"","\"usage_limits\"","\"security\"","\"passwordSummary\"","\"connectedAccountsNote\"","\"connected\"","\"devices\"","\"deviceOn\"","\"available\"","\"keyExpires\"","\"keyNeverExpires\"","\"keyRequests\"","\"organizations\"","\"current\"","\"onlyYou\"","\"members\"","\"memberSince\"","\"asksTwoFactor\"","\"data\"","\"account\"","\"heading\"","\"installed\"","\"lead\"","\"admin\"","\"member\"","\"owner\"","\"user\"","\"configure\"","\"monitor\"","\"allAgents\"","\"agentSettings\"","\"agentTry\"","\"searchAgent\"","\"searchOrganization\"","\"allOrganizations\"","\"agentEndpoints\"","\"agents\"","\"backoffice\"","\"branding\"","\"catalog\"","\"chatLogs\"","\"copatForYou\"","\"dashboard\"","\"dataProtection\"","\"endpointLogs\"","\"feedbacks\"","\"home\"","\"invitations\"","\"mcpServer\"","\"notFound\"","\"playground\"","\"profile\"","\"reasoningLogs\"","\"releaseNotes\"","\"requestPasswordReset\"","\"system\"","\"twoFactor\"","\"twoFactorSetup\"","\"users\"","\"video\"","\"virtualAssistant\"","\"completed\"","\"otherPlaceholder\"","\"step\"","\"future\"","\"past\"","\"unit\"","\"day\"","\"hour\"","\"minute\"","\"second\"","\"approved\"","\"cancelled\"","\"confirmed\"","\"denied\"","\"communication\"","\"delegation\"","\"knowledgeSearch\"","\"locationWeather\"","\"personalization\"","\"richContent\"","\"cost\"","\"enabled\"","\"exposed\"","\"inputTokens\"","\"kind\"","\"mcp\"","\"subagent\"","\"latency\"","\"leadFailed\"","\"missed\"","\"missedActive\"","\"missedShadow\"","\"notCharged\"","\"probability\"","\"seeded\"","\"used\"","\"agentsUsedInfo\"","\"mcpConnectionStatus\"","\"requestsUsedInfo\"","\"question\"","\"asksHuman\"","\"durableFact\"","\"informationGap\"","\"manipulation\"","\"missingInfo\"","\"version\"","\"adminBackupCodes\"","\"adminChanges\"","\"adminChangesEmpty\"","\"adminChangesHint\"","\"adminDevicesForgotten\"","\"adminFailedAttempts\"","\"adminFilterEmpty\"","\"adminForgetDevices\"","\"adminForgetDevicesDescription\"","\"adminForgetDevicesQuestion\"","\"adminLocked\"","\"adminPasskeySynced\"","\"adminRemovePasskeyDescription\"","\"adminRemovePasskeyQuestion\"","\"adminRequiredPending\"","\"adminStateNoneHint\"","\"adminSummaryAll\"","\"adminTrustedDevices\"","\"adminUnlock\"","\"adminUnlockDescription\"","\"adminUnlocked\"","\"adminUnlockQuestion\"","\"adoptionRatio\"","\"adoptionState\"","\"totp\"","\"otp\"","\"passkey\"","\"none\"","\"adoptionTitle\"","\"adoptionTitleUsers\"","\"backupCode\"","\"backupCodesDescription\"","\"backupCodesFileHeader\"","\"backupCodesReplaced\"","\"backupCodesSaved\"","\"badge\"","\"challengeApp\"","\"challengeBackup\"","\"challengeEmailSending\"","\"challengeEmailSent\"","\"challengeTitle\"","\"code\"","\"column\"","\"disabledMessage\"","\"enabledMessage\"","\"manualKey\"","\"memberOff\"","\"memberOn\"","\"memberPasskey\"","\"memberPasskeyHint\"","\"memberPending\"","\"memberPendingHint\"","\"memberSocialOnly\"","\"memberSocialOnlyHint\"","\"methodApp\"","\"methodAppSummary\"","\"methodEmail\"","\"methodEmailSummary\"","\"newBackupCodes\"","\"newBackupCodesDescription\"","\"passkeyAdd\"","\"passkeyAddDescription\"","\"passkeyAdded\"","\"passkeyAddNoPasswordDescription\"","\"passkeyAlreadyRegistered\"","\"passkeyCancelled\"","\"passkeyCreate\"","\"passkeyCreatedAt\"","\"passkeyDeviceBound\"","\"passkeyDeviceRefused\"","\"passkeyFallbackName\"","\"passkeyName\"","\"passkeyNameHint\"","\"passkeyRemove\"","\"passkeyRemoved\"","\"passkeyRemoveDescription\"","\"passkeyRemoveQuestion\"","\"passkeys\"","\"passkeysDescription\"","\"passkeysEmpty\"","\"passkeySynced\"","\"qrLabel\"","\"requireConsequence\"","\"requiredBy\"","\"requiredByPasskeyEnough\"","\"requireHint\"","\"requireLabel\"","\"requireOff\"","\"requireOn\"","\"requireQuestion\"","\"requireTitle\"","\"resetConfirm\"","\"resetDescription\"","\"resetQuestion\"","\"scanDescription\"","\"sendAgain\"","\"setupAddAnotherPasskey\"","\"setupAddPasskey\"","\"setupDescription\"","\"setupSignInWithPasskey\"","\"setupTitle\"","\"signInState\"","\"signInWithPasskey\"","\"stateNoPassword\"","\"stateOff\"","\"stateOnApp\"","\"stateOnEmail\"","\"summaryNoPassword\"","\"summaryOff\"","\"summaryOnApp\"","\"summaryOnEmail\"","\"switchToApp\"","\"trustDevice\"","\"turnOff\"","\"turnOffDescription\"","\"turnOffRequired\"","\"turnOffTitle\"","\"turnOn\"","\"turnOnTitle\"","\"useApp\"","\"useBackupCode\"","\"verify\"","\"chatFilesEmpty\"","\"chatFilesTitle\"","\"deleteSpreadsheetConfirm\"","\"emptyHint\"","\"exclude\"","\"excludeConfirm\"","\"openInChat\"","\"spreadsheetInChatOnly\"","\"spreadsheetVersion\"","\"subtitle\"","\"untitled\"","\"uploadedAt\"","\"duplicateHeader\"","\"duplicateSecretParameter\"","\"invalidPhoneNumber\"","\"invalidToolName\"","\"passwordMismatch\"","\"eager\"","\"normal\"","\"patient\"","\"airQuality\"","\"aqiFair\"","\"aqiGood\"","\"aqiHazardous\"","\"aqiModerate\"","\"aqiPoor\"","\"aqiVeryPoor\"","\"dailyForecast\"","\"feelsLike\"","\"today\"","\"message\"","\"action\"","\"doneTitle\"","\"doneMessage\"","\"invalidTitle\"","\"invalidMessage\"","en_default$1","en_default","\"starts_with\"","\"ends_with\"","\"includes\"","\"regex\"","\"default\"","\"number\"","\"exact\"","\"inclusive\"","\"notInclusive\"","\"int\"","\"bigint\"","\"date\"","\"string\"","\"array\"","\"set\"","\"emoji\"","\"uuid\"","\"uuidv4\"","\"uuidv6\"","\"nanoid\"","\"guid\"","\"cuid\"","\"cuid2\"","\"ulid\"","\"xid\"","\"ksuid\"","\"datetime\"","\"time\"","\"duration\"","\"ipv4\"","\"ipv6\"","\"cidrv4\"","\"cidrv6\"","\"base64\"","\"base64url\"","\"json_string\"","\"e164\"","\"jwt\"","\"template_literal\"","it_default","SUPPORTED_LOCALES","detectLocale","browserLang","i18n","createI18n","translateAuthError","body","parsed","response","code","key","anonymousReauthClient","$fetch","data","externalAuthClient","path","OAUTH_POPUP_MESSAGE_TYPE","createPopupNonce","bytes","b","useChatbotAuth","_token","useHostSession","headers","client","createAuthClient","inferAdditionalFields","anonymousClient","newTokenFromHeader","ctx","input","init","session","isAuthenticating","externalToken","isActive","activeExternalToken","isExternalAuth","authChain","runExclusiveAuth","run","task","user","previousUser","signInAnonymously","tryAnonymousReauth","storedUserId","reauthOrSignInAnonymously","handleExternalTokenFailure","failedExternalToken","exchangeExternalToken","newExternalToken","pendingExternalToken","attemptedExternalToken","externalSessionReconciled","signInWithExternalToken","signInAnonymouslyWithFallback","newIsActive","newSession","newToken","previousToken","signOut","onError","twoFactorChallenge","signInWithEmail","challenge","TWO_FACTOR_PATHS","twoFactorRequest","lostChallenge","verifyTwoFactor","kind","sendTwoFactorCode","cancelTwoFactor","signUpWithEmail","params","requestPasswordReset","signInWithSocialPopup","baseUrl","basePath","nonce","startUrl","provider","popup","allowedOrigin","closedPollId","finish","onOAuthMessage","resolve","event","onAuthSuccess","revokedToken","useFocusTrapBypass","shadowRoot","stopFocusPropagation","onMounted","rootNode","getCurrentInstance","onBeforeUnmount"],"sources":["../src/utils/cookie.ts","../src/utils/index.ts","../src/composables/useChatbotAgent.ts","../../../packages/i18n/src/it.json","../../../packages/i18n/src/en.json","../../../node_modules/.pnpm/@volverjs+zod-vue-i18n@0.0.10_vue-i18n@11.4.14_vue@3.5.44_typescript@6.0.3___zod@4.6.7/node_modules/@volverjs/zod-vue-i18n/locales/v4/en.json","../../../node_modules/.pnpm/@volverjs+zod-vue-i18n@0.0.10_vue-i18n@11.4.14_vue@3.5.44_typescript@6.0.3___zod@4.6.7/node_modules/@volverjs/zod-vue-i18n/locales/v4/it.json","../../../packages/i18n/src/index.ts","../src/composables/useChatbotAuth.ts","../src/composables/useFocusTrapBypass.ts"],"sourcesContent":["import { logger } from 'utils'\n\nconst DEFAULT_COOKIE_NAME = 'eight-wave-ai'\nconst DEFAULT_USER_ID_COOKIE_SUFFIX = '-uid'\nconst MAX_AGE_ONE_YEAR = 31536000\n\nfunction setCookie(name: string, value: string, maxAge: number) {\n try {\n // A past `expires` accompanies `max-age=0` on deletion: some cookie\n // implementations (older browsers, happy-dom) only honor the former.\n const expires =\n maxAge > 0 ? '' : '; expires=Thu, 01 Jan 1970 00:00:00 GMT'\n document.cookie = `${name}=${value}; path=/; max-age=${maxAge}${expires}; SameSite=Lax; Secure`\n } catch (error) {\n logger.warn(\n '[cookie] setCookie blocked (cross-origin/tracking protection)',\n error,\n )\n }\n}\n\nfunction getCookie(name: string): string {\n try {\n // Only split on the FIRST \"=\" — session tokens are signed with a\n // base64 signature that can contain \"=\" padding, so splitting on every\n // \"=\" would truncate the value and corrupt the token.\n const prefix = `${name}=`\n const row = document.cookie\n .split('; ')\n .find((entry) => entry.startsWith(prefix))\n return row ? row.slice(prefix.length) : ''\n } catch (error) {\n logger.warn(\n '[cookie] getCookie blocked (cross-origin/tracking protection)',\n error,\n )\n return ''\n }\n}\n\n// create first-party session cookie for authentication with 1 year expiry;\n// an empty token (sign-out) deletes the cookie instead of storing an empty value\nexport function setSessionCookie(\n token: string,\n cookieName: string = DEFAULT_COOKIE_NAME,\n) {\n setCookie(cookieName, token, token ? MAX_AGE_ONE_YEAR : 0)\n}\n\n// retrieve first-party session cookie\nexport function getSessionCookie(cookieName: string = DEFAULT_COOKIE_NAME) {\n return getCookie(cookieName)\n}\n\n// persist anonymous userId alongside session token to enable re-auth after session expiry\nexport function setAnonymousUserIdCookie(\n userId: string,\n cookieName: string = DEFAULT_COOKIE_NAME,\n) {\n setCookie(\n `${cookieName}${DEFAULT_USER_ID_COOKIE_SUFFIX}`,\n userId,\n MAX_AGE_ONE_YEAR,\n )\n}\n\n// retrieve persisted anonymous userId\nexport function getAnonymousUserIdCookie(\n cookieName: string = DEFAULT_COOKIE_NAME,\n) {\n return getCookie(`${cookieName}${DEFAULT_USER_ID_COOKIE_SUFFIX}`)\n}\n\n// remove the persisted anonymous userId once the anonymous user links a real\n// account (the linked anonymous user is deleted server-side, so it's stale)\nexport function clearAnonymousUserIdCookie(\n cookieName: string = DEFAULT_COOKIE_NAME,\n) {\n setCookie(`${cookieName}${DEFAULT_USER_ID_COOKIE_SUFFIX}`, '', 0)\n}\n","export * from './cookie'\n\nexport const BACKEND_URL: string = import.meta.env.VITE_BACKEND_URL\nexport const FRONTEND_URL: string = import.meta.env.VITE_FRONTEND_URL\nexport const AUTH_BASE_PATH = 'auth'\n","import type { MaybeRefOrGetter } from 'vue'\nimport { computed, ref, toValue, watch } from 'vue'\nimport type { AgentBranding, AgentPublic, AuthMethods } from 'models'\nimport { createChatbotApiClient } from 'composables'\nimport {\n agentThemeStyle,\n resolveContrastColor,\n} from 'components/src/chat/utils'\nimport { BACKEND_URL } from '~/utils'\n\nexport function useChatbotAgent(options: {\n baseUrl?: string\n basePath?: string\n organizationSlug?: MaybeRefOrGetter<string>\n agentId?: MaybeRefOrGetter<string>\n headers?: MaybeRefOrGetter<Record<string, string> | undefined>\n /**\n * Host-provided color scheme override, applied when the agent theme is\n * `auto`. Mirrors the precedence used by the chatbot store: agent theme,\n * then this override, then the OS `prefers-color-scheme`.\n */\n systemTheme?: MaybeRefOrGetter<'light' | 'dark' | undefined>\n}) {\n const agent = ref<AgentPublic>()\n const branding = ref<AgentBranding>()\n const authMethods = ref<AuthMethods>()\n /** The deployment theme's stylesheet, or undefined while it is the default. */\n const deploymentCss = ref<string>()\n const requiresAuth = ref(false)\n const notFound = ref(false)\n const isLoading = ref(false)\n\n async function load() {\n const orgSlug = toValue(options.organizationSlug)\n const agentId = toValue(options.agentId)\n if (!orgSlug || !agentId) {\n return\n }\n const apiClient = createChatbotApiClient({\n baseUrl: options.baseUrl ?? BACKEND_URL,\n basePath: options.basePath,\n headers: () => toValue(options.headers),\n })\n isLoading.value = true\n try {\n const result = await apiClient.getAgentAccess(orgSlug, agentId)\n authMethods.value = result.authMethods\n deploymentCss.value = result.deploymentBranding?.css\n if (result.requiresAuth) {\n requiresAuth.value = true\n branding.value = result.branding ?? undefined\n agent.value = undefined\n } else {\n requiresAuth.value = false\n branding.value = undefined\n agent.value = result.agent ?? undefined\n }\n notFound.value = false\n } catch {\n notFound.value = true\n deploymentCss.value = undefined\n agent.value = undefined\n branding.value = undefined\n requiresAuth.value = false\n } finally {\n isLoading.value = false\n }\n }\n\n // Reload when org/agent changes\n watch(\n [\n () => toValue(options.organizationSlug),\n () => toValue(options.agentId),\n ],\n () => {\n load()\n },\n { immediate: true },\n )\n\n // Reload when headers change meaningfully (e.g. after login) and auth is required\n watch(\n () => toValue(options.headers),\n () => {\n if (requiresAuth.value) {\n load()\n }\n },\n )\n\n // Branding-aware theming: fall back to branding when agent is not available\n const source = computed(\n () => agent.value?.interface ?? branding.value?.interface,\n )\n\n const contrastColor = computed(() =>\n resolveContrastColor(source.value?.textColor, source.value?.mainColor),\n )\n const mainColor = computed(() => source.value?.mainColor)\n\n const themeClass = computed(() => {\n const theme = source.value?.theme\n if (theme && theme !== 'auto') {\n return ['theme', `theme--${theme}`]\n }\n const systemTheme = toValue(options.systemTheme)\n if (systemTheme) {\n return ['theme', `theme--${systemTheme}`]\n }\n return ['theme']\n })\n\n const themeStyle = computed(() =>\n agentThemeStyle(mainColor.value, contrastColor.value),\n )\n\n return {\n agent,\n branding,\n authMethods,\n deploymentCss,\n requiresAuth,\n notFound,\n isLoading,\n reload: load,\n contrastColor,\n mainColor,\n themeClass,\n themeStyle,\n }\n}\n","{\n \"action\": {\n \"accept\": \"Accetto\",\n \"acceptRedundancy\": \"Conferma ridondante\",\n \"activate\": \"Attiva\",\n \"add\": \"Aggiungi\",\n \"addExistingDocument\": \"Aggiungi documento esistente\",\n \"addField\": \"Aggiungi campo\",\n \"addFieldMapping\": \"Aggiungi mappatura\",\n \"addHint\": \"Premi invio per aggiungere\",\n \"addIntegration\": \"Aggiungi integrazione\",\n \"addMember\": \"Aggiungi membro\",\n \"addNestedField\": \"Campo annidato\",\n \"addToCalendar\": \"Aggiungi al calendario\",\n \"allDocuments\": \"Tutti i documenti\",\n \"analyzeChat\": \"Analizza conversazione\",\n \"apply\": \"Applica\",\n \"ask\": \"Chiedi\",\n \"attachFile\": \"Allega un file\",\n \"back\": \"Indietro\",\n \"backToAgent\": \"Torna all'agente\",\n \"backToDocuments\": \"Torna ai documenti\",\n \"backToHome\": \"Torna alla home\",\n \"backToSignIn\": \"Torna al login\",\n \"ban\": \"Banna utente\",\n \"blockChat\": \"Blocca conversazione\",\n \"cancel\": \"Annulla\",\n \"cancelInvitation\": \"Annulla invito\",\n \"change\": \"Modifica\",\n \"changeAgent\": \"Cambia agente\",\n \"changeRole\": \"Cambia ruolo\",\n \"check\": \"Verifica\",\n \"clear\": \"Pulisci\",\n \"clearSearch\": \"Cancella ricerca\",\n \"close\": \"Chiudi\",\n \"closeSidebar\": \"Chiudi la sidebar\",\n \"collapse\": \"Collassa\",\n \"compare\": \"Confronta\",\n \"connect\": \"Collega\",\n \"continue\": \"Continua\",\n \"copied\": \"Copiato\",\n \"copy\": \"Copia\",\n \"crawl\": \"Esegui crawling\",\n \"create\": \"Crea\",\n \"createAgent\": \"Crea agente\",\n \"createApiKey\": \"Crea API key\",\n \"createDocument\": \"Crea documento\",\n \"createFolder\": \"Crea cartella\",\n \"createNew\": \"Crea nuovo\",\n \"createNewChat\": \"Inizia una nuova chat\",\n \"createNotification\": \"Crea notifica\",\n \"createRevise\": \"Correggi la risposta\",\n \"createSubfolder\": \"Crea sottocartella\",\n \"deactivate\": \"Disattiva\",\n \"decline\": \"Rifiuto\",\n \"delete\": \"Elimina\",\n \"deleteAllMemories\": \"Elimina tutte le memorie\",\n \"deleteAllNotifications\": \"Elimina tutte le notifiche\",\n \"deleteFolder\": \"Elimina cartella\",\n \"deleteMyConversations\": \"Cancella le mie conversazioni\",\n \"deleteProfile\": \"Elimina profilo\",\n \"deleteRow\": \"Elimina riga\",\n \"deselectHint\": \"Premi invio per rimuovere\",\n \"disableAutoRefresh\": \"Disabilita aggiornamento automatico\",\n \"disconnect\": \"Disconnetti\",\n \"embeddingBackToPlatform\": \"Torna alla piattaforma\",\n \"embeddingRemove\": \"Rimuovi\",\n \"embeddingUseEndpoint\": \"Usa l’endpoint\",\n \"modelEndpointConnect\": \"Collega il tuo endpoint\",\n \"dismissRedundancy\": \"Ripristina nella ricerca\",\n \"documentRefreshNow\": \"Aggiorna ora\",\n \"documentSetRefresh\": \"Imposta aggiornamento\",\n \"documentSourceSettings\": \"Impostazioni di sincronizzazione\",\n \"documentSourceSyncNow\": \"Sincronizza ora\",\n \"documentSourceUnlink\": \"Scollega\",\n \"download\": \"Scarica\",\n \"downloadIcs\": \"Scarica .ics\",\n \"downloadTeamsApp\": \"Scarica app Teams (.zip)\",\n \"downvote\": \"Non utile\",\n \"dropFile\": \"Trascina il file qui\",\n \"dropFilesToImport\": \"Rilascia i file per importare i documenti\",\n \"duplicate\": \"Duplica\",\n \"edit\": \"Modifica\",\n \"editAgent\": \"Modifica agente\",\n \"editDocument\": \"Modifica documento\",\n \"editRevise\": \"Modifica la risposta\",\n \"editSchema\": \"Modifica schema\",\n \"enableAutoRefresh\": \"Abilita aggiornamento automatico\",\n \"expand\": \"Espandi\",\n \"export\": \"Esporta\",\n \"exportMyData\": \"Esporta i miei dati\",\n \"feedback\": \"Voglio fare una segnalazione\",\n \"foldSidebar\": \"Chiudi barra laterale\",\n \"forgetPassword\": \"Hai dimenticato la password?\",\n \"generate\": \"Genera\",\n \"generateFromJson\": \"Genera da JSON\",\n \"getDirections\": \"Indicazioni\",\n \"getMoreInfo\": \"Maggiori informazioni\",\n \"goBack\": \"Indietro\",\n \"hangUp\": \"Chiudi la chiamata\",\n \"impersonate\": \"Impersonifica\",\n \"import\": \"Importa ({count})\",\n \"importFromCrawler\": \"Importa da crawler\",\n \"integrationCheck\": \"Verifica connessione\",\n \"integrationConnectMicrosoft\": \"Connetti con Microsoft\",\n \"integrationConnectApp\": \"Collega l'app\",\n \"integrationUseOwnApp\": \"Usa un'app del vostro tenant\",\n \"integrationAdvancedSetup\": \"Configurazione avanzata\",\n \"integrationDisconnect\": \"Disconnetti\",\n \"integrationReconnect\": \"Riconnetti\",\n \"integrationRotateSecret\": \"Sostituisci il client secret\",\n \"invite\": \"Invita\",\n \"inviteMember\": \"Invita membro\",\n \"leave\": \"Abbandona\",\n \"link\": \"Collega\",\n \"linkExisting\": \"Collega esistente\",\n \"linkFromProvider\": \"Collega da {provider}\",\n \"loadDefaults\": \"Carica default\",\n \"manageAgentAccess\": \"Gestisci accesso agenti\",\n \"manageProfile\": \"Gestisci il tuo profilo\",\n \"markAllAsRead\": \"Segna tutto come letto\",\n \"markAsRead\": \"Segna come letto\",\n \"moreActions\": \"Azioni\",\n \"moveDown\": \"Sposta giù\",\n \"moveHere\": \"Sposta qui\",\n \"moveToFolder\": \"Sposta nella cartella\",\n \"moveUp\": \"Sposta su\",\n \"mute\": \"Disattiva il microfono\",\n \"next\": \"Avanti\",\n \"open\": \"Apri\",\n \"openFilters\": \"Apri i filtri\",\n \"openInGmail\": \"Apri in Gmail\",\n \"openInMailApp\": \"Apri con l'app di posta\",\n \"openInOutlook\": \"Apri in Outlook\",\n \"openInSms\": \"Apri in SMS\",\n \"openInTelegram\": \"Apri in Telegram\",\n \"openInWhatsApp\": \"Apri in WhatsApp\",\n \"openInYahooMail\": \"Apri in Yahoo Mail\",\n \"openSettings\": \"Apri le impostazioni\",\n \"openSidebar\": \"Apri la sidebar\",\n \"pan\": \"Sposta\",\n \"pause\": \"Metti in pausa\",\n \"pin\": \"Blocca\",\n \"playVoicePreview\": \"Ascolta un esempio di questa voce\",\n \"prev\": \"Indietro\",\n \"previewAsPage\": \"Anteprima come pagina chat\",\n \"previewAsWidget\": \"Anteprima come widget\",\n \"previous\": \"Indietro\",\n \"proceed\": \"Procedi\",\n \"profileMenu\": \"Profilo, tema e lingua\",\n \"recoverPassword\": \"Recupera password\",\n \"refill\": \"Ricarica\",\n \"refillHistory\": \"Storico ricariche\",\n \"refresh\": \"Aggiorna\",\n \"refreshPrices\": \"Aggiorna i prezzi\",\n \"setPrice\": \"Imposta il prezzo\",\n \"regenerate\": \"Rigenera\",\n \"remove\": \"Rimuovi\",\n \"removeField\": \"Rimuovi campo\",\n \"renameChat\": \"Rinomina\",\n \"renameFolder\": \"Rinomina cartella\",\n \"reorder\": \"Riordina\",\n \"reprocess\": \"Riprocessa\",\n \"resendInvitation\": \"Invia nuovamente l'invito\",\n \"reset\": \"Reset\",\n \"resetPassword\": \"Reimposta password\",\n \"resize\": \"Ridimensiona\",\n \"resume\": \"Riprendi\",\n \"resumeInPlayground\": \"Riprendi nel playground\",\n \"retry\": \"Riprova\",\n \"retryNow\": \"Riprova ora\",\n \"revoke\": \"Revoca\",\n \"revokeAllOtherSessions\": \"Disconnetti tutte\",\n \"revokeAllSessions\": \"Revoca tutte le sessioni\",\n \"run\": \"Esegui\",\n \"save\": \"Salva\",\n \"scrollToBottom\": \"Torna in fondo\",\n \"searchAllFolders\": \"Cerca in tutte le cartelle\",\n \"select\": \"Seleziona\",\n \"selectHint\": \"Premi invio per selezionare\",\n \"selected\": \"Selezionati\",\n \"send\": \"Invia\",\n \"sendLink\": \"Invia il link\",\n \"share\": \"Condividi\",\n \"shareDocumentWithAgents\": \"Condividi con altri agenti\",\n \"showLess\": \"Mostra di meno\",\n \"showMore\": \"Visualizza altre {count}\",\n \"signIn\": \"Accedi\",\n \"signInWithSocialProvider\": \"Accedi con {provider}\",\n \"signOut\": \"Esci\",\n \"signUp\": \"Registrati\",\n \"signUpWithSocialProvider\": \"Registrati con {provider}\",\n \"startNewChat\": \"Inizia una nuova chat\",\n \"stop\": \"Ferma\",\n \"stopImpersonation\": \"Torna al tuo profilo\",\n \"stopVoicePreview\": \"Ferma l'esempio\",\n \"submit\": \"Invia\",\n \"switch\": \"Cambia\",\n \"takePhoto\": \"Scatta una foto\",\n \"talk\": \"Parla\",\n \"testIntegration\": \"Verifica connessione\",\n \"toggleIntegration\": \"Abilita/Disabilita\",\n \"toggleTheme\": \"Cambia tema\",\n \"unban\": \"Sblocca utente\",\n \"unblockChat\": \"Sblocca conversazione\",\n \"unfoldSidebar\": \"Apri barra laterale\",\n \"unlinkDocument\": \"Rimuovi dall'agente\",\n \"unmute\": \"Riattiva il microfono\",\n \"unpin\": \"Sblocca\",\n \"update\": \"Aggiorna\",\n \"upvote\": \"Utile\",\n \"useColorsForAgentHeader\": \"Colora l'intestazione\",\n \"view\": \"Visualizza\",\n \"viewAgentTree\": \"Dipendenze\",\n \"viewAll\": \"Vedi tutte\",\n \"viewChat\": \"Visualizza la chat\",\n \"viewDetails\": \"Visualizza dettagli\",\n \"viewDocument\": \"Visualizza il documento\",\n \"viewDocuments\": \"Visualizza i documenti\",\n \"viewProfile\": \"Visualizza profilo\",\n \"viewRecentChats\": \"Visualizza chat recenti\",\n \"welcomePopup\": \"Mostra popup di benvenuto\",\n \"zoomIn\": \"Ingrandisci\",\n \"zoomOut\": \"Riduci\",\n \"createWebSource\": \"Crea sorgente\",\n \"webSourceConfirmRemoval\": \"Rimuovi le {count} pagine\"\n },\n \"agent\": {\n \"channel\": {\n \"app\": \"App\",\n \"frontoffice\": \"Frontoffice\",\n \"widget\": \"Widget\"\n },\n \"reasoning\": {\n \"high\": \"Alto\",\n \"low\": \"Basso\",\n \"medium\": \"Medio\",\n \"off\": \"Disattivo\"\n },\n \"reasoningSummary\": {\n \"auto\": \"Auto\",\n \"concise\": \"Conciso\",\n \"detailed\": \"Dettagliato\"\n },\n \"searchMode\": {\n \"balanced\": \"Bilanciato (vettoriale + parole chiave)\",\n \"keyword\": \"Parole chiave (solo full-text)\",\n \"semantic\": \"Semantico (solo vettoriale)\"\n },\n \"status\": {\n \"active\": \"Attivo\",\n \"draft\": \"Bozza\",\n \"inactive\": \"Inattivo\"\n },\n \"tool\": {\n \"fetchTeamsChannelHistory\": \"Cronologia canale Teams\",\n \"geocode\": \"Geocodifica\",\n \"getWeather\": \"Dati meteo\",\n \"querySpreadsheet\": \"Query sui fogli di calcolo\",\n \"readDocumentFile\": \"Lettura file documenti\",\n \"requestGeolocation\": \"Geolocalizzazione\",\n \"retrieveRevisedAnswers\": \"Risposte verificate\",\n \"runWorker\": \"Worker parallelo\",\n \"scheduleWakeup\": \"Controlli ripetuti\",\n \"searchInKnowledgeBase\": \"Knowledge base\",\n \"searchInUserFiles\": \"File dell'utente\",\n \"showArtifact\": \"Artefatti\",\n \"showCalendarEvent\": \"Evento calendario\",\n \"showComparison\": \"Confronto\",\n \"showContactForm\": \"Modulo di contatto\",\n \"showDiagram\": \"Diagramma o grafico\",\n \"showEmail\": \"Email\",\n \"showForm\": \"Modulo multi-step\",\n \"showImageGallery\": \"Galleria immagini\",\n \"showLocation\": \"Mappa interattiva\",\n \"showMessage\": \"Messaggistica\",\n \"showMultipleChoice\": \"Scelta multipla\",\n \"showProductList\": \"Catalogo prodotti\",\n \"showQrCode\": \"Codice QR\",\n \"showSources\": \"Fonti e riferimenti\",\n \"showSuggestedReply\": \"Risposte suggerite\",\n \"showVideo\": \"Video\",\n \"showWeather\": \"Widget meteo\",\n \"showWebPages\": \"Link a pagine web\",\n \"spreadsheet\": \"Fogli di calcolo\",\n \"useAllUserFiles\": \"Utilizza tutti i file utente\",\n \"useAllUserKb\": \"Utilizza tutta la KB utente\",\n \"userMemory\": \"Memoria utente\"\n },\n \"toolWorkingSetMode\": {\n \"active\": \"Attiva\",\n \"off\": \"Disattivata\",\n \"shadow\": \"Ombra (solo registrazione)\"\n },\n \"visibility\": {\n \"organization\": \"Organizzazione\",\n \"private\": \"Privato\",\n \"public\": \"Pubblico\"\n }\n },\n \"agentApiToolStatus\": {\n \"active\": \"Attivo\",\n \"inactive\": \"Inattivo\"\n },\n \"agentType\": {\n \"chat\": \"Chat\",\n \"reasoning\": \"Ragionamento\"\n },\n \"auth\": {\n \"genericError\": \"Si è verificato un errore. Riprova.\",\n \"haveAccount\": \"Hai già un account?\",\n \"noAccount\": \"Non hai un account?\",\n \"popupBlocked\": \"Finestra popup bloccata. Consenti i popup per questo sito e riprova.\",\n \"resetSent\": \"Se esiste un account con questa email, riceverai un link per reimpostare la password.\",\n \"resetSentTitle\": \"Controlla la tua email\",\n \"resetTitle\": \"Reimposta la tua password\",\n \"signInTitle\": \"Accedi al tuo account\",\n \"signUpSuccessTitle\": \"Account creato!\",\n \"signUpTitle\": \"Crea il tuo account\",\n \"verifyEmail\": \"Abbiamo inviato un'email di verifica al tuo indirizzo. Controlla la tua casella di posta.\"\n },\n \"branding\": {\n \"asset\": {\n \"emailBanner\": \"Banner delle email\",\n \"emailLogo\": \"Logo delle email\",\n \"logoDark\": \"Logo su fondo scuro\",\n \"logoLight\": \"Logo su fondo chiaro\",\n \"mark\": \"Marchio\"\n },\n \"assetHint\": {\n \"emailBanner\": \"Sotto il logo delle email, largo fino a {width} px.\",\n \"emailLogo\": \"In testa a ogni email.\",\n \"logoDark\": \"Tema scuro. Senza, il logo chiaro.\",\n \"logoLight\": \"Barra laterale e intestazione.\",\n \"mark\": \"Quadrato: card di accesso, barra chiusa e icone dell'app.\"\n },\n \"bundledImage\": \"Immagine predefinita\",\n \"color\": {\n \"accent\": \"Accento\",\n \"brand\": \"Brand\",\n \"info\": \"Info\"\n },\n \"colors\": \"Colori\",\n \"colorsHint\": \"Il tema chiaro e quello scuro hanno ciascuno la sua palette: un tema scuro di solito vuole un brand più chiaro. Il testo su questi colori resta leggibile qualunque colore si scelga.\",\n \"darkLogo\": \"Il logo scuro\",\n \"images\": \"Immagini\",\n \"imagesHint\": \"SVG, PNG o WebP, fino a {maxSize} KB e {maxSide} pixel per lato. Ogni anteprima mostra l'immagine nei due temi: controlla che si legga anche su quello scuro. Le immagini delle email vengono convertite in PNG, o in JPEG quando non hanno trasparenze, perché molti client di posta non mostrano né SVG né WebP.\",\n \"lightLogo\": \"Il logo chiaro\",\n \"loadFailed\": \"Non è stato possibile leggere il tema di questo deployment.\",\n \"markBesideName\": \"Il marchio accanto al nome\",\n \"mode\": \"Chiaro e scuro\",\n \"modeDark\": \"Sempre scuro\",\n \"modeHint\": \"Un tema fisso toglie la scelta agli utenti.\",\n \"modeLight\": \"Sempre chiaro\",\n \"modeSystem\": \"Scelta dell'utente\",\n \"neutralMark\": \"L'iniziale del nome\",\n \"noImage\": \"Nessuna immagine\",\n \"notRuntimeContent\": \"Il tema qui si può solo consultare: questo frontend è costruito senza VITE_RUNTIME_BRANDING e mantiene l'aspetto di compilazione, mentre un tema salvato arriverebbe comunque alle email e al widget della chat di ogni organizzazione.\",\n \"notRuntimeTitle\": \"Questo build non legge il tema\",\n \"palette\": {\n \"dark\": \"Tema scuro\",\n \"light\": \"Tema chiaro\"\n },\n \"removeImage\": \"Rimuovi l'immagine\",\n \"replaceImage\": \"Sostituisci\",\n \"saveAndReload\": \"Salva e ricarica\",\n \"saveFailed\": \"Tema non salvato\",\n \"saveFailedHint\": \"Non è stato possibile salvare il tema. Riprova tra poco.\",\n \"savedMeanwhile\": \"Qualcun altro ha salvato il tema\",\n \"savedMeanwhileHint\": \"Il tema è cambiato dopo che hai aperto questa pagina, e salvando annulleresti quelle modifiche. Ricarica la pagina per vederle, poi rifai le tue.\",\n \"text\": {\n \"companyName\": \"Nome dell'azienda\",\n \"description\": \"Descrizione\",\n \"productName\": \"Nome del prodotto\",\n \"productTagline\": \"Sopratitolo\",\n \"shortName\": \"Nome breve\"\n },\n \"textHint\": {\n \"companyName\": \"Piè di pagina delle email. Vuoto: nessuno.\",\n \"description\": \"Una frase sul prodotto: la descrizione dell'app installata.\",\n \"productName\": \"Scheda del browser, app installata, email e app Teams. Se lo cambi, un'immagine che non carichi non è più quella di Eight Wave: l'iniziale del nome, o nessuna nelle email.\",\n \"productTagline\": \"Sopra il nome breve. Vuoto: nessuno.\",\n \"shortName\": \"La riga in evidenza del logo, e il nome sotto l'icona dell'app installata.\"\n },\n \"texts\": \"Nomi\",\n \"unsupportedType\": \"Usa un'immagine SVG, PNG o WebP.\",\n \"uploadFailed\": \"Immagine non salvata\",\n \"uploadFailedHint\": \"Non è stato possibile caricare l'immagine. Riprova, o controllane formato e dimensioni.\",\n \"uploadImage\": \"Carica\",\n \"useBundledImage\": \"Usa l'immagine predefinita\"\n },\n \"browserEngine\": {\n \"fetch\": \"Fetch · HTML statico\",\n \"puppeteer\": \"Puppeteer · browser locale\",\n \"remote\": \"Remote · browser remoto\"\n },\n \"channelDescription\": {\n \"teams\": \"Pubblica questo agente come bot all'interno di Microsoft Teams.\",\n \"whatsapp\": \"Permetti agli utenti di scrivere a questo agente su WhatsApp tramite le API Meta Cloud.\"\n },\n \"channelGuide\": {\n \"docs\": \"Apri la documentazione ufficiale\",\n \"intro\": \"Segui i passaggi nell'ordine. Apri ogni servizio collegato in una nuova scheda del browser e copia i valori nel form a sinistra. Non chiudere questa finestra finché non hai finito.\",\n \"teams\": {\n \"step1\": \"Accedi al portale Microsoft Azure con il tuo account aziendale o scolastico.\",\n \"step2\": \"Crea una nuova risorsa «Azure Bot» e dalle un nome. Quando richiesto, scegli se è Single o Multi-tenant: ricorda la scelta per il passaggio 5.\",\n \"step3\": \"Apri il bot appena creato → «Configuration», copia il «Microsoft App ID» e incollalo nel campo App ID.\",\n \"step4\": \"Accanto al Microsoft App ID clicca «Manage password»: si apre la registrazione dell'app in Microsoft Entra ID (una pagina diversa dal bot). Lì, sotto «Certificates & secrets», crea un nuovo client secret e copia il suo «Value» (non il Secret ID) nel campo App password. Copialo subito: viene mostrato una sola volta.\",\n \"step5\": \"Imposta l'App type uguale a quanto scelto al passaggio 2. Per Single tenant, copia il «Directory (tenant) ID» dalla pagina «Overview» della registrazione dell'app nel campo Tenant ID.\",\n \"step6\": \"Torna nel bot → «Configuration», imposta il «Messaging endpoint» sul Webhook URL mostrato sopra e salva.\",\n \"step7\": \"Apri il bot → «Channels» e aggiungi il canale «Microsoft Teams».\",\n \"step8\": \"Salva il form a sinistra, poi usa il menu della card (⋯ → Scarica app Teams) per ottenere il pacchetto e caricalo in Teams da «App → Gestisci le tue app → Carica un'app».\"\n },\n \"title\": \"Guida alla configurazione\",\n \"whatsapp\": {\n \"step1\": \"Apri il portale Meta for Developers e accedi con il tuo account Facebook (creane uno se non ce l'hai).\",\n \"step2\": \"Crea una nuova app: scegli il tipo «Business», dai un nome, poi aggiungi il prodotto «WhatsApp».\",\n \"step3\": \"Apri WhatsApp → «API Setup». Copia il «Phone number ID» (un numero lungo, non il numero di telefono) e incollalo nel campo Phone number ID.\",\n \"step4\": \"Sempre in «API Setup», genera un access token. Per una connessione che non scade, crea un token «System User» con il permesso whatsapp_business_messaging e incollalo nel campo Access token.\",\n \"step5\": \"Apri Impostazioni app → «Base», clicca «Mostra» accanto a «Chiave segreta dell'app», copiala e incollala nel campo App secret. Serve a verificare che i messaggi in arrivo provengano davvero da Meta.\",\n \"step6\": \"Abbiamo già compilato il campo «Verify token» con un valore pronto all'uso (usa «Rigenera» per crearne uno nuovo). Incollerai esattamente questo valore in Meta al passaggio successivo.\",\n \"step7\": \"Torna su WhatsApp → «Configuration» e modifica il webhook: incolla il Webhook URL mostrato sopra e lo stesso Verify token, salva, poi iscriviti all'evento «messages».\",\n \"step8\": \"Salva il form a sinistra. Invia un messaggio al tuo numero WhatsApp per verificare che l'agente risponda.\"\n }\n },\n \"chartLabel\": {\n \"2g\": \"2G\",\n \"3g\": \"3G\",\n \"4g\": \"4G\",\n \"Africa\": \"Africa\",\n \"America\": \"America\",\n \"Asia\": \"Asia\",\n \"Australia\": \"Australia\",\n \"Europe\": \"Europa\",\n \"Pacific\": \"Pacifico\",\n \"abusive\": \"Offensivo\",\n \"aggressive\": \"Aggressivo\",\n \"api\": \"API\",\n \"critical\": \"Critico\",\n \"dark\": \"Scuro\",\n \"data_leak\": \"Fuga di dati\",\n \"degrading\": \"In peggioramento\",\n \"desktop\": \"Desktop\",\n \"direct\": \"Diretto\",\n \"disengaged\": \"Disinteressato\",\n \"empty_reply\": \"Risposta vuota\",\n \"endpoint\": \"Endpoint\",\n \"excited\": \"Entusiasta\",\n \"failed_action\": \"Azione fallita\",\n \"false_success\": \"Falso successo\",\n \"frustrated\": \"Frustrato\",\n \"goal_met\": \"Obiettivo raggiunto\",\n \"goal_not_met\": \"Obiettivo non raggiunto\",\n \"group\": \"Gruppo\",\n \"hallucination\": \"Allucinazione\",\n \"high\": \"Alto\",\n \"impatient\": \"Impaziente\",\n \"improving\": \"In miglioramento\",\n \"inappropriate_tone\": \"Tono inappropriato\",\n \"light\": \"Chiaro\",\n \"low\": \"Basso\",\n \"medium\": \"Medio\",\n \"mobile\": \"Mobile\",\n \"negative\": \"Negativo\",\n \"neutral\": \"Neutro\",\n \"off_brand\": \"Fuori tono\",\n \"other\": \"Altro\",\n \"polite\": \"Cortese\",\n \"positive\": \"Positivo\",\n \"reasoning\": \"Reasoning\",\n \"refusal_loop\": \"Loop di rifiuto\",\n \"repetition\": \"Ripetizione\",\n \"slow-2g\": \"2G lento\",\n \"stable\": \"Stabile\",\n \"stuck_flow\": \"Flusso bloccato\",\n \"tablet\": \"Tablet\",\n \"teams\": \"Teams\",\n \"unanalyzed\": \"Non analizzato\",\n \"unclear\": \"Non chiaro\",\n \"unknown\": \"Sconosciuto\",\n \"voice\": \"Voce\",\n \"web\": \"Web\",\n \"whatsapp\": \"WhatsApp\"\n },\n \"confirmDescription\": {\n \"documentRefreshTriggerOff\": \"Altrimenti la lettura successiva sovrascriverebbe quello che avete scritto. Potete riaccenderlo dalla card dell'aggiornamento.\",\n \"embeddingBackToPlatform\": \"La base di conoscenza e le memorie vengono ricalcolate con il modello della piattaforma, dal testo già salvato: niente viene riconvertito. Finché non ha finito, le ricerche trovano solo ciò che è già tornato.\",\n \"embeddingBackToPlatformSameFamily\": \"Il tuo endpoint calcola lo stesso modello della piattaforma, quindi i vettori restano quelli che ci sono e non si ricalcola niente: da adesso li calcola il gateway AI della piattaforma.\",\n \"embeddingRemove\": \"Senza il gateway AI della piattaforma nessun altro calcola i vettori: la base di conoscenza, le risposte corrette, le memorie e l’elaborazione dei documenti si fermano finché non attivi di nuovo un modello di embedding sul tuo endpoint. Se la piattaforma riaccende il gateway, ripartono da sole sui suoi vettori.\",\n \"endpointOffWithEmbedding\": \"Oltre ai suoi modelli si fermano la base di conoscenza, le risposte corrette, le memorie e l’elaborazione dei documenti di tutti gli agenti, finché non lo riaccendi.\",\n \"integrationDisconnect\": \"Restano dove sono con i loro documenti, modificabili come gli altri, e smettono di aggiornarsi. Per sincronizzarle di nuovo dovrete ricollegare il provider e collegarle un'altra volta.\",\n \"integrationRemove\": \"Le credenziali salvate vengono cancellate e le sincronizzazioni verso questo provider si fermano. Per riprenderle dovrete configurarlo di nuovo.\",\n \"lastModelOff\": \"Nessun altro modello di questa organizzazione è acceso: non se ne potrà più scegliere uno per un agente nuovo o come predefinito, e gli agenti che li usano risponderanno con il modello predefinito.\",\n \"modelProviderDelete\": \"I modelli salvati e i loro prezzi andranno persi. L'eliminazione non è possibile finché un agente usa uno dei suoi modelli, né finché l’endpoint calcola l’embedding: sposta prima quegli agenti su un altro modello, e rimuovi l’embedding nella sezione Embedding.\",\n \"modelRemove\": \"Gli agenti che usano questo modello smetteranno di rispondere finché non li sposti su un altro modello.\",\n \"revokeVoiceApiKey\": \"Questa chiave serve il canale voce di un agente: la voce smette di funzionare finché non viene spenta e riaccesa nelle impostazioni dell'agente.\"\n },\n \"confirmTitle\": {\n \"deleteAgent\": \"Eliminare questo agente?\",\n \"deleteAllMemories\": \"Eliminare tutte le memorie di questo utente?\",\n \"deleteBulkDocument\": \"Eliminare i documenti selezionati?\",\n \"deleteDocument\": \"Eliminare questo documento?\",\n \"deleteFolder\": \"Eliminare questa cartella?\",\n \"deleteMyConversations\": \"Eliminare tutte le vostre conversazioni?\",\n \"deleteSpreadsheet\": \"Eliminare questo foglio di calcolo?\",\n \"documentRefreshTriggerOff\": \"Spegnere l'aggiornamento automatico?\",\n \"embeddingBackToPlatform\": \"Calcolare di nuovo i vettori sulla piattaforma?\",\n \"embeddingBackToPlatformSameFamily\": \"Calcolare i vettori sulla piattaforma?\",\n \"embeddingRemove\": \"Rimuovere l’embedding dall’endpoint?\",\n \"endpointOffWithEmbedding\": \"Spegnere l’endpoint che calcola i vettori?\",\n \"excludeUserFile\": \"Rimuovere questo file dai vostri file?\",\n \"integrationDisconnect\": \"Rimuovere questa connessione?\",\n \"lastModelOff\": \"Spegnere l’ultimo modello?\",\n \"modelProviderDelete\": \"Eliminare l’endpoint?\",\n \"modelRemove\": \"Rimuovere {id}?\",\n \"unlinkAgent\": \"Rimuovere questo agente dal documento?\",\n \"unlinkDocument\": \"Disassociare questo documento dall'agente?\",\n \"unlinkLastAgentDelete\": \"Rimuovere l'ultimo agente da questo documento?\",\n \"unlinkSyncedFolder\": \"Scollegare questa cartella?\",\n \"webSourceConfirmRemoval\": \"Rimuovere {count} pagine?\",\n \"unlinkWebSource\": \"Scollegare la sorgente?\"\n },\n \"conversationAnalysis\": {\n \"abuseCategory\": {\n \"data_extraction\": \"Estrazione dati\",\n \"harassment\": \"Molestia\",\n \"hate_speech\": \"Incitamento all'odio\",\n \"impersonation\": \"Impersonificazione\",\n \"off_topic_persistent\": \"Fuori tema\",\n \"prompt_injection\": \"Prompt injection\",\n \"self_harm\": \"Autolesionismo\",\n \"sexual_content\": \"Contenuto sessuale\",\n \"spam\": \"Spam\",\n \"violence\": \"Violenza\"\n },\n \"confidence\": {\n \"high\": \"Alta\",\n \"low\": \"Bassa\",\n \"medium\": \"Media\"\n },\n \"engagement\": {\n \"disengaged\": \"Disimpegnato\",\n \"high\": \"Alto\",\n \"low\": \"Basso\",\n \"medium\": \"Medio\"\n },\n \"label\": {\n \"abuseDetected\": \"Abuso\",\n \"conversationSentiment\": \"Sentiment\",\n \"goalMet\": \"Obiettivo raggiunto\",\n \"goalNotMet\": \"Obiettivo non raggiunto\",\n \"llmIssueDetected\": \"Problema LLM\",\n \"riskScore\": \"Punteggio di rischio\",\n \"userEngagement\": \"Coinvolgimento\",\n \"userTone\": \"Tono\"\n },\n \"llmIssue\": {\n \"data_leak\": \"Fuga di dati\",\n \"empty_reply\": \"Risposta vuota\",\n \"failed_action\": \"Azione fallita\",\n \"false_success\": \"Falso successo\",\n \"hallucination\": \"Allucinazione\",\n \"inappropriate_tone\": \"Tono inappropriato\",\n \"off_brand\": \"Fuori brand\",\n \"refusal_loop\": \"Loop di rifiuto\",\n \"repetition\": \"Ripetizione\",\n \"stuck_flow\": \"Flusso bloccato\"\n },\n \"sentiment\": {\n \"excited\": \"Entusiasta\",\n \"frustrated\": \"Frustrato\",\n \"negative\": \"Negativo\",\n \"neutral\": \"Neutro\",\n \"positive\": \"Positivo\"\n },\n \"sentimentTrend\": {\n \"degrading\": \"In peggioramento\",\n \"improving\": \"In miglioramento\",\n \"stable\": \"Stabile\"\n },\n \"title\": \"Analisi conversazione\",\n \"tone\": {\n \"abusive\": \"Offensivo\",\n \"aggressive\": \"Aggressivo\",\n \"impatient\": \"Impaziente\",\n \"neutral\": \"Neutro\",\n \"polite\": \"Cortese\"\n },\n \"trigger\": {\n \"agent_request\": \"Su richiesta\",\n \"manual\": \"Manuale\",\n \"summary_cycle\": \"Automatico\"\n }\n },\n \"crawlMode\": {\n \"depth\": \"Pagina iniziale\",\n \"sitemap\": \"Sitemap XML\"\n },\n \"dataProtection\": {\n \"downloadPdf\": \"Scarica il PDF\"\n },\n \"diagram\": {\n \"classDiagram\": \"Diagramma di classe\",\n \"erDiagram\": \"Diagramma ER\",\n \"flowchart\": \"Diagramma di flusso\",\n \"graph\": \"Grafico\",\n \"sequenceDiagram\": \"Diagramma di sequenza\",\n \"stateDiagram\": \"Diagramma di stato\",\n \"xychart\": \"Grafico XY\"\n },\n \"documentMetadata\": {\n \"affectedDocumentsStat\": \"Documenti coinvolti\",\n \"analyzedPages\": \"analizzate {pages} su\",\n \"chunkSimilarTo\": \"Simile al {score}% a un contenuto in «{docName}»\",\n \"compare\": \"Confronta\",\n \"compareChunks\": \"Confronto semantico chunk\",\n \"filterOnlyRedundantLabel\": \"Mostra solo documenti con chunk ridondanti non gestiti\",\n \"filterRedundant\": \"Mostra ridondanti\",\n \"hasRedundant\": \"Questo documento contiene informazioni ridondanti con altri file\",\n \"isRedundant\": \"Ridondante\",\n \"openInProvider\": \"Apri in {provider}\",\n \"originalChunk\": \"Chunk originale (autorevole)\",\n \"pageCount\": \"nessuna pagina | {n} pagina | {n} pagine\",\n \"readingTime\": \"{minutes} min\",\n \"redundancyAccepted\": \"Confermato\",\n \"redundancyDismissed\": \"Ripristinato\",\n \"redundancyExplainer\": \"Questi blocchi ripetono un contenuto che l'agente trova già in un altro documento, o prima in questo, e la sua ricerca li salta. Conferma per lasciarli fuori, oppure ripristinali per rimetterli nella ricerca, in ogni agente.\",\n \"redundantChunk\": \"Chunk ridondante (duplicato)\",\n \"redundantChunks\": \"nessun chunk ridondante | {n} chunk ridondante ({percent}%) | {n} chunk ridondanti ({percent}%)\",\n \"redundantChunksStat\": \"Chunk ridondanti\",\n \"redundantWarningMessage\": \"Alcuni documenti contengono chunk ridondanti. Saranno esclusi automaticamente per ottimizzare il contesto del chatbot di recupero RAG.\",\n \"redundantWarningServerMessage\": \"Ci sono {chunks} chunk ridondanti non gestiti distribuiti in {docs} documenti di questo agente (su un totale di {totalChunks} chunk e {totalDocs} documenti).\",\n \"redundantWarningTitle\": \"Rilevati contenuti duplicati o ridondanti nella Knowledge Base\",\n \"redundantWith\": \"Ridondante con il chunk {chunkId} di {docName} ({score}% similarità semantica)\",\n \"showAll\": \"Mostra tutti\",\n \"thisDocument\": \"Questo documento\",\n \"viewByChunks\": \"Visualizza a chunk\",\n \"viewDocument\": \"Documento\",\n \"viewOriginal\": \"Vedi originale\",\n \"wordCount\": \"{count} parole\"\n },\n \"documentFailure\": {\n \"audio-no-speech\": \"Nella registrazione non si sente nessun parlato\",\n \"audio-too-large\": \"La registrazione supera {limit} MB, il massimo che si trascrive: carica una copia più corta o più compressa\",\n \"credit-exhausted\": \"Credito esaurito: i documenti nuovi non vengono elaborati\",\n \"endpoint-off\": \"L'endpoint AI dell'organizzazione è spento\",\n \"file-protected\": \"Il file è protetto da password: carica una copia senza password\",\n \"file-type-unsupported\": \"Questo tipo di file non si può leggere\",\n \"file-unreadable\": \"Il file è danneggiato, o non è nel formato che indica il suo nome\",\n \"format-unsupported\": \"Il modello dell'endpoint non legge questo formato con la descrizione AI: usa la conversione normale\",\n \"gateway-disabled\": \"Serve il gateway AI della piattaforma, che questa organizzazione non usa\",\n \"model-unavailable\": \"Il modello scelto per i documenti non è attivo per questa organizzazione\",\n \"no-model\": \"Nessun modello impostato per l'AI dei documenti\",\n \"page-too-large\": \"La pagina è troppo pesante per essere letta, anche senza script e grafica incorporata\",\n \"source-status\": \"La pagina di origine ha risposto HTTP {status}\",\n \"spreadsheet-macros\": \"La cartella di lavoro contiene macro: salvala come .xlsx senza macro\",\n \"spreadsheet-no-table\": \"Nessun foglio ha una riga di intestazione nelle prime trenta righe, quindi non c'è una tabella da interrogare\",\n \"spreadsheet-protected\": \"Il file è protetto da password, oppure è un vecchio .xls rinominato in .xlsx: carica una copia .xlsx senza protezione\",\n \"spreadsheet-too-large\": \"Troppo grande per essere letto come tabelle: il contenuto supera {limit} MB\",\n \"spreadsheet-unreadable\": \"Il file non è una cartella di lavoro .xlsx valida\",\n \"transcription-off\": \"L'audio si trascrive sul gateway AI della piattaforma, che questa organizzazione non usa\"\n },\n \"documentRefreshResult\": {\n \"failed\": \"Fallito\",\n \"gone\": \"Pagina sparita\",\n \"shrunk\": \"Rifiutato\",\n \"unchanged\": \"Invariato\",\n \"updated\": \"Aggiornato\"\n },\n \"documentStatus\": {\n \"failed\": \"Fallito\",\n \"pending\": \"In attesa\",\n \"processing\": \"In elaborazione\",\n \"success\": \"Convertito\"\n },\n \"searchStatus\": {\n \"indexed\": {\n \"label\": \"Disponibile\",\n \"title\": \"Disponibile per la ricerca dell'agente\"\n },\n \"pending\": {\n \"label\": \"In preparazione\",\n \"title\": \"In arrivo nell'indice di ricerca dell'agente\"\n },\n \"failed\": {\n \"label\": \"Non indicizzato\",\n \"title\": \"L'indice di ricerca non ha accolto il documento: rielaboralo per riprovare\"\n },\n \"unavailable\": {\n \"label\": \"Non disponibile\",\n \"title\": \"L'organizzazione non può calcolare gli embedding: il documento resta fuori dalla ricerca finché il gateway o l'endpoint dell'organizzazione non tornano attivi\"\n },\n \"empty\": {\n \"label\": \"Nessun contenuto\",\n \"title\": \"Il documento non ha testo da cercare\"\n }\n },\n \"documentSyncCounter\": {\n \"scanned\": \"file esaminati\",\n \"added\": \"nuovi\",\n \"updated\": \"aggiornati\",\n \"renamedOrMoved\": \"rinominati o spostati\",\n \"removed\": \"rimossi\",\n \"unchanged\": \"invariati\",\n \"skippedUnsupported\": \"formati non supportati\",\n \"skippedTooLarge\": \"troppo grandi\",\n \"failed\": \"falliti\",\n \"scannedPages\": \"pagine esaminate\",\n \"capped\": \"rimandate al prossimo controllo\"\n },\n \"documentSyncInterval\": {\n \"daily\": \"Ogni giorno\",\n \"hourly\": \"Ogni ora\",\n \"monthly\": \"Ogni mese\",\n \"weekly\": \"Ogni settimana\"\n },\n \"documentSyncStatus\": {\n \"pending\": \"Primo import in corso\",\n \"syncing\": \"Sincronizzazione in corso\",\n \"idle\": \"Aggiornata\",\n \"error\": \"Errore\"\n },\n \"documentTrash\": {\n \"back\": \"Torna ai documenti\",\n \"columnDeletedAt\": \"Eliminato il\",\n \"columnDeletedBy\": \"Eliminato da\",\n \"columnPurgedIn\": \"Eliminazione tra\",\n \"daysLeft\": \"Alla prossima pulizia | {count} giorno | {count} giorni\",\n \"empty\": \"Il cestino è vuoto.\",\n \"emptyConsequence\": \"I file originali e i testi estratti vengono distrutti: non sarà più possibile ripristinarli né scaricarli. Un documento condiviso con altri agenti sparisce anche dal loro cestino.\",\n \"emptyQuestion\": \"Il documento nel cestino viene eliminato definitivamente. | I {count} documenti nel cestino vengono eliminati definitivamente.\",\n \"emptySuccess\": \"{count} documento eliminato definitivamente. | {count} documenti eliminati definitivamente.\",\n \"emptyTitle\": \"Svuotare il cestino?\",\n \"emptyTrash\": \"Svuota cestino\",\n \"intro\": \"L'agente non cerca più nei documenti del cestino. Puoi ripristinarli o eliminarli definitivamente.\",\n \"introRetention\": \"Ogni documento resta qui {count} giorno, poi viene eliminato definitivamente. | Ogni documento resta qui {count} giorni, poi viene eliminato definitivamente.\",\n \"openLiveDocument\": \"Apri il documento che lo sostituisce\",\n \"purge\": \"Elimina definitivamente\",\n \"purgeConsequence\": \"Il file originale e il testo estratto vengono distrutti: non sarà più possibile ripristinarlo né scaricarlo.\",\n \"purgeQuestion\": \"«{name}» viene eliminato definitivamente.\",\n \"purgeSuccess\": \"Documento eliminato definitivamente.\",\n \"purgeTitle\": \"Eliminare definitivamente?\",\n \"refusalAgentGone\": \"Tutti gli agenti a cui apparteneva sono stati eliminati, quindi non c'è un posto dove ripristinarlo. Si può solo eliminarlo definitivamente.\",\n \"refusalIdentityTaken\": \"La stessa sorgente ha importato di nuovo questo file: ripristinarlo creerebbe due copie dello stesso documento. Usa quello già presente nella knowledge base.\",\n \"restore\": \"Ripristina\",\n \"restoreCredits\": \"La re-indicizzazione ricalcola gli embedding del documento e consuma crediti.\",\n \"restoreFailed\": \"Non è stato possibile ripristinare il documento.\",\n \"restoreIndexing\": \"Torna ricercabile solo al termine della re-indicizzazione, che avviene in background.\",\n \"restoreQuestion\": \"«{name}» torna nella knowledge base dell'agente, nella sua cartella.\",\n \"restoreSuccess\": \"Documento ripristinato. Sarà ricercabile al termine della re-indicizzazione.\",\n \"restoreSuccessRoot\": \"Documento ripristinato nella radice, perché la sua cartella non esiste più. Sarà ricercabile al termine della re-indicizzazione.\",\n \"restoreTitle\": \"Ripristinare il documento?\",\n \"toggle\": \"Cestino\",\n \"toggleHint\": \"I documenti eliminati da questo agente, che si possono ancora ripristinare\"\n },\n \"documentType\": {\n \"file\": \"File\",\n \"plain-text\": \"Testo\",\n \"revised-answer\": \"Risposta\",\n \"url\": \"Pagina web\"\n },\n \"errors\": {\n \"ACCOUNT_TEMPORARILY_LOCKED\": \"Troppi codici sbagliati: la verifica è bloccata per 15 minuti.\",\n \"BANNED_USER\": \"Questo account è stato bannato. Contatta l'assistenza se pensi che sia un errore.\",\n \"CREDENTIAL_ACCOUNT_NOT_FOUND\": \"Questo account accede con Google o Microsoft e non ha una password da cambiare\",\n \"EMAIL_CODE_NOT_AVAILABLE\": \"Questo account usa un'app di autenticazione: scrivi il suo codice o un codice di recupero.\",\n \"TWO_FACTOR_REQUIRED\": \"Un'organizzazione di questo account richiede la verifica in due passaggi: configurala per continuare\",\n \"PASSKEY_PASSWORD_REQUIRED\": \"Conferma la password per aggiungere una passkey\",\n \"PASSKEY_RECENT_SIGN_IN_REQUIRED\": \"Esci e accedi di nuovo per aggiungere una passkey\",\n \"PASSKEY_NOT_ALLOWED_FOR_SESSION\": \"Una passkey la aggiunge solo il titolare dell'account, dopo l'accesso\",\n \"PASSKEY_USER_VERIFICATION_REQUIRED\": \"Questa passkey non ha chiesto né PIN né impronta né volto: impostane uno sul dispositivo e riprova\",\n \"PASSKEY_NOT_FOUND\": \"Questa passkey non è collegata a nessun account: accedi con la password\",\n \"AUTHENTICATION_FAILED\": \"Non è stato possibile verificare la passkey: riprova\",\n \"FAILED_TO_VERIFY_REGISTRATION\": \"Non è stato possibile salvare la passkey: riprova\",\n \"CHALLENGE_NOT_FOUND\": \"La richiesta è scaduta: riprova\",\n \"EMAIL_NOT_VERIFIED\": \"Verifica il tuo indirizzo email\",\n \"EMAIL_VERIFICATION_REQUIRED_BEFORE_ACCEPTING_OR_REJECTING_INVITATION\": \"Verifica il tuo indirizzo email prima di rispondere all'invito\",\n \"FAILED_TO_UNLINK_LAST_ACCOUNT\": \"Non puoi scollegare l'unico metodo di accesso\",\n \"INVALID_BACKUP_CODE\": \"Il codice di recupero non è valido o è già stato usato.\",\n \"INVALID_CODE\": \"Il codice non è valido. Riprova.\",\n \"INVALID_EMAIL_OR_PASSWORD\": \"Email o password non validi\",\n \"INVALID_PASSWORD\": \"La password non è corretta\",\n \"INVALID_TOKEN\": \"Il link è scaduto o è già stato usato. Richiedine uno nuovo.\",\n \"INVALID_TWO_FACTOR_COOKIE\": \"La verifica è scaduta. Accedi di nuovo.\",\n \"INVITATION_LIMIT_REACHED\": \"Questa organizzazione ha raggiunto il limite di inviti\",\n \"INVITATION_NOT_FOUND\": \"L'invito non è più valido: potrebbe essere scaduto, annullato o avere già ricevuto una risposta\",\n \"INVITER_IS_NO_LONGER_A_MEMBER_OF_THE_ORGANIZATION\": \"Chi ti ha invitato non fa più parte dell'organizzazione, quindi l'invito non è più valido\",\n \"KEY_NOT_FOUND\": \"La chiave API non esiste più: potrebbe essere già stata eliminata\",\n \"MEMBER_NOT_FOUND\": \"Membro non trovato nell'organizzazione\",\n \"NOT_ALLOWED\": \"Non hai i permessi per questa operazione\",\n \"ORGANIZATION_ALREADY_EXISTS\": \"Esiste già un'organizzazione con questo slug\",\n \"ORGANIZATION_MEMBERSHIP_LIMIT_REACHED\": \"Questa organizzazione ha raggiunto il limite di membri\",\n \"ORGANIZATION_NOT_FOUND\": \"L'organizzazione non esiste più\",\n \"ORGANIZATION_SLUG_ALREADY_TAKEN\": \"Questo slug è già usato da un'altra organizzazione\",\n \"OTP_HAS_EXPIRED\": \"Il codice è scaduto. Chiedine uno nuovo.\",\n \"RATE_LIMIT_EXCEEDED\": \"Limite di richieste superato\",\n \"SESSION_NOT_FRESH\": \"Per sicurezza, accedi di nuovo e ripeti l'operazione\",\n \"SOCIAL_ACCOUNT_ALREADY_LINKED\": \"Questo account è già collegato a un altro utente\",\n \"TOO_MANY_ATTEMPTS_REQUEST_NEW_CODE\": \"Troppi tentativi. Accedi di nuovo per ricevere un nuovo codice.\",\n \"TOO_MANY_REQUESTS\": \"Troppi tentativi. Attendi qualche minuto e riprova.\",\n \"TOTP_ALREADY_ENABLED\": \"La verifica in due passaggi con un'app è già attiva.\",\n \"TOTP_NOT_ENABLED\": \"Nessuna app di autenticazione è configurata per questo account.\",\n \"TWO_FACTOR_REQUIRED_TO_ENFORCE\": \"Attiva la verifica in due passaggi sul tuo account prima di renderla obbligatoria.\",\n \"UNAUTHORIZED_SESSION\": \"La sessione è scaduta. Accedi di nuovo.\",\n \"USER_ALREADY_EXISTS\": \"Esiste già un account con questa email\",\n \"USER_ALREADY_EXISTS_USE_ANOTHER_EMAIL\": \"Esiste già un account con questa email\",\n \"USER_IS_ALREADY_A_MEMBER_OF_THIS_ORGANIZATION\": \"Questo utente fa già parte dell'organizzazione\",\n \"USER_IS_ALREADY_INVITED_TO_THIS_ORGANIZATION\": \"Questo utente è già stato invitato nell'organizzazione\",\n \"USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION\": \"Non fai parte di questa organizzazione\",\n \"USER_NOT_FOUND\": \"L'utente non esiste più\",\n \"YOU_ARE_NOT_A_MEMBER_OF_THIS_ORGANIZATION\": \"Non fai parte di questa organizzazione\",\n \"YOU_ARE_NOT_ALLOWED_TO_MANAGE_TWO_FACTOR\": \"Può farlo solo un amministratore di sistema, con il proprio account.\",\n \"YOU_ARE_NOT_THE_RECIPIENT_OF_THE_INVITATION\": \"Questo invito è stato inviato a un altro indirizzo email\",\n \"YOU_CANNOT_BAN_YOURSELF\": \"Non puoi bannare te stesso\",\n \"YOU_CANNOT_IMPERSONATE_ADMINS\": \"Non puoi impersonare un amministratore\",\n \"YOU_CANNOT_LEAVE_THE_ORGANIZATION_AS_THE_ONLY_OWNER\": \"Sei l'unico proprietario: nomina un altro proprietario prima di uscire\",\n \"YOU_CANNOT_LEAVE_THE_ORGANIZATION_WITHOUT_AN_OWNER\": \"L'organizzazione deve avere almeno un proprietario\",\n \"YOU_CANNOT_MANAGE_YOUR_OWN_TWO_FACTOR\": \"La tua verifica in due passaggi e le tue passkey si gestiscono dal profilo.\",\n \"YOU_CANNOT_REMOVE_YOURSELF\": \"Non puoi rimuovere te stesso\",\n \"YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_ORGANIZATIONS\": \"Hai raggiunto il numero massimo di organizzazioni\",\n \"fileAlreadyImported\": \"Questo file è già stato importato come documento\",\n \"invalidToken\": \"Richiesta non più valida\",\n \"passwordsDoNotMatch\": \"Le password non coincidono\",\n \"privateNetworkRequired\": \"Conferma che l'endpoint è su una rete privata\",\n \"refreshIntervalUrlOnly\": \"Solo le pagine web possono aggiornarsi da sole\",\n \"required\": \"Obbligatorio\",\n \"slugAlreadyExists\": \"Lo slug esiste già\",\n \"slugFormat\": \"Lo slug può contenere solo lettere minuscole, numeri e trattini (-)\",\n \"urlAlreadyImported\": \"Questo URL è già stato importato come documento\",\n \"syncSourceUrlOnly\": \"Solo una pagina web può appartenere a una sorgente web\"\n },\n \"externalProvider\": {\n \"domain\": \"Dominio email\",\n \"github\": \"GitHub\",\n \"google\": \"Google\",\n \"microsoft\": \"Microsoft Entra\"\n },\n \"feature\": {\n \"apiTools\": \"API tools\",\n \"byok\": \"Modelli propri (BYOK)\",\n \"endpoints\": \"API endpoints\",\n \"fileUpload\": \"Caricamento file\",\n \"gateway\": \"Modelli della piattaforma\",\n \"group\": {\n \"channels\": \"Canali e pubblicazione\",\n \"models\": \"Modelli\",\n \"tools\": \"Strumenti e dati\"\n },\n \"hubspot\": \"HubSpot\",\n \"leads\": \"Contatti\",\n \"legend\": \"Funzionalità\",\n \"mcpServers\": \"Server MCP\",\n \"proactiveAutomations\": \"Automazioni proattive\",\n \"salesforce\": \"Salesforce\",\n \"sharepoint\": \"SharePoint\",\n \"subAgents\": \"Sotto-agenti\",\n \"teams\": \"Microsoft Teams\",\n \"voice\": \"Conversazione vocale\",\n \"whatsapp\": \"WhatsApp\"\n },\n \"gdprRetention\": {\n \"anonymousLabel\": \"Cancellazione utenti anonimi\",\n \"chatLabel\": \"Anonimizzazione chat\",\n \"defaultDays\": \"Predefinito: {count} giorno. | Predefinito: {count} giorni.\",\n \"defaultDisabled\": \"Predefinito: disattivato.\",\n \"legend\": \"Conservazione dei dati (GDPR)\",\n \"trashLabel\": \"Svuotamento del cestino\",\n \"unitDays\": \"giorni\"\n },\n \"help\": {\n \"aiDescription\": \"Un modello AI analizza il file e genera una descrizione strutturale del contenuto. Utile per documenti con tabelle, grafici o layout complessi.\",\n \"aiDescriptionModel\": \"Il modello AI usato per generare la descrizione\",\n \"aiDescriptionPrompt\": \"Prompt utilizzato per generare la descrizione\",\n \"browserEngine\": \"Come viene caricata la pagina prima dell'estrazione\",\n \"documentFile\": \"PDF, Word, Excel, CSV, testo, immagini e audio.\",\n \"fetchBrowserEngine\": \"veloce, recupera l'HTML statico. Ideale per la maggior parte dei siti.\",\n \"followExternal\": \"Recupera link da domini diversi\",\n \"forceOcr\": \"Forza l'estrazione testo tramite OCR (Document Intelligence). Utile per PDF scansionati o quando l'estrazione normale produce risultati insufficienti.\",\n \"pages\": \"Vuoto: tutte le pagine. Le pagine si leggono con OCR.\",\n \"puppeteerBrowserEngine\": \"esegue JavaScript con un browser locale. Per pagine dinamiche o single-page.\",\n \"remoteBrowserEngine\": \"come Puppeteer, ma su un browser remoto. Aggira blocchi e rilevamento bot.\",\n \"useBrowserEngine\": \"Più lento, ma consente l'analisi di pagine dinamiche\",\n \"useExtractionStrategy\": \"Migliora l'estrazione dei dati con l'AI\",\n \"webSourceWatch\": \"Le pagine nuove vanno nella cartella «{name}».\",\n \"webSourceRemoveMissing\": \"Per una sitemap completa. Molte rimozioni ti aspettano.\",\n \"webSourceRemoveMissingExplained\": \"Per un sito tuo, la cui sitemap elenca tutto ciò che è pubblicato. Se ne mancano troppe in una volta non rimuove niente e chiede conferma.\"\n },\n \"hint\": {\n \"agentModel\": \"Pre-selezionato alla creazione di un nuovo agente.\",\n \"agentOnOwnEndpoint\": \"Questo agente gira sull’endpoint della tua organizzazione.\",\n \"allowedDomains\": \"Cerca solo all'interno di questi domini.\",\n \"approvalChannels\": \"Un tool può chiedere conferma all'utente prima di eseguire: espandi il tool per attivarla. Via API o in esecuzioni schedulate la chiamata viene rifiutata.\",\n \"audience\": \"L'aud atteso nel JWT. Vuoto: non verificato.\",\n \"blockedDomains\": \"Escludi questi domini dai risultati.\",\n \"channel\": {\n \"app\": \"L'agente è accessibile tramite la pagina pubblica dedicata.\",\n \"frontoffice\": \"L'agente è visibile nel pannello Frontoffice.\",\n \"widget\": \"L'agente è incorporabile nei siti web tramite embed script.\"\n },\n \"channelAppDisabled\": \"Il canale App è disabilitato: il link diretto e l'iframe non funzioneranno.\",\n \"channelWidgetDisabled\": \"Il canale Widget è disabilitato: il codice embed e il loader non funzioneranno.\",\n \"costSourceEndpoint\": \"I modelli sull’endpoint della tua organizzazione: li fattura il tuo fornitore, qui il costo è una stima a prezzi di listino.\",\n \"customCss\": \"CSS iniettato nello shadow DOM del widget. Permette di personalizzare l'interfaccia della chat dall'esterno.\",\n \"disallowPromptTraining\": \"Instrada le richieste solo verso provider che non usano i dati per addestrare i modelli AI.\",\n \"dismissableNotice\": \"Verrà nascosto dopo il primo messaggio.\",\n \"documentFolderManaged\": \"Cartella sincronizzata da {provider}: il contenuto si modifica alla sorgente.\",\n \"documentRefresh\": \"Rilegge la pagina alla scadenza e rigenera solo ciò che è cambiato.\",\n \"documentRefreshTriggerOff\": \"Questa pagina si aggiorna da sola, e salvando un testo vostro si spegne.\",\n \"documentSelectionHasManaged\": \"La selezione contiene documenti che arrivano da una sorgente collegata e non si possono modificare a mano.\",\n \"documentSourceInterval\": \"Ogni quanto la cartella viene riletta.\",\n \"documentSourceIntervalExplained\": \"Ogni quanto la cartella viene riletta. I file invariati non vengono riconvertiti.\",\n \"documentSourceName\": \"Il nome con cui la cartella compare qui. Quello remoto non cambia.\",\n \"emailClaim\": \"Il claim JWT che contiene l'email dell'utente (default: email).\",\n \"embedCode\": \"Copia e incolla questo codice per incorporare l'agente nel tuo sito web.\",\n \"embedding\": \"I vettori della base di conoscenza, dei file degli utenti e delle memorie. Si calcolano sul gateway AI della piattaforma, oppure sul tuo endpoint con uno dei due modelli ammessi.\",\n \"embeddingActivation\": \"Prima di salvare, l’endpoint calcola il vettore di una frase di prova, che viene confrontato con quello del modello: un modello diverso viene rifiutato. Passare a un altro modello ricalcola la base di conoscenza e le memorie, e finché non ha finito le ricerche trovano solo ciò che è già nel modello nuovo.\",\n \"embeddingEndpointModel\": \"L’id con cui il tuo endpoint serve il modello\",\n \"embeddingEndpointOff\": \"Accendi l’endpoint per calcolarci i vettori\",\n \"embeddingFamily\": \"Fra quelli che il tuo endpoint serve\",\n \"embeddingFamilyUnknown\": \"L’endpoint non lo dichiara: lo verifica il salvataggio\",\n \"embeddingModelsServed\": \"Il tuo endpoint serve anche questi. Non possono rispondere a un agente: quello con cui si calcolano i vettori si sceglie nella sezione Embedding.\",\n \"embeddingNotConfigured\": \"La base di conoscenza, le risposte corrette, le memorie e l’elaborazione dei documenti sono ferme, perché nessuno calcola i loro vettori. Attiva un modello di embedding sul tuo endpoint per farle ripartire.\",\n \"embeddingReindexing\": \"Finché la reindicizzazione non finisce, le ricerche nella base di conoscenza e nelle memorie trovano solo ciò che è già nel modello nuovo: risultati parziali, mai sbagliati. Non serve fare niente, e se si interrompe riparte da dove era arrivata.\",\n \"embeddingStopped\": \"L’endpoint che calcola i vettori è spento: la base di conoscenza, le risposte corrette, le memorie e l’elaborazione dei documenti sono ferme finché non lo riaccendi.\",\n \"embeddingWithoutEndpoint\": \"I vettori della base di conoscenza, dei file degli utenti e delle memorie si calcolano sul gateway AI della piattaforma. Collega il tuo endpoint per calcolarli lì.\",\n \"embedIframe\": \"Incorpora l'interfaccia della chat direttamente con un iframe.\",\n \"embedPreview\": \"L'agente sarà accessibile al seguente URL.\",\n \"embeddingWithoutEndpointOrGateway\": \"I vettori della base di conoscenza, dei file degli utenti e delle memorie non si calcolano: questa organizzazione non usa il gateway AI della piattaforma. Collega il tuo endpoint per calcolarli lì.\",\n \"embeddingWithoutGateway\": \"I vettori della base di conoscenza, dei file degli utenti e delle memorie. Questa organizzazione non usa il gateway AI della piattaforma, quindi si calcolano solo sul tuo endpoint, con uno dei due modelli ammessi.\",\n \"externalContextSchema\": \"Definisci quali dati contestuali il sito ospitante può inviare all'agente.\",\n \"externalContextSchemaToggle\": \"Abilita la ricezione di dati contestuali dal sito ospitante.\",\n \"feature\": {\n \"apiTools\": \"Gli agenti chiamano come tool le API dell’organizzazione.\",\n \"byok\": \"L’organizzazione collega un suo endpoint compatibile OpenAI e ne usa i modelli.\",\n \"endpoints\": \"Gli agenti rispondono via REST ad altri sistemi.\",\n \"fileUpload\": \"Gli utenti allegano file ai messaggi in chat.\",\n \"gateway\": \"I modelli del gateway AI, e con loro l’embedding della piattaforma, le utility e l’AI dei documenti che li usano.\",\n \"hubspot\": \"I lead raccolti dagli agenti vanno nel CRM HubSpot dell’organizzazione.\",\n \"leads\": \"Gli agenti raccolgono i contatti con un modulo in chat, e la pagina Contatti li elenca.\",\n \"mcpServers\": \"Gli agenti usano i tool di server MCP esterni.\",\n \"proactiveAutomations\": \"Gli agenti ricontrollano da soli quello che l’utente chiede di tenere d’occhio. Spente, i controlli in corso si fermano al giro successivo.\",\n \"salesforce\": \"I lead raccolti dagli agenti vanno nel CRM Salesforce dell’organizzazione.\",\n \"sharepoint\": \"Gli agenti leggono i file di cartelle SharePoint tenute sincronizzate.\",\n \"subAgents\": \"Un agente ne chiama un altro come tool.\",\n \"teams\": \"Gli agenti rispondono nelle chat di Teams.\",\n \"voice\": \"Gli agenti parlano con l’utente in tempo reale.\",\n \"whatsapp\": \"Gli agenti rispondono su WhatsApp Business.\"\n },\n \"fallbackModels\": \"Modelli alternativi tentati in ordine se il modello primario non è disponibile.\",\n \"fieldMappingFallback\": \"Valore usato se il campo sorgente è vuoto o assente.\",\n \"fieldMappingSource\": \"Supporta percorsi annidati (es. metadata.urgency).\",\n \"fieldMappingTransformExtractDomainCompany\": \"Estrae il nome azienda dal dominio email (es. mario{'@'}acme.it → Acme). Ignora i provider gratuiti (gmail, outlook, ecc.).\",\n \"fieldMappingTransformJoinArray\": \"Unisce i valori di un array separandoli con virgola.\",\n \"fieldMappingTransformMapValues\": \"Sostituisce il valore usando la tabella di mappatura.\",\n \"fieldMappingTransformNone\": \"Copia il valore così com'è.\",\n \"fieldMappingTransformSplitFirstLast\": \"Divide il testo sugli spazi.\",\n \"fileUploadDisabledHint\": \"Il caricamento file non è abilitato per questo agente. Puoi abilitarlo nelle impostazioni dell'agente.\",\n \"fileUploadEnabled\": \"Permetti agli utenti di allegare file ai messaggi.\",\n \"freshnessBoost\": \"Applica un boost basandosi su quanto recentemente il documento è stato aggiornato.\",\n \"freshnessScale\": \"Scala temporale spinta (Giorni)\",\n \"freshnessScaleExplanationDays\": \"Un documento modificato oggi ottiene un bonus di +{weight}. Il bonus si dimezza a +{halfWeight} dopo {half} giorni e si azzera praticamente (+{zeroWeight}) dopo {zero} giorni.\",\n \"freshnessScaleExplanationMonths\": \"Un documento modificato oggi ottiene un bonus di +{weight}. Il bonus si dimezza a +{halfWeight} dopo {half} giorni e si azzera praticamente (+{zeroWeight}) dopo {zero} giorni (circa {months} mesi).\",\n \"freshnessScaleTooltip\": \"Il tempo di dimezzamento (half-life) del decadimento esponenziale. Un documento vecchio esattamente quanto questo valore riceverà il 50% del boost massimo. Più è basso, più i documenti vecchi perderanno rapidamente il boost.\",\n \"freshnessWeight\": \"Moltiplicatore del peso del boost di freschezza nella formula.\",\n \"freshnessWeightTooltip\": \"Bonus massimo aggiunto allo score per i documenti appena modificati. Un peso di 0.1 significa che un documento freschissimo otterrà un vantaggio di +0.10 sullo score. Questo vantaggio decadrà esponenzialmente col tempo fino a azzerarsi.\",\n \"gatewayCatalog\": \"I modelli messi a disposizione dalla piattaforma, con il prezzo per milione di token, la dimensione del contesto e le garanzie sulla riservatezza dei dati. Spegni quelli che la tua organizzazione non usa: escono dalla scelta, e un agente che ne usa ancora uno risponde con il modello predefinito.\",\n \"gatewayOffDisconnected\": \"Se il suo endpoint non è acceso e con dei modelli, l’organizzazione è scollegata: nessun agente risponde.\",\n \"gatewayOffNoByok\": \"Anche i modelli propri (BYOK) sono spenti: l’amministratore non può né configurare un endpoint né accenderlo o spegnerlo, e nemmeno spostare l’embedding.\",\n \"gatewayOffStops\": \"Spento, niente di questa organizzazione passa più dal gateway, entro trenta secondi: i modelli del gateway smettono di rispondere, e con loro le utility interne che li usano; la ricerca web si ferma. La base di conoscenza, le risposte corrette, le memorie e l’elaborazione dei documenti continuano solo se l’embedding è sull’endpoint dell’organizzazione: se è sulla piattaforma, si fermano.\",\n \"gatewayOffTodo\": \"L’amministratore deve spostare sull’endpoint dell’organizzazione entrambi i modelli predefiniti, altrimenti non si creano agenti nuovi, e l’embedding (Modelli, sezione Embedding), altrimenti la base di conoscenza e le memorie restano ferme. L’inferenza non scala più il credito; i minuti di voce e l’OCR dei documenti sì.\",\n \"guaranteeAll\": \"{name}: garantita su tutti i provider.\",\n \"guaranteeNone\": \"{name}: non garantita.\",\n \"guaranteeSome\": \"{name}: garantita solo su alcuni provider, il gateway instrada di conseguenza.\",\n \"includeThoughts\": \"Invia i pensieri del modello al client insieme alla risposta.\",\n \"inputSchema\": \"JSON Schema (draft-07) dei parametri di input che l'LLM può fornire.\",\n \"integrationOAuthAdminConsent\": \"Potrebbe servire un amministratore Microsoft 365 della vostra organizzazione.\",\n \"integrationAppCredentialScope\": \"Con Sites.Read.All l'app può leggere ogni sito del tenant. Il connettore legge solo le cartelle che collegate.\",\n \"integrationAppCredentialSteps\": \"In Microsoft Entra ID: Registrazioni app, Nuova registrazione. Poi Autorizzazioni API, Microsoft Graph, Autorizzazioni applicazione, Sites.Read.All, e Concedi consenso amministratore. Poi Certificati e segreti, Nuovo segreto client (annotate la scadenza). Copiate qui l'ID directory (tenant), l'ID applicazione (client) e il valore del segreto.\",\n \"interactiveLogin\": \"Permette agli utenti anonimi di accedere dalla chat. L'external token resta sempre attivo.\",\n \"issuer\": \"L'URL dell'issuer del token JWT (iss).\",\n \"jwksUrl\": \"L'URL dell'endpoint JWKS per la verifica della firma JWT.\",\n \"loadDelay\": \"Attesa prima di caricare il widget, per loader AMD lenti.\",\n \"loaderStrategy\": {\n \"dynamic-import\": \"Usa import() all'interno di un <script> classico. Fallback per pagine dove gli script module sono bloccati o intercettati da loader legacy.\",\n \"inline-module\": \"Inietta un <script type=\\\"module\\\"> inline con un import statico. Bypassa RequireJS e altri loader AMD. Consigliata per la maggior parte dei siti.\",\n \"script-src\": \"Carica il bundle tramite <script type=\\\"module\\\" src=\\\"...\\\">. Usala su siti con Content Security Policy (CSP) restrittiva che blocca gli script inline.\"\n },\n \"mcpServerHealthCheckPath\": \"L'endpoint utilizzato per verificare lo stato del Server MCP (es: /api/health).\",\n \"mcpStatelessServer\": \"Forza il client a connettersi in modalità stateless.\",\n \"mcpHeadersOriginChanged\": \"L'URL punta a un altro host: riscrivi i valori degli header, quelli salvati restano legati all'host precedente.\",\n \"mmr\": \"Bilancia la rilevanza semantica e la diversità dei documenti nei risultati di ricerca per evitare contenuti ridondanti.\",\n \"mmrCandidatesLimit\": \"Numero massimo di chunk candidati pre-selezionati prima di applicare l'MMR.\",\n \"mmrCandidatesLimitTooltip\": \"Quanti risultati pre-selezionare dal database prima di filtrare e diversificare. Esempio: se impostato a 100, il sistema cercherà i 100 chunk più pertinenti e poi estrarrà tra questi quelli più diversi tra loro fino a raggiungere il limite finale per la chat.\",\n \"mmrDiversity\": \"Tradeoff tra rilevanza (0.0) e diversità (1.0).\",\n \"mmrDiversityTooltip\": \"Determina quanto spazio dare a informazioni diverse. Un valore vicino a 0 predilige i risultati più pertinenti anche se simili tra loro. Un valore vicino a 1 forza l'inserimento di risultati con dettagli e temi differenti, riducendo la ripetitività.\",\n \"modelContextWindow\": \"Finestra di contesto: {count}k token.\",\n \"modelDefaultNoneAvailable\": \"Nessun modello disponibile: attiva almeno un modello del tuo endpoint qui sotto.\",\n \"modelDefaultOutsideCatalog\": \"Questo modello non è tra quelli disponibili per la tua organizzazione: scegline un altro. Nel frattempo i nuovi agenti partono con il modello standard della piattaforma.\",\n \"modelDefaults\": \"Valgono per tutta l'organizzazione. Ogni agente può comunque usare un modello diverso, scelto nelle sue impostazioni.\",\n \"modelDisabledForOrganization\": \"Spento per questa organizzazione: gli agenti che lo usano ancora rispondono con il modello predefinito, e non si può scegliere per uno nuovo.\",\n \"modelEndpointBaseUrl\": \"L'indirizzo base dell'API compatibile OpenAI.\",\n \"modelEndpointHttp\": \"Con http la chiave viaggia senza cifratura: usalo solo se l'endpoint è raggiungibile esclusivamente dalla tua rete interna.\",\n \"modelEndpointHttpTitle\": \"Connessione non cifrata (http)\",\n \"modelEndpointKey\": \"Viene salvata cifrata e non viene mai mostrata.\",\n \"modelEndpointKeyStored\": \"Già salvata. Lascia il campo vuoto per non cambiarla.\",\n \"modelEndpointName\": \"Il nome con cui lo riconoscerai nella scelta dei modelli.\",\n \"modelEndpointOffWithEmbedding\": \"Endpoint spento: i suoi modelli non sono disponibili, gli agenti che li usano smettono di rispondere, e con lui si fermano la base di conoscenza, le memorie e i documenti, perché calcola i loro vettori. Riaccendilo per farli ripartire.\",\n \"modelEndpointOnWithoutGateway\": \"Endpoint acceso: i modelli che attivi sono gli unici che gli agenti possono usare, perché questa organizzazione non usa il gateway della piattaforma, e possono essere i predefiniti.\",\n \"modelNotOnEndpoint\": \"Non disponibile per questa organizzazione: il suo endpoint non ha più questo modello, quindi un agente che lo usa non risponde finché non passa a un altro modello.\",\n \"modelSourceEndpoint\": \"Gira su {name}, l’endpoint della tua organizzazione: lo fattura il tuo fornitore, e i costi che vedi qui sono stimati dal listino.\",\n \"modelSourceOff\": \"Non disponibile per questa organizzazione: la sorgente su cui gira è spenta, quindi un agente che lo usa non risponde finché non passa a un altro modello o la sorgente non viene riaccesa.\",\n \"modelSourcePlatform\": \"Gira sul gateway AI della piattaforma e si paga con il credito della tua organizzazione.\",\n \"ownEndpoint\": \"Usa i tuoi modelli accanto a quelli della piattaforma: collega un endpoint compatibile con le API OpenAI e la tua chiave. Gli agenti che usano i suoi modelli non consumano il credito.\",\n \"modelEndpointOn\": \"Endpoint acceso: i modelli che attivi sono a disposizione degli agenti accanto a quelli della piattaforma, e possono essere i predefiniti.\",\n \"modelEndpointOff\": \"Endpoint spento: i suoi modelli non sono disponibili, e gli agenti che li usano smettono di rispondere. Attiva qui sotto i modelli che ti servono, poi accendilo.\",\n \"addModelsRule\": \"Attiva i modelli che i tuoi agenti potranno usare. Il prezzo viene preso dal listino della piattaforma; se un modello non è in listino, ti chiederemo di indicarlo.\",\n \"modelPriceAsk\": \"Questo modello non è nel listino della piattaforma. Scegli un modello del catalogo con un costo simile, oppure inserisci i prezzi per milione di token.\",\n \"modelPriceUnknown\": \"Non è nel listino della piattaforma: indica un prezzo.\",\n \"modelGuaranteedOnSome\": \"Le garanzie che hai acceso valgono solo su alcuni provider di questo modello: il gateway instrada di conseguenza.\",\n \"modelIdByHand\": \"Il nome tecnico con cui l'endpoint identifica il modello.\",\n \"modelNotCompatible\": \"Non compatibile con i flag di riservatezza di questo agente.\",\n \"modelPriceFromListing\": \"Prezzo preso da {id} nel listino della piattaforma.\",\n \"modelPriceListing\": \"Listino della piattaforma, voce {id}, aggiornato il {date}.\",\n \"modelPriceManual\": \"Prezzo inserito a mano il {date}.\",\n \"modelPriceReference\": \"Stesso prezzo di {id}, aggiornato il {date}.\",\n \"modelReference\": \"Un modello del catalogo a cui questo assomiglia.\",\n \"modelRetired\": \"Non più disponibile sulla piattaforma: sposta su un altro modello gli agenti che lo usano.\",\n \"moveDocument\": \"Scegli la cartella di destinazione per «{name}».\",\n \"moveDocuments\": \"Scegli la cartella di destinazione per {n} documento. | Scegli la cartella di destinazione per {n} documenti.\",\n \"multipleChoiceAllowCustomAnswer\": \"Mostra un campo di testo libero sotto le opzioni per consentire all'utente di inserire una risposta personalizzata.\",\n \"multipleChoiceMaxOptions\": \"Numero massimo di opzioni che l'AI può generare (min. 2, max. 10).\",\n \"nameClaim\": \"Claim con il nome dell'utente (default: name).\",\n \"oauthCallbackUrl\": \"Configura questa URL come Callback URL (Redirect URI) nel provider OAuth.\",\n \"outputSchema\": \"JSON Schema (draft-07) della risposta attesa. Solo documentativo.\",\n \"passphrase\": \"Inserisci {passphrase} per confermare l'operazione\",\n \"platformSupported\": \"Resa nativa su WhatsApp e Teams\",\n \"privacyPolicyNotice\": \"Visibile del modulo di contatto.\",\n \"providerOrganizationId\": \"Per Microsoft si riferisce all'identificativo del tenant (tenant ID). Per gli altri inserire il dominio dell'e-mail (es. company.com).\",\n \"providerTimeoutMs\": \"Prima del provider successivo: da 1000 a 789000, solo BYOK.\",\n \"reasoningDefault\": \"Valore predefinito della piattaforma, si applica finché non scegli un valore diverso.\",\n \"reasoningNotSupported\": \"Il reasoning non è supportato per il provider selezionato.\",\n \"reasoningVisibility\": \"Un agente reasoning è sempre visibile solo ai membri dell'organizzazione.\",\n \"sessionExpiresIn\": \"Secondi, almeno 60. Vuoto: 8 ore.\",\n \"showExtendedSteps\": \"Visualizza la timeline con il ragionamento e gli strumenti nella chat.\",\n \"smoothStream\": \"Uniforma lo streaming del testo creando un'esperienza di lettura più naturale.\",\n \"subAgentName\": \"Sono consentiti solo lettere, numeri, underscore (_) e trattini (-).\",\n \"teamsAccentColor\": \"Per impostazione predefinita usa il colore del tema dell'agente.\",\n \"teamsAppVersion\": \"Aumentala e reinstalla per applicare il manifest.\",\n \"tool\": {\n \"fetchTeamsChannelHistory\": \"Sui canali Teams, permette all'agente di leggere su richiesta la conversazione più ampia del canale. Richiede la reinstallazione dell'app Teams.\",\n \"geocode\": \"Converte nomi di luoghi in coordinate geografiche e viceversa.\",\n \"getWeather\": \"Recupera i dati meteo attuali e le previsioni per una località specifica.\",\n \"querySpreadsheet\": \"Risponde alle domande sui file Excel e CSV della knowledge base con ricerche esatte, conteggi e totali, invece di cercarne il testo. Se lo spegni, l'agente non legge affatto questi file. I fogli allegati in chat si interrogano con lo strumento Fogli di calcolo.\",\n \"readDocumentFile\": \"Permette all'agente di leggere il file originale dei documenti PDF/DOCX dalla knowledge base. Utile per tabelle, grafici e contenuti visivi.\",\n \"requestGeolocation\": \"Richiede la posizione GPS dell'utente tramite il browser.\",\n \"retrieveRevisedAnswers\": \"Recupera le risposte verificate dagli amministratori e le usa come fonte primaria.\",\n \"runWorker\": \"Permette all'agente di avviare worker generici che ereditano i suoi tool per gestire sotto-attività indipendenti in parallelo.\",\n \"scheduleWakeup\": \"Quando l'utente lo chiede, l'agente ricontrolla qualcosa da solo a intervalli (da un minuto a un'ora) e scrive nella stessa chat quando trova una novità.\",\n \"searchInKnowledgeBase\": \"Cerca nei documenti caricati nella knowledge base per fornire risposte contestuali.\",\n \"searchInUserFiles\": \"Cerca nei file che l'utente ha caricato personalmente in chat (i suoi file privati), separati dalla knowledge base dell'agente.\",\n \"showArtifact\": \"Mostra contenuti strutturati come testi formattati, codice o documenti.\",\n \"showCalendarEvent\": \"Mostra un evento calendario con opzioni per Google Calendar, Outlook e download .ics.\",\n \"showComparison\": \"Confronta da 2 a 4 elementi affiancati per facilitare la scelta.\",\n \"showContactForm\": \"Mostra un modulo di contatto per raccogliere i dati dell'utente.\",\n \"showDiagram\": \"Mostra un grafico o un diagramma (flusso, sequenza, classe, ER, stato).\",\n \"showEmail\": \"Compone un'email pronta da inviare dal client di posta dell'utente.\",\n \"showForm\": \"Permette di raccogliere input strutturati (testo, numeri, date, scelte) tramite form multi-step.\",\n \"showImageGallery\": \"Raccoglie le immagini in una galleria navigabile con zoom e lightbox.\",\n \"showLocation\": \"Mostra una mappa interattiva con segnaposto e indicazioni stradali.\",\n \"showMessage\": \"Compone un messaggio da inviare tramite WhatsApp, Telegram o SMS.\",\n \"showMultipleChoice\": \"Propone opzioni selezionabili per guidare il flusso della conversazione.\",\n \"showProductList\": \"Mostra un elenco di prodotti con immagini, descrizioni e link d'acquisto.\",\n \"showQrCode\": \"Genera un codice QR a partire da testo, URL o dati strutturati.\",\n \"showSources\": \"Mostra i riferimenti ai documenti della knowledge base utilizzati nella risposta.\",\n \"showSuggestedReply\": \"Suggerisce risposte cliccabili per proseguire la conversazione. Per averle dopo ogni risposta, chiedilo nelle istruzioni dell'agente.\",\n \"showVideo\": \"Riproduce video inline: file diretti (MP4/WebM) o link YouTube/Vimeo.\",\n \"showWeather\": \"Mostra un widget con le previsioni meteo direttamente nella chat.\",\n \"showWebPages\": \"Suggerisce link a pagine web pertinenti alla domanda dell'utente.\",\n \"spreadsheet\": \"Legge, cerca e modifica i file Excel (.xlsx) che l'utente allega nella chat web o nel widget, e restituisce ogni modifica come nuova versione da scaricare. Richiede il caricamento dei file con il tipo Fogli di calcolo.\",\n \"useAllUserFiles\": \"Cerca in tutti i file dell'utente, anche quelli caricati su altri agenti, non solo in quelli di questo agente.\",\n \"useAllUserKb\": \"Legge le memorie che l'utente ha condiviso con tutti gli agenti di questa organizzazione, non solo con questo. La scrittura resta legata a questo agente.\",\n \"userMemory\": \"Permette all'agente di ricordare e richiamare informazioni che l'utente condivide tra le conversazioni (nome, preferenze, ecc.).\"\n },\n \"toolRequiresApproval\": \"Prima di eseguire, l'agente attende l'approvazione in chat.\",\n \"apiToolSecretParameters\": \"Inviati a ogni chiamata, nella query string o nel body JSON, e mai mostrati al modello. Dopo il salvataggio il valore non si vede più: lascialo vuoto per tenerlo.\",\n \"apiToolSecretParametersNew\": \"Inviati a ogni chiamata, nella query string o nel body JSON, e mai mostrati al modello. Scrivi ogni valore: dopo il salvataggio non si vede più.\",\n \"apiToolSecretStored\": \"Salvato: lascialo vuoto per tenerlo\",\n \"apiToolCredentialInSchema\": \"Questi parametri sembrano credenziali, e li compila il modello: {names}. Spostali fra i parametri segreti e toglili dallo schema di input.\",\n \"apiToolCredentialBadge\": \"Un parametro che sembra una credenziale viene compilato dal modello\",\n \"apiToolSecretsOriginChanged\": \"L'URL punta a un altro host: riscrivi i valori degli header e dei parametri segreti, quelli salvati restano legati all'host precedente.\",\n \"apiToolSecretBodyMethod\": \"Una richiesta {method} non ha body\",\n \"toolWorkingSetMode\": {\n \"active\": \"Prima di ogni risposta un modello di valutazione (TypeSafe Jev) sceglie i server MCP, gli API Tools e i sotto-agenti che servono al messaggio, e l’agente vede solo quelli. Se gliene serve un altro, lo riattiva da solo. Ogni valutazione è addebitata all’organizzazione.\",\n \"off\": \"L’agente vede tutti i tool a ogni risposta.\",\n \"shadow\": \"Il modello di valutazione sceglie i tool che servono a ogni messaggio, ma l’agente li vede comunque tutti: la scelta viene solo registrata nel dettaglio del messaggio, per confrontarla con i tool usati davvero prima di attivarla. Ogni valutazione è addebitata all’organizzazione.\"\n },\n \"useColorsForAgentHeader\": \"Colora l'intestazione dell'agente in base al colore principale.\",\n \"userFeedbackComment\": \"L'utente ha lasciato un commento su questa risposta\",\n \"userFeedbackNegative\": \"L'utente ha valutato negativamente questa risposta\",\n \"userFeedbackPositive\": \"L'utente ha valutato positivamente questa risposta\",\n \"userFeedbackReaction\": \"L'utente ha reagito a questa risposta\",\n \"utilityModel\": \"Usato dietro le quinte per compiti come riformulare le domande degli utenti e aggiornare le memorie.\",\n \"voiceApprovalRefused\": \"Durante una chiamata queste azioni non partono: l'approvazione si dà a schermo e al telefono non c'è nessuno a cui chiederla, quindi l'agente le rifiuta e lo dice. Riguarda: {tools}.\",\n \"voiceCascadeTimeoutSeconds\": \"Quanto il fornitore aspetta noi prima di annullare il turno. Deve stare sopra al turno più lento dell'agente: knowledge base, tool e modelli lenti lo allungano.\",\n \"voiceEnabled\": \"Permette di parlare con questo agente. La risposta resta sua, con la sua knowledge base e i suoi strumenti.\",\n \"voiceFillerAfterSeconds\": \"Dice che sta lavorando quando la risposta tarda. Vuoto: quattro secondi.\",\n \"voiceFillerMessage\": \"Vuoto: una frase predefinita nella lingua della voce.\",\n \"voiceFirstMessage\": \"Detta appena si apre la chiamata. Copre anche il primo turno, il più lento.\",\n \"voiceId\": \"Le voci clonate non sono in elenco: il fornitore non le ammette qui.\",\n \"voiceIgnoreBackgroundVoices\": \"Ascolta solo chi parla. Da tenere attivo dove il microfono sente la stanza.\",\n \"voiceLanguage\": \"Usata per riconoscere il parlato e per parlare.\",\n \"voiceMaxSessionSeconds\": \"Una chiamata si paga a minuto e si chiude da sola a questo limite.\",\n \"voiceRemaining\": \"Tempo che resta in questa chiamata\",\n \"voiceSlowAgentOnCall\": \"Una knowledge base grande o server MCP collegati possono far metterci diversi secondi all'agente, e in chiamata quei secondi sono silenzio: le due impostazioni qui sotto sono ciò che tiene compagnia a chi chiama mentre lavora. Se le chiamate sembrano lente, la risposta si accorcia anche con meno passi, un limite di retrieval più basso o un modello più rapido.\",\n \"voiceTurnEagerness\": \"Pronto risponde prima, paziente ti aspetta.\",\n \"voiceTurnTimeoutSeconds\": \"Quanto l’agente aspetta il chiamante zitto prima di riprendere la parola. Niente a che vedere con la sua velocità di risposta.\",\n \"webSearchEnabled\": \"Permetti all'agente di cercare informazioni sul web durante le conversazioni.\",\n \"webSearchNative\": \"Usa le funzionalità di ricerca web integrate di {provider}.\",\n \"webhookUrl\": \"Incolla questo URL nella configurazione del webhook / endpoint di messaggistica della piattaforma.\",\n \"welcomePopup\": \"Mostra un popup di benvenuto con il messaggio iniziale prima che la chat venga aperta.\",\n \"whatsappVerifyToken\": \"Incolla questo token nella configurazione webhook di Meta.\",\n \"zeroDataRetention\": \"Instrada le richieste solo verso provider con accordi ZDR. Restringe il pool di provider disponibili.\",\n \"webSourceUnselected\": \"Le pagine non selezionate arriveranno con i prossimi controlli della sorgente.\",\n \"webSourceInterval\": \"Le pagine nuove seguono la frequenza qui sopra.\",\n \"webPagesRefresh\": \"Alla scadenza si rigenera solo ciò che è cambiato.\",\n \"documentFolderWebSource\": \"Cartella di un sito web: le pagine nuove arrivano da sole e restano modificabili.\"\n },\n \"integrationProvider\": {\n \"hubspot\": \"HubSpot\",\n \"salesforce\": \"Salesforce\",\n \"sharepoint\": \"SharePoint\",\n \"web\": \"Sito web\"\n },\n \"integrationProviderDescription\": {\n \"hubspot\": \"Sincronizza i contatti con HubSpot CRM.\",\n \"salesforce\": \"Sincronizza i contatti con Salesforce CRM.\",\n \"sharepoint\": \"Collega una cartella di SharePoint: i file entrano nella knowledge base e restano aggiornati da soli.\"\n },\n \"integrationSyncStatus\": {\n \"failed\": \"Fallito\",\n \"pending\": \"In attesa\",\n \"success\": \"Successo\"\n },\n \"interval\": {\n \"D\": \"giorno | giorni\",\n \"M\": \"mese | mesi\",\n \"W\": \"settimana | settimane\",\n \"Y\": \"anno | anni\"\n },\n \"invitationStatus\": {\n \"accepted\": \"Accettato\",\n \"canceled\": \"Annullato\",\n \"expired\": \"Scaduto\",\n \"pending\": \"In attesa\"\n },\n \"label\": {\n \"AI\": \"AI\",\n \"acceptInvitationAndCreateAccount\": \"Accetta l'invito e crea il tuo account\",\n \"accountingCredit\": \"Saldo contabile\",\n \"actions\": \"Azioni\",\n \"active\": \"Attiva\",\n \"activeSessions\": \"Sessioni attive\",\n \"actualCost\": \"Costo reale\",\n \"addApiTool\": \"Aggiungi API tool\",\n \"addIntegration\": \"Aggiungi integrazione\",\n \"additionalMetadata\": \"Metadati aggiuntivi\",\n \"admin\": \"Amministratore\",\n \"advancedOptions\": \"Opzioni avanzate\",\n \"agent\": \"Agente\",\n \"agentModel\": \"Modello di default\",\n \"agentTree\": \"Albero agente\",\n \"agents\": \"Agenti\",\n \"agentsUsed\": \"Agenti utilizzati\",\n \"aiDescription\": \"Generato con AI\",\n \"aiDescriptionModel\": \"Modello AI\",\n \"aiDescriptionPrompt\": \"Prompt personalizzato\",\n \"allAgents\": \"Tutti gli agenti\",\n \"allChannels\": \"Tutti i canali\",\n \"allowedDomains\": \"Domini consentiti\",\n \"analysis\": \"Analisi\",\n \"anonymized\": \"Anonimizzata\",\n \"anonymous\": \"Anonimo\",\n \"answer\": \"Risposta\",\n \"answeringOnTheCall\": \"Sto rispondendo…\",\n \"apiKey\": \"API key\",\n \"apiKeys\": \"API key\",\n \"appearance\": \"Aspetto\",\n \"arrayOfObjects\": \"Array di oggetti\",\n \"assistantMessage\": \"Risposta agente\",\n \"attachmentsNotImported\": \"Allegati non importati\",\n \"attempts\": \"Tentativi\",\n \"attention\": \"Attenzione\",\n \"audience\": \"Audience\",\n \"authentication\": \"Autenticazione\",\n \"auto\": \"Auto\",\n \"autoDetected\": \"Rilevati automaticamente\",\n \"autoProvisioning\": \"Auto provisioning\",\n \"autoProvisioningDescription\": \"Gli utenti che si autenticano tramite questi provider di identità o domini verranno automaticamente aggiunti alla tua organizzazione con il ruolo predefinito.\",\n \"autoRefreshError\": \"Errore\",\n \"autoRefreshOff\": \"In pausa\",\n \"autoRefreshOn\": \"Live\",\n \"autoRefreshStoppedErrors\": \"Aggiornamento automatico interrotto dopo errori ripetuti.\",\n \"autoRefreshStoppedUnavailable\": \"Aggiornamento automatico interrotto: questo contenuto non è più accessibile.\",\n \"autoRefreshWarning\": \"Attenzione\",\n \"availableCredit\": \"Saldo disponibile\",\n \"averageLine\": \"Media\",\n \"avgChatsPerUser\": \"Chat per user\",\n \"avgMessagesPerChat\": \"Messaggi per chat\",\n \"banned\": \"Bannato\",\n \"baseUrl\": \"URL di base\",\n \"black\": \"Nero\",\n \"blocked\": \"Bloccato\",\n \"blockedDomains\": \"Domini bloccati\",\n \"blockedReasons\": \"Motivi di blocco\",\n \"body\": \"Testo\",\n \"botName\": \"Nome bot\",\n \"breadcrumbs\": \"Percorso di navigazione\",\n \"browserEngine\": \"Browser engine\",\n \"browsers\": \"Browser\",\n \"budgetTokens\": \"Budget token\",\n \"byChannel\": \"Per canale\",\n \"cached\": \"dalla cache\",\n \"calendarEvent\": \"Evento\",\n \"changePassword\": \"Cambia password\",\n \"channel\": \"Canale\",\n \"channels\": \"Canali\",\n \"chat\": \"Chat\",\n \"chatCreatedAgo\": \"Creata\",\n \"chatOrigin\": \"Chat di origine\",\n \"chatStatistics\": \"Statistiche\",\n \"chatTypes\": \"Tipo di conversazione\",\n \"chatUpdatedAgo\": \"Ultimo messaggio\",\n \"chatWidget\": \"Chat widget\",\n \"chunks\": \"Chunk\",\n \"clear\": \"Pulisci\",\n \"codeEditor\": \"Codice\",\n \"collapseContext\": \"Nascondi contesto\",\n \"comment\": \"Commento\",\n \"comparison\": \"Confronto\",\n \"completeName\": \"Nome e cognome\",\n \"completedAt\": \"Completata il\",\n \"configMcpServer\": \"Configura server MCP\",\n \"configure\": \"Configura\",\n \"confirm\": \"Conferma\",\n \"confirmPassword\": \"Conferma password\",\n \"confirmPrivateNetwork\": \"Confermo che l’endpoint non è raggiungibile da Internet\",\n \"confirmWithEmail\": \"Digita la tua email per confermare\",\n \"confirmWithPassword\": \"Inserisci la password per confermare\",\n \"connectMcpServer\": \"Connetti server MCP\",\n \"connectSubAgent\": \"Collega sotto-agente\",\n \"connectedAccounts\": \"Account collegati\",\n \"connectedIntegrations\": \"Integrazioni collegate\",\n \"mcpConnectionSignedIn\": \"Accesso effettuato\",\n \"mcpConnectionRenewed\": \"Ultimo rinnovo\",\n \"connectionChecking\": \"Verifica connessione…\",\n \"connectionConnected\": \"Connesso\",\n \"connectionError\": \"Errore di connessione\",\n \"connectionIdle\": \"Non verificato\",\n \"connectionStatus\": \"Connessione\",\n \"connectionTypes\": \"Connessione\",\n \"const\": \"Costante\",\n \"contactUs\": \"Contattaci\",\n \"content\": \"Contenuto\",\n \"contentPreview\": \"Anteprima contenuto\",\n \"contextTokens\": \"{count}k contesto\",\n \"conversationLengthBuckets\": \"Lunghezza conversazione\",\n \"conversationOutline\": \"Indice della conversazione\",\n \"conversations\": \"Conversazioni\",\n \"conversationsOverTime\": \"Conversazioni nel tempo\",\n \"cost\": \"Costo\",\n \"costByChannel\": \"Costo per canale\",\n \"costInUSD\": \"Costo in USD\",\n \"costSource\": \"Sorgente del costo\",\n \"costSourceAll\": \"Totale\",\n \"costSourceEndpoint\": \"Endpoint\",\n \"costSourceGateway\": \"Gateway\",\n \"country\": \"Paese\",\n \"crawlMode\": \"Modalità crawling\",\n \"createdAt\": \"Creato il\",\n \"createdBy\": \"Creato da\",\n \"credit\": \"Credito\",\n \"creditUpdatedAt\": \"Credito aggiornato il\",\n \"credits\": \"Crediti\",\n \"crmSync\": \"Sincronizzazione CRM\",\n \"curlExample\": \"Esempio cURL\",\n \"currentAgent\": \"Agente corrente\",\n \"currentLocation\": \"Posizione attuale\",\n \"currentPassword\": \"Password attuale\",\n \"currentSession\": \"Sessione corrente\",\n \"customCss\": \"CSS personalizzato\",\n \"customRange\": \"Personalizzato\",\n \"dailyUsage\": \"Utilizzo giornaliero\",\n \"dark\": \"Scuro\",\n \"darkModePreference\": \"Tema scuro\",\n \"dataLoadFailed\": \"Non è stato possibile caricare questo dato\",\n \"day\": \"Giorno\",\n \"dayRateLimit\": \"Limite al giorno\",\n \"days\": \"{count} giorno | {count} giorni\",\n \"default\": \"Predefinito\",\n \"defaultMappingHint\": \"Se non viene configurata una mappatura, verrà utilizzata quella predefinita per il provider.\",\n \"defaultRole\": \"Ruolo predefinito\",\n \"deleted\": \"Eliminato\",\n \"deprecated\": \"Deprecato\",\n \"description\": \"Descrizione\",\n \"deselectAction\": \"Rimuovi\",\n \"details\": \"Dettagli\",\n \"device\": \"Dispositivo\",\n \"deviceContext\": \"Contesto dispositivo\",\n \"deviceType\": \"Tipo dispositivo\",\n \"diagram\": \"Diagramma\",\n \"disabled\": \"Disabilitato\",\n \"disallowPromptTraining\": \"Prompt Training disabilitato\",\n \"dismissableNotice\": \"Avviso\",\n \"documentOrigin\": \"Origine\",\n \"documentPriority\": \"Priorità documento\",\n \"documentRefresh\": \"Aggiornamento automatico\",\n \"documentRefreshAuto\": \"Automatico\",\n \"documentRefreshInterval\": \"Frequenza\",\n \"documentRefreshLastRead\": \"Ultima lettura\",\n \"documentRefreshNext\": \"Prossimo aggiornamento\",\n \"documentRefreshOutcome\": \"Esito\",\n \"documentRefreshPaused\": \"In pausa\",\n \"documentSourceInterval\": \"Frequenza di controllo\",\n \"documentSourceLastRun\": \"Ultima esecuzione\",\n \"documentSourceLastSync\": \"Ultimo controllo\",\n \"documentSourceNextSync\": \"Prossimo controllo\",\n \"documentSourceSearch\": \"Cerca un sito\",\n \"documentType\": \"Tipo documento\",\n \"documents\": \"Documenti\",\n \"domainFilter\": \"Filtro domini\",\n \"downloadFile\": \"Scarica file\",\n \"downloading\": \"Download in corso\",\n \"editApiTool\": \"Modifica API tool\",\n \"editIntegration\": \"Modifica integrazione\",\n \"editMcpServer\": \"Modifica server MCP\",\n \"editSubAgent\": \"Modifica sotto-agente\",\n \"effectiveCredit\": \"Credito effettivo\",\n \"email\": \"Email\",\n \"emailClaim\": \"Claim email\",\n \"emailDomain\": \"Dominio email\",\n \"emailVerified\": \"Email verificata\",\n \"embed\": \"Incorpora\",\n \"embedCode\": \"Codice embed\",\n \"embedding\": \"Embedding\",\n \"embeddingEndpointModel\": \"Id sull’endpoint\",\n \"embeddingModel\": \"Modello di embedding\",\n \"embeddingModelsCount\": \"Modelli di embedding ({count})\",\n \"embeddingNotConfigured\": \"Non configurato\",\n \"embeddingNotConfiguredReason\": \"Il gateway AI della piattaforma è spento per questa organizzazione\",\n \"embeddingOnEndpoint\": \"Embedding sul tuo endpoint\",\n \"embeddingOnPlatform\": \"Sul gateway AI della piattaforma\",\n \"embeddingReindex\": \"Reindicizzazione della base di conoscenza e delle memorie\",\n \"embeddingReindexDone\": \"Reindicizzato il {date}\",\n \"embeddingReindexPaused\": \"Reindicizzazione in pausa\",\n \"embeddingReindexProgress\": \"Reindicizzazione: {done} vettori su {total}\",\n \"embeddingReindexQueued\": \"Reindicizzazione in coda: parte entro pochi minuti\",\n \"enabled\": \"Abilitato\",\n \"enabledTools\": \"Tool abilitati\",\n \"endDate\": \"Data fine\",\n \"endpointCost\": \"Costo endpoint (stima)\",\n \"endpointModels\": \"Modelli del tuo endpoint\",\n \"engagement\": \"Engagement\",\n \"enum\": \"Valori enum\",\n \"error\": \"Errore\",\n \"estimatedCost\": \"Costo stimato a fine mese\",\n \"estimatedCredit\": \"Credito stimato\",\n \"estimatedMonthlyCost\": \"Stima fine mese\",\n \"excludeDomains\": \"Domini esclusi\",\n \"expandContext\": \"Mostra più contesto\",\n \"expireIn\": \"Scade tra\",\n \"expires\": \"Scade\",\n \"expiresAt\": \"Scadenza\",\n \"exportMyData\": \"Esporta i miei dati\",\n \"externalAuth\": \"Autenticazione esterna\",\n \"externalAuthDescription\": \"Configura i provider di autenticazione esterna per consentire l'autenticazione tramite token JWT emessi da questi provider. Gli utenti autenticati tramite questi provider saranno aggiunti automaticamente alla tua organizzazione con il ruolo predefinito (auto provisioning).\",\n \"externalContext\": \"Contesto esterno\",\n \"externalContextSchema\": \"Schema contesto esterno\",\n \"externalId\": \"ID esterno (CRM)\",\n \"fallbackModels\": \"Modelli di fallback\",\n \"feedback\": \"Segnalazione\",\n \"feedbacks\": \"Feedback\",\n \"fieldMappingFallback\": \"Valore di default\",\n \"fieldMappingSource\": \"Campo sorgente\",\n \"fieldMappingTarget\": \"Campo destinazione {number}\",\n \"fieldMappingTransform\": \"Trasformazione\",\n \"fieldMappingTransformExtractDomainCompany\": \"Estrai azienda da dominio email\",\n \"fieldMappingTransformJoinArray\": \"Unisci array\",\n \"fieldMappingTransformMapValues\": \"Mappa valori\",\n \"fieldMappingTransformNone\": \"Nessuna\",\n \"fieldMappingTransformSplitFirstLast\": \"Dividi primo/ultimo\",\n \"fieldMappingValueMap\": \"Mappatura valori\",\n \"file\": \"File\",\n \"fileUpload\": \"Caricamento file\",\n \"fileUploadAllowedMimeTypes\": \"Tipi di file consentiti\",\n \"fileUploadEnabled\": \"Abilita caricamento file\",\n \"fileUploadMaxFileSize\": \"Dimensione massima file (MB)\",\n \"fileUploadMaxFilesPerChat\": \"File massimi per chat\",\n \"fileUploadMaxFilesPerMessage\": \"File massimi per messaggio\",\n \"files\": \"File\",\n \"filters\": \"Filtri\",\n \"floatingButtonPosition\": \"Posizione bottone\",\n \"folderName\": \"Nome cartella\",\n \"followExternal\": \"Segui link esterni\",\n \"footer\": \"Footer\",\n \"forceOcr\": \"Forza OCR\",\n \"formMaxOptionsPerStep\": \"Opzioni massime consigliate\",\n \"formMaxSteps\": \"Step massimi consigliati\",\n \"frequencyPenalty\": \"Penalità di frequenza\",\n \"freshnessBoost\": \"Boost freschezza\",\n \"freshnessScale\": \"Scala temporale Freschezza\",\n \"freshnessWeight\": \"Peso freschezza\",\n \"fullDuration\": \"Durata (ms)\",\n \"gallery\": \"Galleria ({count} immagini)\",\n \"gatewayCost\": \"Costo gateway\",\n \"gatewayModels\": \"Modelli della piattaforma\",\n \"gdprRequestType\": {\n \"conversations_erasure\": \"Cancellazione conversazioni\",\n \"erasure\": \"Cancellazione dati\",\n \"export\": \"Export dati\"\n },\n \"gdprRequests\": \"Richieste GDPR\",\n \"general\": \"Generale\",\n \"generateSchemaFromJson\": \"Genera schema da JSON\",\n \"goalOutcome\": \"Esito obiettivo\",\n \"granularity\": \"Granularità\",\n \"groupReasoningAgents\": \"Raggruppa\",\n \"hasRedundantChunks\": \"Ha chunk ridondanti\",\n \"header\": \"Header\",\n \"headers\": \"Header HTTP\",\n \"healthCheckPath\": \"Health check\",\n \"hour\": \"Ora\",\n \"hourRateLimit\": \"Limite all'ora\",\n \"hsAccessToken\": \"Access token\",\n \"hsAccessTokenHint\": \"Crea una Private App di HubSpot con i seguenti scope: crm.objects.contacts.read, crm.objects.contacts.write, crm.objects.owners.read.\",\n \"hsDefaultOwnerId\": \"Owner ID predefinito\",\n \"hsDefaultOwnerIdHint\": \"Vuoto: i contatti restano senza owner.\",\n \"hsStaticProperties\": \"Proprietà statiche\",\n \"hsStaticPropertiesHint\": \"Proprietà fisse aggiunte ad ogni contatto.\",\n \"httpHeaderKey\": \"Chiave\",\n \"httpHeaderValue\": \"Valore\",\n \"secretParameters\": \"Parametri segreti\",\n \"secretParameterPosition\": \"Inviato in\",\n \"secretPositionQuery\": \"Query string\",\n \"secretPositionBody\": \"Body\",\n \"apiToolCredentialBadge\": \"Chiave esposta\",\n \"httpHeaders\": \"Header HTTP\",\n \"iframe\": \"Iframe\",\n \"iframeCode\": \"Codice iframe\",\n \"imageLoadError\": \"Immagine non disponibile\",\n \"imageHeld\": \"Immagine da {host}: clicca per caricarla\",\n \"videoHeld\": \"Video da {host}: clicca per caricarlo\",\n \"imageHost\": \"Host\",\n \"imageHosts\": \"Host delle immagini\",\n \"imageHostsHint\": \"Risposte e card caricano da sole solo le immagini di questi host e della piattaforma. Un'immagine di un altro host mostra il suo host e si carica con un clic, così una risposta non può mandare la conversazione a un sito dentro l'url di un'immagine.\",\n \"impersonated\": \"Impersonificato\",\n \"impersonation\": \"Impersonificazione\",\n \"importing\": \"Importazione in corso\",\n \"inStock\": \"Disponibile\",\n \"integrationReconnectNeeded\": \"Da riconnettere\",\n \"integrationAppCredential\": \"App {clientId}\",\n \"modelDefaults\": \"Modelli predefiniti\",\n \"modelNotAvailable\": \"non disponibile\",\n \"modelSourcePlatform\": \"Piattaforma\",\n \"modelSwitchedOff\": \"spento\",\n \"ownEndpoint\": \"Il tuo endpoint (BYOK)\",\n \"price\": \"Prezzo\",\n \"priceListModel\": \"Modello del listino\",\n \"priceToSet\": \"Prezzo da indicare\",\n \"modelPriceOf\": \"Prezzo di {id}\",\n \"context\": \"Contesto\",\n \"someProviders\": \"Alcuni provider\",\n \"modelsActiveSummary\": \"{active} modelli attivi su {count}\",\n \"noModelsYet\": \"Ancora nessun modello\",\n \"notServedAnyMore\": \"Non più offerto dall'endpoint\",\n \"modelIdByHand\": \"Id del modello\",\n \"modelReference\": \"Modello di riferimento\",\n \"msClientId\": \"ID applicazione (client)\",\n \"msClientSecret\": \"Client secret\",\n \"msTenantId\": \"ID directory (tenant)\",\n \"inTest\": \"In test\",\n \"includeDomains\": \"Domini inclusi\",\n \"includeThoughts\": \"Visualizza ragionamento\",\n \"indexStatus\": \"Stato indicizzazione\",\n \"info\": \"Info\",\n \"initialMessage\": \"Messaggio iniziale\",\n \"input\": \"Input\",\n \"inputSchema\": \"Schema di input\",\n \"insertEmail\": \"Inserisci email\",\n \"integration\": \"Integrazione\",\n \"integrationConfig\": \"Configurazione\",\n \"integrationDisabled\": \"Disabilitata\",\n \"integrationEnabled\": \"Abilitata\",\n \"integrationFieldMapping\": \"Mappatura campi\",\n \"integrationProvider\": \"Provider\",\n \"integrationSyncLogs\": \"Log sincronizzazione\",\n \"integrationSyncLogsDescription\": \"La sincronizzazione avviene automaticamente alla creazione di un nuovo contatto.\",\n \"integrations\": \"Integrazioni\",\n \"interactiveLogin\": \"Mostra login/registrazione\",\n \"interface\": \"Interfaccia\",\n \"ipAddress\": \"Indirizzo IP\",\n \"isAutoJoinEnabled\": \"Unisci automaticamente utenti già presenti con la stessa e-mail\",\n \"issuer\": \"Issuer\",\n \"itemsPerPage\": \"Per pagina\",\n \"jsonSample\": \"Esempio JSON\",\n \"jwksUrl\": \"JWKS URL\",\n \"key\": \"Chiave\",\n \"language\": \"Lingua\",\n \"languages\": \"Lingue\",\n \"last14Days\": \"Ultimi 14 giorni\",\n \"last30Days\": \"Ultimi 30 giorni\",\n \"last7Days\": \"Ultimi 7 giorni\",\n \"last90Days\": \"Ultimi 90 giorni\",\n \"lastActive\": \"Ultimo accesso\",\n \"lastActivity\": \"Ultima attività\",\n \"lastMonth\": \"Mese scorso\",\n \"lastRecalledAt\": \"Ultimo richiamo\",\n \"lastReconciledAt\": \"Ultimo allineamento\",\n \"lastRefillAt\": \"Ultima ricarica il\",\n \"lastSync\": \"Aggiornato il\",\n \"lastUsedAt\": \"Ultimo utilizzo\",\n \"latest\": \"Ultima\",\n \"leadId\": \"ID interno\",\n \"left\": \"Sinistra\",\n \"light\": \"Chiaro\",\n \"limit\": \"Limite\",\n \"limitedStock\": \"Ultimi pezzi\",\n \"linkedAgents\": \"Agenti collegati\",\n \"llmIssues\": \"Problemi LLM\",\n \"loadDelay\": \"Ritardo caricamento (ms)\",\n \"loaderStrategy\": \"Strategia di caricamento\",\n \"loaderStrategyDynamicImport\": \"Dynamic import\",\n \"loaderStrategyInlineModule\": \"Inline module\",\n \"loaderStrategyScriptSrc\": \"Script src\",\n \"locale\": \"Lingua\",\n \"location\": \"Posizione\",\n \"logo\": \"Logo\",\n \"logoUrl\": \"Logo URL\",\n \"mainColor\": \"Colore principale\",\n \"manageProfileDescription\": \"Modifica nome, password, avatar e altro\",\n \"maxDepth\": \"Profondità massima\",\n \"maxMessageLength\": \"Lunghezza massima messaggio\",\n \"maxOutputTokens\": \"Token massimi\",\n \"maxPages\": \"Pagine massime\",\n \"maxResults\": \"Risultati massimi\",\n \"maxStepCount\": \"Numero massimo di step\",\n \"maxUses\": \"Utilizzi massimi\",\n \"mcpAuthType\": \"Tipo di autenticazione\",\n \"mcpServer\": \"Server MCP\",\n \"mcpServerUrl\": \"URL del server MPC\",\n \"mcpStatelessServer\": \"Client stateless\",\n \"memberSince\": \"Membro dal\",\n \"memories\": \"Memorie\",\n \"memory\": \"Memoria\",\n \"message\": \"Messaggio\",\n \"messageDetails\": \"Dettaglio messaggio\",\n \"messageNumber\": \"Messaggio {n}\",\n \"messagePlaceholder\": \"Segnaposto\",\n \"messages\": \"Messaggi\",\n \"metadata\": \"Metadati\",\n \"method\": \"Metodo\",\n \"mimeTypeAudio\": \"Audio, trascritti (fino a 25 MB)\",\n \"mimeTypeDocuments\": \"Documenti\",\n \"mimeTypeImages\": \"Immagini\",\n \"mimeTypeSpreadsheets\": \"Fogli di calcolo (.xlsx)\",\n \"mimeTypeText\": \"Testo\",\n \"minuteRateLimit\": \"Limite al minuto\",\n \"mmr\": \"Maximal marginal relevance (MMR)\",\n \"mmrCandidatesLimit\": \"Limite candidati MMR\",\n \"mmrDiversity\": \"Diversità MMR\",\n \"model\": \"Modello\",\n \"modelParameters\": \"Parametri modello\",\n \"month\": \"Mese\",\n \"monthRateLimit\": \"Limite al mese\",\n \"monthlyCost\": \"Costo mensile\",\n \"multipleChoiceAllowCustomAnswer\": \"Consenti risposta personalizzata\",\n \"multipleChoiceMaxOptions\": \"Numero massimo di opzioni\",\n \"name\": \"Nome\",\n \"nameClaim\": \"Claim nome\",\n \"never\": \"Mai\",\n \"newChat\": \"Nuova chat\",\n \"newPassword\": \"Nuova password\",\n \"no\": \"No\",\n \"noDataAvailable\": \"Nessun dato disponibile\",\n \"noDataRetention\": \"ZDR\",\n \"noFieldMapping\": \"Nessuna mappatura personalizzata configurata\",\n \"noIntegrations\": \"Nessuna integrazione configurata\",\n \"noPromptTraining\": \"No training\",\n \"noSyncLogs\": \"Nessun log di sincronizzazione\",\n \"noTimingData\": \"Nessun dato. Effettua una richiesta di chat per vedere i log di timing.\",\n \"notAvailable\": \"Non disponibile\",\n \"notCompatible\": \"non compatibile\",\n \"notConfigured\": \"Non configurata\",\n \"notConnected\": \"Non connesso\",\n \"notSynced\": \"Non sincronizzata\",\n \"notificationTitle\": {\n \"document_error\": \"Elaborazione documento fallita\",\n \"document_sync_removed\": \"Documenti rimossi da una cartella sincronizzata\",\n \"headless_quota_exceeded\": \"Quota giornaliera delle automazioni raggiunta\",\n \"organization\": {\n \"created\": \"Organizzazione creata\",\n \"invite\": \"Invito organizzazione\",\n \"invite_accepted\": \"Invito accettato\",\n \"invite_rejected\": \"Invito rifiutato\",\n \"removed\": \"Rimosso dall'organizzazione\"\n },\n \"password_reset_requested\": \"È stata richiesta la reimpostazione della password\",\n \"two_factor\": {\n \"enabled\": \"Verifica in due passaggi attivata\",\n \"disabled\": \"Verifica in due passaggi disattivata\",\n \"app\": \"La verifica in due passaggi usa un'app\",\n \"reset\": \"Verifica in due passaggi reimpostata\",\n \"passkeyAdded\": \"Passkey aggiunta\",\n \"passkeyRemoved\": \"Passkey rimossa\",\n \"unlocked\": \"Verifica in due passaggi sbloccata\",\n \"passkeyRemovedByAdmin\": \"Passkey rimossa da un amministratore\",\n \"trustedDevicesForgotten\": \"Dispositivi fidati dimenticati\"\n },\n \"web_source_pages_removed\": \"Pagine rimosse perché uscite dalla sitemap\",\n \"web_source_removal_held\": \"Pagine uscite dalla sitemap non rimosse\"\n },\n \"notificationType\": {\n \"agent_wakeup\": \"Controllo di un agente\",\n \"api_key_expiring\": \"Scadenza API key\",\n \"chat_blocked\": \"Chat bloccata\",\n \"chat_warning\": \"Avviso chat\",\n \"document_error\": \"Errore documento\",\n \"document_sync_removed\": \"Contenuti sincronizzati rimossi\",\n \"generic\": \"Generica\",\n \"headless_quota_exceeded\": \"Quota delle automazioni\",\n \"organization\": \"Organizzazione\",\n \"password_reset_requested\": \"Reset password richiesto\",\n \"two_factor\": \"Sicurezza dell'accesso\",\n \"web_source_pages_removed\": \"Pagine uscite dalla sitemap\",\n \"web_source_removal_held\": \"Rimozione da confermare\"\n },\n \"oauthAuthorizationUrl\": \"URL di autorizzazione OAuth\",\n \"oauthClientId\": \"OAuth client ID\",\n \"oauthClientSecret\": \"OAuth client secret\",\n \"oauthScopes\": \"Scopes OAuth\",\n \"oauthTokenUrl\": \"URL token OAuth\",\n \"ocrUsed\": \"OCR\",\n \"older\": \"Più vecchie\",\n \"onChannels\": \"WA · Teams\",\n \"openSource\": \"Apri sorgente\",\n \"operatingSystems\": \"Sistemi operativi\",\n \"or\": \"Oppure\",\n \"organization\": \"Organizzazione\",\n \"organizations\": \"Organizzazioni\",\n \"origin\": \"Origine\",\n \"originalMessage\": \"Risposta originale\",\n \"origins\": \"Sorgenti\",\n \"outOfStock\": \"Non disponibile\",\n \"output\": \"Output\",\n \"outputSchema\": \"Schema di output\",\n \"pages\": \"Pagine\",\n \"passphrase\": \"Inserisci la parola chiave\",\n \"password\": \"Password\",\n \"paused\": \"In pausa\",\n \"peakHours\": \"Ore di punta\",\n \"perMillionTokens\": \"per milione di token\",\n \"period\": \"Periodo\",\n \"phone\": \"Telefono\",\n \"picture\": \"Immagine\",\n \"platformAssistant\": \"Assistente della piattaforma\",\n \"platformContext\": \"Contesto piattaforma\",\n \"preferences\": \"Preferenze\",\n \"presencePenalty\": \"Penalità di presenza\",\n \"preview\": \"Anteprima\",\n \"priceInput\": \"Prezzo input\",\n \"priceOutput\": \"Prezzo output\",\n \"priority\": \"Priorità\",\n \"priority_1\": \"Molto bassa\",\n \"priority_2\": \"Bassa\",\n \"priority_3\": \"Normale\",\n \"priority_4\": \"Alta\",\n \"priority_5\": \"Critica\",\n \"privacy\": \"Privacy\",\n \"privacyPolicyNotice\": \"Informativa privacy\",\n \"processedAt\": \"Processato il\",\n \"processing\": \"Elaborazione in corso…\",\n \"profile\": \"Profilo\",\n \"prompt\": \"Prompt\",\n \"properties\": \"Proprietà\",\n \"provider\": \"Provider\",\n \"providerOrganizationId\": \"ID provider\",\n \"providerTimeoutMs\": \"Timeout provider (ms)\",\n \"qdrantSync\": \"Sync vettoriale\",\n \"qrCode\": \"Codice QR\",\n \"question\": \"Domanda\",\n \"rateLimits\": \"Limiti di utilizzo\",\n \"read\": \"Letto\",\n \"reasoning\": \"Reasoning\",\n \"reasoningAgentTester\": \"Test agente di ragionamento\",\n \"reasoningDetails\": \"Dettagli di ragionamento\",\n \"reasoningEffort\": \"Intensità ragionamento\",\n \"reasoningSummary\": \"Riepilogo ragionamento\",\n \"recommended\": \"Consigliato\",\n \"redundantChunks\": \"Chunk ridondanti\",\n \"referrerDomains\": \"Domini di provenienza\",\n \"refillAmount\": \"Importo ricarica\",\n \"released\": \"Rilascio\",\n \"rememberMe\": \"Ricordami\",\n \"replyWithoutText\": \"Risposta senza testo\",\n \"requestCount\": \"Richieste\",\n \"requestedAt\": \"Richiesta il\",\n \"requests\": \"Richieste\",\n \"requestsPerAgent\": \"Richieste per agente\",\n \"requestsUsed\": \"Richieste utilizzate\",\n \"required\": \"Obbligatorio\",\n \"requiredFields\": \"Campi obbligatori\",\n \"retired\": \"ritirato\",\n \"revisedMessage\": \"Risposta corretta\",\n \"right\": \"Destra\",\n \"riskScoreBands\": \"Fasce di rischio\",\n \"role\": \"Ruolo\",\n \"rootDocuments\": \"Senza cartella\",\n \"scheduledAt\": \"Programmata il\",\n \"schemaRootArray\": \"Array\",\n \"schemaRootObject\": \"Oggetto\",\n \"schemas\": \"Schemi\",\n \"screenCategories\": \"Risoluzione schermo\",\n \"searchAndExecution\": \"Ricerca ed esecuzione\",\n \"searchMode\": \"Modalità di ricerca\",\n \"searchRecencyFilter\": \"Filtro temporale\",\n \"sectionChannelBreakdown\": \"Dettaglio per canale\",\n \"sectionConversationQuality\": \"Qualità conversazione\",\n \"sectionCostTrend\": \"Andamento costi mensili\",\n \"sectionDeviceContext\": \"Dispositivi e contesto (web e widget)\",\n \"sectionTraffic\": \"Traffico (web e widget)\",\n \"security\": \"Sicurezza\",\n \"selectAgent\": \"Seleziona agente\",\n \"selectedHint\": \"Selezionato\",\n \"sentiment\": \"Sentiment\",\n \"sentimentTrends\": \"Trend di sentiment\",\n \"serverInfo\": \"Info MCP server\",\n \"sessionExpiresIn\": \"Durata sessione (secondi)\",\n \"setPassword\": \"Imposta password\",\n \"settings\": \"Impostazioni\",\n \"sfApiVersion\": \"Versione API\",\n \"sfClientId\": \"Client ID\",\n \"sfClientSecret\": \"Client secret\",\n \"sfExternalIdField\": \"Campo ID esterno\",\n \"sfInstanceUrl\": \"Instance URL\",\n \"shareWith\": \"Condividi con gli agenti\",\n \"showExtendedSteps\": \"Mostra i passaggi\",\n \"similarity\": \"Similarità\",\n \"sitemapUrl\": \"URL sitemap\",\n \"size\": \"Dimensione\",\n \"slug\": \"Slug\",\n \"smartRanking\": \"Ranking intelligente\",\n \"smoothStream\": \"Smooth streaming\",\n \"source\": \"Sorgente\",\n \"sources\": \"Fonti\",\n \"spokenExchange\": \"Scambiato a voce\",\n \"startDate\": \"Data inizio\",\n \"startUrl\": \"URL di partenza\",\n \"status\": \"Stato\",\n \"style\": \"Stile\",\n \"subAgent\": \"Sotto-agente\",\n \"subject\": \"Oggetto\",\n \"syncStatus\": \"Stato\",\n \"targetAll\": \"Tutti gli utenti\",\n \"targetOrganization\": \"Organizzazione\",\n \"targetType\": \"Destinatario\",\n \"targetUser\": \"Utente specifico\",\n \"teams\": \"Microsoft Teams\",\n \"teamsAccentColor\": \"Colore del tema\",\n \"teamsAppId\": \"App ID (Microsoft)\",\n \"teamsAppPassword\": \"App password / client secret\",\n \"teamsAppTenantId\": \"Tenant ID\",\n \"teamsAppType\": \"Tipo app\",\n \"teamsAppVersion\": \"Versione app\",\n \"teamsDescriptionFull\": \"Descrizione completa\",\n \"teamsDescriptionShort\": \"Descrizione breve\",\n \"teamsDeveloperName\": \"Nome sviluppatore\",\n \"teamsManifestDetails\": \"Dettagli dell'app (mostrati in Teams)\",\n \"temperature\": \"Temperatura\",\n \"testConnection\": \"Verifica connessione\",\n \"testPlayground\": \"Test playground\",\n \"textColor\": \"Colore del testo\",\n \"theme\": \"Tema\",\n \"thinking\": \"Pensiero\",\n \"thinkingBudget\": \"Budget ragionamento\",\n \"thinkingDisplay\": \"Visualizza ragionamento\",\n \"thinkingEffort\": \"Intensità ragionamento\",\n \"thinkingLevel\": \"Livello ragionamento\",\n \"thinkingType\": \"Tipo pensiero\",\n \"thisMonth\": \"Questo mese\",\n \"timeoutMs\": \"Timeout (ms)\",\n \"timezoneRegions\": \"Fuso orario\",\n \"title\": \"Titolo\",\n \"today\": \"Oggi\",\n \"tokens\": \"token\",\n \"tool\": \"Tool\",\n \"toolApprovalBadge\": \"Conferma utente\",\n \"toolName\": \"Nome del tool: {name}\",\n \"toolRequiresApproval\": \"Chiedi conferma all'utente\",\n \"toolWorkingSet\": \"Selezione dei tool\",\n \"toolWorkingSetMode\": \"Modalità\",\n \"tools\": \"Tool\",\n \"topPages\": \"Pagine principali\",\n \"topTopics\": \"Trending topics\",\n \"total\": \"Totale\",\n \"totalConversations\": \"Chat in totale\",\n \"totalCost\": \"Costo totale\",\n \"totalCostPartlyEstimated\": \"Costo totale, in parte stimato\",\n \"totalItemsCount\": \"Elementi: {total}\",\n \"totalMessages\": \"Messaggi in totale\",\n \"totalPages\": \"di {total}\",\n \"trustedOrigins\": \"Origini attendibili\",\n \"tuning\": \"Tuning\",\n \"type\": \"Tipo\",\n \"uniqueUsers\": \"Utenti unici\",\n \"unitChat\": \"chat\",\n \"unitChatPerUser\": \"chat\",\n \"unitMessages\": \"messaggi\",\n \"unitMessagesPerChat\": \"messaggi\",\n \"unitUsers\": \"utenti\",\n \"unknown\": \"Sconosciuto\",\n \"unread\": \"Non letto\",\n \"updateProfile\": \"Aggiorna profilo\",\n \"updatedAt\": \"Aggiornato il\",\n \"upload\": \"Carica {index}/{total}\",\n \"url\": \"URL pagina web\",\n \"usage\": \"Utilizzo\",\n \"useBrowserEngine\": \"Utilizza il browser\",\n \"useExtractionStrategy\": \"Utilizza l'AI\",\n \"user\": \"Utente\",\n \"userInput\": \"Opzione selezionata\",\n \"userQuestion\": \"Domanda\",\n \"userTones\": \"Tono utente\",\n \"users\": \"Utenti\",\n \"utilityModel\": \"Modello per le funzioni interne\",\n \"value\": \"Valore\",\n \"version\": \"Versione\",\n \"video\": \"Video\",\n \"viewPdfPage\": \"Visualizza pagina PDF\",\n \"visibility\": \"Visibilità\",\n \"visualEditor\": \"Visuale\",\n \"voice\": \"Voce\",\n \"voiceCascadeTimeoutSeconds\": \"Tempo massimo per rispondere (secondi)\",\n \"voiceEnabled\": \"Conversazione vocale\",\n \"voiceFillerAfterSeconds\": \"Riempitivo dopo (secondi)\",\n \"voiceFillerMessage\": \"Frase di attesa\",\n \"voiceFirstMessage\": \"Frase di apertura\",\n \"voiceId\": \"Voce\",\n \"voiceIgnoreBackgroundVoices\": \"Ignora le voci di sottofondo\",\n \"voiceLanguage\": \"Lingua parlata\",\n \"voiceMaxSessionSeconds\": \"Durata massima sessione (secondi)\",\n \"voiceTurnEagerness\": \"Fine del turno\",\n \"voiceTurnTimeoutSeconds\": \"Pausa prima di riprendere la parola (secondi)\",\n \"vote\": \"Voto\",\n \"warnings\": \"Avvisi\",\n \"webSearch\": \"Ricerca web\",\n \"webSearchEnabled\": \"Abilita ricerca web\",\n \"webSearchNative\": \"Nativa\",\n \"webSearchProvider\": \"Provider di ricerca\",\n \"webhookUrl\": \"URL webhook\",\n \"week\": \"Settimana\",\n \"welcome\": \"Benvenuto in {appName}!\",\n \"whatsapp\": \"WhatsApp\",\n \"whatsappAccessToken\": \"Access token\",\n \"whatsappAppSecret\": \"App secret\",\n \"whatsappPhoneNumberId\": \"Phone number ID\",\n \"whatsappVerifyToken\": \"Verify token\",\n \"white\": \"Bianco\",\n \"widgetUrl\": \"URL widget\",\n \"year\": \"Anno\",\n \"yes\": \"Sì\",\n \"yesterday\": \"Ieri\",\n \"zeroDataRetention\": \"Zero data retention (ZDR)\",\n \"webPagesRefresh\": \"Ogni quanto rileggere le pagine\",\n \"webSourceWatch\": \"Cerca anche le pagine nuove\",\n \"webSourceInterval\": \"Ogni quanto cercarle\",\n \"webSourceRemoveMissing\": \"Rimuovi le pagine che escono dalla sitemap\",\n \"apiUrl\": \"URL dell'API\",\n \"createEndpoint\": \"Crea endpoint\",\n \"wakeupCheck\": \"Controllo automatico\",\n \"wakeupNext\": \"Prossimo controllo alle {time}\",\n \"wakeupQuietRun\": \"Nessuna novità nel controllo delle {time} | Nessuna novità in {count} controlli, l'ultimo alle {time}\"\n },\n \"language\": {\n \"de\": \"Tedesco\",\n \"en\": \"Inglese\",\n \"english\": \"Inglese\",\n \"es\": \"Spagnolo\",\n \"fr\": \"Francese\",\n \"french\": \"Francese\",\n \"german\": \"Tedesco\",\n \"it\": \"Italiano\",\n \"italian\": \"Italiano\",\n \"nl\": \"Olandese\",\n \"pt\": \"Portoghese\",\n \"spanish\": \"Spagnolo\"\n },\n \"lead\": {\n \"contactReason\": {\n \"appointment\": \"Appuntamento\",\n \"callback_request\": \"Richiesta di richiamata\",\n \"complaint\": \"Reclamo\",\n \"info_request\": \"Richiesta informazioni\",\n \"other\": \"Altro\",\n \"quote_request\": \"Richiesta preventivo\",\n \"support\": \"Supporto\"\n },\n \"label\": {\n \"budget\": \"Budget\",\n \"company\": \"Azienda\",\n \"contactReason\": \"Motivo del contatto\",\n \"conversationSummary\": \"Riepilogo conversazione\",\n \"preferredContactMethod\": \"Metodo di contatto preferito\",\n \"preferredContactTime\": \"Orario di contatto preferito\",\n \"productInterest\": \"Prodotto di interesse\",\n \"sentiment\": \"Sentiment\",\n \"topics\": \"Argomenti\",\n \"urgency\": \"Urgenza\"\n },\n \"preferredContactMethod\": {\n \"any\": \"Qualsiasi\",\n \"email\": \"Email\",\n \"phone\": \"Telefono\",\n \"whatsapp\": \"WhatsApp\"\n },\n \"preferredContactTime\": {\n \"afternoon\": \"Pomeriggio\",\n \"any\": \"Qualsiasi\",\n \"evening\": \"Sera\",\n \"morning\": \"Mattina\"\n },\n \"sentiment\": {\n \"excited\": \"Entusiasta\",\n \"frustrated\": \"Frustrato\",\n \"negative\": \"Negativo\",\n \"neutral\": \"Neutro\",\n \"positive\": \"Positivo\"\n },\n \"urgency\": {\n \"high\": \"Alta\",\n \"low\": \"Bassa\",\n \"medium\": \"Media\"\n }\n },\n \"mcpAuthType\": {\n \"headers\": \"Intestazioni HTTP (API key)\",\n \"oauth\": \"OAuth 2.0 per utente\"\n },\n \"mcpConnectionStatus\": {\n \"active\": \"In uso\",\n \"orphan\": \"Inutilizzata\",\n \"stale\": \"Scaduta\"\n },\n \"mcpServerStatus\": {\n \"active\": \"Attivo\",\n \"error\": \"Errore\",\n \"inactive\": \"Inattivo\"\n },\n \"member\": {\n \"agentAccess\": {\n \"hint\": \"Lascia vuoto per consentire al membro di usare tutti gli agenti dell'organizzazione. Seleziona degli agenti per limitarlo solo a quelli.\",\n \"managerHint\": \"Owner e admin possono usare tutti gli agenti; il loro accesso non può essere limitato.\"\n }\n },\n \"memorySource\": {\n \"explicit\": \"Esplicita | Esplicite\",\n \"extracted\": \"Estratta | Estratte\"\n },\n \"message\": {\n \"accountLinkAlreadyLinked\": \"Questo account è già collegato a un altro utente. Accedi con quell'utente per scollegarlo prima.\",\n \"accountLinkCancelled\": \"Collegamento annullato sulla pagina del provider. Nulla è cambiato.\",\n \"accountLinkEmailMismatch\": \"Puoi collegare solo account che usano la stessa email del tuo profilo.\",\n \"accountLinkErrorWithCode\": \"Impossibile collegare l'account (codice: {code}). Riprova o segnala questo codice all'assistenza.\",\n \"accountLinkNotAllowed\": \"Questo provider non può essere collegato al tuo profilo: l'email dell'account non è verificata o il collegamento è disabilitato.\",\n \"accountLinkUserInfo\": \"Il provider non ha restituito un profilo utilizzabile, quindi nessun account è stato collegato. Riprova.\",\n \"accountUnlinked\": \"Account disconnesso\",\n \"agentAccessDenied\": \"Non hai accesso a questo agente\",\n \"agentAccessDeniedAction\": \"Vedi gli agenti disponibili\",\n \"agentActivated\": \"Agente attivato con successo\",\n \"agentDeactivated\": \"Agente disattivato con successo\",\n \"agentNotFound\": \"Agente non trovato\",\n \"agentsEmpty\": \"Nessun agente. Crea il primo per iniziare.\",\n \"analyzeChatError\": \"L'analisi non si è conclusa. Riprova fra qualche minuto.\",\n \"analyzeChatInProgress\": \"Analisi della conversazione in corso. Se la conversazione è lunga, può servire circa un minuto.\",\n \"analyzeChatSuccess\": \"Conversazione analizzata con successo\",\n \"apiKeyCreatedForUser\": \"Mostrata una volta sola: copiala e passala in sicurezza.\",\n \"apiKeysEmpty\": \"Le chiavi che crei per l’accesso programmatico compaiono qui.\",\n \"apiToolsEmpty\": \"Nessun API tool. Aggiungi il primo per far chiamare all'agente un servizio esterno.\",\n \"banSuccess\": \"Utente bannato con successo\",\n \"blockChatSuccess\": \"Conversazione bloccata con successo\",\n \"bulkUnlinkAllDeleteConfirm\": \"{count} documenti verranno eliminati definitivamente perché non hanno altri agenti collegati. Vuoi procedere?\",\n \"bulkUnlinkMixedConfirm\": \"{unlinkCount} documenti verranno disassociati e {deleteCount} verranno eliminati definitivamente (non hanno altri agenti collegati). Vuoi procedere?\",\n \"cancelInvitationConfirm\": \"Sei sicuro di voler annullare l'invito per {email}?\",\n \"cancelInvitationSuccess\": \"Invito annullato con successo\",\n \"chatActionError\": \"L'azione non si è conclusa. Riprova fra qualche minuto.\",\n \"chatAnonymized\": \"Il contenuto di questa conversazione è stato cancellato (GDPR): restano solo le metriche aggregate.\",\n \"chatErrorBadRequest\": \"Si è verificato un errore con la richiesta. Inizia una nuova chat per continuare.\",\n \"chatErrorContextWindow\": \"La conversazione è diventata troppo lunga. Inizia una nuova chat per continuare.\",\n \"chatErrorConversationBlocked\": \"Questa conversazione è stata bloccata per violazione delle policy.\",\n \"chatErrorCreditExhausted\": \"Servizio non disponibile. Riprova più tardi.\",\n \"chatErrorGatewayDisabled\": \"Il modello di questo agente non è disponibile: l’organizzazione non usa il gateway AI della piattaforma. Un amministratore può spostare l’agente su uno dei modelli dell’organizzazione.\",\n \"chatErrorGatewayPromptTraining\": \"Il modello \\\"{model}\\\" non supporta l'opzione \\\"Disabilita addestramento prompt\\\". Disattiva questa impostazione nella configurazione del gateway dell'agente oppure scegli un modello compatibile.\",\n \"chatErrorGatewayZdr\": \"Il modello \\\"{model}\\\" non supporta l'opzione \\\"Zero Data Retention\\\". Disattiva ZDR nella configurazione del gateway dell'agente oppure scegli un modello compatibile.\",\n \"chatErrorGeneric\": \"Errore durante la richiesta. Se il problema persiste inizia una nuova chat. Riprovo tra {seconds}…\",\n \"chatErrorInternalServer\": \"Si è verificato un errore del server. Inizia una nuova chat per continuare.\",\n \"chatErrorModelUnavailable\": \"Il modello di questo agente ora non è disponibile: l’endpoint su cui gira è spento o non lo serve più. Un amministratore può riaccenderlo o spostare l’agente su un altro modello.\",\n \"chatErrorNotFound\": \"La conversazione non è più disponibile. Inizia una nuova chat per continuare.\",\n \"chatErrorOriginNotAllowed\": \"L'origine della richiesta non è consentita. Contatta l'amministratore del sistema.\",\n \"chatErrorRateLimit\": \"Il limite di richieste è stato superato. Riprovo tra {seconds} secondi…\",\n \"chatErrorRetrying\": \"Riprovo tra {seconds} secondi…\",\n \"checkYourEmail\": \"Verifica la tua casella email\",\n \"confirm\": \"Sei sicuro di voler procedere?\",\n \"confirmRefillCredits\": \"Sei sicuro di voler ricaricare il credito di {amount}?\",\n \"contentTruncated\": \"Contenuto troncato. Totale caratteri: {total}\",\n \"copied\": \"Copiato negli appunti\",\n \"crawlError\": \"Errore durante il crawling\",\n \"createFolderSuccess\": \"Cartella creata con successo\",\n \"defaultAgentWelcome\": \"Ciao! Come posso aiutarti oggi?\",\n \"defaultPrivacyPolicyNotice\": \"Inviando la richiesta accetti la nostra [Privacy Policy](https://www.iubenda.com/privacy-policy/46350192).\",\n \"deleteAgentConfirm\": \"Le sue cartelle vengono eliminate. Un documento che nessun altro agente usa viene eliminato, uno condiviso resta agli altri agenti.\",\n \"deleteAllMemoriesConfirm\": \"Spariscono definitivamente, ricerca semantica compresa.\",\n \"deleteAllNotificationsConfirm\": \"Eliminare tutte le notifiche?\",\n \"deleteBulkDocumentConfirm\": \"Vengono rimossi da tutti gli agenti collegati e finiscono nel cestino, da cui si possono ripristinare.\",\n \"deleteDocumentConfirm\": \"Viene rimosso da tutti gli agenti collegati e finisce nel cestino, da cui si può ripristinare.\",\n \"deleteDocumentConfirmWithAgents\": \"Finisce nel cestino, da cui si può ripristinare, e viene rimosso dai seguenti agenti:{agents}\",\n \"deleteError\": \"Eliminazione non riuscita. Riprova.\",\n \"deleteFolderConfirm\": \"I documenti al suo interno vengono tolti da questo agente. Un documento che nessun altro agente usa viene eliminato.\",\n \"deleteFolderSuccess\": \"Cartella eliminata con successo\",\n \"deleteMyConversationsConfirm\": \"Non si può annullare.\",\n \"deleteNotificationConfirm\": \"Eliminare questa notifica?\",\n \"deleteProfileBlockedSoleOwner\": \"Sei l'unico proprietario di {organizations}. Trasferisci la proprietà o elimina le organizzazioni prima di poter eliminare l'account.\",\n \"deleteProfileConfirm\": \"Stai per eliminare definitivamente il tuo account: il profilo verrà anonimizzato e il contenuto delle tue conversazioni cancellato. Questa azione non può essere annullata.\",\n \"deleteProfileDescription\": \"Anonimizza il tuo account e cancella il contenuto delle tue conversazioni (diritto all'oblio).\",\n \"diagramRenderError\": \"Impossibile renderizzare il diagramma.\",\n \"documentRefreshPausedReason\": \"La pagina non risponde più, quindi l'aggiornamento automatico è in pausa. Aggiorna ora per riprovare.\",\n \"documentRefreshSet\": \"Aggiornamento automatico impostato su {updated} documenti, {skipped} saltati perché non sono pagine web\",\n \"documentRefreshStarted\": \"Aggiornamento avviato su {queued} documenti, {skipped} saltati\",\n \"documentsEmpty\": \"Questa cartella è ancora vuota. Aggiungi documenti dal menu Crea, oppure inizia con una cartella.\",\n \"documentsEmptyManaged\": \"Nessun file sincronizzato in questa cartella. Il contenuto arriva dalla sorgente collegata: se hai appena collegato la cartella, il primo import può richiedere qualche minuto.\",\n \"documentsNoMatch\": \"Nessun documento corrisponde alla ricerca o ai filtri. Azzerali per vedere tutto.\",\n \"documentSourceLinked\": \"Cartella collegata. Il primo import parte tra poco.\",\n \"documentSourceNothingHere\": \"Non c’è nulla qui dentro.\",\n \"documentSourceStale\": \"Lo stato di questa cartella non è aggiornato: l’ultima lettura non è riuscita.\",\n \"documentSourceUnlinked\": \"Cartella scollegata. I documenti restano e ora si modificano come gli altri.\",\n \"embeddingActivated\": \"Embedding salvato: l’endpoint serve il modello dichiarato\",\n \"embeddingBackToPlatform\": \"I vettori si calcolano di nuovo sulla piattaforma\",\n \"embeddingIndexNotUpdated\": \"L’avanzamento non si aggiorna più.\",\n \"embeddingRemoved\": \"Embedding rimosso dall’endpoint\",\n \"empty\": \"Nessun elemento trovato\",\n \"endpointActivated\": \"Endpoint attivato con successo\",\n \"endpointDeactivated\": \"Endpoint disattivato con successo\",\n \"endpointsEmpty\": \"Nessun endpoint. Crea il primo per esporre l'agente via HTTP.\",\n \"error\": \"Errore\",\n \"errorRetry\": \"Qualcosa è andato storto. Riprova.\",\n \"exportError\": \"Errore durante l'esportazione dei dati\",\n \"exportFailed\": \"L'esportazione dei dati non è riuscita. Riprova più tardi.\",\n \"exportMyDataDescription\": \"Scarica una copia completa dei tuoi dati personali in formato ZIP (Art. 15 e 20 GDPR).\",\n \"exportRequested\": \"Stiamo preparando il tuo archivio: riceverai un'email con il link per scaricarlo.\",\n \"exportSuccess\": \"CSV esportato con successo\",\n \"feedbackSubmitError\": \"Invio fallito. Riprova per favore.\",\n \"feedbackSubmittedMessage\": \"Il tuo feedback è stato inviato con successo.\",\n \"feedbackSubmittedTitle\": \"Grazie!\",\n \"feedbacksEmpty\": \"I feedback che gli utenti lasciano sulle risposte dell'agente compariranno qui.\",\n \"fileAlreadyImported\": \"Già importato\",\n \"fileAlreadyImportedExistingList\": \"I seguenti file sono già presenti nell'organizzazione:\\n{names}\",\n \"fileAlreadyImportedLink\": \"Questo file è già stato importato. Vuoi collegarlo all'agente corrente o creare un nuovo documento?\",\n \"fileAlreadyImportedNewList\": \"I seguenti file sono nuovi e verranno importati normalmente:\\n{names}\",\n \"fileAlreadyImportedQuestion\": \"Vuoi collegare i file già presenti all'agente corrente?\",\n \"fileAlreadyLinkedToAgent\": \"I seguenti file sono già collegati all'agente corrente:\\n{names}\",\n \"fileLimitPerChat\": \"Hai raggiunto il limite di {max} file per questa conversazione.\",\n \"fileLimitPerMessage\": \"Puoi allegare al massimo {max} file per messaggio.\",\n \"foldersEmpty\": \"Nessuna cartella ancora. Crea la prima dalla pagina dei documenti per organizzarli.\",\n \"formRenderError\": \"Non è stato possibile mostrare il modulo. Chiedilo di nuovo e l'agente lo invierà.\",\n \"gdprRequestsEmpty\": \"Le richieste di esportazione o cancellazione dei dati di questo utente compaiono qui.\",\n \"geolocationPermissionDenied\": \"Accesso alla posizione negato. Consentilo nelle impostazioni del browser.\",\n \"geolocationUnavailable\": \"Posizione non disponibile. Riprova o inserisci la posizione manualmente.\",\n \"getMcpServerInfoError\": \"Un errore è avvenuto durante il caricamento dei tool.\",\n \"importError\": \"Errore durante l'importazione\",\n \"importSuccess\": \"{count} documenti importati con successo\",\n \"importing\": \"Importazione in corso…\",\n \"info\": \"Informazione\",\n \"insufficientCredit\": \"Credito insufficiente. Riprova più tardi.\",\n \"insufficientCreditMessage\": \"Il tuo credito è insufficiente per completare questa operazione. Contatta l'amministratore del sistema per ulteriori informazioni.\",\n \"integrationConnected\": \"Connessione riuscita.\",\n \"integrationCreated\": \"Integrazione creata con successo\",\n \"integrationDisabled\": \"Integrazione disabilitata\",\n \"integrationDisconnected\": \"Connessione rimossa.\",\n \"integrationDisconnectConfirm\": \"Le cartelle sincronizzate vengono scollegate.\",\n \"integrationEnabled\": \"Integrazione abilitata\",\n \"integrationOAuthDenied\": \"La connessione è stata rifiutata, o manca ancora l’approvazione di un amministratore Microsoft 365.\",\n \"integrationOAuthFailed\": \"La connessione non è andata a buon fine.\",\n \"integrationOAuthStartFailed\": \"Non è stato possibile avviare la connessione.\",\n \"integrationRemoveConfirm\": \"La configurazione di questa integrazione viene rimossa.\",\n \"integrationTestFailed\": \"Verifica connessione fallita: {error}\",\n \"integrationTestSuccess\": \"Connessione verificata con successo\",\n \"integrationUpdated\": \"Integrazione aggiornata con successo\",\n \"invalidJson\": \"L'input non è un JSON valido\",\n \"invitationAccepted\": \"Invito accettato\",\n \"invitationAlreadyHandled\": \"Invito già gestito\",\n \"invitationDeclined\": \"Invito declinato\",\n \"invitationToJoinOrganization\": \"Sei stato invitato a unirti a\",\n \"invitationsEmpty\": \"Nessun invito in sospeso. Invita le persone dalla pagina dei membri.\",\n \"leadSubmitError\": \"Invio fallito. Riprova per favore.\",\n \"leadSubmittedMessage\": \"La richiesta è stata inviata con successo.\",\n \"leadSubmittedTitle\": \"Grazie!\",\n \"leadsEmpty\": \"I lead raccolti dall'agente durante le conversazioni compariranno qui.\",\n \"leftOrganization\": \"Hai lasciato l'organizzazione con successo\",\n \"loadConversationsError\": \"Impossibile caricare le conversazioni\",\n \"loading\": \"Caricamento…\",\n \"loadingError\": \"Errore durante il caricamento\",\n \"mcpConnectionConnectedAt\": \"Accesso effettuato il {date}\",\n \"mcpConnectionDisconnectDescription\": \"Gli agenti non useranno più il tuo account {name}. La prossima volta che ti servirà, l'agente ti chiederà di accedere e potrai scegliere un altro account.\",\n \"mcpConnectionDisconnectQuestion\": \"Scollegare {name}?\",\n \"mcpConnectionDisconnected\": \"Account {name} scollegato\",\n \"mcpConnectionsDescription\": \"I servizi a cui hai effettuato l'accesso con il tuo account. Scollegane uno per impedire agli agenti di usarlo, o per accedere di nuovo con un account diverso.\",\n \"mcpConnectionsAvailableDescription\": \"Le integrazioni degli agenti che usi a cui non hai ancora effettuato l'accesso. Puoi collegarle ora, senza aspettare che l'agente te lo chieda.\",\n \"mcpConnectionConnected\": \"Account {name} collegato\",\n \"mcpConnectionConnectFailed\": \"Accesso a {name} non riuscito. Riprova: se l'errore si ripete, segnalalo a chi gestisce l'agente.\",\n \"mcpConnectionUsedBy\": \"Usata da {agents}\",\n \"mcpConnectionUsedByNone\": \"Nessun agente la usa\",\n \"noMcpConnections\": \"Nessuna integrazione collegata\",\n \"userMcpConnectionsEmpty\": \"Questo utente non ha effettuato l'accesso a nessuna integrazione con il proprio account.\",\n \"mcpConnectionRevokeQuestion\": \"Revocare l'accesso di {user} a {name}?\",\n \"mcpConnectionRevokeDescription\": \"Gli agenti non useranno più il suo account {name}. Chiediamo la revoca anche al fornitore, dove la supporta; altrimenti l'autorizzazione resta valida presso di lui fino alla scadenza. Per usarla di nuovo, {user} dovrà accedere di persona. Riceverà una notifica.\",\n \"mcpConnectionRevokedAtProvider\": \"Accesso a {name} revocato, anche presso il fornitore\",\n \"mcpConnectionRevokedHere\": \"Accesso a {name} revocato qui. Il fornitore non ha confermato la revoca: l'autorizzazione può restare valida presso di lui fino alla scadenza.\",\n \"mcpServerCheckError\": \"Errore durante la verifica del server MCP: {error}\",\n \"mcpServerCheckSuccess\": \"Verifica del server MCP riuscita\",\n \"mcpServerInvalidEndpoint\": \"Questo URL non punta a un endpoint MCP: il server ha risposto con una pagina web. Controlla il percorso, di solito i server MCP lo espongono sotto /mcp.\",\n \"mcpServersEmpty\": \"Nessun server MCP. Collega il primo per dare nuovi strumenti all'agente.\",\n \"membersEmpty\": \"Nessun membro. Invita il primo per iniziare.\",\n \"memoriesEmpty\": \"Le memorie che l'agente salva su questo utente durante le conversazioni compariranno qui.\",\n \"memoryNotSynced\": \"Memoria non sincronizzata con la ricerca semantica: non viene considerata nelle risposte finché lo sweep di riparazione non la ripristina.\",\n \"modelDiscoveryUnavailable\": \"Questo endpoint non fornisce l'elenco dei suoi modelli: inserisci gli id a mano.\",\n \"modelDiscoveryFailed\": \"Non siamo riusciti a leggere l'elenco dei modelli dall'endpoint: vedi solo quelli già salvati.\",\n \"modelPricesUnchanged\": \"Nessun prezzo è cambiato.\",\n \"modelPricesUpdated\": \"Aggiornato il prezzo di un modello: {models}. | Aggiornati i prezzi di {count} modelli: {models}.\",\n \"modelProviderDeleted\": \"Endpoint eliminato.\",\n \"moveDocumentSuccess\": \"Documento spostato con successo\",\n \"noActiveSessions\": \"Nessuna altra sessione attiva\",\n \"noApiKeys\": \"Nessuna chiave API\",\n \"noChats\": \"Nessuna chat disponibile\",\n \"noConnectedAccounts\": \"Nessun account collegato\",\n \"noConversations\": \"Nessuna conversazione trovata\",\n \"noConversationsHint\": \"Inizia una nuova chat per vederla comparire qui.\",\n \"noCreditsData\": \"Nessun dato crediti disponibile\",\n \"noEndpointLogs\": \"Ancora nessuna chiamata a questo endpoint\",\n \"noEndpointModels\": \"Nessun modello disponibile: l'endpoint non ne elenca nessuno.\",\n \"modelRemoved\": \"Modello rimosso.\",\n \"noGdprRequests\": \"Nessuna richiesta GDPR\",\n \"noLinkedAgents\": \"Nessun agente collegato\",\n \"noNotifications\": \"Nessuna notifica\",\n \"noOptions\": \"Nessun elemento\",\n \"noOrganizations\": \"Nessuna organizzazione\",\n \"noResults\": \"Nessun risultato trovato\",\n \"noSearchResults\": \"Nessun elemento corrisponde alla ricerca. Cancellala per vedere tutto.\",\n \"notificationsEmpty\": \"Nessuna notifica inviata. Crea la prima per raggiungere i tuoi utenti.\",\n \"oauthConfigIncomplete\": \"Configurazione OAuth incompleta. Imposta il Client ID nelle impostazioni del server MCP.\",\n \"oauthConnected\": \"Autorizzazione OAuth completata con successo\",\n \"oauthError\": \"Errore durante l'autorizzazione OAuth\",\n \"organizationDisconnected\": \"Né il gateway della piattaforma né un endpoint proprio servono questa organizzazione, quindi i suoi agenti non rispondono.\",\n \"organizationMembersEmpty\": \"Nessun membro. Aggiungi il primo per iniziare.\",\n \"organizationNotSelected\": \"Nessuna organizzazione selezionata\",\n \"organizationsEmpty\": \"Nessuna organizzazione. Crea la prima per iniziare.\",\n \"pageNotFound\": \"Pagina non trovata\",\n \"passwordChangeSuccess\": \"Password cambiata con successo\",\n \"passwordResetSuccess\": \"Password reimpostata. Tutte le sessioni dell'account sono state chiuse: accedi con la nuova password.\",\n \"profileOrganizationsEmpty\": \"Le organizzazioni di cui fai parte compaiono qui.\",\n \"readError\": \"Errore durante la lettura\",\n \"reasoningAgent\": \"Questo è un agente di ragionamento. Non è progettato per mantenere la storia della conversazione, ogni messaggio è processato indipendentemente.\",\n \"recoverPasswordSuccess\": \"Email di recupero inviata con successo\",\n \"refillFailed\": \"Ricarica fallita. Riprova più tardi.\",\n \"refillSuccess\": \"Ricarica completata con successo\",\n \"refreshSuccess\": \"Aggiornamento completato con successo\",\n \"releaseNotesEmpty\": \"Nessuna nota di rilascio pubblicata. Gli aggiornamenti compariranno qui man mano che escono.\",\n \"removeSuccess\": \"Eliminazione completata con successo\",\n \"renameFolderSuccess\": \"Cartella rinominata con successo\",\n \"revisedAnswersEmpty\": \"Nessuna risposta revisionata. Crea la prima per insegnare all'agente una risposta migliore.\",\n \"selectedCount\": \"{count} di {total} selezionati\",\n \"sendInvitationConfirm\": \"Sei sicuro di voler inviare nuovamente l'invito a {email}?\",\n \"sessionRevoked\": \"Sessione disconnessa\",\n \"sessionsEmpty\": \"Un accesso da un altro dispositivo o browser apre una nuova sessione, elencata qui.\",\n \"setPasswordDescription\": \"Per ora accedi solo tramite un account collegato. Imposta una password per entrare anche con email e password: ti inviamo un link per crearla. Crearla chiude tutte le sessioni aperte, anche questa.\",\n \"setPasswordLinkSent\": \"Ti abbiamo mandato il link a {email}.\",\n \"sharedSuccess\": \"Documento condiviso con successo\",\n \"sitemapUrlRequired\": \"L'URL della sitemap è richiesto\",\n \"startUrlRequired\": \"L'URL di partenza è richiesto\",\n \"subAgentsEmpty\": \"Collega un agente per delegargli una parte della conversazione.\",\n \"submitError\": \"Errore durante il salvataggio\",\n \"submitSuccess\": \"Salvataggio completato con successo\",\n \"success\": \"Successo\",\n \"testExecutionError\": \"Errore nell'esecuzione del test\",\n \"toolNameAutoGenerated\": \"Il nome del tool verrà generato in automatico\",\n \"typeToSearch\": \"Inizia a digitare per cercare…\",\n \"unauthorized\": \"Non hai i permessi per gestire i canali.\",\n \"unbanSuccess\": \"Utente sbannato con successo\",\n \"unblockChatSuccess\": \"Conversazione sbloccata con successo\",\n \"unlinkAgentConfirm\": \"Il documento resta disponibile per gli altri agenti collegati.\",\n \"unlinkDocumentConfirm\": \"Resta disponibile per gli altri agenti collegati.\",\n \"unlinkLastAgentDeleteConfirm\": \"Il documento viene eliminato definitivamente, perché nessun altro agente è collegato.\",\n \"unlinkSuccess\": \"Documento disassociato con successo\",\n \"unlinkSyncedFolderConfirm\": \"La sincronizzazione si ferma. La cartella e i suoi documenti restano all'agente e da ora si modificano come gli altri: per toglierli, elimina la cartella.\",\n \"unsavedChanges\": \"Salva o annulla le modifiche prima\",\n \"urlAlreadyImported\": \"Già importato\",\n \"urlAlreadyImportedLink\": \"Questo URL è già stato importato. Vuoi collegarlo all'agente corrente?\",\n \"userApiKeysEmpty\": \"Le chiavi che questo utente crea dal proprio profilo per l'accesso programmatico compariranno qui.\",\n \"userChatsEmpty\": \"Le conversazioni di questo utente con qualsiasi agente compariranno qui.\",\n \"userOrganizationsEmpty\": \"L'utente non appartiene ancora a nessuna organizzazione. Aggiungi la prima.\",\n \"userUpdateSuccess\": \"Profilo utente aggiornato con successo\",\n \"usersEmpty\": \"Nessun utente. Crea il primo per iniziare.\",\n \"voiceCancelled\": \"Ho annullato.\",\n \"voiceConfirmed\": \"Confermo.\",\n \"voiceConnecting\": \"Connessione…\",\n \"voiceConnectionDone\": \"Ho completato il collegamento.\",\n \"voiceFailed\": \"La sessione vocale si è interrotta\",\n \"voiceInterrupted\": \"Riprova, oppure continua per iscritto.\",\n \"voiceListening\": \"In ascolto\",\n \"voiceLocationRefused\": \"Preferisco non condividere la mia posizione.\",\n \"voiceLocationShared\": \"La mia posizione è {place}.\",\n \"voiceMuted\": \"Microfono disattivato\",\n \"voiceNoAnswer\": \"L'agente non è riuscito a produrre una risposta per questa chiamata. Riprova, oppure continua per iscritto.\",\n \"voiceSpeaking\": \"L'agente sta parlando\",\n \"voiceTookTooLong\": \"La risposta ha impiegato troppo tempo per la chiamata. Riprova, oppure continua per iscritto: la risposta comparirà qui appena pronta.\",\n \"warning\": \"Attenzione\",\n \"webSourceCreated\": \"Sorgente creata: la cartella «{name}» riceverà le pagine nuove.\",\n \"webSourceCreateError\": \"Non è stato possibile creare la sorgente, e nessuna pagina è stata importata.\",\n \"webSourceEditable\": \"Le pagine scoperte restano modificabili. Scollegare la sorgente le lascia dove sono, con il loro aggiornamento automatico.\",\n \"webSourceRemovalHeld\": \"La sitemap non elenca più {count} pagine: sono troppe in una volta per rimuoverle senza un controllo, e non è stato rimosso niente.\",\n \"webSourceConfirmRemovalQuestion\": \"Il prossimo controllo toglie dalla knowledge base le pagine che la sitemap non elenca più, fino a {count}. Il loro contenuto resta nel database.\",\n \"unlinkWebSourceConfirm\": \"La sorgente smette di cercare pagine nuove. La cartella e le sue pagine restano, con il loro aggiornamento automatico.\"\n },\n \"messagePart\": {\n \"audioTranscribing\": \"Trascrizione dell'audio…\",\n \"audioTranscript\": \"Trascrizione\",\n \"audioTranscriptFailed\": \"Non è stato possibile trascriverlo\",\n \"audioTranscriptNoSpeech\": \"Non si sente nessun parlato\",\n \"audioTranscriptOff\": \"Non trascritto: la trascrizione è spenta per questa organizzazione\",\n \"disconnectOAuthConnection\": \"Disconnessione in corso…\",\n \"requestAccountLink\": \"Invio del link di accesso…\",\n \"unlinkAccount\": \"Scollegamento del numero…\",\n \"editSpreadsheet\": \"Modifica del foglio di calcolo…\",\n \"editSpreadsheetCells\": \"{count} cella modificata | {count} celle modificate\",\n \"enableTools\": \"Attivazione dei tool…\",\n \"expandChunkContext\": \"Lettura di altro contesto…\",\n \"fetchTeamsChannelHistory\": \"Lettura cronologia canale…\",\n \"geocode\": \"Ricerca della posizione…\",\n \"getWeather\": \"Recupero dati meteo…\",\n \"querySpreadsheet\": \"Interrogazione del foglio di calcolo…\",\n \"readDocumentFile\": \"Lettura del documento originale…\",\n \"readEarlierMessages\": \"Rilettura dei messaggi precedenti…\",\n \"readSpreadsheet\": \"Lettura del foglio di calcolo…\",\n \"reasoning\": \"Ragionamento…\",\n \"recallUserMemory\": \"Richiamo dei ricordi utente…\",\n \"requestGeolocation\": \"Richiesta posizione…\",\n \"requestOAuthConnection\": \"Connessione in corso…\",\n \"requestOAuthConnectionButton\": \"Connetti {name}\",\n \"requestOAuthConnectionInfo\": \"Richiesta autorizzazione per accedere i dati di {name}.\",\n \"requestOAuthConnectionPrompt\": \"Per accedere ai dati di {name} è necessario autorizzare la connessione.\",\n \"requestOAuthConnectionSuccess\": \"Connessione a {name} riuscita.\",\n \"revisedAnswers\": \"Ricerca nelle domande ricorrenti…\",\n \"runSubagent\": \"Delega a un sotto-agente…\",\n \"runWorker\": \"Delega a un worker…\",\n \"saveUserMemory\": \"Aggiornamento memoria utente…\",\n \"scheduleWakeup\": \"Programmo il prossimo controllo…\",\n \"searchingDocuments\": \"Ricerca nella memoria…\",\n \"showArtifact\": \"Preparazione contenuto…\",\n \"showCalendarEvent\": \"Creazione evento calendario…\",\n \"showComparison\": \"Costruzione confronto…\",\n \"showContactForm\": \"Creazione modulo contatto…\",\n \"showDiagram\": \"Generazione diagramma…\",\n \"showEmail\": \"Composizione email…\",\n \"showForm\": \"Creazione form…\",\n \"showImageGallery\": \"Caricamento galleria…\",\n \"showLocation\": \"Caricamento posizione…\",\n \"showMessage\": \"Composizione messaggio…\",\n \"showMultipleChoice\": \"Mostro le opzioni…\",\n \"showProducts\": \"Caricamento prodotti…\",\n \"showQrCode\": \"Generazione codice QR…\",\n \"showSources\": \"Caricamento fonti…\",\n \"showSuggestedReply\": \"Suggerisco una risposta…\",\n \"showVideo\": \"Caricamento video…\",\n \"showWeather\": \"Caricamento previsioni…\",\n \"showWebPages\": \"Caricamento pagine…\",\n \"stepCount\": \"{n} passaggio | {n} passaggi\",\n \"stepDocument\": \"Documento\",\n \"stepDropped\": \"{n} query esclusa: oltre il limite | {n} query escluse: oltre il limite\",\n \"stepError\": \"Errore\",\n \"stepExcerpts\": \"{n} estratto | {n} estratti\",\n \"stepInput\": \"Input\",\n \"stepItems\": \"{n} elemento | {n} elementi\",\n \"stepNoResults\": \"Nessun risultato trovato\",\n \"stepOutput\": \"Output\",\n \"stepRepeated\": \"{n} estratto già trovato prima | {n} estratti già trovati prima\",\n \"stepTimedOut\": \"{n} ricerca non ha risposto in tempo: i risultati possono essere incompleti | {n} ricerche non hanno risposto in tempo: i risultati possono essere incompleti\",\n \"steps\": \"Elaborazione\",\n \"streaming\": \"Caricamento…\",\n \"tool\": \"Esecuzione di un tool…\",\n \"webSearch\": \"Ricerca sul web…\"\n },\n \"organizationLimits\": {\n \"legend\": \"Limiti\",\n \"membersHint\": \"Vuoto: nessun limite. Contano anche gli utenti arrivati dal widget.\",\n \"membersInvalid\": \"Inserisci un numero intero da 1 in su, oppure lascia vuoto.\",\n \"membersLabel\": \"Membri massimi\"\n },\n \"placeholder\": {\n \"allProviders\": \"Tutti i provider\",\n \"apiToolName\": \"es. get-product-availability\",\n \"apiToolUrl\": \"https://api.example.com/resource/{param}\",\n \"askAnything\": \"Scrivi la tua domanda…\",\n \"autoDetect\": \"Rileva automaticamente\",\n \"autoGenerated\": \"Generata automaticamente se lasciato vuoto\",\n \"comment\": \"Scrivi il tuo commento…\",\n \"completeName\": \"Inserisci nome e cognome\",\n \"constValue\": \"Valore costante\",\n \"customAnswer\": \"Scrivi la tua risposta…\",\n \"description\": \"Inserisci la descrizione\",\n \"documentContent\": \"Inserisci il contenuto del documento\",\n \"documentName\": \"Inserisci il nome del documento\",\n \"documentOriginAll\": \"Tutte le origini\",\n \"documentRefreshAll\": \"Tutti gli aggiornamenti\",\n \"documentStatusAll\": \"Tutti gli stati\",\n \"documentUrl\": \"Inserisci l'URL della pagina web da importare\",\n \"email\": \"Inserisci l'indirizzo email\",\n \"endDate\": \"Seleziona data fine\",\n \"enterYourQuestion\": \"Inserisci la tua domanda…\",\n \"insert\": \"Inserisci…\",\n \"insertOrigin\": \"https://example.com\",\n \"insertImageHost\": \"images.example.com\",\n \"limit\": \"Inserisci il limite\",\n \"loading\": \"Caricamento…\",\n \"mcpServerHealthCheckPath\": \"Inserisci l'endpoint per il controllo dello stato\",\n \"mcpServerUrl\": \"Inserisci l'URL del server MCP\",\n \"model\": \"Seleziona il modello\",\n \"modelEndpointBaseUrl\": \"https://internal-proxy/v1\",\n \"name\": \"Inserisci il nome\",\n \"noTrustedOrigins\": \"Nessuna origine attendibile configurata\",\n \"noImageHosts\": \"Nessun host: le immagini degli altri host aspettano un clic\",\n \"oauthAuthorizationUrl\": \"es. https://provider.com/oauth/authorize\",\n \"oauthClientId\": \"es. my-client-app\",\n \"oauthClientSecret\": \"Inserisci il client secret\",\n \"oauthScopes\": \"es. read:contacts write:contacts\",\n \"oauthTokenUrl\": \"es. https://provider.com/oauth/token\",\n \"pages\": \"1, 4, 6, 8-12\",\n \"pasteJsonSample\": \"Incolla un esempio JSON per generare lo schema\",\n \"phone\": \"Inserisci il numero di telefono\",\n \"prompt\": \"Inserisci il prompt\",\n \"request\": \"Richiesta…\",\n \"search\": \"Cerca…\",\n \"secretEdit\": \"Lascia vuoto per mantenere il secret attuale\",\n \"select\": \"Seleziona\",\n \"selectAgent\": \"Seleziona un agente\",\n \"selectLanguage\": \"Seleziona lingua\",\n \"selectPriority\": \"Seleziona priorità\",\n \"similarity\": \"Inserisci la similarità\",\n \"sitemapUrl\": \"https://example.com/sitemap.xml\",\n \"slug\": \"Inserisci lo slug\",\n \"startDate\": \"Seleziona data inizio\",\n \"startUrl\": \"https://example.com\",\n \"temperature\": \"Inserisci la temperatura\",\n \"title\": \"Inserisci il titolo\",\n \"uploadFile\": \"Carica un file\",\n \"emailAddress\": \"nome{'@'}azienda.it\"\n },\n \"platformLink\": {\n \"title\": \"Collega WhatsApp\",\n \"cardTitle\": \"Collega il tuo numero WhatsApp\",\n \"description\": \"Chi scrive da questo numero su WhatsApp userà il tuo account, comprese le sue integrazioni: posta, calendario, file. Collega solo un numero tuo.\",\n \"summaryAvailable\": \"Userà l'account {email}.\",\n \"summaryReplaces\": \"Sostituirà {phone}, che oggi usa il tuo account.\",\n \"summaryLinkedHere\": \"Usa già il tuo account.\",\n \"summaryLinkedElsewhere\": \"Usa un altro account. Scollegalo prima da lì, oppure chiedi all'agente su WhatsApp di scollegarlo.\",\n \"summaryExpired\": \"Questo link è scaduto. Chiedine uno nuovo all'agente su WhatsApp.\",\n \"summaryInvalid\": \"Questo link non è valido, oppure è già stato usato. Chiedine uno nuovo all'agente su WhatsApp.\",\n \"summaryLinked\": \"Collegato. Torna su WhatsApp: l'agente ti ha scritto lì.\",\n \"requestedAt\": \"Link richiesto alle {issued}, valido fino alle {expires}.\",\n \"doNotConfirm\": \"Se qualcuno ti ha mandato questo link, non confermare.\",\n \"confirmOnlyIf\": \"Conferma solo se il link l'hai chiesto tu, dal telefono con questo numero, nell'ultima ora.\",\n \"link\": \"Collega {phone} al mio account\",\n \"replace\": \"Collega {phone} al posto di {current}\",\n \"linked\": \"Il numero WhatsApp {phone} ora usa il tuo account.\",\n \"identitiesTitle\": \"Numeri collegati\",\n \"identitiesDescription\": \"I numeri di messaggistica che scrivono come il tuo account. Scollegane uno perché smetta di usare il tuo account e le sue integrazioni.\",\n \"linkedAt\": \"Collegato il {date}\",\n \"unlinkQuestion\": \"Scollegare {phone}?\",\n \"unlinkDescription\": \"Chi scrive da questo numero non userà più il tuo account e le sue integrazioni. Le conversazioni restano nel tuo account.\",\n \"unlinked\": \"{phone} non usa più il tuo account.\"\n },\n \"problemReasons\": {\n \"file-upload-validation\": {\n \"audio-too-large\": \"La registrazione supera 100 MB, il massimo che si trascrive: carica una copia più corta o più compressa, per esempio un m4a o un mp3.\"\n },\n \"gateway-disabled\": {\n \"gateway-disabled\": \"Questa organizzazione non usa il gateway AI della piattaforma, e questo documento ha bisogno di qualcosa che gira lì: l’embedding, se non è attivo sull’endpoint (Modelli, sezione Embedding), oppure il modello AI del documento, da sostituire con uno dell’endpoint.\",\n \"transcription-off\": \"Questa organizzazione non usa il gateway AI della piattaforma, che è dove si trascrivono le registrazioni audio: carica invece la trascrizione come file di testo.\"\n },\n \"input-validation\": {\n \"header-env-placeholder\": \"Un header richiama una variabile d'ambiente della piattaforma, che gli API tool non risolvono più: il valore dell'header parte così come è scritto, quindi scrivi il valore vero.\",\n \"header-origin-changed\": \"L'URL punta a un altro host: riscrivi i valori degli header, quelli salvati restano legati all'host precedente.\",\n \"header-url-host-placeholder\": \"Un tool con header ha bisogno di un host fisso: schema, host e porta del suo URL non possono contenere un segnaposto che compila il modello.\",\n \"header-value-missing\": \"Un header non ha valore: scrivilo, oppure togli l'header.\",\n \"secret-body-method\": \"Una richiesta GET o DELETE non ha body: metti i parametri segreti nella query string, oppure cambia il metodo.\",\n \"secret-env-placeholder\": \"Un parametro segreto richiama una variabile d'ambiente della piattaforma, che gli API tool non risolvono: scrivi il valore vero.\",\n \"secret-origin-changed\": \"L'URL punta a un altro host: riscrivi i valori dei parametri segreti, quelli salvati restano legati all'host precedente.\",\n \"secret-path-placeholder\": \"Un parametro segreto non può riempire un segnaposto del percorso dell'URL: il percorso lo compila il modello, che il segreto non lo vede.\",\n \"secret-url-host-placeholder\": \"Un tool con parametri segreti ha bisogno di un host fisso: schema, host e porta del suo URL non possono contenere un segnaposto che compila il modello.\",\n \"secret-value-missing\": \"Un parametro segreto non ha valore: scrivilo, oppure togli il parametro.\"\n },\n \"model-unavailable\": {\n \"embedding-endpoint-off\": \"L’endpoint che calcola l’embedding di questa organizzazione è spento: riaccendilo nella pagina Modelli.\",\n \"endpoint-off\": \"Questo documento ha bisogno dell’endpoint dell’organizzazione, per l’embedding o per il modello AI del documento, e l’endpoint è spento: riaccendilo nella pagina Modelli.\"\n },\n \"provider-request-failed\": {\n \"timeout\": \"Il provider esterno non ha risposto in tempo: riprova tra qualche istante.\"\n }\n },\n \"problems\": {\n \"conflict\": \"Si è verificato un conflitto. La risorsa potrebbe già esistere.\",\n \"conversation-blocked\": \"Questa conversazione è stata bloccata.\",\n \"credit-exhausted\": \"Crediti esauriti. Contatta l'amministratore.\",\n \"embedding-identity-failed\": \"L’endpoint non serve il modello di embedding dichiarato: i suoi vettori non corrisponderebbero alla base di conoscenza. Controlla l’id del modello.\",\n \"entity-not-found\": \"Risorsa non trovata o disabilitata.\",\n \"feature-disabled\": \"Funzionalità non attiva per la tua organizzazione.\",\n \"file-upload-disabled\": \"Il caricamento file non è abilitato per questo agente.\",\n \"file-upload-validation\": \"File non valido: verifica dimensione, tipo o numero di file.\",\n \"gateway-disabled\": \"Questa organizzazione non usa il gateway AI della piattaforma, quindi i suoi modelli non sono disponibili. Usa un modello dell’endpoint dell’organizzazione.\",\n \"hubspot-missing-scopes\": \"Il token HubSpot non ha i permessi necessari. Aggiungi lo scope \\\"crm.objects.owners.read\\\".\",\n \"input-validation\": \"Validazione input fallita. Verifica il formato dei dati.\",\n \"internal-server-error\": \"Si è verificato un errore imprevisto. Riprova più tardi.\",\n \"mcp-endpoint-invalid\": \"Questo URL non punta a un endpoint MCP. Controlla il percorso, di solito i server MCP lo espongono sotto /mcp.\",\n \"method-not-allowed\": \"Metodo HTTP non consentito per questo endpoint.\",\n \"model-default-unavailable\": \"Un modello predefinito deve essere un modello che l’organizzazione può usare: scegli prima un altro predefinito.\",\n \"model-not-chat\": \"Questo è un modello di embedding, non di chat: non può rispondere a un agente.\",\n \"model-price-missing\": \"Un modello non si attiva senza un prezzo: scegli un modello a cui equivale, o scrivi il prezzo.\",\n \"model-unavailable\": \"Il modello scelto non è disponibile per questa organizzazione: scegline un altro.\",\n \"not-found\": \"Pagina non trovata.\",\n \"oauth-authorization-required\": \"Autorizzazione OAuth richiesta. Completa il flusso di autorizzazione per questo server MCP.\",\n \"oauth-config-incomplete\": \"Configurazione OAuth incompleta. Imposta il Client ID per abilitare OAuth.\",\n \"origin-not-allowed\": \"L'origine della richiesta non è consentita.\",\n \"price-list-unavailable\": \"Il listino del gateway ora non è raggiungibile: riprova, o scrivi il prezzo a mano.\",\n \"provider-request-failed\": \"Il provider esterno ha rifiutato la richiesta.\",\n \"rate-limit-exceeded\": \"Troppe richieste. Riprova più tardi.\",\n \"two-factor-required\": \"Un'organizzazione di cui fai parte richiede la verifica in due passaggi: configurala per continuare.\",\n \"unauthorized\": \"Autenticazione richiesta. Effettua l'accesso.\",\n \"validation-error\": \"Errore di validazione. Verifica i dati inviati.\"\n },\n \"profileSection\": {\n \"backToApp\": \"Torna all'app\",\n \"general\": {\n \"title\": \"Profilo e preferenze\",\n \"description\": \"Il tuo nome, la tua immagine e come vedi l'app.\",\n \"pictureHint\": \"PNG o JPG.\"\n },\n \"notifications\": {\n \"title\": \"Notifiche\",\n \"description\": \"Quali avvisi ricevi, nell'app e per email.\",\n \"groups\": \"Tipi di notifica\",\n \"alwaysOn\": \"Gli avvisi sulla sicurezza dell'account e i messaggi degli amministratori arrivano sempre.\",\n \"loadFailed\": \"Non è stato possibile leggere le tue preferenze.\",\n \"channel\": {\n \"inApp\": \"App\",\n \"email\": \"Email\"\n },\n \"agent_replies\": {\n \"title\": \"Risposte degli agenti\",\n \"summary\": \"Quando un agente a cui hai chiesto di ricontrollare ha una novità per te.\"\n },\n \"documents\": {\n \"title\": \"Documenti e fonti\",\n \"summary\": \"I documenti che non si elaborano e le pagine tolte da una fonte sincronizzata.\"\n },\n \"integrations\": {\n \"title\": \"Integrazioni e chiavi\",\n \"summary\": \"Un accesso a un'integrazione chiuso da un amministratore e le API key in scadenza.\"\n },\n \"flagged_conversations\": {\n \"title\": \"Conversazioni segnalate\",\n \"summary\": \"Le conversazioni che l'analisi ha segnalato o bloccato.\"\n },\n \"usage_limits\": {\n \"title\": \"Limiti di utilizzo\",\n \"summary\": \"Quando l'organizzazione esaurisce le esecuzioni automatiche del giorno.\"\n }\n },\n \"security\": {\n \"title\": \"Sicurezza\",\n \"description\": \"Come entri e da dove sei collegato.\",\n \"signIn\": \"Accesso\",\n \"passwordSummary\": \"Per entrare insieme a {email}.\",\n \"connectedAccountsNote\": \"per entrare senza password\",\n \"connected\": \"Collegato\",\n \"devices\": \"Nessun dispositivo | Un dispositivo | {count} dispositivi\",\n \"deviceOn\": \"{browser} su {os}\"\n },\n \"integrations\": {\n \"title\": \"Integrazioni e API key\",\n \"description\": \"I servizi che gli agenti usano per te e le chiavi per chiamare la piattaforma.\",\n \"available\": \"Da collegare\",\n \"keyExpires\": \"Scade il {date}\",\n \"keyNeverExpires\": \"Senza scadenza\",\n \"keyRequests\": \"Nessuna richiesta | Una richiesta | {count} richieste\"\n },\n \"organizations\": {\n \"title\": \"Organizzazioni\",\n \"description\": \"Dove lavori: cambia organizzazione, crea una chiave, esci.\",\n \"current\": \"Dove sei adesso\",\n \"onlyYou\": \"Solo tu\",\n \"members\": \"{count} membro | {count} membri\",\n \"memberSince\": \"Membro dal {date}\",\n \"asksTwoFactor\": \"Chiede la verifica in due passaggi\"\n },\n \"data\": {\n \"title\": \"I miei dati\",\n \"description\": \"I file caricati nelle chat, una copia di tutto, il tuo account.\",\n \"account\": \"Il tuo account\"\n }\n },\n \"refreshInterval\": {\n \"daily\": \"Ogni giorno\",\n \"manual\": \"Manuale\",\n \"monthly\": \"Ogni mese\",\n \"weekly\": \"Ogni settimana\"\n },\n \"releaseNotes\": {\n \"heading\": \"Novità\",\n \"installed\": \"Stai usando la\",\n \"lead\": \"Ultime funzionalità, miglioramenti e correzioni.\"\n },\n \"role\": {\n \"admin\": \"Amministratore\",\n \"member\": \"Membro\",\n \"owner\": \"Proprietario\",\n \"user\": \"Utente\"\n },\n \"nav\": {\n \"organization\": \"Organizzazione\",\n \"configure\": \"Configura\",\n \"monitor\": \"Monitora\",\n \"allAgents\": \"Tutti gli agenti\",\n \"agentSettings\": \"Impostazioni\",\n \"agentTry\": \"Prova\",\n \"searchAgent\": \"Cerca un agente\",\n \"searchOrganization\": \"Cerca un'organizzazione\",\n \"allOrganizations\": \"Tutte le organizzazioni\"\n },\n \"route\": {\n \"agentEndpoints\": \"API endpoints\",\n \"agents\": \"Agenti\",\n \"apiTools\": \"API tools\",\n \"backoffice\": \"Backoffice\",\n \"branding\": \"Branding\",\n \"catalog\": \"Catalogo\",\n \"channels\": \"Canali\",\n \"chatLogs\": \"Chat\",\n \"copatForYou\": \"Eight Wave for-U\",\n \"dashboard\": \"Dashboard\",\n \"dataProtection\": \"Protezione dei dati\",\n \"documents\": \"Documenti\",\n \"endpointLogs\": \"Log endpoint\",\n \"feedbacks\": \"Feedback\",\n \"frontoffice\": \"Frontoffice\",\n \"home\": \"Home\",\n \"integrations\": \"Integrazioni\",\n \"invitations\": \"Inviti\",\n \"leads\": \"Contatti\",\n \"mcpServer\": \"Server MCP\",\n \"members\": \"Membri\",\n \"models\": \"Modelli\",\n \"notFound\": \"Pagina non trovata\",\n \"notifications\": \"Notifiche\",\n \"organizations\": \"Organizzazioni\",\n \"playground\": \"Playground\",\n \"profile\": \"Profilo\",\n \"reasoningLogs\": \"Ragionamento\",\n \"releaseNotes\": \"Note di rilascio\",\n \"requestPasswordReset\": \"Password dimenticata\",\n \"resetPassword\": \"Reimposta password\",\n \"revisedAnswers\": \"Correzioni\",\n \"signIn\": \"Accedi\",\n \"signUp\": \"Registrati\",\n \"subAgents\": \"Sotto-agenti\",\n \"system\": \"Sistema\",\n \"twoFactor\": \"Verifica in due passaggi\",\n \"twoFactorSetup\": \"Configura la verifica in due passaggi\",\n \"users\": \"Utenti\",\n \"video\": \"Video\",\n \"virtualAssistant\": \"Assistente virtuale\"\n },\n \"showForm\": {\n \"completed\": \"Completato\",\n \"otherPlaceholder\": \"Altro…\",\n \"step\": \"Domanda {current} di {total}\"\n },\n \"subAgentStatus\": {\n \"active\": \"Attivo\",\n \"inactive\": \"Inattivo\"\n },\n \"time\": {\n \"future\": \"tra\",\n \"past\": \"fa\",\n \"unit\": {\n \"day\": \"giorno | giorni\",\n \"hour\": \"ora | ore\",\n \"minute\": \"minuto | minuti\",\n \"second\": \"secondo | secondi\"\n }\n },\n \"toolApproval\": {\n \"approved\": \"Approvato: l'azione è stata eseguita.\",\n \"cancelled\": \"Annullato: l'azione non è stata eseguita.\",\n \"confirmed\": \"Confermato: l'agente ha proseguito con l'azione.\",\n \"denied\": \"Rifiutato: l'azione non è stata eseguita.\",\n \"expired\": \"Questa richiesta non è più confermabile: l'azione non è stata eseguita.\",\n \"prompt\": \"Per continuare serve la tua conferma:\"\n },\n \"toolGroup\": {\n \"channels\": \"Canali di messaggistica\",\n \"communication\": \"Comunicazione\",\n \"delegation\": \"Delega e automazione\",\n \"knowledgeSearch\": \"Knowledge base e ricerca\",\n \"locationWeather\": \"Localizzazione e meteo\",\n \"personalization\": \"Personalizzazione\",\n \"richContent\": \"Contenuti interattivi\"\n },\n \"toolGroupInfo\": {\n \"channels\": \"Capacità aggiuntive sulle piattaforme di messaggistica come Microsoft Teams.\",\n \"communication\": \"Email, messaggi, moduli di contatto ed eventi calendario.\",\n \"delegation\": \"Worker generici che l'agente può eseguire in parallelo per gestire sotto-attività indipendenti, e controlli che ripete da solo nel tempo quando l'utente lo chiede.\",\n \"knowledgeSearch\": \"Ricerca nella knowledge base, fonti documentali e suggerimenti di pagine web.\",\n \"locationWeather\": \"Geolocalizzazione, geocodifica, mappe interattive e previsioni meteo.\",\n \"personalization\": \"Memoria per-utente, file caricati dall'utente stesso e fogli di calcolo allegati in chat.\",\n \"richContent\": \"Contenuti strutturati: artefatti, confronti, gallerie di immagini, codici QR e risposte guidate.\"\n },\n \"toolSelection\": {\n \"cost\": \"Costo addebitato all’organizzazione: {cost}\",\n \"enabled\": \"Riattivato\",\n \"exposed\": \"Gruppi esposti al modello: probabilità da {threshold} in su, o usati prima\",\n \"failed\": \"Non riuscita\",\n \"inputTokens\": \"Token in ingresso\",\n \"kind\": {\n \"api\": \"API tool\",\n \"mcp\": \"Server MCP\",\n \"subagent\": \"Sotto-agente\"\n },\n \"latency\": \"Tempo della valutazione, limite {budget} ms\",\n \"leadFailed\": \"La valutazione non è riuscita o non ha risposto entro {budget} ms: tutti i gruppi sono rimasti esposti.\",\n \"missed\": \"Mancato\",\n \"missedActive\": \"{n} gruppo usato era stato escluso, e il modello l'ha dovuto riattivare | {n} gruppi usati erano stati esclusi, e il modello li ha dovuti riattivare\",\n \"missedShadow\": \"{n} gruppo usato sarebbe stato escluso | {n} gruppi usati sarebbero stati esclusi\",\n \"mode\": {\n \"active\": \"Attiva\",\n \"shadow\": \"Ombra\"\n },\n \"modeHint\": {\n \"active\": \"Applicata prima del primo passo: il modello ha visto solo i gruppi con la spunta, e poteva riattivare gli altri.\",\n \"shadow\": \"Registrata in parallelo alla risposta: il modello ha visto tutti i gruppi, e la spunta serve solo al confronto con le chiamate.\"\n },\n \"notCharged\": \"Non addebitata\",\n \"probability\": \"Probabilità che il messaggio abbia bisogno del gruppo; esposto da {threshold}\",\n \"seeded\": \"Usato in precedenza\",\n \"title\": \"Selezione dei tool\",\n \"tools\": \"{n} tool | {n} tool\",\n \"used\": \"Usato\"\n },\n \"tooltip\": {\n \"agentsUsedInfo\": \"Numero di agenti utilizzati rispetto al massimo disponibile.\",\n \"mcpConnectionStatus\": {\n \"active\": \"Gli agenti la usano a nome dell'utente.\",\n \"orphan\": \"Nessun agente la usa più (integrazione eliminata, disattivata o tolta dagli agenti), ma l'accesso è ancora salvato.\",\n \"stale\": \"Scaduta e senza modo di rinnovarla: si cancella al prossimo uso, e l'utente dovrà accedere di nuovo.\"\n },\n \"requestsUsedInfo\": \"Numero di richieste utilizzate rispetto al massimo consentito.\"\n },\n \"turnEvaluation\": {\n \"cost\": \"Costo, non addebitato all'organizzazione: {cost}\",\n \"leadFailed\": \"La valutazione non è riuscita o non ha risposto entro {budget} ms: non è stato registrato niente.\",\n \"modeHint\": \"Registrata dopo la risposta, senza effetti: per ora nessuno legge queste probabilità.\",\n \"probability\": \"Probabilità che il modello di valutazione dà alla domanda: da 0,5 in su propende per il sì\",\n \"question\": {\n \"abusive\": \"Messaggio offensivo\",\n \"asksHuman\": \"Chiede un operatore\",\n \"durableFact\": \"Fatto durevole sull'utente\",\n \"informationGap\": \"Manca un'informazione, non una capacità\",\n \"manipulation\": \"Prova a manipolare l'agente\",\n \"missingInfo\": \"La risposta dice che l'informazione manca\"\n },\n \"title\": \"Valutazione a fine turno\",\n \"version\": \"Versione delle domande: {version}\"\n },\n \"twoFactor\": {\n \"adminBackupCodes\": \"Nessun codice di recupero rimasto | Un codice di recupero rimasto | {count} codici di recupero rimasti\",\n \"adminChanges\": \"Ultime modifiche\",\n \"adminChangesEmpty\": \"Ancora nessuna modifica.\",\n \"adminChangesHint\": \"Dagli avvisi inviati all'utente, che può cancellarli.\",\n \"adminDevicesForgotten\": \"I dispositivi fidati sono stati dimenticati.\",\n \"adminFailedAttempts\": \"Un codice sbagliato di fila | {count} codici sbagliati di fila\",\n \"adminFilterEmpty\": \"Nessun utente in questo stato.\",\n \"adminForgetDevices\": \"Dimentica i dispositivi fidati\",\n \"adminForgetDevicesDescription\": \"Su ognuno il prossimo accesso chiederà di nuovo il codice. Glielo diremo per email.\",\n \"adminForgetDevicesQuestion\": \"Dimenticare i dispositivi fidati di {name}?\",\n \"adminLocked\": \"In pausa dopo troppi codici sbagliati, fino al {date}.\",\n \"adminPasskeySynced\": \"Sincronizzata tra i suoi dispositivi\",\n \"adminRemovePasskeyDescription\": \"Non servirà più per entrare. Le sessioni già aperte restano: se il dispositivo è perso, chiudile da Sessioni attive. Glielo diremo per email.\",\n \"adminRemovePasskeyQuestion\": \"Rimuovere la passkey {passkey} di {name}?\",\n \"adminRequiredPending\": \"Richiesta da {organizations} e non ancora configurata: la prossima pagina si fermerà sulla configurazione.\",\n \"adminStateNoneHint\": \"Nessun secondo fattore e nessuna passkey\",\n \"adminSummaryAll\": \"Tutti\",\n \"adminTrustedDevices\": \"Nessun dispositivo fidato | Un dispositivo fidato, fino al {date} | {count} dispositivi fidati, l'ultimo fino al {date}\",\n \"adminUnlock\": \"Sblocca\",\n \"adminUnlockDescription\": \"Fallo solo se te l'ha chiesto: la pausa rallenta chi sta provando i suoi codici. Glielo diremo per email.\",\n \"adminUnlocked\": \"Sbloccata: può inserire di nuovo il codice.\",\n \"adminUnlockQuestion\": \"Sbloccare la verifica in due passaggi di {name}?\",\n \"adoptionRatio\": \"{count} su {total}\",\n \"adoptionState\": {\n \"totp\": \"Con l'app\",\n \"otp\": \"Con l'email\",\n \"passkey\": \"Con una passkey\",\n \"required\": \"Da configurare\",\n \"none\": \"Senza verifica\"\n },\n \"adoptionTitle\": \"Membri protetti\",\n \"adoptionTitleUsers\": \"Utenti protetti\",\n \"backupCode\": \"Codice di recupero\",\n \"backupCodesDescription\": \"Ogni codice vale una volta sola, al posto di quello dell'app. Conservali in un posto sicuro: senza telefono e senza questi codici, solo un amministratore può ridarti l'accesso.\",\n \"backupCodesFileHeader\": \"Codici di recupero di {name}. Ognuno vale una volta sola.\",\n \"backupCodesReplaced\": \"Ecco i nuovi codici di recupero: quelli vecchi non valgono più. Salvali adesso, non verranno mostrati di nuovo.\",\n \"backupCodesSaved\": \"Ho salvato i codici\",\n \"badge\": \"Verifica in due passaggi\",\n \"challengeApp\": \"Scrivi il codice a 6 cifre della tua app di autenticazione.\",\n \"challengeBackup\": \"Scrivi uno dei codici di recupero che hai salvato.\",\n \"challengeEmailSending\": \"Ti stiamo inviando un codice via email.\",\n \"challengeEmailSent\": \"Ti abbiamo inviato un codice a 6 cifre via email. Scade fra 5 minuti.\",\n \"challengeTitle\": \"Verifica in due passaggi\",\n \"code\": \"Codice a 6 cifre\",\n \"column\": \"2FA\",\n \"disabledMessage\": \"La verifica in due passaggi è disattivata.\",\n \"enabledMessage\": \"La verifica in due passaggi è attiva.\",\n \"manualKey\": \"Non riesci a inquadrarlo? Inserisci questa chiave nell'app:\",\n \"memberOff\": \"Non attiva\",\n \"memberOn\": \"Attiva\",\n \"memberPasskey\": \"Passkey\",\n \"memberPasskeyHint\": \"Accede con una passkey, che rispetta l'obbligo. Con la sola password deve prima configurare la verifica.\",\n \"memberPending\": \"Da configurare\",\n \"memberPendingHint\": \"Accede con la password e non ha un secondo fattore: dovrà configurarlo prima di proseguire\",\n \"memberSocialOnly\": \"Non serve\",\n \"memberSocialOnlyHint\": \"Accede solo con Google o Microsoft, quindi vale la sicurezza del provider\",\n \"methodApp\": \"App di autenticazione\",\n \"methodAppSummary\": \"Un codice che cambia ogni 30 secondi, da Google Authenticator, Microsoft Authenticator, 1Password o simili. Consigliata.\",\n \"methodEmail\": \"Codice via email\",\n \"methodEmailSummary\": \"Un codice inviato a {email} a ogni accesso con la password.\",\n \"newBackupCodes\": \"Nuovi codici di recupero\",\n \"newBackupCodesDescription\": \"I codici che hai ora smettono di funzionare e ne ricevi dieci nuovi.\",\n \"passkeyAdd\": \"Aggiungi una passkey\",\n \"passkeyAddDescription\": \"Conferma la password, poi segui il dispositivo: ti chiederà l'impronta, il volto o il PIN.\",\n \"passkeyAdded\": \"La passkey è pronta: usala al prossimo accesso.\",\n \"passkeyAddNoPasswordDescription\": \"Segui il dispositivo: ti chiederà l'impronta, il volto o il PIN.\",\n \"passkeyAlreadyRegistered\": \"Questo dispositivo ha già una passkey per il tuo account.\",\n \"passkeyCancelled\": \"Il dispositivo non ha creato la passkey: riprova quando vuoi.\",\n \"passkeyCreate\": \"Crea la passkey\",\n \"passkeyCreatedAt\": \"Aggiunta il {date}\",\n \"passkeyDeviceBound\": \"Solo su un dispositivo\",\n \"passkeyDeviceRefused\": \"Il dispositivo non ha creato la passkey. Controlla che abbia un blocco schermo, un'impronta o un PIN e riprova.\",\n \"passkeyFallbackName\": \"Passkey\",\n \"passkeyName\": \"Nome\",\n \"passkeyNameHint\": \"Per riconoscerla nella lista\",\n \"passkeyRemove\": \"Rimuovi\",\n \"passkeyRemoved\": \"Passkey rimossa.\",\n \"passkeyRemoveDescription\": \"Non servirà più per accedere. Puoi aggiungerne una nuova quando vuoi.\",\n \"passkeyRemoveQuestion\": \"Rimuovere la passkey {name}?\",\n \"passkeys\": \"Passkey\",\n \"passkeysDescription\": \"Accedi con l'impronta, il volto o il PIN del dispositivo: niente password e niente codice. Una passkey vale anche per le organizzazioni che richiedono la verifica in due passaggi.\",\n \"passkeysEmpty\": \"Nessuna passkey.\",\n \"passkeySynced\": \"Sincronizzata tra i tuoi dispositivi\",\n \"qrLabel\": \"QR code per l'app di autenticazione\",\n \"requireConsequence\": \"I membri che accedono con la password e non l'hanno ancora attiva verranno fermati alla prossima pagina finché non la configurano.\",\n \"requiredBy\": \"Richiesta da {organizations}.\",\n \"requiredByPasskeyEnough\": \"Richiesta da {organizations}: la tua passkey basta, con la sola password ti verrà chiesto di configurarla.\",\n \"requireHint\": \"Chi accede con la password deve configurarla prima di usare la piattaforma. Chi accede con Google o Microsoft non è toccato.\",\n \"requireLabel\": \"Richiedi la verifica in due passaggi\",\n \"requireOff\": \"La verifica in due passaggi non è più obbligatoria.\",\n \"requireOn\": \"Ora la verifica in due passaggi è obbligatoria.\",\n \"requireQuestion\": \"Richiedere la verifica in due passaggi ai membri?\",\n \"requireTitle\": \"Richiedi la verifica in due passaggi\",\n \"reset\": \"Reimposta la verifica in due passaggi\",\n \"resetConfirm\": \"Reimposta\",\n \"resetDescription\": \"L'app di autenticazione e i codici di recupero smettono di funzionare e l'utente viene disconnesso ovunque. Potrà entrare con la sola password e configurarla di nuovo: lo avvisiamo via email.\",\n \"resetQuestion\": \"Reimpostare la verifica in due passaggi di {name}?\",\n \"scanDescription\": \"Apri l'app di autenticazione, aggiungi un account e inquadra il QR code. Poi scrivi il codice a 6 cifre che mostra.\",\n \"sendAgain\": \"Invia un nuovo codice\",\n \"setupAddAnotherPasskey\": \"Aggiungi una nuova passkey\",\n \"setupAddPasskey\": \"Usa una passkey\",\n \"setupDescription\": \"{organizations} la richiede a chi accede con la password.\",\n \"setupSignInWithPasskey\": \"Accedi con la tua passkey\",\n \"setupTitle\": \"Configura la verifica in due passaggi\",\n \"signInState\": {\n \"totp\": \"App\",\n \"otp\": \"Email\",\n \"passkey\": \"Passkey\",\n \"required\": \"Da configurare\",\n \"none\": \"Non attiva\"\n },\n \"signInWithPasskey\": \"Accedi con una passkey\",\n \"stateNoPassword\": \"Non disponibile per questo account\",\n \"stateOff\": \"Non attiva\",\n \"stateOnApp\": \"Attiva, con un'app di autenticazione\",\n \"stateOnEmail\": \"Attiva, con un codice via email\",\n \"summaryNoPassword\": \"Accedi con Google o Microsoft, quindi vale la sicurezza del provider. Se aggiungi una password, potrai proteggerla anche qui.\",\n \"summaryOff\": \"Chiede un codice, oltre alla password, a ogni accesso con email e password.\",\n \"summaryOnApp\": \"Nessun codice di recupero rimasto: generane di nuovi. | Un codice di recupero rimasto. | {count} codici di recupero rimasti.\",\n \"summaryOnEmail\": \"Il codice arriva a {email}.\",\n \"switchToApp\": \"Usa un'app di autenticazione\",\n \"title\": \"Verifica in due passaggi\",\n \"trustDevice\": \"Ricorda questo dispositivo per 30 giorni\",\n \"turnOff\": \"Disattiva\",\n \"turnOffDescription\": \"Da adesso per entrare basterà la password. Ti mandiamo un'email di conferma.\",\n \"turnOffRequired\": \"Un'organizzazione di cui fai parte la richiede\",\n \"turnOffTitle\": \"Disattiva la verifica in due passaggi\",\n \"turnOn\": \"Attiva\",\n \"turnOnTitle\": \"Attiva la verifica in due passaggi\",\n \"useApp\": \"Usa l'app di autenticazione\",\n \"useBackupCode\": \"Usa un codice di recupero\",\n \"verify\": \"Verifica\"\n },\n \"userFiles\": {\n \"allAgents\": \"Tutti gli agenti\",\n \"chatFilesEmpty\": \"Nessun file caricato in questa chat.\",\n \"chatFilesTitle\": \"File in questa chat\",\n \"deleteSpreadsheet\": \"Elimina file\",\n \"deleteSpreadsheetConfirm\": \"Si cancellano il file caricato e tutte le versioni scritte dall'agente, anche dalla chat. Non si può annullare.\",\n \"emptyHint\": \"I file che carichi in chat vengono aggiunti qui automaticamente e diventano ricercabili dall'agente.\",\n \"emptyTitle\": \"Nessun file\",\n \"exclude\": \"Rimuovi file\",\n \"excludeConfirm\": \"L'agente non potrà più cercarlo. Resta nella chat in cui lo avete caricato.\",\n \"loading\": \"Caricamento…\",\n \"open\": \"Apri file\",\n \"openInChat\": \"Apri nella chat\",\n \"spreadsheetInChatOnly\": \"Solo nella sua chat\",\n \"spreadsheetVersion\": \"Modificato dall'agente\",\n \"subtitle\": \"I file che hai caricato in chat, disponibili all'agente.\",\n \"title\": \"I miei file\",\n \"untitled\": \"File senza nome\",\n \"uploadedAt\": \"Caricato\"\n },\n \"validation\": {\n \"duplicateHeader\": \"Due header hanno lo stesso nome\",\n \"duplicateSecretParameter\": \"Due parametri segreti hanno lo stesso nome\",\n \"invalidPhoneNumber\": \"Il numero inserito non è corretto\",\n \"invalidToolName\": \"Il nome deve essere in snake_case o kebab-case (lettere minuscole, numeri, underscore e trattini)\",\n \"passwordMismatch\": \"Le password non coincidono\"\n },\n \"voiceEagerness\": {\n \"eager\": \"Pronto\",\n \"normal\": \"Normale\",\n \"patient\": \"Paziente\"\n },\n \"weather\": {\n \"airQuality\": \"Qualità dell'aria\",\n \"aqiFair\": \"Discreta\",\n \"aqiGood\": \"Buona\",\n \"aqiHazardous\": \"Pessima\",\n \"aqiModerate\": \"Moderata\",\n \"aqiPoor\": \"Scarsa\",\n \"aqiVeryPoor\": \"Molto scarsa\",\n \"dailyForecast\": \"Previsioni giornaliere\",\n \"feelsLike\": \"Percepita\",\n \"today\": \"Oggi\"\n },\n \"unsubscribe\": {\n \"title\": \"Disiscriviti dalle mail\",\n \"message\": \"Smetti di ricevere per email le notifiche di «{group}». Quelle nell'app non cambiano.\",\n \"action\": \"Disiscriviti\",\n \"doneTitle\": \"Fatto\",\n \"doneMessage\": \"Non riceverai più per email le notifiche di «{group}». Puoi riaccenderle quando vuoi dal tuo profilo.\",\n \"invalidTitle\": \"Link non valido\",\n \"invalidMessage\": \"Questo link non vale più. Puoi spegnere le mail dal tuo profilo, nella sezione Notifiche.\",\n \"openSettings\": \"Apri le preferenze di notifica\"\n }\n}\n","{\n \"action\": {\n \"accept\": \"Accept\",\n \"acceptRedundancy\": \"Confirm redundant\",\n \"activate\": \"Activate\",\n \"add\": \"Add\",\n \"addExistingDocument\": \"Add existing document\",\n \"addField\": \"Add field\",\n \"addFieldMapping\": \"Add mapping\",\n \"addHint\": \"Press enter to add\",\n \"addIntegration\": \"Add integration\",\n \"addMember\": \"Add member\",\n \"addNestedField\": \"Nested field\",\n \"addToCalendar\": \"Add to calendar\",\n \"allDocuments\": \"All documents\",\n \"analyzeChat\": \"Analyze conversation\",\n \"apply\": \"Apply\",\n \"ask\": \"Ask\",\n \"attachFile\": \"Attach a file\",\n \"back\": \"Back\",\n \"backToAgent\": \"Back to agent\",\n \"backToDocuments\": \"Back to documents\",\n \"backToHome\": \"Back to home\",\n \"backToSignIn\": \"Back to sign in\",\n \"ban\": \"Ban user\",\n \"blockChat\": \"Block conversation\",\n \"cancel\": \"Cancel\",\n \"cancelInvitation\": \"Cancel invitation\",\n \"change\": \"Change\",\n \"changeAgent\": \"Change agent\",\n \"changeRole\": \"Change role\",\n \"check\": \"Check\",\n \"clear\": \"Clear\",\n \"clearSearch\": \"Clear search\",\n \"close\": \"Close\",\n \"closeSidebar\": \"Close sidebar\",\n \"collapse\": \"Collapse\",\n \"compare\": \"Compare\",\n \"connect\": \"Connect\",\n \"continue\": \"Continue\",\n \"copied\": \"Copied\",\n \"copy\": \"Copy\",\n \"crawl\": \"Crawl\",\n \"create\": \"Create\",\n \"createAgent\": \"Create agent\",\n \"createApiKey\": \"Create API key\",\n \"createDocument\": \"Create document\",\n \"createFolder\": \"Create folder\",\n \"createNew\": \"Create new\",\n \"createNewChat\": \"Start a new chat\",\n \"createNotification\": \"Create notification\",\n \"createRevise\": \"Revise answer\",\n \"createSubfolder\": \"Create subfolder\",\n \"deactivate\": \"Deactivate\",\n \"decline\": \"Decline\",\n \"delete\": \"Delete\",\n \"deleteAllMemories\": \"Delete all memories\",\n \"deleteAllNotifications\": \"Delete all notifications\",\n \"deleteFolder\": \"Delete folder\",\n \"deleteMyConversations\": \"Delete my conversations\",\n \"deleteProfile\": \"Delete profile\",\n \"deleteRow\": \"Delete row\",\n \"deselectHint\": \"Press enter to remove\",\n \"disableAutoRefresh\": \"Disable automatic update\",\n \"disconnect\": \"Disconnect\",\n \"embeddingBackToPlatform\": \"Back to the platform\",\n \"embeddingRemove\": \"Remove\",\n \"embeddingUseEndpoint\": \"Use the endpoint\",\n \"modelEndpointConnect\": \"Connect your endpoint\",\n \"dismissRedundancy\": \"Restore to search\",\n \"documentRefreshNow\": \"Update now\",\n \"documentSetRefresh\": \"Set update\",\n \"documentSourceSettings\": \"Sync settings\",\n \"documentSourceSyncNow\": \"Sync now\",\n \"documentSourceUnlink\": \"Unlink\",\n \"download\": \"Download\",\n \"downloadIcs\": \"Download .ics\",\n \"downloadTeamsApp\": \"Download Teams app (.zip)\",\n \"downvote\": \"Not helpful\",\n \"dropFile\": \"Drop file here\",\n \"dropFilesToImport\": \"Drop files to import the documents\",\n \"duplicate\": \"Duplicate\",\n \"edit\": \"Edit\",\n \"editAgent\": \"Edit agent\",\n \"editDocument\": \"Edit document\",\n \"editRevise\": \"Update revised answer\",\n \"editSchema\": \"Edit schema\",\n \"enableAutoRefresh\": \"Enable automatic update\",\n \"expand\": \"Expand\",\n \"export\": \"Export\",\n \"exportMyData\": \"Export my data\",\n \"feedback\": \"I want to make a report\",\n \"foldSidebar\": \"Close sidebar\",\n \"forgetPassword\": \"Forgot your password?\",\n \"generate\": \"Generate\",\n \"generateFromJson\": \"Generate from JSON\",\n \"getDirections\": \"Directions\",\n \"getMoreInfo\": \"More informations\",\n \"goBack\": \"Go back\",\n \"hangUp\": \"End the call\",\n \"impersonate\": \"Impersonate\",\n \"import\": \"Import ({count})\",\n \"importFromCrawler\": \"Import from crawler\",\n \"integrationCheck\": \"Check connection\",\n \"integrationConnectMicrosoft\": \"Connect with Microsoft\",\n \"integrationConnectApp\": \"Connect the app\",\n \"integrationUseOwnApp\": \"Use an app of your own tenant\",\n \"integrationAdvancedSetup\": \"Advanced setup\",\n \"integrationDisconnect\": \"Disconnect\",\n \"integrationReconnect\": \"Reconnect\",\n \"integrationRotateSecret\": \"Replace the client secret\",\n \"invite\": \"Invite\",\n \"inviteMember\": \"Invite member\",\n \"leave\": \"Leave\",\n \"link\": \"Link\",\n \"linkExisting\": \"Link existing\",\n \"linkFromProvider\": \"Link from {provider}\",\n \"loadDefaults\": \"Load defaults\",\n \"manageAgentAccess\": \"Manage agent access\",\n \"manageProfile\": \"Manage your profile\",\n \"markAllAsRead\": \"Mark all as read\",\n \"markAsRead\": \"Mark as read\",\n \"moreActions\": \"Actions\",\n \"moveDown\": \"Move down\",\n \"moveHere\": \"Move here\",\n \"moveToFolder\": \"Move to folder\",\n \"moveUp\": \"Move up\",\n \"mute\": \"Mute the microphone\",\n \"next\": \"Next\",\n \"open\": \"Open\",\n \"openFilters\": \"Open the filters\",\n \"openInGmail\": \"Open in Gmail\",\n \"openInMailApp\": \"Open in mail app\",\n \"openInOutlook\": \"Open in Outlook\",\n \"openInSms\": \"Open in SMS\",\n \"openInTelegram\": \"Open in Telegram\",\n \"openInWhatsApp\": \"Open in WhatsApp\",\n \"openInYahooMail\": \"Open in Yahoo Mail\",\n \"openSettings\": \"Open settings\",\n \"openSidebar\": \"Open sidebar\",\n \"pan\": \"Pan\",\n \"pause\": \"Pause\",\n \"pin\": \"Pin\",\n \"playVoicePreview\": \"Play a sample of this voice\",\n \"prev\": \"Previous\",\n \"previewAsPage\": \"Preview as chat page\",\n \"previewAsWidget\": \"Preview as widget\",\n \"previous\": \"Previous\",\n \"proceed\": \"Proceed\",\n \"profileMenu\": \"Profile, theme and language\",\n \"recoverPassword\": \"Recover password\",\n \"refill\": \"Refill\",\n \"refillHistory\": \"Refill history\",\n \"refresh\": \"Refresh\",\n \"refreshPrices\": \"Refresh prices\",\n \"setPrice\": \"Set the price\",\n \"regenerate\": \"Regenerate\",\n \"remove\": \"Remove\",\n \"removeField\": \"Remove field\",\n \"renameChat\": \"Rename\",\n \"renameFolder\": \"Rename folder\",\n \"reorder\": \"Reorder\",\n \"reprocess\": \"Reprocess\",\n \"resendInvitation\": \"Resend invitation\",\n \"reset\": \"Reset\",\n \"resetPassword\": \"Reset password\",\n \"resize\": \"Resize\",\n \"resume\": \"Resume\",\n \"resumeInPlayground\": \"Resume in playground\",\n \"retry\": \"Retry\",\n \"retryNow\": \"Try again now\",\n \"revoke\": \"Revoke\",\n \"revokeAllOtherSessions\": \"Sign out all\",\n \"revokeAllSessions\": \"Revoke all sessions\",\n \"run\": \"Run\",\n \"save\": \"Save\",\n \"scrollToBottom\": \"Back to bottom\",\n \"searchAllFolders\": \"Search in all folders\",\n \"select\": \"Select\",\n \"selectHint\": \"Press enter to select\",\n \"selected\": \"Selected\",\n \"send\": \"Send\",\n \"sendLink\": \"Send link\",\n \"share\": \"Share\",\n \"shareDocumentWithAgents\": \"Share with other agents\",\n \"showLess\": \"Show less\",\n \"showMore\": \"View more {count}\",\n \"signIn\": \"Sign in\",\n \"signInWithSocialProvider\": \"Sign in with {provider}\",\n \"signOut\": \"Sign out\",\n \"signUp\": \"Sign up\",\n \"signUpWithSocialProvider\": \"Sign up with {provider}\",\n \"startNewChat\": \"Start a new chat\",\n \"stop\": \"Stop\",\n \"stopImpersonation\": \"Stop impersonation\",\n \"stopVoicePreview\": \"Stop the sample\",\n \"submit\": \"Submit\",\n \"switch\": \"Switch\",\n \"takePhoto\": \"Take a photo\",\n \"talk\": \"Talk\",\n \"testIntegration\": \"Test connection\",\n \"toggleIntegration\": \"Enable/Disable\",\n \"toggleTheme\": \"Change theme\",\n \"unban\": \"Unban user\",\n \"unblockChat\": \"Unblock conversation\",\n \"unfoldSidebar\": \"Open sidebar\",\n \"unlinkDocument\": \"Unlink from agent\",\n \"unmute\": \"Unmute the microphone\",\n \"unpin\": \"Unpin\",\n \"update\": \"Update\",\n \"upvote\": \"Helpful\",\n \"useColorsForAgentHeader\": \"Use color for header\",\n \"view\": \"View\",\n \"viewAgentTree\": \"View tree\",\n \"viewAll\": \"View all\",\n \"viewChat\": \"View the chat\",\n \"viewDetails\": \"View details\",\n \"viewDocument\": \"View the document\",\n \"viewDocuments\": \"View the documents\",\n \"viewProfile\": \"View profile\",\n \"viewRecentChats\": \"View recent chats\",\n \"welcomePopup\": \"Show welcome popup\",\n \"zoomIn\": \"Zoom In\",\n \"zoomOut\": \"Zoom out\",\n \"createWebSource\": \"Create source\",\n \"webSourceConfirmRemoval\": \"Remove the {count} pages\"\n },\n \"agent\": {\n \"channel\": {\n \"app\": \"App\",\n \"frontoffice\": \"Frontoffice\",\n \"widget\": \"Widget\"\n },\n \"reasoning\": {\n \"high\": \"High\",\n \"low\": \"Low\",\n \"medium\": \"Medium\",\n \"off\": \"Off\"\n },\n \"reasoningSummary\": {\n \"auto\": \"Auto\",\n \"concise\": \"Concise\",\n \"detailed\": \"Detailed\"\n },\n \"searchMode\": {\n \"balanced\": \"Balanced (vector + keywords)\",\n \"keyword\": \"Keyword (full-text only)\",\n \"semantic\": \"Semantic (vector only)\"\n },\n \"status\": {\n \"active\": \"Active\",\n \"draft\": \"Draft\",\n \"inactive\": \"Inactive\"\n },\n \"tool\": {\n \"fetchTeamsChannelHistory\": \"Teams channel history\",\n \"geocode\": \"Geocoding\",\n \"getWeather\": \"Weather data\",\n \"querySpreadsheet\": \"Spreadsheet queries\",\n \"readDocumentFile\": \"Read document files\",\n \"requestGeolocation\": \"Geolocation\",\n \"retrieveRevisedAnswers\": \"Verified answers\",\n \"runWorker\": \"Parallel workers\",\n \"scheduleWakeup\": \"Repeated checks\",\n \"searchInKnowledgeBase\": \"Knowledge base\",\n \"searchInUserFiles\": \"User files\",\n \"showArtifact\": \"Artifacts\",\n \"showCalendarEvent\": \"Calendar event\",\n \"showComparison\": \"Comparison\",\n \"showContactForm\": \"Contact form\",\n \"showDiagram\": \"Diagram or chart\",\n \"showEmail\": \"Email\",\n \"showForm\": \"Multi-step Form\",\n \"showImageGallery\": \"Image gallery\",\n \"showLocation\": \"Interactive map\",\n \"showMessage\": \"Messaging\",\n \"showMultipleChoice\": \"Multiple choice\",\n \"showProductList\": \"Product catalog\",\n \"showQrCode\": \"QR code\",\n \"showSources\": \"Sources & references\",\n \"showSuggestedReply\": \"Suggested replies\",\n \"showVideo\": \"Video\",\n \"showWeather\": \"Weather widget\",\n \"showWebPages\": \"Web page links\",\n \"spreadsheet\": \"Spreadsheets\",\n \"useAllUserFiles\": \"Use all user files\",\n \"useAllUserKb\": \"Use the entire user KB\",\n \"userMemory\": \"User memory\"\n },\n \"toolWorkingSetMode\": {\n \"active\": \"Active\",\n \"off\": \"Off\",\n \"shadow\": \"Shadow (record only)\"\n },\n \"visibility\": {\n \"organization\": \"Organization\",\n \"private\": \"Private\",\n \"public\": \"Public\"\n }\n },\n \"agentApiToolStatus\": {\n \"active\": \"Active\",\n \"inactive\": \"Inactive\"\n },\n \"agentType\": {\n \"chat\": \"Chat\",\n \"reasoning\": \"Reasoning\"\n },\n \"auth\": {\n \"genericError\": \"An error occurred. Try again.\",\n \"haveAccount\": \"Already have an account?\",\n \"noAccount\": \"Don't have an account?\",\n \"popupBlocked\": \"Pop-up blocked. Allow pop-ups for this site and try again.\",\n \"resetSent\": \"If an account exists with this email, you will receive a password reset link.\",\n \"resetSentTitle\": \"Check your email\",\n \"resetTitle\": \"Reset your password\",\n \"signInTitle\": \"Sign in to your account\",\n \"signUpSuccessTitle\": \"Account created!\",\n \"signUpTitle\": \"Create your account\",\n \"verifyEmail\": \"We've sent a verification email to your address. Check your inbox.\"\n },\n \"branding\": {\n \"asset\": {\n \"emailBanner\": \"Email banner\",\n \"emailLogo\": \"Email logo\",\n \"logoDark\": \"Logo on a dark background\",\n \"logoLight\": \"Logo on a light background\",\n \"mark\": \"Mark\"\n },\n \"assetHint\": {\n \"emailBanner\": \"Under the email logo, up to {width} px wide.\",\n \"emailLogo\": \"At the top of every email.\",\n \"logoDark\": \"Dark theme. Without it, the light logo.\",\n \"logoLight\": \"Sidebar and header.\",\n \"mark\": \"Square: sign-in card, folded sidebar and app icons.\"\n },\n \"bundledImage\": \"Default image\",\n \"color\": {\n \"accent\": \"Accent\",\n \"brand\": \"Brand\",\n \"info\": \"Info\"\n },\n \"colors\": \"Colors\",\n \"colorsHint\": \"The light and the dark theme each have their own palette: a dark theme usually wants a lighter brand. Text on these colors stays readable whatever you pick.\",\n \"darkLogo\": \"The dark logo\",\n \"images\": \"Images\",\n \"imagesHint\": \"SVG, PNG or WebP, up to {maxSize} KB and {maxSide} pixels per side. Each preview shows the image on both themes: check that it reads on the dark one too. The email images are converted to PNG, or to JPEG when they have no transparency, since many mail clients show neither SVG nor WebP.\",\n \"lightLogo\": \"The light logo\",\n \"loadFailed\": \"The theme of this deployment could not be read.\",\n \"markBesideName\": \"The mark beside the name\",\n \"mode\": \"Light and dark\",\n \"modeDark\": \"Always dark\",\n \"modeHint\": \"A fixed theme hides the users' switch.\",\n \"modeLight\": \"Always light\",\n \"modeSystem\": \"User's choice\",\n \"neutralMark\": \"The initial of the name\",\n \"noImage\": \"No image\",\n \"notRuntimeContent\": \"The theme can only be viewed here: this frontend is built without VITE_RUNTIME_BRANDING and keeps its compile-time look, while a saved theme would still reach the emails and the chat widget of every organization.\",\n \"notRuntimeTitle\": \"This build does not read the theme\",\n \"palette\": {\n \"dark\": \"Dark theme\",\n \"light\": \"Light theme\"\n },\n \"removeImage\": \"Remove the image\",\n \"replaceImage\": \"Replace\",\n \"saveAndReload\": \"Save and reload\",\n \"saveFailed\": \"Theme not saved\",\n \"saveFailedHint\": \"The theme could not be saved. Try again in a moment.\",\n \"savedMeanwhile\": \"Someone else saved the theme\",\n \"savedMeanwhileHint\": \"The theme changed after this page opened, and saving would undo those changes. Reload the page to see them, then make yours again.\",\n \"text\": {\n \"companyName\": \"Company name\",\n \"description\": \"Description\",\n \"productName\": \"Product name\",\n \"productTagline\": \"Tagline\",\n \"shortName\": \"Short name\"\n },\n \"textHint\": {\n \"companyName\": \"Email footer. Empty: no footer.\",\n \"description\": \"One sentence about the product: the description of the installed app.\",\n \"productName\": \"Browser tab, installed app, emails and Teams app. Once you change it, an image you do not upload is no longer Eight Wave's: the initial of the name, or none in the emails.\",\n \"productTagline\": \"Above the short name. Empty: none.\",\n \"shortName\": \"The strong line of the logo, and the name under the icon of the installed app.\"\n },\n \"texts\": \"Names\",\n \"unsupportedType\": \"Use an SVG, PNG or WebP image.\",\n \"uploadFailed\": \"Image not saved\",\n \"uploadFailedHint\": \"The image could not be uploaded. Try again, or check its format and size.\",\n \"uploadImage\": \"Upload\",\n \"useBundledImage\": \"Use the default image\"\n },\n \"browserEngine\": {\n \"fetch\": \"Fetch · static HTML\",\n \"puppeteer\": \"Puppeteer · local browser\",\n \"remote\": \"Remote · remote browser\"\n },\n \"channelDescription\": {\n \"teams\": \"Publish this agent as a bot inside Microsoft Teams.\",\n \"whatsapp\": \"Let users chat with this agent on WhatsApp via the Meta Cloud API.\"\n },\n \"channelGuide\": {\n \"docs\": \"Open the official documentation\",\n \"intro\": \"Follow the steps in order. Open each linked service in a new browser tab and copy the values into the form on the left. Don't close this window until you've finished.\",\n \"teams\": {\n \"step1\": \"Sign in to the Microsoft Azure portal with your work or school account.\",\n \"step2\": \"Create a new «Azure Bot» resource and give it a name. When asked, choose whether it's Single or Multi-tenant: remember your choice for step 5.\",\n \"step3\": \"Open the bot you just created → «Configuration», copy the «Microsoft App ID» and paste it into the App ID field.\",\n \"step4\": \"Next to the Microsoft App ID, click «Manage password»: this opens the app's registration in Microsoft Entra ID (a different page from the bot). There, under «Certificates & secrets», create a new client secret and copy its «Value» (not the Secret ID) into the App password field. Copy it right away: it's shown only once.\",\n \"step5\": \"Set the App type to match what you chose in step 2. For Single tenant, copy the «Directory (tenant) ID» from the app registration «Overview» page into the Tenant ID field.\",\n \"step6\": \"Back in the bot → «Configuration», set the «Messaging endpoint» to the Webhook URL shown above and save.\",\n \"step7\": \"Open the bot → «Channels» and add the «Microsoft Teams» channel.\",\n \"step8\": \"Save the form on the left, then use the card menu (⋯ → Download Teams app) to get the package and upload it in Teams from «Apps → Manage your apps → Upload an app».\"\n },\n \"title\": \"Setup guide\",\n \"whatsapp\": {\n \"step1\": \"Open the Meta for Developers portal and sign in with your Facebook account (create one if you don't have it yet).\",\n \"step2\": \"Create a new app: choose the «Business» type, give it a name, then add the «WhatsApp» product to it.\",\n \"step3\": \"Open WhatsApp → «API Setup». Copy the «Phone number ID» (a long number, not the phone number itself) and paste it into the Phone number ID field.\",\n \"step4\": \"Still in «API Setup», generate an access token. For a connection that doesn't expire, create a «System User» token with the whatsapp_business_messaging permission, then paste it into the Access token field.\",\n \"step5\": \"Open App settings → «Basic», click «Show» next to «App secret», copy it and paste it into the App secret field. This lets us verify that incoming messages really come from Meta.\",\n \"step6\": \"We've already filled the «Verify token» field with a ready-to-use value (use «Regenerate» for a new one). You'll paste this exact value into Meta in the next step.\",\n \"step7\": \"Go back to WhatsApp → «Configuration» and edit the webhook: paste the Webhook URL shown above and the same Verify token, save, then subscribe to the «messages» event.\",\n \"step8\": \"Save the form on the left. Send a message to your WhatsApp number to check that the agent replies.\"\n }\n },\n \"chartLabel\": {\n \"2g\": \"2G\",\n \"3g\": \"3G\",\n \"4g\": \"4G\",\n \"Africa\": \"Africa\",\n \"America\": \"America\",\n \"Asia\": \"Asia\",\n \"Australia\": \"Australia\",\n \"Europe\": \"Europe\",\n \"Pacific\": \"Pacific\",\n \"abusive\": \"Abusive\",\n \"aggressive\": \"Aggressive\",\n \"api\": \"API\",\n \"critical\": \"Critical\",\n \"dark\": \"Dark\",\n \"data_leak\": \"Data leak\",\n \"degrading\": \"Degrading\",\n \"desktop\": \"Desktop\",\n \"direct\": \"Direct\",\n \"disengaged\": \"Disengaged\",\n \"empty_reply\": \"Empty reply\",\n \"endpoint\": \"Endpoint\",\n \"excited\": \"Excited\",\n \"failed_action\": \"Failed action\",\n \"false_success\": \"False success\",\n \"frustrated\": \"Frustrated\",\n \"goal_met\": \"Goal met\",\n \"goal_not_met\": \"Goal not met\",\n \"group\": \"Group\",\n \"hallucination\": \"Hallucination\",\n \"high\": \"High\",\n \"impatient\": \"Impatient\",\n \"improving\": \"Improving\",\n \"inappropriate_tone\": \"Inappropriate tone\",\n \"light\": \"Light\",\n \"low\": \"Low\",\n \"medium\": \"Medium\",\n \"mobile\": \"Mobile\",\n \"negative\": \"Negative\",\n \"neutral\": \"Neutral\",\n \"off_brand\": \"Off-brand\",\n \"other\": \"Other\",\n \"polite\": \"Polite\",\n \"positive\": \"Positive\",\n \"reasoning\": \"Reasoning\",\n \"refusal_loop\": \"Refusal loop\",\n \"repetition\": \"Repetition\",\n \"slow-2g\": \"Slow 2G\",\n \"stable\": \"Stable\",\n \"stuck_flow\": \"Stuck flow\",\n \"tablet\": \"Tablet\",\n \"teams\": \"Teams\",\n \"unanalyzed\": \"Unanalyzed\",\n \"unclear\": \"Unclear\",\n \"unknown\": \"Unknown\",\n \"voice\": \"Voice\",\n \"web\": \"Web\",\n \"whatsapp\": \"WhatsApp\"\n },\n \"confirmDescription\": {\n \"documentRefreshTriggerOff\": \"Otherwise the next reading would overwrite what you wrote. You can turn it back on from the update card.\",\n \"embeddingBackToPlatform\": \"The knowledge base and the memories are embedded again with the platform model, from the text already stored: nothing is converted again. Until it is done the searches find only what is already back.\",\n \"embeddingBackToPlatformSameFamily\": \"Your endpoint computes the same model as the platform, so the vectors stay as they are and nothing is computed again: from now on the platform AI gateway computes them.\",\n \"embeddingRemove\": \"Without the platform AI gateway nothing else computes the vectors: the knowledge base, the corrected answers, the memories and the document processing stop until you activate an embedding model on your endpoint again. If the platform switches the gateway back on, they start again on its vectors by themselves.\",\n \"endpointOffWithEmbedding\": \"Besides its models, the knowledge base, the corrected answers, the memories and the document processing of every agent stop, until you switch it back on.\",\n \"integrationDisconnect\": \"They stay where they are with their documents, editable like any other, and stop updating. To sync them again you will have to connect the provider and link them once more.\",\n \"integrationRemove\": \"The stored credentials are deleted and the syncs towards this provider stop. To resume them you will have to configure it again.\",\n \"lastModelOff\": \"No other model of this organization is on: nothing can be picked for a new agent or as a default any more, and the agents on these models will answer with the default model.\",\n \"modelProviderDelete\": \"The saved models and their prices will be lost. Deletion is not possible while an agent uses one of its models, nor while the endpoint computes the embedding: move those agents to another model first, and remove the embedding in the Embedding section.\",\n \"modelRemove\": \"The agents using this model will stop answering until you move them to another model.\",\n \"revokeVoiceApiKey\": \"This key answers the voice channel of an agent: its voice stops working until the voice is turned off and on again in the agent settings.\"\n },\n \"confirmTitle\": {\n \"deleteAgent\": \"Delete this agent?\",\n \"deleteAllMemories\": \"Delete every memory of this user?\",\n \"deleteBulkDocument\": \"Delete the selected documents?\",\n \"deleteDocument\": \"Delete this document?\",\n \"deleteFolder\": \"Delete this folder?\",\n \"deleteMyConversations\": \"Delete all your conversations?\",\n \"deleteSpreadsheet\": \"Delete this spreadsheet?\",\n \"documentRefreshTriggerOff\": \"Turn the automatic update off?\",\n \"embeddingBackToPlatform\": \"Compute the vectors on the platform again?\",\n \"embeddingBackToPlatformSameFamily\": \"Compute the vectors on the platform?\",\n \"embeddingRemove\": \"Remove the embedding from the endpoint?\",\n \"endpointOffWithEmbedding\": \"Switch off the endpoint that computes the vectors?\",\n \"excludeUserFile\": \"Remove this file from your files?\",\n \"integrationDisconnect\": \"Remove this connection?\",\n \"lastModelOff\": \"Switch off the last model?\",\n \"modelProviderDelete\": \"Delete the endpoint?\",\n \"modelRemove\": \"Remove {id}?\",\n \"unlinkAgent\": \"Remove this agent from the document?\",\n \"unlinkDocument\": \"Unlink this document from the agent?\",\n \"unlinkLastAgentDelete\": \"Remove the last agent from this document?\",\n \"unlinkSyncedFolder\": \"Unlink this folder?\",\n \"webSourceConfirmRemoval\": \"Remove {count} pages?\",\n \"unlinkWebSource\": \"Unlink the source?\"\n },\n \"conversationAnalysis\": {\n \"abuseCategory\": {\n \"data_extraction\": \"Data extraction\",\n \"harassment\": \"Harassment\",\n \"hate_speech\": \"Hate speech\",\n \"impersonation\": \"Impersonation\",\n \"off_topic_persistent\": \"Off-topic\",\n \"prompt_injection\": \"Prompt injection\",\n \"self_harm\": \"Self harm\",\n \"sexual_content\": \"Sexual content\",\n \"spam\": \"Spam\",\n \"violence\": \"Violence\"\n },\n \"confidence\": {\n \"high\": \"High\",\n \"low\": \"Low\",\n \"medium\": \"Medium\"\n },\n \"engagement\": {\n \"disengaged\": \"Disengaged\",\n \"high\": \"High\",\n \"low\": \"Low\",\n \"medium\": \"Medium\"\n },\n \"label\": {\n \"abuseDetected\": \"Abuse\",\n \"conversationSentiment\": \"Sentiment\",\n \"goalMet\": \"Goal met\",\n \"goalNotMet\": \"Goal not met\",\n \"llmIssueDetected\": \"LLM issue\",\n \"riskScore\": \"Risk score\",\n \"userEngagement\": \"Engagement\",\n \"userTone\": \"Tone\"\n },\n \"llmIssue\": {\n \"data_leak\": \"Data leak\",\n \"empty_reply\": \"Empty reply\",\n \"failed_action\": \"Failed action\",\n \"false_success\": \"False success\",\n \"hallucination\": \"Hallucination\",\n \"inappropriate_tone\": \"Inappropriate tone\",\n \"off_brand\": \"Off-brand\",\n \"refusal_loop\": \"Refusal loop\",\n \"repetition\": \"Repetition\",\n \"stuck_flow\": \"Stuck flow\"\n },\n \"sentiment\": {\n \"excited\": \"Excited\",\n \"frustrated\": \"Frustrated\",\n \"negative\": \"Negative\",\n \"neutral\": \"Neutral\",\n \"positive\": \"Positive\"\n },\n \"sentimentTrend\": {\n \"degrading\": \"Degrading\",\n \"improving\": \"Improving\",\n \"stable\": \"Stable\"\n },\n \"title\": \"Conversation analysis\",\n \"tone\": {\n \"abusive\": \"Abusive\",\n \"aggressive\": \"Aggressive\",\n \"impatient\": \"Impatient\",\n \"neutral\": \"Neutral\",\n \"polite\": \"Polite\"\n },\n \"trigger\": {\n \"agent_request\": \"On request\",\n \"manual\": \"Manual\",\n \"summary_cycle\": \"Automatic\"\n }\n },\n \"crawlMode\": {\n \"depth\": \"Depth crawling\",\n \"sitemap\": \"XML sitemap\"\n },\n \"dataProtection\": {\n \"downloadPdf\": \"Download PDF\"\n },\n \"diagram\": {\n \"classDiagram\": \"Class diagram\",\n \"erDiagram\": \"ER diagram\",\n \"flowchart\": \"Flowchart\",\n \"graph\": \"Graph\",\n \"sequenceDiagram\": \"Sequence diagram\",\n \"stateDiagram\": \"State diagram\",\n \"xychart\": \"XY chart\"\n },\n \"documentMetadata\": {\n \"affectedDocumentsStat\": \"Affected documents\",\n \"analyzedPages\": \"analyze {pages} on\",\n \"chunkSimilarTo\": \"{score}% similar to content in “{docName}”\",\n \"compare\": \"Compare\",\n \"compareChunks\": \"Semantic chunk comparison\",\n \"filterOnlyRedundantLabel\": \"Show only documents with unmanaged redundant chunks\",\n \"filterRedundant\": \"Show redundant\",\n \"hasRedundant\": \"This document contains redundant information with other files\",\n \"isRedundant\": \"Redundant\",\n \"openInProvider\": \"Open in {provider}\",\n \"originalChunk\": \"Original chunk (authoritative)\",\n \"pageCount\": \"no pages | {n} page | {n} pages\",\n \"readingTime\": \"{minutes} min\",\n \"redundancyAccepted\": \"Confirmed\",\n \"redundancyDismissed\": \"Restored\",\n \"redundancyExplainer\": \"These blocks repeat content the agent already finds in another document, or earlier in this one, and its search skips them. Confirm to leave them out, or restore them to put them back in search, in every agent.\",\n \"redundantChunk\": \"Redundant chunk (duplicate)\",\n \"redundantChunks\": \"no redundant chunks | {n} redundant chunk ({percent}%) | {n} redundant chunks ({percent}%)\",\n \"redundantChunksStat\": \"Redundant chunks\",\n \"redundantWarningMessage\": \"Some documents contain duplicate or redundant semantic chunks. They are automatically skipped during query retrieval to clean and optimize RAG context windows.\",\n \"redundantWarningServerMessage\": \"There are {chunks} unmanaged redundant semantic chunks distributed across {docs} documents for this agent (out of {totalChunks} chunks and {totalDocs} documents).\",\n \"redundantWarningTitle\": \"Duplicate or redundant content detected inside Knowledge Base\",\n \"redundantWith\": \"Redundant with chunk {chunkId} of {docName} ({score}% semantic similarity)\",\n \"showAll\": \"Show all\",\n \"thisDocument\": \"This document\",\n \"viewByChunks\": \"View by chunks\",\n \"viewDocument\": \"Document\",\n \"viewOriginal\": \"View original\",\n \"wordCount\": \"{count} words\"\n },\n \"documentFailure\": {\n \"audio-no-speech\": \"No speech could be heard in the recording\",\n \"audio-too-large\": \"The recording is over {limit} MB, the most that is transcribed: upload a shorter or more compressed copy\",\n \"credit-exhausted\": \"No credit left: new documents are not processed\",\n \"endpoint-off\": \"The organization's own AI endpoint is switched off\",\n \"file-protected\": \"The file is password protected: upload a copy without the password\",\n \"file-type-unsupported\": \"This type of file cannot be read\",\n \"file-unreadable\": \"The file is damaged, or not in the format its name says\",\n \"format-unsupported\": \"The endpoint's model cannot read this format with the AI description: use the normal conversion\",\n \"gateway-disabled\": \"It needs the platform AI gateway, which this organization does not use\",\n \"model-unavailable\": \"The model chosen for documents is not switched on for this organization\",\n \"no-model\": \"No model is set for the AI of documents\",\n \"page-too-large\": \"The page is too heavy to be read, even without its scripts and inline graphics\",\n \"source-status\": \"The source page answered HTTP {status}\",\n \"spreadsheet-macros\": \"The workbook contains macros: save it as an .xlsx without macros\",\n \"spreadsheet-no-table\": \"No sheet has a header row in its first thirty rows, so there is no table to query\",\n \"spreadsheet-protected\": \"The file is password protected, or an old .xls renamed to .xlsx: upload an unprotected .xlsx copy\",\n \"spreadsheet-too-large\": \"Too large to be read as tables: its content takes more than {limit} MB\",\n \"spreadsheet-unreadable\": \"The file is not a valid .xlsx workbook\",\n \"transcription-off\": \"Audio is transcribed on the platform AI gateway, which this organization does not use\"\n },\n \"documentRefreshResult\": {\n \"failed\": \"Failed\",\n \"gone\": \"Page gone\",\n \"shrunk\": \"Refused\",\n \"unchanged\": \"Unchanged\",\n \"updated\": \"Updated\"\n },\n \"documentStatus\": {\n \"failed\": \"Failed\",\n \"pending\": \"Pending\",\n \"processing\": \"Processing\",\n \"success\": \"Converted\"\n },\n \"searchStatus\": {\n \"indexed\": {\n \"label\": \"Available\",\n \"title\": \"Available for the agent's search\"\n },\n \"pending\": {\n \"label\": \"Preparing\",\n \"title\": \"On its way to the agent's search index\"\n },\n \"failed\": {\n \"label\": \"Not indexed\",\n \"title\": \"The search index did not take the document: reprocess it to try again\"\n },\n \"unavailable\": {\n \"label\": \"Unavailable\",\n \"title\": \"The organization cannot compute embeddings: the document stays out of the search until the gateway or the organization's endpoint is back on\"\n },\n \"empty\": {\n \"label\": \"No content\",\n \"title\": \"The document has no text to search\"\n }\n },\n \"documentSyncCounter\": {\n \"scanned\": \"files checked\",\n \"added\": \"added\",\n \"updated\": \"updated\",\n \"renamedOrMoved\": \"renamed or moved\",\n \"removed\": \"removed\",\n \"unchanged\": \"unchanged\",\n \"skippedUnsupported\": \"unsupported formats\",\n \"skippedTooLarge\": \"too large\",\n \"failed\": \"failed\",\n \"scannedPages\": \"pages checked\",\n \"capped\": \"left for the next check\"\n },\n \"documentSyncInterval\": {\n \"daily\": \"Every day\",\n \"hourly\": \"Every hour\",\n \"monthly\": \"Every month\",\n \"weekly\": \"Every week\"\n },\n \"documentSyncStatus\": {\n \"pending\": \"First import in progress\",\n \"syncing\": \"Syncing\",\n \"idle\": \"Up to date\",\n \"error\": \"Error\"\n },\n \"documentTrash\": {\n \"back\": \"Back to documents\",\n \"columnDeletedAt\": \"Deleted on\",\n \"columnDeletedBy\": \"Deleted by\",\n \"columnPurgedIn\": \"Deleted for good in\",\n \"daysLeft\": \"At the next cleanup | {count} day | {count} days\",\n \"empty\": \"The trash is empty.\",\n \"emptyConsequence\": \"The original files and the extracted text are destroyed: they can no longer be restored or downloaded. A document shared with other agents leaves their trash too.\",\n \"emptyQuestion\": \"The document in the trash is deleted permanently. | The {count} documents in the trash are deleted permanently.\",\n \"emptySuccess\": \"{count} document deleted permanently. | {count} documents deleted permanently.\",\n \"emptyTitle\": \"Empty the trash?\",\n \"emptyTrash\": \"Empty trash\",\n \"intro\": \"The agent no longer searches the documents in the trash. You can restore them or delete them permanently.\",\n \"introRetention\": \"Each document stays here for {count} day, then it is deleted for good. | Each document stays here for {count} days, then it is deleted for good.\",\n \"openLiveDocument\": \"Open the document in its place\",\n \"purge\": \"Delete permanently\",\n \"purgeConsequence\": \"The original file and the extracted text are destroyed: it can no longer be restored or downloaded.\",\n \"purgeQuestion\": \"\\\"{name}\\\" is deleted permanently.\",\n \"purgeSuccess\": \"Document deleted permanently.\",\n \"purgeTitle\": \"Delete permanently?\",\n \"refusalAgentGone\": \"Every agent this document belonged to has been deleted, so there is nowhere to restore it. It can only be deleted permanently.\",\n \"refusalIdentityTaken\": \"The same source has imported this file again: restoring it would make two copies of one document. Use the one already in the knowledge base.\",\n \"restore\": \"Restore\",\n \"restoreCredits\": \"Indexing computes the embeddings of the document again and uses credits.\",\n \"restoreFailed\": \"The document could not be restored.\",\n \"restoreIndexing\": \"It becomes searchable again only once it is indexed, which happens in the background.\",\n \"restoreQuestion\": \"\\\"{name}\\\" goes back to the knowledge base of the agent, in its folder.\",\n \"restoreSuccess\": \"Document restored. It becomes searchable once it is indexed.\",\n \"restoreSuccessRoot\": \"Document restored at the root, because its folder no longer exists. It becomes searchable once it is indexed.\",\n \"restoreTitle\": \"Restore the document?\",\n \"toggle\": \"Trash\",\n \"toggleHint\": \"Documents deleted from this agent, which can still be restored\"\n },\n \"documentType\": {\n \"file\": \"File\",\n \"plain-text\": \"Plain text\",\n \"revised-answer\": \"Revised answer\",\n \"url\": \"Web page\"\n },\n \"errors\": {\n \"ACCOUNT_TEMPORARILY_LOCKED\": \"Too many wrong codes: verification is locked for 15 minutes.\",\n \"BANNED_USER\": \"This account has been banned. Contact support if you think this is a mistake.\",\n \"CREDENTIAL_ACCOUNT_NOT_FOUND\": \"This account signs in with Google or Microsoft and has no password to change\",\n \"EMAIL_CODE_NOT_AVAILABLE\": \"This account uses an authenticator app: enter its code or a backup code.\",\n \"TWO_FACTOR_REQUIRED\": \"An organization of this account requires two-step verification: set it up to continue\",\n \"PASSKEY_PASSWORD_REQUIRED\": \"Confirm your password to add a passkey\",\n \"PASSKEY_RECENT_SIGN_IN_REQUIRED\": \"Sign out and sign in again to add a passkey\",\n \"PASSKEY_NOT_ALLOWED_FOR_SESSION\": \"Passkeys can be added only by the account owner, signed in\",\n \"PASSKEY_USER_VERIFICATION_REQUIRED\": \"This passkey did not ask for a PIN, a fingerprint or a face: set one up on the device and try again\",\n \"PASSKEY_NOT_FOUND\": \"This passkey is not linked to any account: sign in with your password\",\n \"AUTHENTICATION_FAILED\": \"The passkey could not be verified: try again\",\n \"FAILED_TO_VERIFY_REGISTRATION\": \"The passkey could not be saved: try again\",\n \"CHALLENGE_NOT_FOUND\": \"The request expired: try again\",\n \"EMAIL_NOT_VERIFIED\": \"Verify your email address\",\n \"EMAIL_VERIFICATION_REQUIRED_BEFORE_ACCEPTING_OR_REJECTING_INVITATION\": \"Verify your email address before answering the invitation\",\n \"FAILED_TO_UNLINK_LAST_ACCOUNT\": \"You cannot unlink your only sign-in method\",\n \"INVALID_BACKUP_CODE\": \"The backup code is not valid or has already been used.\",\n \"INVALID_CODE\": \"The code is not valid. Try again.\",\n \"INVALID_EMAIL_OR_PASSWORD\": \"Invalid email or password\",\n \"INVALID_PASSWORD\": \"The password is not correct\",\n \"INVALID_TOKEN\": \"This link has expired or has already been used. Request a new one.\",\n \"INVALID_TWO_FACTOR_COOKIE\": \"The verification has expired. Sign in again.\",\n \"INVITATION_LIMIT_REACHED\": \"This organization has reached its invitation limit\",\n \"INVITATION_NOT_FOUND\": \"The invitation is no longer valid: it may have expired, been cancelled or already been answered\",\n \"INVITER_IS_NO_LONGER_A_MEMBER_OF_THE_ORGANIZATION\": \"The person who invited you is no longer in the organization, so the invitation is no longer valid\",\n \"KEY_NOT_FOUND\": \"The API key no longer exists: it may have already been deleted\",\n \"MEMBER_NOT_FOUND\": \"Member not found in the organization\",\n \"NOT_ALLOWED\": \"You do not have permission to do this\",\n \"ORGANIZATION_ALREADY_EXISTS\": \"An organization with this slug already exists\",\n \"ORGANIZATION_MEMBERSHIP_LIMIT_REACHED\": \"This organization has reached its member limit\",\n \"ORGANIZATION_NOT_FOUND\": \"The organization no longer exists\",\n \"ORGANIZATION_SLUG_ALREADY_TAKEN\": \"This slug is already used by another organization\",\n \"OTP_HAS_EXPIRED\": \"The code has expired. Ask for a new one.\",\n \"RATE_LIMIT_EXCEEDED\": \"Rate limit exceeded\",\n \"SESSION_NOT_FRESH\": \"For your security, sign in again and repeat the operation\",\n \"SOCIAL_ACCOUNT_ALREADY_LINKED\": \"This account is already linked to another user\",\n \"TOO_MANY_ATTEMPTS_REQUEST_NEW_CODE\": \"Too many attempts. Sign in again to get a new code.\",\n \"TOO_MANY_REQUESTS\": \"Too many attempts. Wait a few minutes and try again.\",\n \"TOTP_ALREADY_ENABLED\": \"Two-step verification with an app is already on.\",\n \"TOTP_NOT_ENABLED\": \"No authenticator app is set up for this account.\",\n \"TWO_FACTOR_REQUIRED_TO_ENFORCE\": \"Turn on two-step verification on your own account before requiring it.\",\n \"UNAUTHORIZED_SESSION\": \"Your session has expired. Sign in again.\",\n \"USER_ALREADY_EXISTS\": \"An account with this email already exists\",\n \"USER_ALREADY_EXISTS_USE_ANOTHER_EMAIL\": \"An account with this email already exists\",\n \"USER_IS_ALREADY_A_MEMBER_OF_THIS_ORGANIZATION\": \"This user is already a member of the organization\",\n \"USER_IS_ALREADY_INVITED_TO_THIS_ORGANIZATION\": \"This user has already been invited to the organization\",\n \"USER_IS_NOT_A_MEMBER_OF_THE_ORGANIZATION\": \"You are not a member of this organization\",\n \"USER_NOT_FOUND\": \"The user no longer exists\",\n \"YOU_ARE_NOT_A_MEMBER_OF_THIS_ORGANIZATION\": \"You are not a member of this organization\",\n \"YOU_ARE_NOT_ALLOWED_TO_MANAGE_TWO_FACTOR\": \"Only a system administrator, signed in as themselves, can do this.\",\n \"YOU_ARE_NOT_THE_RECIPIENT_OF_THE_INVITATION\": \"This invitation was sent to another email address\",\n \"YOU_CANNOT_BAN_YOURSELF\": \"You cannot ban yourself\",\n \"YOU_CANNOT_IMPERSONATE_ADMINS\": \"You cannot impersonate an administrator\",\n \"YOU_CANNOT_LEAVE_THE_ORGANIZATION_AS_THE_ONLY_OWNER\": \"You are the only owner: make someone else an owner before leaving\",\n \"YOU_CANNOT_LEAVE_THE_ORGANIZATION_WITHOUT_AN_OWNER\": \"The organization needs at least one owner\",\n \"YOU_CANNOT_MANAGE_YOUR_OWN_TWO_FACTOR\": \"Your own two-step verification and passkeys are managed from your profile.\",\n \"YOU_CANNOT_REMOVE_YOURSELF\": \"You cannot remove yourself\",\n \"YOU_HAVE_REACHED_THE_MAXIMUM_NUMBER_OF_ORGANIZATIONS\": \"You have reached the maximum number of organizations\",\n \"fileAlreadyImported\": \"This file has already been imported as a document\",\n \"invalidToken\": \"Request no longer valid\",\n \"passwordsDoNotMatch\": \"Passwords do not coincide\",\n \"privateNetworkRequired\": \"Confirm that this endpoint is on a private network\",\n \"refreshIntervalUrlOnly\": \"Only web pages can update themselves\",\n \"required\": \"Required\",\n \"slugAlreadyExists\": \"The slug already exists\",\n \"slugFormat\": \"The slug can only contain lowercase letters, numbers, and hyphens (-)\",\n \"urlAlreadyImported\": \"This URL has already been imported as a document\",\n \"syncSourceUrlOnly\": \"Only a web page can belong to a web source\"\n },\n \"externalProvider\": {\n \"domain\": \"Email domain\",\n \"github\": \"GitHub\",\n \"google\": \"Google\",\n \"microsoft\": \"Microsoft Entra\"\n },\n \"feature\": {\n \"apiTools\": \"API tools\",\n \"byok\": \"Own models (BYOK)\",\n \"endpoints\": \"API endpoints\",\n \"fileUpload\": \"File upload\",\n \"gateway\": \"Platform models\",\n \"group\": {\n \"channels\": \"Channels and publishing\",\n \"models\": \"Models\",\n \"tools\": \"Tools and data\"\n },\n \"hubspot\": \"HubSpot\",\n \"leads\": \"Contacts\",\n \"legend\": \"Features\",\n \"mcpServers\": \"MCP servers\",\n \"proactiveAutomations\": \"Proactive automations\",\n \"salesforce\": \"Salesforce\",\n \"sharepoint\": \"SharePoint\",\n \"subAgents\": \"Sub-agents\",\n \"teams\": \"Microsoft Teams\",\n \"voice\": \"Voice conversation\",\n \"whatsapp\": \"WhatsApp\"\n },\n \"gdprRetention\": {\n \"anonymousLabel\": \"Anonymous user erasure\",\n \"chatLabel\": \"Chat anonymization\",\n \"defaultDays\": \"Default: {count} day. | Default: {count} days.\",\n \"defaultDisabled\": \"Default: disabled.\",\n \"legend\": \"Data retention (GDPR)\",\n \"trashLabel\": \"Trash emptying\",\n \"unitDays\": \"days\"\n },\n \"help\": {\n \"aiDescription\": \"An AI model analyzes the file and generates a structural description of the content. Useful for documents with tables, charts, or complex layouts.\",\n \"aiDescriptionModel\": \"The AI model used to generate the description.\",\n \"aiDescriptionPrompt\": \"Prompt used to generate the description\",\n \"browserEngine\": \"How the page is loaded before extraction\",\n \"documentFile\": \"PDF, Word, Excel, CSV, text, images and audio.\",\n \"fetchBrowserEngine\": \"fast, fetches the static HTML. Best for most sites.\",\n \"followExternal\": \"Retrieve links from different domains\",\n \"forceOcr\": \"Force text extraction via OCR (Document Intelligence). Useful for scanned PDFs or when the normal extraction produces insufficient results.\",\n \"pages\": \"Empty: all pages. Pages are read with OCR.\",\n \"puppeteerBrowserEngine\": \"runs JavaScript with a local browser. For dynamic or single-page apps.\",\n \"remoteBrowserEngine\": \"like Puppeteer, but on a remote browser. Bypasses blocks and bot detection.\",\n \"useBrowserEngine\": \"Slower, but allows analysis of dynamic pages\",\n \"useExtractionStrategy\": \"Improve data extraction with AI\",\n \"webSourceWatch\": \"New pages go into the folder “{name}”.\",\n \"webSourceRemoveMissing\": \"For a complete sitemap. Many removals wait for you.\",\n \"webSourceRemoveMissingExplained\": \"For a site of your own, whose sitemap lists everything published. If too many go missing at once, nothing is removed until you confirm.\"\n },\n \"hint\": {\n \"agentModel\": \"Pre-selected when you create a new agent.\",\n \"agentOnOwnEndpoint\": \"This agent runs on your organization's endpoint.\",\n \"allowedDomains\": \"Only search within these domains.\",\n \"approvalChannels\": \"A tool can ask the user to confirm before it runs: expand a tool to turn it on. On API endpoints and scheduled runs the call is refused.\",\n \"audience\": \"Expected aud of the JWT. Empty: not checked.\",\n \"blockedDomains\": \"Exclude these domains from results.\",\n \"channel\": {\n \"app\": \"The agent is accessible via the dedicated public page.\",\n \"frontoffice\": \"The agent is visible in the Frontoffice panel.\",\n \"widget\": \"The agent can be embedded in websites via embed script.\"\n },\n \"channelAppDisabled\": \"The App channel is disabled: the direct link and iframe will not work.\",\n \"channelWidgetDisabled\": \"The Widget channel is disabled: the embed code and loader will not work.\",\n \"costSourceEndpoint\": \"The models on your organization's endpoint: your provider bills them, the cost here is a list-price estimate.\",\n \"customCss\": \"CSS injected into the widget shadow DOM. Allows styling the chat interface from the outside.\",\n \"disallowPromptTraining\": \"Route requests only to providers that do not use your data to train AI models.\",\n \"dismissableNotice\": \"It will be hidden after the first message.\",\n \"documentFolderManaged\": \"Folder synced from {provider}: its content is changed at the source.\",\n \"documentRefresh\": \"Reads the page again when due and regenerates only what changed.\",\n \"documentRefreshTriggerOff\": \"This page updates itself, and saving your own text stops that.\",\n \"documentSelectionHasManaged\": \"The selection contains documents that come from a connected source and cannot be changed by hand.\",\n \"documentSourceInterval\": \"How often the folder is read again.\",\n \"documentSourceIntervalExplained\": \"How often the folder is read again. Files that have not changed are not converted again.\",\n \"documentSourceName\": \"The name this folder has here. The remote one does not change.\",\n \"emailClaim\": \"The JWT claim containing the user email (default: email).\",\n \"embedCode\": \"Copy and paste this code to embed the agent in your website.\",\n \"embedding\": \"The vectors of the knowledge base, of the users' files and of the memories. They are computed on the platform AI gateway, or on your endpoint with one of the two models it can serve.\",\n \"embeddingActivation\": \"Before saving, the endpoint embeds a test sentence and its vector is compared with the model's own: a different model is refused. Moving to another model embeds the knowledge base and the memories again, and until it is done the searches find only what is already in the new model.\",\n \"embeddingEndpointModel\": \"The id your endpoint serves the model under\",\n \"embeddingEndpointOff\": \"Switch the endpoint on to compute the vectors there\",\n \"embeddingFamily\": \"Among those your endpoint serves\",\n \"embeddingFamilyUnknown\": \"Your endpoint does not declare it: the save checks it\",\n \"embeddingModelsServed\": \"Your endpoint serves these too. They cannot answer an agent: the one the vectors are computed with is chosen in the Embedding section.\",\n \"embeddingNotConfigured\": \"The knowledge base, the corrected answers, the memories and the document processing are stopped, because nothing computes their vectors. Activate an embedding model on your endpoint to start them again.\",\n \"embeddingReindexing\": \"Until the reindex ends, the searches in the knowledge base and in the memories find only what is already in the new model: partial results, never wrong ones. Nothing has to be done, and an interrupted run picks up where it stopped.\",\n \"embeddingStopped\": \"The endpoint that computes the vectors is off: the knowledge base, the corrected answers, the memories and the document processing are stopped until you switch it back on.\",\n \"embeddingWithoutEndpoint\": \"The vectors of the knowledge base, of the users' files and of the memories are computed on the platform AI gateway. Connect your endpoint to compute them there.\",\n \"embedIframe\": \"Embed the chat interface directly using an iframe. \",\n \"embedPreview\": \"The agent will be accessible at the following URL.\",\n \"embeddingWithoutEndpointOrGateway\": \"The vectors of the knowledge base, of the users' files and of the memories are not computed: this organization does not use the platform AI gateway. Connect your endpoint to compute them there.\",\n \"embeddingWithoutGateway\": \"The vectors of the knowledge base, of the users' files and of the memories. This organization does not use the platform AI gateway, so they are computed only on your endpoint, with one of the two models allowed.\",\n \"externalContextSchema\": \"Define which contextual data the hosting site can send to the agent.\",\n \"externalContextSchemaToggle\": \"Enable receiving contextual data from the hosting site.\",\n \"feature\": {\n \"apiTools\": \"Agents call the organization's own APIs as tools.\",\n \"byok\": \"The organization connects its own OpenAI compatible endpoint and uses its models.\",\n \"endpoints\": \"Agents answer other systems over REST.\",\n \"fileUpload\": \"Users attach files to their chat messages.\",\n \"gateway\": \"The AI gateway models, and with them the platform's embedding, and the utilities and the document AI that use them.\",\n \"hubspot\": \"Leads collected by the agents go to the organization's HubSpot CRM.\",\n \"leads\": \"Agents collect contacts with a form in the chat, and the Contacts page lists them.\",\n \"mcpServers\": \"Agents use the tools of external MCP servers.\",\n \"proactiveAutomations\": \"Agents check again by themselves what the user asks them to keep an eye on. Off, the checks under way stop at their next round.\",\n \"salesforce\": \"Leads collected by the agents go to the organization's Salesforce CRM.\",\n \"sharepoint\": \"Agents read the files of SharePoint folders kept in sync.\",\n \"subAgents\": \"An agent calls another one as a tool.\",\n \"teams\": \"Agents answer in Teams chats.\",\n \"voice\": \"Agents talk with the user in real time.\",\n \"whatsapp\": \"Agents answer on WhatsApp Business.\"\n },\n \"fallbackModels\": \"Alternative models tried in order if the primary model is unavailable.\",\n \"fieldMappingFallback\": \"Value used if the source field is empty or missing.\",\n \"fieldMappingSource\": \"Supports nested paths (e.g. metadata.urgency).\",\n \"fieldMappingTransformExtractDomainCompany\": \"Extracts the company name from the email domain (e.g. mario{'@'}acme.com → Acme). Skips free providers (gmail, outlook, etc.).\",\n \"fieldMappingTransformJoinArray\": \"Joins array values into a comma-separated string.\",\n \"fieldMappingTransformMapValues\": \"Replaces the value using the value map lookup table.\",\n \"fieldMappingTransformNone\": \"Copies the value as-is.\",\n \"fieldMappingTransformSplitFirstLast\": \"Splits text on spaces.\",\n \"fileUploadDisabledHint\": \"File upload is not enabled for this agent. You can enable it in the agent settings.\",\n \"fileUploadEnabled\": \"Allow users to attach files to their messages.\",\n \"freshnessBoost\": \"Applies a boost based on how recently the document was updated.\",\n \"freshnessScale\": \"Freshness scale (days)\",\n \"freshnessScaleExplanationDays\": \"A document updated today gets a +{weight} bonus. This bonus halves to +{halfWeight} after {half} days and practically drops to zero (+{zeroWeight}) after {zero} days.\",\n \"freshnessScaleExplanationMonths\": \"A document updated today gets a +{weight} bonus. This bonus halves to +{halfWeight} after {half} days and practically drops to zero (+{zeroWeight}) after {zero} days (approx. {months} months).\",\n \"freshnessScaleTooltip\": \"The half-life of the exponential decay. A document as old as this value will receive 50% of the maximum boost. Lower values cause older documents to lose the boost more quickly.\",\n \"freshnessWeight\": \"Weight multiplier of the freshness boost in the formula.\",\n \"freshnessWeightTooltip\": \"Maximum score bonus added to newly updated documents. A weight of 0.1 means a brand new document gets a +0.10 score advantage. This bonus decays exponentially over time until it reaches zero.\",\n \"gatewayCatalog\": \"The models the platform makes available, with the price per million tokens, the context size and the data privacy guarantees. Switch off the ones your organization does not use: they leave the pickers, and an agent still on one answers with the default model.\",\n \"gatewayOffDisconnected\": \"Unless its own endpoint is on and serves models, the organization is disconnected: no agent answers.\",\n \"gatewayOffNoByok\": \"Own models (BYOK) are off too: its administrator can neither set up an endpoint nor switch one on or off, nor move the embedding.\",\n \"gatewayOffStops\": \"Switched off, nothing of this organization reaches the gateway, within thirty seconds: the gateway models stop answering, and so do the internal utilities on them; the web search stops. The knowledge base, the corrected answers, the memories and the document processing go on only if the embedding is on the organization's own endpoint: on the platform's, they stop.\",\n \"gatewayOffTodo\": \"The administrator has to move both default models to the organization's own endpoint, or new agents cannot be created, and the embedding too (Models, Embedding section), or the knowledge base and the memories stay stopped. The inference is no longer charged to the credit; the voice minutes and the document OCR still are.\",\n \"guaranteeAll\": \"{name}: guaranteed on every provider.\",\n \"guaranteeNone\": \"{name}: not guaranteed.\",\n \"guaranteeSome\": \"{name}: guaranteed on some providers only, the gateway routes accordingly.\",\n \"includeThoughts\": \"Streams the model's thoughts to the client along with the response.\",\n \"inputSchema\": \"JSON Schema (draft-07) of the input parameters the LLM can provide.\",\n \"integrationOAuthAdminConsent\": \"A Microsoft 365 administrator of your organization may need to approve this.\",\n \"integrationAppCredentialScope\": \"With Sites.Read.All the app can read every site of the tenant. The connector reads only the folders you link.\",\n \"integrationAppCredentialSteps\": \"In Microsoft Entra ID: App registrations, New registration. Then API permissions, Microsoft Graph, Application permissions, Sites.Read.All, and Grant admin consent. Then Certificates & secrets, New client secret (note when it expires). Copy the Directory (tenant) ID, the Application (client) ID and the secret value here.\",\n \"interactiveLogin\": \"Lets anonymous users sign in from the chat. The external token stays active.\",\n \"issuer\": \"The issuer URL of the JWT token (iss).\",\n \"jwksUrl\": \"The JWKS endpoint URL for JWT signature verification.\",\n \"loadDelay\": \"Wait before loading the widget, for slow AMD loaders.\",\n \"loaderStrategy\": {\n \"dynamic-import\": \"Uses import() inside a classic <script>. Fallback for pages where module scripts are blocked or intercepted by legacy loaders.\",\n \"inline-module\": \"Injects an inline <script type=\\\"module\\\"> with a static import. Bypasses RequireJS and other AMD loaders. Recommended for most sites.\",\n \"script-src\": \"Loads the bundle via <script type=\\\"module\\\" src=\\\"...\\\">. Use this on sites with strict Content Security Policy (CSP) that block inline scripts.\"\n },\n \"mcpServerHealthCheckPath\": \"The endpoint used to check the health of the MCP Server (e.g., /api/health).\",\n \"mcpStatelessServer\": \"Force the client to connect in stateless mode.\",\n \"mcpHeadersOriginChanged\": \"The URL points to another host: type the values of the headers again, the saved ones stay with the previous host.\",\n \"mmr\": \"Balances semantic relevance and document diversity in search results to avoid redundant content.\",\n \"mmrCandidatesLimit\": \"Maximum number of candidate chunks pre-selected before applying MMR.\",\n \"mmrCandidatesLimitTooltip\": \"The number of top candidate chunks retrieved from the database before applying the MMR diversity filter. For example, if set to 100, the system selects the 100 highest-scoring chunks first, then filters them to find the most diverse subset.\",\n \"mmrDiversity\": \"Tradeoff between relevance (0.0) and diversity (1.0).\",\n \"mmrDiversityTooltip\": \"Controls how diverse the search results should be. A value near 0 focuses solely on relevance (even if results are similar). A value near 1 forces the inclusion of results with different details and themes, reducing redundancy.\",\n \"modelContextWindow\": \"Context window: {count}k tokens.\",\n \"modelDefaultNoneAvailable\": \"No model available: switch on at least one model of your endpoint below.\",\n \"modelDefaultOutsideCatalog\": \"This model is not among those available to your organization: pick another one. Meanwhile new agents start on the platform's standard model.\",\n \"modelDefaults\": \"They apply to the whole organization. Each agent can still use a different model, chosen in its own settings.\",\n \"modelDisabledForOrganization\": \"Switched off for this organization: the agents still on it answer with the default model, and it cannot be picked for a new one.\",\n \"modelEndpointBaseUrl\": \"The base address of the OpenAI compatible API.\",\n \"modelEndpointHttp\": \"Over http the key travels unencrypted: use it only if the endpoint is reachable from your internal network alone.\",\n \"modelEndpointHttpTitle\": \"Unencrypted connection (http)\",\n \"modelEndpointKey\": \"It is stored encrypted and never shown again.\",\n \"modelEndpointKeyStored\": \"Already saved. Leave the field empty to keep it.\",\n \"modelEndpointName\": \"The name you will recognise it by when choosing models.\",\n \"modelEndpointOffWithEmbedding\": \"Endpoint off: its models are not available, the agents on them stop answering, and the knowledge base, the memories and the documents stop with it, because it computes their vectors. Turn it back on to start them again.\",\n \"modelEndpointOnWithoutGateway\": \"Endpoint on: the models you switch on are the only ones the agents can use, since this organization does not use the platform gateway, and can be the defaults.\",\n \"modelNotOnEndpoint\": \"Not available to this organization: its endpoint no longer has this model, so an agent on it does not answer until it is moved to another model.\",\n \"modelSourceEndpoint\": \"Runs on {name}, your organization's own endpoint: your provider bills it, and the costs shown here are estimated from the price list.\",\n \"modelSourceOff\": \"Not available to this organization: the source it runs on is switched off, so an agent on it does not answer until it is moved to another model or the source is switched back on.\",\n \"modelSourcePlatform\": \"Runs on the platform AI gateway and is paid with your organization's credit.\",\n \"ownEndpoint\": \"Use your own models next to the platform ones: connect an OpenAI compatible endpoint with your own key. The agents that run on its models are not charged to your credit.\",\n \"modelEndpointOn\": \"Endpoint on: the models you switch on are available to the agents next to the platform ones, and can be the defaults.\",\n \"modelEndpointOff\": \"Endpoint off: its models are not available, and the agents on them stop answering. Switch on the models you need below, then turn it on.\",\n \"addModelsRule\": \"Switch on the models your agents will be able to use. The price comes from the platform price list; if a model is not in the list, you will be asked to enter it.\",\n \"modelPriceAsk\": \"This model is not in the platform price list. Pick a catalog model with a similar cost, or enter the prices per million tokens.\",\n \"modelPriceUnknown\": \"Not in the platform price list: enter a price.\",\n \"modelGuaranteedOnSome\": \"The guarantees you switched on hold only on some providers of this model: the gateway routes accordingly.\",\n \"modelIdByHand\": \"The technical name the endpoint uses to identify the model.\",\n \"modelNotCompatible\": \"Not compatible with the privacy flags of this agent.\",\n \"modelPriceFromListing\": \"Price taken from {id} in the platform price list.\",\n \"modelPriceListing\": \"Platform price list, entry {id}, updated on {date}.\",\n \"modelPriceManual\": \"Price typed by hand on {date}.\",\n \"modelPriceReference\": \"Same price as {id}, updated on {date}.\",\n \"modelReference\": \"A catalog model this one costs like.\",\n \"modelRetired\": \"No longer available on the platform: move the agents using it to another model.\",\n \"moveDocument\": \"Choose the destination folder for «{name}».\",\n \"moveDocuments\": \"Choose the destination folder for {n} document. | Choose the destination folder for {n} documents.\",\n \"multipleChoiceAllowCustomAnswer\": \"Show a free-text field below the options so the user can type a custom answer.\",\n \"multipleChoiceMaxOptions\": \"Maximum number of options the AI can generate (min. 2, max. 10).\",\n \"nameClaim\": \"Claim with the user name (default: name).\",\n \"oauthCallbackUrl\": \"Set this URL as the Callback URL (Redirect URI) in the OAuth provider.\",\n \"outputSchema\": \"JSON Schema (draft-07) of the expected response. Informational only.\",\n \"passphrase\": \"Enter {passphrase} to confirm the operation\",\n \"platformSupported\": \"Renders natively on WhatsApp and Teams\",\n \"privacyPolicyNotice\": \"Displayed at the bottom of the contact form. Supports Markdown.\",\n \"providerOrganizationId\": \"For Microsoft this refers to the tenant identifier (tenant ID). \\nFor others, enter the email domain (e.g. company.com).\",\n \"providerTimeoutMs\": \"Before the next provider: 1000 to 789000, BYOK only.\",\n \"reasoningDefault\": \"Platform default, applied until you choose a different value.\",\n \"reasoningNotSupported\": \"Reasoning is not supported for the selected provider.\",\n \"reasoningVisibility\": \"A reasoning agent is always visible to the members of its organization only.\",\n \"sessionExpiresIn\": \"Seconds, at least 60. Empty: 8 hours.\",\n \"showExtendedSteps\": \"Shows reasoning and tool calls as an expandable timeline in the chat.\",\n \"smoothStream\": \"Smooths text streaming creating a more natural reading experience.\",\n \"subAgentName\": \"Only letters, numbers, underscores (_) and hyphens (-) are allowed.\",\n \"teamsAccentColor\": \"Defaults to the agent's theme color.\",\n \"teamsAppVersion\": \"Raise it and reinstall to apply manifest changes.\",\n \"tool\": {\n \"fetchTeamsChannelHistory\": \"On Teams channels, lets the agent read the wider channel conversation on demand. Requires reinstalling the Teams app.\",\n \"geocode\": \"Converts place names to geographic coordinates and vice versa.\",\n \"getWeather\": \"Fetches current weather data and forecasts for a specific location.\",\n \"querySpreadsheet\": \"Answers questions on the Excel and CSV files of the knowledge base with exact searches, counts and totals, instead of searching their text. Turned off, the agent does not read these files at all. The spreadsheets attached in the chat are queried with the Spreadsheets tool.\",\n \"readDocumentFile\": \"Allows the agent to read the original file of PDF/DOCX documents from the knowledge base. Useful for tables, charts, and visual content.\",\n \"requestGeolocation\": \"Requests the user's GPS location via the browser.\",\n \"retrieveRevisedAnswers\": \"Retrieves administrator-verified answers and uses them as the primary source of truth.\",\n \"runWorker\": \"Lets the agent run generic workers that inherit its tools to handle independent sub-tasks in parallel.\",\n \"scheduleWakeup\": \"When the user asks for it, the agent checks something again by itself at intervals (from one minute to one hour) and writes in the same chat when it finds news.\",\n \"searchInKnowledgeBase\": \"Searches uploaded documents in the knowledge base to provide contextual answers.\",\n \"searchInUserFiles\": \"Searches the files this user personally uploaded in chat (their private files), kept separate from the agent knowledge base.\",\n \"showArtifact\": \"Displays structured content such as formatted text, code, or documents.\",\n \"showCalendarEvent\": \"Shows a calendar event with options for Google Calendar, Outlook, and .ics download.\",\n \"showComparison\": \"Compares 2 to 4 items side by side to help the user decide.\",\n \"showContactForm\": \"Displays a contact form to collect user information.\",\n \"showDiagram\": \"Renders a chart or a diagram (flowchart, sequence, class, ER, state).\",\n \"showEmail\": \"Composes a ready-to-send email from the user's email client.\",\n \"showForm\": \"Allows collecting structured input (text, numbers, dates, choices) via multi-step forms.\",\n \"showImageGallery\": \"Collects images in a browsable gallery with zoom and lightbox.\",\n \"showLocation\": \"Displays an interactive map with a marker and directions.\",\n \"showMessage\": \"Composes a message to send via WhatsApp, Telegram, or SMS.\",\n \"showMultipleChoice\": \"Presents selectable options to guide the conversation flow.\",\n \"showProductList\": \"Shows a product list with images, descriptions, and purchase links.\",\n \"showQrCode\": \"Generates a QR code from text, URLs, or structured data.\",\n \"showSources\": \"Shows references to the knowledge base documents used in the response.\",\n \"showSuggestedReply\": \"Suggests clickable replies to continue the conversation. To have them after every answer, ask for it in the agent's instructions.\",\n \"showVideo\": \"Plays videos inline: direct files (MP4/WebM) or YouTube/Vimeo links.\",\n \"showWeather\": \"Displays a weather forecast widget directly in the chat.\",\n \"showWebPages\": \"Suggests links to web pages relevant to the user's question.\",\n \"spreadsheet\": \"Reads, searches and edits the Excel files (.xlsx) users attach in the web chat or the widget, and returns each edit as a new version to download. Needs file uploads with the Spreadsheets type.\",\n \"useAllUserFiles\": \"Searches all the user's files, including those uploaded on other agents, not just this agent's.\",\n \"useAllUserKb\": \"Reads the memories the user shared with every agent of this organization, not just this one. Writing stays scoped to this agent.\",\n \"userMemory\": \"Lets the agent remember and recall facts the user shares across conversations (name, preferences, etc.).\"\n },\n \"toolRequiresApproval\": \"The agent waits for approval in the chat before running.\",\n \"apiToolSecretParameters\": \"Sent with every call, in the query string or in the JSON body, and never shown to the model. Once saved a value is not shown again: leave it empty to keep it.\",\n \"apiToolSecretParametersNew\": \"Sent with every call, in the query string or in the JSON body, and never shown to the model. Type every value: once saved it is not shown again.\",\n \"apiToolSecretStored\": \"Saved: leave it empty to keep it\",\n \"apiToolCredentialInSchema\": \"These parameters look like credentials, and the model fills them in: {names}. Move them to the secret parameters and remove them from the input schema.\",\n \"apiToolCredentialBadge\": \"A parameter that looks like a credential is filled in by the model\",\n \"apiToolSecretsOriginChanged\": \"The URL points to another host: type the values of the headers and of the secret parameters again, the saved ones stay with the previous host.\",\n \"apiToolSecretBodyMethod\": \"A {method} request sends no body\",\n \"toolWorkingSetMode\": {\n \"active\": \"Before each reply, an evaluation model (TypeSafe Jev) picks the MCP servers, API tools and sub-agents the message needs, and the agent sees only those. When it needs another one, it brings it back on its own. Each evaluation is charged to the organization.\",\n \"off\": \"The agent sees every tool on every reply.\",\n \"shadow\": \"The evaluation model picks the tools each message needs, but the agent still sees them all: the choice is only recorded in the message detail, to compare it with the tools actually used before turning it on. Each evaluation is charged to the organization.\"\n },\n \"useColorsForAgentHeader\": \"Color the agent header based on the main color.\",\n \"userFeedbackComment\": \"The user left a comment on this answer\",\n \"userFeedbackNegative\": \"The user rated this answer negatively\",\n \"userFeedbackPositive\": \"The user rated this answer positively\",\n \"userFeedbackReaction\": \"The user reacted to this answer\",\n \"utilityModel\": \"Used behind the scenes for tasks such as rephrasing user questions and updating memories.\",\n \"voiceApprovalRefused\": \"During a call these actions do not run: approval is given on screen and on the phone there is nobody to ask, so the agent refuses them and says so. Affected: {tools}.\",\n \"voiceCascadeTimeoutSeconds\": \"How long the provider waits for us before cancelling the turn. It must sit above the agent's slowest turn: a knowledge base, tools and slow models all stretch it.\",\n \"voiceEnabled\": \"Let people talk to this agent. The answer is still this agent, with its knowledge and tools.\",\n \"voiceFillerAfterSeconds\": \"Says it is working when the answer is late. Empty: four seconds.\",\n \"voiceFillerMessage\": \"Empty: a default sentence in the voice language.\",\n \"voiceFirstMessage\": \"Said as soon as the call opens. It also covers the slower first turn.\",\n \"voiceId\": \"Cloned voices are not listed: the provider forbids them here.\",\n \"voiceIgnoreBackgroundVoices\": \"Listen only to who is talking. Leave on where the microphone hears a room.\",\n \"voiceLanguage\": \"Used to recognise speech and to speak.\",\n \"voiceMaxSessionSeconds\": \"A call is billed by the minute and stops on its own at this limit.\",\n \"voiceRemaining\": \"Time left in this call\",\n \"voiceSlowAgentOnCall\": \"A large knowledge base or connected MCP servers can take an agent several seconds to answer, and on a call those seconds are silence: the two settings below are what keeps the caller company while it works. If your calls feel slow, the answer itself gets shorter with fewer steps, a smaller retrieval limit or a faster model.\",\n \"voiceTurnEagerness\": \"Eager answers sooner, patient waits for you.\",\n \"voiceTurnTimeoutSeconds\": \"How long the agent lets the caller stay silent before speaking again. Nothing to do with how fast it answers.\",\n \"webSearchEnabled\": \"Allow the agent to search the web during conversations.\",\n \"webSearchNative\": \"Uses {provider}'s built-in web search capabilities.\",\n \"webhookUrl\": \"Paste this URL into the platform's webhook / messaging endpoint configuration.\",\n \"welcomePopup\": \"Show a welcome popup with the initial message before the chat is opened.\",\n \"whatsappVerifyToken\": \"Paste this token into the Meta webhook configuration.\",\n \"zeroDataRetention\": \"Route requests only to ZDR-compliant providers. Restricts the pool of available providers.\",\n \"webSourceUnselected\": \"Pages you leave unselected will arrive with the next checks of the source.\",\n \"webSourceInterval\": \"New pages follow the schedule above.\",\n \"webPagesRefresh\": \"When due, only what changed is regenerated.\",\n \"documentFolderWebSource\": \"Website folder: new pages arrive on their own and stay editable.\"\n },\n \"integrationProvider\": {\n \"hubspot\": \"HubSpot\",\n \"salesforce\": \"Salesforce\",\n \"sharepoint\": \"SharePoint\",\n \"web\": \"Website\"\n },\n \"integrationProviderDescription\": {\n \"hubspot\": \"Sync contacts and leads with HubSpot CRM.\",\n \"salesforce\": \"Sync contacts and leads with Salesforce CRM.\",\n \"sharepoint\": \"Link a SharePoint folder: its files join the knowledge base and stay up to date on their own.\"\n },\n \"integrationSyncStatus\": {\n \"failed\": \"Failed\",\n \"pending\": \"Pending\",\n \"success\": \"Success\"\n },\n \"interval\": {\n \"D\": \"day | days\",\n \"M\": \"month | months\",\n \"W\": \"week | weeks\",\n \"Y\": \"year | years\"\n },\n \"invitationStatus\": {\n \"accepted\": \"Accepted\",\n \"canceled\": \"Canceled\",\n \"expired\": \"Expired\",\n \"pending\": \"Pending\"\n },\n \"label\": {\n \"AI\": \"AI\",\n \"acceptInvitationAndCreateAccount\": \"Accept the invitation and create your account\",\n \"accountingCredit\": \"Accounting balance\",\n \"actions\": \"Actions\",\n \"active\": \"Active\",\n \"activeSessions\": \"Active sessions\",\n \"actualCost\": \"Actual cost\",\n \"addApiTool\": \"Add API tool\",\n \"addIntegration\": \"Add integration\",\n \"additionalMetadata\": \"Additional metadata\",\n \"admin\": \"Admin\",\n \"advancedOptions\": \"Advanced options\",\n \"agent\": \"Agent\",\n \"agentModel\": \"Default model\",\n \"agentTree\": \"Agent tree\",\n \"agents\": \"Agents\",\n \"agentsUsed\": \"Agents used\",\n \"aiDescription\": \"AI generated\",\n \"aiDescriptionModel\": \"AI model\",\n \"aiDescriptionPrompt\": \"Custom prompt\",\n \"allAgents\": \"All agents\",\n \"allChannels\": \"All channels\",\n \"allowedDomains\": \"Allowed domains\",\n \"analysis\": \"Analysis\",\n \"anonymized\": \"Anonymized\",\n \"anonymous\": \"Anonymous\",\n \"answer\": \"Answer\",\n \"answeringOnTheCall\": \"Answering…\",\n \"apiKey\": \"API key\",\n \"apiKeys\": \"API keys\",\n \"appearance\": \"Appearance\",\n \"arrayOfObjects\": \"Array of objects\",\n \"assistantMessage\": \"Agent response\",\n \"attachmentsNotImported\": \"Attachments not imported\",\n \"attempts\": \"Attempts\",\n \"attention\": \"Attention\",\n \"audience\": \"Audience\",\n \"authentication\": \"Authentication\",\n \"auto\": \"Auto\",\n \"autoDetected\": \"Automatically detected\",\n \"autoProvisioning\": \"Auto provisioning\",\n \"autoProvisioningDescription\": \"Users who authenticate through these identity providers or domains will be automatically added to your organization with the default role.\",\n \"autoRefreshError\": \"Error\",\n \"autoRefreshOff\": \"Paused\",\n \"autoRefreshOn\": \"Live\",\n \"autoRefreshStoppedErrors\": \"Automatic update stopped after repeated errors.\",\n \"autoRefreshStoppedUnavailable\": \"Automatic update stopped: this content is no longer accessible.\",\n \"autoRefreshWarning\": \"Warning\",\n \"availableCredit\": \"Available balance\",\n \"averageLine\": \"Average\",\n \"avgChatsPerUser\": \"Chats per user\",\n \"avgMessagesPerChat\": \"Messages per chat\",\n \"banned\": \"Banned\",\n \"baseUrl\": \"Base URL\",\n \"black\": \"Black\",\n \"blocked\": \"Blocked\",\n \"blockedDomains\": \"Blocked domains\",\n \"blockedReasons\": \"Blocked reasons\",\n \"body\": \"Body\",\n \"botName\": \"Bot name\",\n \"breadcrumbs\": \"Breadcrumbs\",\n \"browserEngine\": \"Browser engine\",\n \"browsers\": \"Browsers\",\n \"budgetTokens\": \"Budget tokens\",\n \"byChannel\": \"By channel\",\n \"cached\": \"cached\",\n \"calendarEvent\": \"Event\",\n \"changePassword\": \"Change password\",\n \"channel\": \"Channel\",\n \"channels\": \"Channels\",\n \"chat\": \"Chat\",\n \"chatCreatedAgo\": \"Created\",\n \"chatOrigin\": \"Chat origin\",\n \"chatStatistics\": \"Statistics\",\n \"chatTypes\": \"Conversation type\",\n \"chatUpdatedAgo\": \"Last message\",\n \"chatWidget\": \"Chat widget\",\n \"chunks\": \"Chunks\",\n \"clear\": \"Clear\",\n \"codeEditor\": \"Code\",\n \"collapseContext\": \"Hide context\",\n \"comment\": \"Comment\",\n \"comparison\": \"Comparison\",\n \"completeName\": \"Full name\",\n \"completedAt\": \"Completed at\",\n \"configMcpServer\": \"Configure MCP server\",\n \"configure\": \"Configure\",\n \"confirm\": \"Confirm\",\n \"confirmPassword\": \"Confirm password\",\n \"confirmPrivateNetwork\": \"I confirm the endpoint cannot be reached from the internet\",\n \"confirmWithEmail\": \"Type your email to confirm\",\n \"confirmWithPassword\": \"Enter your password to confirm\",\n \"connectMcpServer\": \"Connect MCP server\",\n \"connectSubAgent\": \"Connect sub-agent\",\n \"connectedAccounts\": \"Connected accounts\",\n \"connectedIntegrations\": \"Connected integrations\",\n \"mcpConnectionSignedIn\": \"Signed in\",\n \"mcpConnectionRenewed\": \"Last renewed\",\n \"connectionChecking\": \"Connection checking…\",\n \"connectionConnected\": \"Connected\",\n \"connectionError\": \"Connection error\",\n \"connectionIdle\": \"Not verified\",\n \"connectionStatus\": \"Connection\",\n \"connectionTypes\": \"Connection type\",\n \"const\": \"Constant\",\n \"contactUs\": \"Contact us\",\n \"content\": \"Content\",\n \"contentPreview\": \"Content preview\",\n \"contextTokens\": \"{count}k context\",\n \"conversationLengthBuckets\": \"Conversation length\",\n \"conversationOutline\": \"Conversation outline\",\n \"conversations\": \"Conversations\",\n \"conversationsOverTime\": \"Conversations over time\",\n \"cost\": \"Cost\",\n \"costByChannel\": \"Cost per channel\",\n \"costInUSD\": \"Cost in USD\",\n \"costSource\": \"Cost source\",\n \"costSourceAll\": \"Total\",\n \"costSourceEndpoint\": \"Endpoint\",\n \"costSourceGateway\": \"Gateway\",\n \"country\": \"Country\",\n \"crawlMode\": \"Crawl mode\",\n \"createdAt\": \"Created at\",\n \"createdBy\": \"Created by\",\n \"credit\": \"Credit\",\n \"creditUpdatedAt\": \"Credit updated at\",\n \"credits\": \"Credits\",\n \"crmSync\": \"CRM sync\",\n \"curlExample\": \"cURL example\",\n \"currentAgent\": \"Current agent\",\n \"currentLocation\": \"Current location\",\n \"currentPassword\": \"Current password\",\n \"currentSession\": \"Current session\",\n \"customCss\": \"Custom CSS\",\n \"customRange\": \"Custom range\",\n \"dailyUsage\": \"Daily usage\",\n \"dark\": \"Dark\",\n \"darkModePreference\": \"Dark mode\",\n \"dataLoadFailed\": \"Could not load this data\",\n \"day\": \"Day\",\n \"dayRateLimit\": \"Day rate limit\",\n \"days\": \"{count} day | {count} days\",\n \"default\": \"Default\",\n \"defaultMappingHint\": \"If no mapping is configured, the default one for the provider will be used.\",\n \"defaultRole\": \"Default role\",\n \"deleted\": \"Deleted\",\n \"deprecated\": \"Deprecated\",\n \"description\": \"Description\",\n \"deselectAction\": \"Remove\",\n \"details\": \"Details\",\n \"device\": \"Device\",\n \"deviceContext\": \"Device context\",\n \"deviceType\": \"Device type\",\n \"diagram\": \"Diagram\",\n \"disabled\": \"Disabled\",\n \"disallowPromptTraining\": \"Prompt Training disallowed\",\n \"dismissableNotice\": \"Notice\",\n \"documentOrigin\": \"Origin\",\n \"documentPriority\": \"Document priority\",\n \"documentRefresh\": \"Automatic update\",\n \"documentRefreshAuto\": \"Automatic\",\n \"documentRefreshInterval\": \"Frequency\",\n \"documentRefreshLastRead\": \"Last read\",\n \"documentRefreshNext\": \"Next update\",\n \"documentRefreshOutcome\": \"Outcome\",\n \"documentRefreshPaused\": \"Paused\",\n \"documentSourceInterval\": \"Check frequency\",\n \"documentSourceLastRun\": \"Last run\",\n \"documentSourceLastSync\": \"Last check\",\n \"documentSourceNextSync\": \"Next check\",\n \"documentSourceSearch\": \"Search a site\",\n \"documentType\": \"Document type\",\n \"documents\": \"Documents\",\n \"domainFilter\": \"Domain filter\",\n \"downloadFile\": \"Download file\",\n \"downloading\": \"Downloading\",\n \"editApiTool\": \"Edit API tool\",\n \"editIntegration\": \"Edit integration\",\n \"editMcpServer\": \"Edit MCP server\",\n \"editSubAgent\": \"Edit sub-agent\",\n \"effectiveCredit\": \"Effective credit\",\n \"email\": \"Email\",\n \"emailClaim\": \"Email claim\",\n \"emailDomain\": \"Email domain\",\n \"emailVerified\": \"Email verified\",\n \"embed\": \"Embed\",\n \"embedCode\": \"Embed code\",\n \"embedding\": \"Embedding\",\n \"embeddingEndpointModel\": \"Id on the endpoint\",\n \"embeddingModel\": \"Embedding model\",\n \"embeddingModelsCount\": \"Embedding models ({count})\",\n \"embeddingNotConfigured\": \"Not configured\",\n \"embeddingNotConfiguredReason\": \"The platform AI gateway is off for this organization\",\n \"embeddingOnEndpoint\": \"Embedding on your endpoint\",\n \"embeddingOnPlatform\": \"On the platform AI gateway\",\n \"embeddingReindex\": \"Reindex of the knowledge base and the memories\",\n \"embeddingReindexDone\": \"Reindexed on {date}\",\n \"embeddingReindexPaused\": \"Reindex paused\",\n \"embeddingReindexProgress\": \"Reindexing: {done} of {total} vectors done\",\n \"embeddingReindexQueued\": \"Reindex queued: it starts within a few minutes\",\n \"enabled\": \"Enabled\",\n \"enabledTools\": \"Enabled tools\",\n \"endDate\": \"End date\",\n \"endpointCost\": \"Endpoint cost (estimate)\",\n \"endpointModels\": \"Your endpoint's models\",\n \"engagement\": \"Engagement\",\n \"enum\": \"Enum values\",\n \"error\": \"Error\",\n \"estimatedCost\": \"Estimated end-of-month cost\",\n \"estimatedCredit\": \"Estimated credit\",\n \"estimatedMonthlyCost\": \"Month-end estimate\",\n \"excludeDomains\": \"Exclude domains\",\n \"expandContext\": \"Show more context\",\n \"expireIn\": \"Expires in\",\n \"expires\": \"Expires\",\n \"expiresAt\": \"Expiration\",\n \"exportMyData\": \"Export my data\",\n \"externalAuth\": \"External authentication\",\n \"externalAuthDescription\": \"Configure external authentication providers to allow authentication via JWT tokens issued by these providers. Users authenticated through these providers will be automatically added to your organization with the default role (auto provisioning).\",\n \"externalContext\": \"External context\",\n \"externalContextSchema\": \"External context schema\",\n \"externalId\": \"External ID (CRM)\",\n \"fallbackModels\": \"Fallback models\",\n \"feedback\": \"Feedback\",\n \"feedbacks\": \"Feedback\",\n \"fieldMappingFallback\": \"Fallback value\",\n \"fieldMappingSource\": \"Source field\",\n \"fieldMappingTarget\": \"Target field {number}\",\n \"fieldMappingTransform\": \"Transform\",\n \"fieldMappingTransformExtractDomainCompany\": \"Extract company from email domain\",\n \"fieldMappingTransformJoinArray\": \"Join array\",\n \"fieldMappingTransformMapValues\": \"Map values\",\n \"fieldMappingTransformNone\": \"None\",\n \"fieldMappingTransformSplitFirstLast\": \"Split first/last\",\n \"fieldMappingValueMap\": \"Value map\",\n \"file\": \"File\",\n \"fileUpload\": \"File upload\",\n \"fileUploadAllowedMimeTypes\": \"Allowed file types\",\n \"fileUploadEnabled\": \"Enable file upload\",\n \"fileUploadMaxFileSize\": \"Max file size (MB)\",\n \"fileUploadMaxFilesPerChat\": \"Max files per chat\",\n \"fileUploadMaxFilesPerMessage\": \"Max files per message\",\n \"files\": \"Files\",\n \"filters\": \"Filters\",\n \"floatingButtonPosition\": \"Button position\",\n \"folderName\": \"Folder name\",\n \"followExternal\": \"Follow external links\",\n \"footer\": \"Footer\",\n \"forceOcr\": \"Force OCR\",\n \"formMaxOptionsPerStep\": \"Suggested max options\",\n \"formMaxSteps\": \"Suggested max steps\",\n \"frequencyPenalty\": \"Frequency penalty\",\n \"freshnessBoost\": \"Freshness boost\",\n \"freshnessScale\": \"Freshness scale\",\n \"freshnessWeight\": \"Freshness weight\",\n \"fullDuration\": \"Duration (ms)\",\n \"gallery\": \"Gallery ({count} images)\",\n \"gatewayCost\": \"Gateway cost\",\n \"gatewayModels\": \"Platform models\",\n \"gdprRequestType\": {\n \"conversations_erasure\": \"Conversations erasure\",\n \"erasure\": \"Data erasure\",\n \"export\": \"Data export\"\n },\n \"gdprRequests\": \"GDPR requests\",\n \"general\": \"General\",\n \"generateSchemaFromJson\": \"Generate schema from JSON\",\n \"goalOutcome\": \"Goal outcome\",\n \"granularity\": \"Granularity\",\n \"groupReasoningAgents\": \"Group\",\n \"hasRedundantChunks\": \"Has redundant chunks\",\n \"header\": \"Header\",\n \"headers\": \"HTTP headers\",\n \"healthCheckPath\": \"Health check\",\n \"hour\": \"Hour\",\n \"hourRateLimit\": \"Hour rate limit\",\n \"hsAccessToken\": \"Access token\",\n \"hsAccessTokenHint\": \"Create a HubSpot Private App with the following scopes: crm.objects.contacts.read, crm.objects.contacts.write, crm.objects.owners.read.\",\n \"hsDefaultOwnerId\": \"Default owner ID\",\n \"hsDefaultOwnerIdHint\": \"Empty: contacts get no owner.\",\n \"hsStaticProperties\": \"Static properties\",\n \"hsStaticPropertiesHint\": \"Fixed properties added to every contact.\",\n \"httpHeaderKey\": \"Key\",\n \"httpHeaderValue\": \"Value\",\n \"secretParameters\": \"Secret parameters\",\n \"secretParameterPosition\": \"Sent in\",\n \"secretPositionQuery\": \"Query string\",\n \"secretPositionBody\": \"Body\",\n \"apiToolCredentialBadge\": \"Key exposed\",\n \"httpHeaders\": \"HTTP headers\",\n \"iframe\": \"Iframe\",\n \"iframeCode\": \"Iframe code\",\n \"imageLoadError\": \"Image not available\",\n \"imageHeld\": \"Image from {host}: click to load\",\n \"videoHeld\": \"Video from {host}: click to load\",\n \"imageHost\": \"Host\",\n \"imageHosts\": \"Image hosts\",\n \"imageHostsHint\": \"Answers and cards load images by themselves only from these hosts and from the platform. An image from any other host shows its host and loads on a click, so an answer cannot send the conversation to a site through an image url.\",\n \"impersonated\": \"Impersonated\",\n \"impersonation\": \"Impersonation\",\n \"importing\": \"Importing\",\n \"inStock\": \"In stock\",\n \"integrationReconnectNeeded\": \"Reconnect needed\",\n \"integrationAppCredential\": \"App {clientId}\",\n \"modelDefaults\": \"Default models\",\n \"modelNotAvailable\": \"not available\",\n \"modelSourcePlatform\": \"Platform\",\n \"modelSwitchedOff\": \"switched off\",\n \"ownEndpoint\": \"Your own endpoint (BYOK)\",\n \"price\": \"Price\",\n \"priceListModel\": \"Price list model\",\n \"priceToSet\": \"Price to set\",\n \"modelPriceOf\": \"Price of {id}\",\n \"context\": \"Context\",\n \"someProviders\": \"Some providers\",\n \"modelsActiveSummary\": \"{active} of {count} models active\",\n \"noModelsYet\": \"No models yet\",\n \"notServedAnyMore\": \"No longer offered by the endpoint\",\n \"modelIdByHand\": \"Model id\",\n \"modelReference\": \"Reference model\",\n \"msClientId\": \"Application (client) ID\",\n \"msClientSecret\": \"Client secret\",\n \"msTenantId\": \"Directory (tenant) ID\",\n \"inTest\": \"In testing\",\n \"includeDomains\": \"Include domains\",\n \"includeThoughts\": \"View reasoning\",\n \"indexStatus\": \"Index status\",\n \"info\": \"Info\",\n \"initialMessage\": \"Initial message\",\n \"input\": \"Input\",\n \"inputSchema\": \"Input schema\",\n \"insertEmail\": \"Insert email\",\n \"integration\": \"Integration\",\n \"integrationConfig\": \"Configuration\",\n \"integrationDisabled\": \"Disabled\",\n \"integrationEnabled\": \"Enabled\",\n \"integrationFieldMapping\": \"Field mapping\",\n \"integrationProvider\": \"Provider\",\n \"integrationSyncLogs\": \"Sync logs\",\n \"integrationSyncLogsDescription\": \"Synchronization occurs automatically when a new lead is created.\",\n \"integrations\": \"Integrations\",\n \"interactiveLogin\": \"Show login/registration\",\n \"interface\": \"Interface\",\n \"ipAddress\": \"IP address\",\n \"isAutoJoinEnabled\": \"Automatically merge existing users with the same email\",\n \"issuer\": \"Issuer\",\n \"itemsPerPage\": \"Per page\",\n \"jsonSample\": \"JSON sample\",\n \"jwksUrl\": \"JWKS URL\",\n \"key\": \"Key\",\n \"language\": \"Language\",\n \"languages\": \"Languages\",\n \"last14Days\": \"Last 14 days\",\n \"last30Days\": \"Last 30 days\",\n \"last7Days\": \"Last 7 days\",\n \"last90Days\": \"Last 90 days\",\n \"lastActive\": \"Last active\",\n \"lastActivity\": \"Last activity\",\n \"lastMonth\": \"Last month\",\n \"lastRecalledAt\": \"Last recalled\",\n \"lastReconciledAt\": \"Last reconciled at\",\n \"lastRefillAt\": \"Last refill at\",\n \"lastSync\": \"Last sync\",\n \"lastUsedAt\": \"Last used\",\n \"latest\": \"Latest\",\n \"leadId\": \"Lead ID\",\n \"left\": \"Left\",\n \"light\": \"Light\",\n \"limit\": \"Limit\",\n \"limitedStock\": \"Limited stock\",\n \"linkedAgents\": \"Linked agents\",\n \"llmIssues\": \"LLM issues\",\n \"loadDelay\": \"Load Delay (ms)\",\n \"loaderStrategy\": \"Loader strategy\",\n \"loaderStrategyDynamicImport\": \"Dynamic import\",\n \"loaderStrategyInlineModule\": \"Inline module\",\n \"loaderStrategyScriptSrc\": \"Script src\",\n \"locale\": \"Language\",\n \"location\": \"Location\",\n \"logo\": \"Logo\",\n \"logoUrl\": \"Logo URL\",\n \"mainColor\": \"Main color\",\n \"manageProfileDescription\": \"Edit your name, password, avatar and more\",\n \"maxDepth\": \"Max depth\",\n \"maxMessageLength\": \"Max message length\",\n \"maxOutputTokens\": \"Max tokens\",\n \"maxPages\": \"Max pages\",\n \"maxResults\": \"Max results\",\n \"maxStepCount\": \"Max steps\",\n \"maxUses\": \"Max uses\",\n \"mcpAuthType\": \"Authentication type\",\n \"mcpServer\": \"MCP server\",\n \"mcpServerUrl\": \"MPC server URL\",\n \"mcpStatelessServer\": \"Stateless client\",\n \"memberSince\": \"Member since\",\n \"memories\": \"Memories\",\n \"memory\": \"Memory\",\n \"message\": \"Message\",\n \"messageDetails\": \"Message detail\",\n \"messageNumber\": \"Message {n}\",\n \"messagePlaceholder\": \"Placeholder\",\n \"messages\": \"Messages\",\n \"metadata\": \"Metadata\",\n \"method\": \"Method\",\n \"mimeTypeAudio\": \"Audio, transcribed (up to 25 MB)\",\n \"mimeTypeDocuments\": \"Documents\",\n \"mimeTypeImages\": \"Images\",\n \"mimeTypeSpreadsheets\": \"Spreadsheets (.xlsx)\",\n \"mimeTypeText\": \"Text\",\n \"minuteRateLimit\": \"Minute rate limit\",\n \"mmr\": \"Maximal marginal relevance (MMR)\",\n \"mmrCandidatesLimit\": \"Candidates limit\",\n \"mmrDiversity\": \"MMR diversity\",\n \"model\": \"Model\",\n \"modelParameters\": \"Model parameters\",\n \"month\": \"Month\",\n \"monthRateLimit\": \"Month rate limit\",\n \"monthlyCost\": \"Monthly cost\",\n \"multipleChoiceAllowCustomAnswer\": \"Allow custom answer\",\n \"multipleChoiceMaxOptions\": \"Maximum number of options\",\n \"name\": \"Name\",\n \"nameClaim\": \"Name claim\",\n \"never\": \"Never\",\n \"newChat\": \"New chat\",\n \"newPassword\": \"New password\",\n \"no\": \"No\",\n \"noDataAvailable\": \"No data available\",\n \"noDataRetention\": \"ZDR\",\n \"noFieldMapping\": \"No custom field mapping configured\",\n \"noIntegrations\": \"No integrations configured\",\n \"noPromptTraining\": \"No training\",\n \"noSyncLogs\": \"No sync logs found\",\n \"noTimingData\": \"No data yet. Make a chat request to see timing logs.\",\n \"notAvailable\": \"Not available\",\n \"notCompatible\": \"not compatible\",\n \"notConfigured\": \"Not configured\",\n \"notConnected\": \"Not connected\",\n \"notSynced\": \"Not synced\",\n \"notificationTitle\": {\n \"document_error\": \"Document processing failed\",\n \"document_sync_removed\": \"Documents removed from a synchronised folder\",\n \"headless_quota_exceeded\": \"Daily automation quota reached\",\n \"organization\": {\n \"created\": \"Organization created\",\n \"invite\": \"Organization invite\",\n \"invite_accepted\": \"Invitation accepted\",\n \"invite_rejected\": \"Invitation rejected\",\n \"removed\": \"Removed from organization\"\n },\n \"password_reset_requested\": \"A password reset has been requested\",\n \"two_factor\": {\n \"enabled\": \"Two-step verification turned on\",\n \"disabled\": \"Two-step verification turned off\",\n \"app\": \"Two-step verification uses an app\",\n \"reset\": \"Two-step verification reset\",\n \"passkeyAdded\": \"Passkey added\",\n \"passkeyRemoved\": \"Passkey removed\",\n \"unlocked\": \"Two-step verification unlocked\",\n \"passkeyRemovedByAdmin\": \"Passkey removed by an administrator\",\n \"trustedDevicesForgotten\": \"Trusted devices forgotten\"\n },\n \"web_source_pages_removed\": \"Pages removed because they left the sitemap\",\n \"web_source_removal_held\": \"Pages that left a sitemap were not removed\"\n },\n \"notificationType\": {\n \"agent_wakeup\": \"Agent check\",\n \"api_key_expiring\": \"API Key expiring\",\n \"chat_blocked\": \"Chat blocked\",\n \"chat_warning\": \"Chat warning\",\n \"document_error\": \"Document error\",\n \"document_sync_removed\": \"Synchronised content removed\",\n \"generic\": \"Generic\",\n \"headless_quota_exceeded\": \"Automation quota\",\n \"organization\": \"Organization\",\n \"password_reset_requested\": \"Password reset requested\",\n \"two_factor\": \"Sign-in security\",\n \"web_source_pages_removed\": \"Pages that left a sitemap\",\n \"web_source_removal_held\": \"Removal to confirm\"\n },\n \"oauthAuthorizationUrl\": \"OAuth authorization URL\",\n \"oauthClientId\": \"OAuth client ID\",\n \"oauthClientSecret\": \"OAuth client secret\",\n \"oauthScopes\": \"OAuth scopes\",\n \"oauthTokenUrl\": \"OAuth token URL\",\n \"ocrUsed\": \"OCR\",\n \"older\": \"Older\",\n \"onChannels\": \"WA · Teams\",\n \"openSource\": \"Open source\",\n \"operatingSystems\": \"Operating systems\",\n \"or\": \"Or\",\n \"organization\": \"Organization\",\n \"organizations\": \"Organizations\",\n \"origin\": \"Origine\",\n \"originalMessage\": \"Original answer\",\n \"origins\": \"Origins\",\n \"outOfStock\": \"Out of stock\",\n \"output\": \"Output\",\n \"outputSchema\": \"Output schema\",\n \"pages\": \"Pages\",\n \"passphrase\": \"Enter passphrase\",\n \"password\": \"Password\",\n \"paused\": \"Paused\",\n \"peakHours\": \"Peak hours\",\n \"perMillionTokens\": \"per million tokens\",\n \"period\": \"Period\",\n \"phone\": \"Phone number\",\n \"picture\": \"Picture\",\n \"platformAssistant\": \"Platform assistant\",\n \"platformContext\": \"Platform context\",\n \"preferences\": \"Preferences\",\n \"presencePenalty\": \"Presence penalty\",\n \"preview\": \"Preview\",\n \"priceInput\": \"Input price\",\n \"priceOutput\": \"Output price\",\n \"priority\": \"Priority\",\n \"priority_1\": \"Lowest\",\n \"priority_2\": \"Low\",\n \"priority_3\": \"Normal\",\n \"priority_4\": \"High\",\n \"priority_5\": \"Critical\",\n \"privacy\": \"Privacy\",\n \"privacyPolicyNotice\": \"Visible in the contact form.\",\n \"processedAt\": \"Processed at\",\n \"processing\": \"Processing…\",\n \"profile\": \"Profile\",\n \"prompt\": \"Prompt\",\n \"properties\": \"Properties\",\n \"provider\": \"Provider\",\n \"providerOrganizationId\": \"Provider ID\",\n \"providerTimeoutMs\": \"Provider timeout (ms)\",\n \"qdrantSync\": \"Vector sync\",\n \"qrCode\": \"QR code\",\n \"question\": \"Question\",\n \"rateLimits\": \"Rate limits\",\n \"read\": \"Read\",\n \"reasoning\": \"Reasoning\",\n \"reasoningAgentTester\": \"Reasoning agent tester\",\n \"reasoningDetails\": \"Reasoning details\",\n \"reasoningEffort\": \"Reasoning effort\",\n \"reasoningSummary\": \"Reasoning summary\",\n \"recommended\": \"Recommended\",\n \"redundantChunks\": \"Redundant chunks\",\n \"referrerDomains\": \"Referrer domains\",\n \"refillAmount\": \"Refill amount\",\n \"released\": \"Released\",\n \"rememberMe\": \"Remember me\",\n \"replyWithoutText\": \"Reply without text\",\n \"requestCount\": \"Requests\",\n \"requestedAt\": \"Requested at\",\n \"requests\": \"Requests\",\n \"requestsPerAgent\": \"Requests per agent\",\n \"requestsUsed\": \"Requests used\",\n \"required\": \"Required\",\n \"requiredFields\": \"Required fields\",\n \"retired\": \"retired\",\n \"revisedMessage\": \"Revised answer\",\n \"right\": \"Right\",\n \"riskScoreBands\": \"Risk score bands\",\n \"role\": \"Role\",\n \"rootDocuments\": \"Without folder\",\n \"scheduledAt\": \"Scheduled at\",\n \"schemaRootArray\": \"Array\",\n \"schemaRootObject\": \"Object\",\n \"schemas\": \"Schemas\",\n \"screenCategories\": \"Screen resolution\",\n \"searchAndExecution\": \"Search & execution\",\n \"searchMode\": \"Search mode\",\n \"searchRecencyFilter\": \"Recency filter\",\n \"sectionChannelBreakdown\": \"Channel breakdown\",\n \"sectionConversationQuality\": \"Conversation quality\",\n \"sectionCostTrend\": \"Monthly cost trend\",\n \"sectionDeviceContext\": \"Devices & context (web and widget)\",\n \"sectionTraffic\": \"Traffic (web and widget)\",\n \"security\": \"Security\",\n \"selectAgent\": \"Select an agent\",\n \"selectedHint\": \"Selected\",\n \"sentiment\": \"Sentiment\",\n \"sentimentTrends\": \"Sentiment trends\",\n \"serverInfo\": \"MCP Server info\",\n \"sessionExpiresIn\": \"Session duration (seconds)\",\n \"setPassword\": \"Set password\",\n \"settings\": \"Settings\",\n \"sfApiVersion\": \"API version\",\n \"sfClientId\": \"Client ID\",\n \"sfClientSecret\": \"Client secret\",\n \"sfExternalIdField\": \"External ID field\",\n \"sfInstanceUrl\": \"Instance URL\",\n \"shareWith\": \"Share with agents\",\n \"showExtendedSteps\": \"Extended steps view\",\n \"similarity\": \"Similarity\",\n \"sitemapUrl\": \"Sitemap URL\",\n \"size\": \"Size\",\n \"slug\": \"Slug\",\n \"smartRanking\": \"Smart ranking\",\n \"smoothStream\": \"Smooth streaming\",\n \"source\": \"Source\",\n \"sources\": \"Sources\",\n \"spokenExchange\": \"Exchanged by voice\",\n \"startDate\": \"Start date\",\n \"startUrl\": \"Start URL\",\n \"status\": \"Status\",\n \"style\": \"Style\",\n \"subAgent\": \"Sub-agent\",\n \"subject\": \"Subject\",\n \"syncStatus\": \"Sync status\",\n \"targetAll\": \"All users\",\n \"targetOrganization\": \"Organization\",\n \"targetType\": \"Target\",\n \"targetUser\": \"Specific user\",\n \"teams\": \"Microsoft Teams\",\n \"teamsAccentColor\": \"Accent color\",\n \"teamsAppId\": \"App ID (Microsoft)\",\n \"teamsAppPassword\": \"App password / client secret\",\n \"teamsAppTenantId\": \"Tenant ID\",\n \"teamsAppType\": \"App type\",\n \"teamsAppVersion\": \"App version\",\n \"teamsDescriptionFull\": \"Full description\",\n \"teamsDescriptionShort\": \"Short description\",\n \"teamsDeveloperName\": \"Developer name\",\n \"teamsManifestDetails\": \"App details (shown in Teams)\",\n \"temperature\": \"Temperature\",\n \"testConnection\": \"Test connection\",\n \"testPlayground\": \"Test playground\",\n \"textColor\": \"Text color\",\n \"theme\": \"Theme\",\n \"thinking\": \"Thinking\",\n \"thinkingBudget\": \"Thinking budget\",\n \"thinkingDisplay\": \"Thinking display\",\n \"thinkingEffort\": \"Thinking effort\",\n \"thinkingLevel\": \"Thinking level\",\n \"thinkingType\": \"Thinking type\",\n \"thisMonth\": \"This month\",\n \"timeoutMs\": \"Timeout (ms)\",\n \"timezoneRegions\": \"Timezone region\",\n \"title\": \"Title\",\n \"today\": \"Today\",\n \"tokens\": \"tokens\",\n \"tool\": \"Tool\",\n \"toolApprovalBadge\": \"User confirm\",\n \"toolName\": \"Tool name: {name}\",\n \"toolRequiresApproval\": \"Ask the user to confirm\",\n \"toolWorkingSet\": \"Tool selection\",\n \"toolWorkingSetMode\": \"Mode\",\n \"tools\": \"Tools\",\n \"topPages\": \"Top pages\",\n \"topTopics\": \"Trending topics\",\n \"total\": \"Total\",\n \"totalConversations\": \"Chat in total\",\n \"totalCost\": \"Total cost\",\n \"totalCostPartlyEstimated\": \"Total cost, partly estimated\",\n \"totalItemsCount\": \"Items: {total}\",\n \"totalMessages\": \"Messages in total\",\n \"totalPages\": \"of {total}\",\n \"trustedOrigins\": \"Trusted origins\",\n \"tuning\": \"Tuning\",\n \"type\": \"Type\",\n \"uniqueUsers\": \"Unique users\",\n \"unitChat\": \"chats\",\n \"unitChatPerUser\": \"chats\",\n \"unitMessages\": \"messages\",\n \"unitMessagesPerChat\": \"messages\",\n \"unitUsers\": \"users\",\n \"unknown\": \"Unknown\",\n \"unread\": \"Unread\",\n \"updateProfile\": \"Update profile\",\n \"updatedAt\": \"Updated at\",\n \"upload\": \"Upload {index}/{total}\",\n \"url\": \"Web page URL\",\n \"usage\": \"Usage\",\n \"useBrowserEngine\": \"Browser engine\",\n \"useExtractionStrategy\": \"Use AI\",\n \"user\": \"User\",\n \"userInput\": \"Selected option\",\n \"userQuestion\": \"Question\",\n \"userTones\": \"User tone\",\n \"users\": \"Users\",\n \"utilityModel\": \"Model for internal tasks\",\n \"value\": \"Value\",\n \"version\": \"Version\",\n \"video\": \"Video\",\n \"viewPdfPage\": \"View PDF page\",\n \"visibility\": \"Visibility\",\n \"visualEditor\": \"Visual\",\n \"voice\": \"Voice\",\n \"voiceCascadeTimeoutSeconds\": \"Answer deadline (seconds)\",\n \"voiceEnabled\": \"Voice conversation\",\n \"voiceFillerAfterSeconds\": \"Filler after (seconds)\",\n \"voiceFillerMessage\": \"Filler phrase\",\n \"voiceFirstMessage\": \"Opening line\",\n \"voiceId\": \"Voice\",\n \"voiceIgnoreBackgroundVoices\": \"Ignore background voices\",\n \"voiceLanguage\": \"Spoken language\",\n \"voiceMaxSessionSeconds\": \"Session limit (seconds)\",\n \"voiceTurnEagerness\": \"End of turn\",\n \"voiceTurnTimeoutSeconds\": \"Pause before speaking again (seconds)\",\n \"vote\": \"Vote\",\n \"warnings\": \"Warnings\",\n \"webSearch\": \"Web search\",\n \"webSearchEnabled\": \"Enable web search\",\n \"webSearchNative\": \"Built-in\",\n \"webSearchProvider\": \"Search provider\",\n \"webhookUrl\": \"Webhook URL\",\n \"week\": \"Week\",\n \"welcome\": \"Welcome to {appName}!\",\n \"whatsapp\": \"WhatsApp\",\n \"whatsappAccessToken\": \"Access token\",\n \"whatsappAppSecret\": \"App secret\",\n \"whatsappPhoneNumberId\": \"Phone number ID\",\n \"whatsappVerifyToken\": \"Verify token\",\n \"white\": \"White\",\n \"widgetUrl\": \"Widget URL\",\n \"year\": \"Year\",\n \"yes\": \"Yes\",\n \"yesterday\": \"Yesterday\",\n \"zeroDataRetention\": \"Zero data retention (ZDR)\",\n \"webPagesRefresh\": \"How often to read the pages again\",\n \"webSourceWatch\": \"Also look for new pages\",\n \"webSourceInterval\": \"How often to look for them\",\n \"webSourceRemoveMissing\": \"Remove pages that leave the sitemap\",\n \"apiUrl\": \"API URL\",\n \"createEndpoint\": \"Create endpoint\",\n \"wakeupCheck\": \"Automatic check\",\n \"wakeupNext\": \"Next check at {time}\",\n \"wakeupQuietRun\": \"Nothing new at the {time} check | Nothing new in {count} checks, the last at {time}\"\n },\n \"language\": {\n \"de\": \"German\",\n \"en\": \"English\",\n \"english\": \"English\",\n \"es\": \"Spanish\",\n \"fr\": \"French\",\n \"french\": \"French\",\n \"german\": \"German\",\n \"it\": \"Italian\",\n \"italian\": \"Italian\",\n \"nl\": \"Dutch\",\n \"pt\": \"Portuguese\",\n \"spanish\": \"Spanish\"\n },\n \"lead\": {\n \"contactReason\": {\n \"appointment\": \"Appointment\",\n \"callback_request\": \"Callback request\",\n \"complaint\": \"Complaint\",\n \"info_request\": \"Information request\",\n \"other\": \"Other\",\n \"quote_request\": \"Quote request\",\n \"support\": \"Support\"\n },\n \"label\": {\n \"budget\": \"Budget\",\n \"company\": \"Company\",\n \"contactReason\": \"Contact reason\",\n \"conversationSummary\": \"Conversation summary\",\n \"preferredContactMethod\": \"Preferred contact method\",\n \"preferredContactTime\": \"Preferred contact time\",\n \"productInterest\": \"Product interest\",\n \"sentiment\": \"Sentiment\",\n \"topics\": \"Topics\",\n \"urgency\": \"Urgency\"\n },\n \"preferredContactMethod\": {\n \"any\": \"Any\",\n \"email\": \"Email\",\n \"phone\": \"Phone\",\n \"whatsapp\": \"WhatsApp\"\n },\n \"preferredContactTime\": {\n \"afternoon\": \"Afternoon\",\n \"any\": \"Any\",\n \"evening\": \"Evening\",\n \"morning\": \"Morning\"\n },\n \"sentiment\": {\n \"excited\": \"Excited\",\n \"frustrated\": \"Frustrated\",\n \"negative\": \"Negative\",\n \"neutral\": \"Neutral\",\n \"positive\": \"Positive\"\n },\n \"urgency\": {\n \"high\": \"High\",\n \"low\": \"Low\",\n \"medium\": \"Medium\"\n }\n },\n \"mcpAuthType\": {\n \"headers\": \"HTTP headers (API key)\",\n \"oauth\": \"OAuth 2.0 per user\"\n },\n \"mcpConnectionStatus\": {\n \"active\": \"In use\",\n \"orphan\": \"Unused\",\n \"stale\": \"Expired\"\n },\n \"mcpServerStatus\": {\n \"active\": \"Active\",\n \"error\": \"Error\",\n \"inactive\": \"Inactive\"\n },\n \"member\": {\n \"agentAccess\": {\n \"hint\": \"Leave empty to let this member use every organization agent. Select agents to limit them to those only.\",\n \"managerHint\": \"Owners and admins can use every agent; their access cannot be restricted.\"\n }\n },\n \"memorySource\": {\n \"explicit\": \"Explicit | Explicit\",\n \"extracted\": \"Extracted | Extracted\"\n },\n \"message\": {\n \"accountLinkAlreadyLinked\": \"This account is already linked to another user. Sign in with that user to unlink it first.\",\n \"accountLinkCancelled\": \"Linking was cancelled on the provider's page. Nothing was changed.\",\n \"accountLinkEmailMismatch\": \"You can only link accounts that use the same email as your profile.\",\n \"accountLinkErrorWithCode\": \"Unable to link the account (code: {code}). Try again or contact support with this code.\",\n \"accountLinkNotAllowed\": \"This provider cannot be linked to your profile: the account's email is not verified or linking is disabled.\",\n \"accountLinkUserInfo\": \"The provider did not return a usable profile, so no account was linked. Try again.\",\n \"accountUnlinked\": \"Account disconnected\",\n \"agentAccessDenied\": \"You do not have access to this agent\",\n \"agentAccessDeniedAction\": \"View available agents\",\n \"agentActivated\": \"Agent activated successfully\",\n \"agentDeactivated\": \"Agent deactivated successfully\",\n \"agentNotFound\": \"Agent not found\",\n \"agentsEmpty\": \"No agents yet. Create the first one to get started.\",\n \"analyzeChatError\": \"The analysis did not complete. Try again in a few minutes.\",\n \"analyzeChatInProgress\": \"Analyzing the conversation. A long conversation can take about a minute.\",\n \"analyzeChatSuccess\": \"Conversation analyzed successfully\",\n \"apiKeyCreatedForUser\": \"Shown only once: copy it and pass it on securely.\",\n \"apiKeysEmpty\": \"The keys you create for programmatic access appear here.\",\n \"apiToolsEmpty\": \"No API tools yet. Add the first one to let the agent call an external service.\",\n \"banSuccess\": \"User banned successfully\",\n \"blockChatSuccess\": \"Conversation blocked successfully\",\n \"bulkUnlinkAllDeleteConfirm\": \"{count} document(s) will be permanently deleted because they have no other linked agents. Do you want to proceed?\",\n \"bulkUnlinkMixedConfirm\": \"{unlinkCount} document(s) will be unlinked and {deleteCount} will be permanently deleted (they have no other linked agents). Do you want to proceed?\",\n \"cancelInvitationConfirm\": \"Are you sure you want to cancel the invitation for {email}?\",\n \"cancelInvitationSuccess\": \"Invitation cancelled successfully\",\n \"chatActionError\": \"The action did not complete. Try again in a few minutes.\",\n \"chatAnonymized\": \"The content of this conversation has been erased (GDPR): only aggregate metrics remain.\",\n \"chatErrorBadRequest\": \"An error occurred with the request. Start a new chat to continue.\",\n \"chatErrorContextWindow\": \"The conversation has become too long. Start a new chat to continue.\",\n \"chatErrorConversationBlocked\": \"This conversation has been blocked for policy violations.\",\n \"chatErrorCreditExhausted\": \"Service unavailable. Try again later.\",\n \"chatErrorGatewayDisabled\": \"This agent's model is not available: the organization does not use the platform AI gateway. An administrator can move the agent to one of the organization's own models.\",\n \"chatErrorGatewayPromptTraining\": \"Model \\\"{model}\\\" does not support the \\\"Disable prompt training\\\" option. Disable this setting in the agent's gateway configuration or choose a compatible model.\",\n \"chatErrorGatewayZdr\": \"Model \\\"{model}\\\" does not support the \\\"Zero Data Retention\\\" option. Disable ZDR in the agent's gateway configuration or choose a compatible model.\",\n \"chatErrorGeneric\": \"An error occurred. Start a new chat if the problem persists. Retrying in {seconds}…\",\n \"chatErrorInternalServer\": \"A server error occurred. Start a new chat to continue.\",\n \"chatErrorModelUnavailable\": \"This agent's model is not available right now: the endpoint it runs on is switched off or no longer serves it. An administrator can switch it back on or move the agent to another model.\",\n \"chatErrorNotFound\": \"The conversation is no longer available. Start a new chat to continue.\",\n \"chatErrorOriginNotAllowed\": \"The request origin is not allowed. Contact the system administrator.\",\n \"chatErrorRateLimit\": \"The rate limit has been exceeded. Retrying in {seconds} seconds…\",\n \"chatErrorRetrying\": \"Retrying in {seconds} seconds…\",\n \"checkYourEmail\": \"Check your email inbox\",\n \"confirm\": \"Are you sure you want to proceed?\",\n \"confirmRefillCredits\": \"Are you sure you want to refill the credit of {amount} €?\",\n \"contentTruncated\": \"Content truncated. Total characters: {total}\",\n \"copied\": \"Copied to clipboard\",\n \"crawlError\": \"Error during crawling\",\n \"createFolderSuccess\": \"Folder created successfully\",\n \"defaultAgentWelcome\": \"Hello! How can I help you today?\",\n \"defaultPrivacyPolicyNotice\": \"By sending the request you accept our [Privacy Policy](https://www.iubenda.com/privacy-policy/46350192).\",\n \"deleteAgentConfirm\": \"Its folders are deleted. A document no other agent uses is deleted, a shared one stays with the other agents.\",\n \"deleteAllMemoriesConfirm\": \"They go for good, semantic search included.\",\n \"deleteAllNotificationsConfirm\": \"Delete every notification?\",\n \"deleteBulkDocumentConfirm\": \"They are removed from every agent linked to them and go to the trash, where they can be restored.\",\n \"deleteDocumentConfirm\": \"It is removed from every agent linked to it and goes to the trash, where it can be restored.\",\n \"deleteDocumentConfirmWithAgents\": \"It goes to the trash, where it can be restored, and is removed from the following agents:{agents}\",\n \"deleteError\": \"The deletion failed. Try again.\",\n \"deleteFolderConfirm\": \"Its documents are removed from this agent. A document no other agent uses is deleted.\",\n \"deleteFolderSuccess\": \"Folder deleted successfully\",\n \"deleteMyConversationsConfirm\": \"This cannot be undone.\",\n \"deleteNotificationConfirm\": \"Delete this notification?\",\n \"deleteProfileBlockedSoleOwner\": \"You are the sole owner of {organizations}. Transfer ownership or delete the organizations before deleting your account.\",\n \"deleteProfileConfirm\": \"You are about to permanently delete your account: your profile will be anonymized and the content of your conversations erased. This action cannot be undone.\",\n \"deleteProfileDescription\": \"Anonymize your account and erase the content of your conversations (right to be forgotten).\",\n \"diagramRenderError\": \"Could not render diagram.\",\n \"documentRefreshPausedReason\": \"The page no longer responds, so the automatic update is paused. Update now to try again.\",\n \"documentRefreshSet\": \"Automatic update set on {updated} documents, {skipped} skipped because they are not web pages\",\n \"documentRefreshStarted\": \"Update started on {queued} documents, {skipped} skipped\",\n \"documentsEmpty\": \"Nothing in this folder yet. Add documents from the Create menu, or start with a folder.\",\n \"documentsEmptyManaged\": \"No synced files in this folder. Its content comes from the connected source: if you have just linked it, the first import can take a few minutes.\",\n \"documentsNoMatch\": \"No document matches the search or the filters. Reset them to see everything.\",\n \"documentSourceLinked\": \"Folder linked. The first import starts shortly.\",\n \"documentSourceNothingHere\": \"Nothing in here.\",\n \"documentSourceStale\": \"The state of this folder is not up to date: the last read failed.\",\n \"documentSourceUnlinked\": \"Folder unlinked. Its documents stay, and can now be edited like any other.\",\n \"embeddingActivated\": \"Embedding saved: the endpoint serves the declared model\",\n \"embeddingBackToPlatform\": \"The vectors are computed on the platform again\",\n \"embeddingIndexNotUpdated\": \"The progress stopped updating.\",\n \"embeddingRemoved\": \"Embedding removed from the endpoint\",\n \"empty\": \"No items found\",\n \"endpointActivated\": \"Endpoint activated successfully\",\n \"endpointDeactivated\": \"Endpoint deactivated successfully\",\n \"endpointsEmpty\": \"No endpoints yet. Create the first one to expose the agent over HTTP.\",\n \"error\": \"Error\",\n \"errorRetry\": \"Something went wrong. Try again.\",\n \"exportError\": \"Error while exporting data\",\n \"exportFailed\": \"The data export failed. Try again later.\",\n \"exportMyDataDescription\": \"Download a complete copy of your personal data as a ZIP archive (GDPR Art. 15 and 20).\",\n \"exportRequested\": \"We are preparing your archive: you will receive an email with the download link.\",\n \"exportSuccess\": \"CSV exported successfully\",\n \"feedbackSubmitError\": \"Submission failed. Try again.\",\n \"feedbackSubmittedMessage\": \"Your feedback has been submitted successfully.\",\n \"feedbackSubmittedTitle\": \"Thank you!\",\n \"feedbacksEmpty\": \"Feedback that users leave on the agent's answers will appear here.\",\n \"fileAlreadyImported\": \"Already imported\",\n \"fileAlreadyImportedExistingList\": \"The following files are already present in the organization:\\n{names}\",\n \"fileAlreadyImportedLink\": \"This file has already been imported. Do you want to link the existing document to the current agent or create a new one?\",\n \"fileAlreadyImportedNewList\": \"The following files are new and will be imported normally:\\n{names}\",\n \"fileAlreadyImportedQuestion\": \"Do you want to link the existing files to the current agent?\",\n \"fileAlreadyLinkedToAgent\": \"The following files are already linked to the current agent:\\n{names}\",\n \"fileLimitPerChat\": \"You have reached the limit of {max} files for this conversation.\",\n \"fileLimitPerMessage\": \"You can attach at most {max} files per message.\",\n \"foldersEmpty\": \"No folders yet. Create the first one from the documents page to organize them.\",\n \"formRenderError\": \"The form could not be shown. Ask again and the agent will send it.\",\n \"gdprRequestsEmpty\": \"Export or deletion requests for this user appear here.\",\n \"geolocationPermissionDenied\": \"Location access denied. Allow it in your browser settings.\",\n \"geolocationUnavailable\": \"Location unavailable. Try again or enter your location manually.\",\n \"getMcpServerInfoError\": \"An error occurred while loading the tools.\",\n \"importError\": \"Error during import\",\n \"importSuccess\": \"{count} documents imported successfully\",\n \"importing\": \"Importing…\",\n \"info\": \"Information\",\n \"insufficientCredit\": \"Insufficient credit. Try again later.\",\n \"insufficientCreditMessage\": \"Your credit is insufficient to complete this operation. Contact the system administrator for more information.\",\n \"integrationConnected\": \"Connected successfully.\",\n \"integrationCreated\": \"Integration created successfully\",\n \"integrationDisabled\": \"Integration disabled\",\n \"integrationDisconnected\": \"Connection removed.\",\n \"integrationDisconnectConfirm\": \"The folders it keeps in sync are unlinked.\",\n \"integrationEnabled\": \"Integration enabled\",\n \"integrationOAuthDenied\": \"The connection was refused, or a Microsoft 365 administrator has not approved it yet.\",\n \"integrationOAuthFailed\": \"The connection did not succeed.\",\n \"integrationOAuthStartFailed\": \"The connection could not be started.\",\n \"integrationRemoveConfirm\": \"This integration's configuration is removed.\",\n \"integrationTestFailed\": \"Connection test failed: {error}\",\n \"integrationTestSuccess\": \"Connection verified successfully\",\n \"integrationUpdated\": \"Integration updated successfully\",\n \"invalidJson\": \"The input is not valid JSON\",\n \"invitationAccepted\": \"Invitation accepted\",\n \"invitationAlreadyHandled\": \"Invitation already handled\",\n \"invitationDeclined\": \"Invitation declined\",\n \"invitationToJoinOrganization\": \"You have been invited to join\",\n \"invitationsEmpty\": \"No pending invitations. Invite people from the members page.\",\n \"leadSubmitError\": \"Failed to submit. Try again.\",\n \"leadSubmittedMessage\": \"Your information has been submitted successfully.\",\n \"leadSubmittedTitle\": \"Thank you!\",\n \"leadsEmpty\": \"Leads collected by the agent during conversations will appear here.\",\n \"leftOrganization\": \"You have successfully left the organization\",\n \"loadConversationsError\": \"Failed to load conversations\",\n \"loading\": \"Loading…\",\n \"loadingError\": \"Error while loading\",\n \"mcpConnectionConnectedAt\": \"Signed in on {date}\",\n \"mcpConnectionDisconnectDescription\": \"The agents will no longer use your {name} account. The next time you need it, the agent will ask you to sign in, and you can choose a different account.\",\n \"mcpConnectionDisconnectQuestion\": \"Disconnect {name}?\",\n \"mcpConnectionDisconnected\": \"{name} account disconnected\",\n \"mcpConnectionsDescription\": \"The services you signed in to with your account. Disconnect one to stop the agents from using it, or to sign in again with a different account.\",\n \"mcpConnectionsAvailableDescription\": \"The integrations of the agents you use that you have not signed in to yet. You can connect them now, without waiting for the agent to ask.\",\n \"mcpConnectionConnected\": \"{name} account connected\",\n \"mcpConnectionConnectFailed\": \"Signing in to {name} did not work. Try again, and if it keeps failing, tell whoever runs the agent.\",\n \"mcpConnectionUsedBy\": \"Used by {agents}\",\n \"mcpConnectionUsedByNone\": \"No agent uses it\",\n \"noMcpConnections\": \"No connected integrations\",\n \"userMcpConnectionsEmpty\": \"This user has not signed in to any integration with their own account.\",\n \"mcpConnectionRevokeQuestion\": \"Revoke {user}'s sign-in to {name}?\",\n \"mcpConnectionRevokeDescription\": \"The agents will no longer use their {name} account. The provider is asked to revoke it too, where it supports that; otherwise the authorization stays valid there until it expires. To use it again, {user} has to sign in themselves. They will receive a notification.\",\n \"mcpConnectionRevokedAtProvider\": \"Sign-in to {name} revoked, at the provider too\",\n \"mcpConnectionRevokedHere\": \"Sign-in to {name} revoked here. The provider did not confirm the revocation: the authorization may stay valid there until it expires.\",\n \"mcpServerCheckError\": \"Error while checking MCP Server: {error}\",\n \"mcpServerCheckSuccess\": \"MCP Server check successful\",\n \"mcpServerInvalidEndpoint\": \"This URL does not point to an MCP endpoint: the server replied with a web page. Check the path, MCP servers usually expose it under /mcp.\",\n \"mcpServersEmpty\": \"No MCP servers yet. Connect the first one to give the agent new tools.\",\n \"membersEmpty\": \"No members yet. Invite the first one to get started.\",\n \"memoriesEmpty\": \"Memories the agent saves about this user during conversations will appear here.\",\n \"memoryNotSynced\": \"Memory not synced with semantic search: it is not considered in answers until the repair sweep heals it.\",\n \"modelDiscoveryUnavailable\": \"This endpoint does not provide the list of its models: enter the ids by hand.\",\n \"modelDiscoveryFailed\": \"We could not read the list of models from the endpoint: only the models already saved are shown.\",\n \"modelPricesUnchanged\": \"No price changed.\",\n \"modelPricesUpdated\": \"Updated the price of one model: {models}. | Updated the prices of {count} models: {models}.\",\n \"modelProviderDeleted\": \"Endpoint deleted.\",\n \"moveDocumentSuccess\": \"Document moved successfully\",\n \"noActiveSessions\": \"No other active sessions\",\n \"noApiKeys\": \"No API keys\",\n \"noChats\": \"No chat available\",\n \"noConnectedAccounts\": \"No connected accounts\",\n \"noConversations\": \"No conversations found\",\n \"noConversationsHint\": \"Start a new chat to see it appear here.\",\n \"noCreditsData\": \"No credit data available\",\n \"noEndpointLogs\": \"No calls to this endpoint yet\",\n \"noEndpointModels\": \"No model available: the endpoint listed none.\",\n \"modelRemoved\": \"Model removed.\",\n \"noGdprRequests\": \"No GDPR requests\",\n \"noLinkedAgents\": \"No linked agents\",\n \"noNotifications\": \"No notifications\",\n \"noOptions\": \"No options\",\n \"noOrganizations\": \"No organizations\",\n \"noResults\": \"No results\",\n \"noSearchResults\": \"Nothing matches your search. Clear it to see everything.\",\n \"notificationsEmpty\": \"No notifications sent yet. Create the first one to reach your users.\",\n \"oauthConfigIncomplete\": \"OAuth configuration incomplete. Set the Client ID in the MCP server settings.\",\n \"oauthConnected\": \"OAuth authorization completed successfully\",\n \"oauthError\": \"Error during OAuth authorization\",\n \"organizationDisconnected\": \"Neither the platform gateway nor an endpoint of its own serves this organization, so its agents do not answer.\",\n \"organizationMembersEmpty\": \"No members yet. Add the first one to get started.\",\n \"organizationNotSelected\": \"No organization selected\",\n \"organizationsEmpty\": \"No organizations yet. Create the first one to get started.\",\n \"pageNotFound\": \"Page not found\",\n \"passwordChangeSuccess\": \"Password changed successfully\",\n \"passwordResetSuccess\": \"Password reset. Every session of the account has been closed: sign in with the new password.\",\n \"profileOrganizationsEmpty\": \"The organizations you belong to appear here.\",\n \"readError\": \"Error while reading\",\n \"reasoningAgent\": \"This is a reasoning agent. It is not designed to maintain the conversation history, each message is processed independently.\",\n \"recoverPasswordSuccess\": \"Recovery email sent successfully\",\n \"refillFailed\": \"Refill failed. Try again later.\",\n \"refillSuccess\": \"Refill completed successfully\",\n \"refreshSuccess\": \"Refresh completed successfully\",\n \"releaseNotesEmpty\": \"No release notes published yet. Updates will be listed here as they ship.\",\n \"removeSuccess\": \"Removal completed successfully\",\n \"renameFolderSuccess\": \"Folder renamed successfully\",\n \"revisedAnswersEmpty\": \"No revised answers yet. Create the first one to teach the agent a better reply.\",\n \"selectedCount\": \"{count} of {total} selected\",\n \"sendInvitationConfirm\": \"Are you sure you want to resend the invitation to {email}?\",\n \"sessionRevoked\": \"Session signed out\",\n \"sessionsEmpty\": \"Signing in from another device or browser opens a new session, listed here.\",\n \"setPasswordDescription\": \"For now you sign in only through a connected account. Set a password to sign in with email and password too: we will email you a link to create it. Creating it closes every open session, this one included.\",\n \"setPasswordLinkSent\": \"We sent the link to {email}.\",\n \"sharedSuccess\": \"Document shared successfully\",\n \"sitemapUrlRequired\": \"Sitemap URL is required\",\n \"startUrlRequired\": \"Start URL is required\",\n \"subAgentsEmpty\": \"Connect an agent to delegate part of the conversation to it.\",\n \"submitError\": \"Error while saving\",\n \"submitSuccess\": \"Save completed successfully\",\n \"success\": \"Success\",\n \"testExecutionError\": \"Error executing test\",\n \"toolNameAutoGenerated\": \"The tool name will be generated automatically\",\n \"typeToSearch\": \"Start typing to search…\",\n \"unauthorized\": \"You do not have permission to manage channels.\",\n \"unbanSuccess\": \"User unbanned successfully\",\n \"unblockChatSuccess\": \"Conversation unblocked successfully\",\n \"unlinkAgentConfirm\": \"The document stays available to the other agents linked to it.\",\n \"unlinkDocumentConfirm\": \"It stays available to the other agents linked to it.\",\n \"unlinkLastAgentDeleteConfirm\": \"The document is permanently deleted, because no other agent is linked to it.\",\n \"unlinkSuccess\": \"Document unlinked successfully\",\n \"unlinkSyncedFolderConfirm\": \"Syncing stops. The folder and its documents stay with the agent and can be edited like any other from now on: to remove them, delete the folder.\",\n \"unsavedChanges\": \"Save or discard your changes first\",\n \"urlAlreadyImported\": \"Already imported\",\n \"urlAlreadyImportedLink\": \"This URL has already been imported. Do you want to link it to the current agent?\",\n \"userApiKeysEmpty\": \"Keys this user creates from their profile for programmatic access will appear here.\",\n \"userChatsEmpty\": \"Conversations this user has with any agent will appear here.\",\n \"userOrganizationsEmpty\": \"This user does not belong to any organization yet. Add the first one.\",\n \"userUpdateSuccess\": \"User profile updated successfully\",\n \"usersEmpty\": \"No users yet. Create the first one to get started.\",\n \"voiceCancelled\": \"I have cancelled.\",\n \"voiceConfirmed\": \"I confirm.\",\n \"voiceConnecting\": \"Connecting…\",\n \"voiceConnectionDone\": \"I have completed the connection.\",\n \"voiceFailed\": \"The voice session stopped\",\n \"voiceInterrupted\": \"Try again, or continue in writing.\",\n \"voiceListening\": \"Listening\",\n \"voiceLocationRefused\": \"I would rather not share my location.\",\n \"voiceLocationShared\": \"My location is {place}.\",\n \"voiceMuted\": \"Microphone muted\",\n \"voiceNoAnswer\": \"The agent could not produce an answer for this call. Try again, or continue in writing.\",\n \"voiceSpeaking\": \"The agent is speaking\",\n \"voiceTookTooLong\": \"The answer took too long for the call. Try again, or continue in writing: the answer will appear here as soon as it is ready.\",\n \"warning\": \"Warning\",\n \"webSourceCreated\": \"Source created: the folder “{name}” will receive new pages.\",\n \"webSourceCreateError\": \"The source could not be created, and no page was imported.\",\n \"webSourceEditable\": \"Discovered pages stay editable. Unlinking the source leaves them where they are, with their automatic refresh.\",\n \"webSourceRemovalHeld\": \"The sitemap no longer lists {count} pages: too many at once to remove without a check, so nothing was removed.\",\n \"webSourceConfirmRemovalQuestion\": \"The next check takes out of the knowledge base the pages the sitemap no longer lists, up to {count}. Their content stays in the database.\",\n \"unlinkWebSourceConfirm\": \"The source stops looking for new pages. The folder and its pages stay, with their automatic refresh.\"\n },\n \"messagePart\": {\n \"audioTranscribing\": \"Transcribing the audio…\",\n \"audioTranscript\": \"Transcript\",\n \"audioTranscriptFailed\": \"It could not be transcribed\",\n \"audioTranscriptNoSpeech\": \"No speech could be heard in it\",\n \"audioTranscriptOff\": \"Not transcribed: transcription is off for this organization\",\n \"disconnectOAuthConnection\": \"Disconnecting…\",\n \"requestAccountLink\": \"Sending the sign-in link…\",\n \"unlinkAccount\": \"Unlinking the number…\",\n \"editSpreadsheet\": \"Editing the spreadsheet…\",\n \"editSpreadsheetCells\": \"{count} cell changed | {count} cells changed\",\n \"enableTools\": \"Enabling tools…\",\n \"expandChunkContext\": \"Reading more context…\",\n \"fetchTeamsChannelHistory\": \"Reading channel history…\",\n \"geocode\": \"Looking up a location…\",\n \"getWeather\": \"Fetching weather data…\",\n \"querySpreadsheet\": \"Querying the spreadsheet…\",\n \"readDocumentFile\": \"Reading the original document…\",\n \"readEarlierMessages\": \"Rereading earlier messages…\",\n \"readSpreadsheet\": \"Reading the spreadsheet…\",\n \"reasoning\": \"Reasoning…\",\n \"recallUserMemory\": \"Recalling user memories…\",\n \"requestGeolocation\": \"Requesting location…\",\n \"requestOAuthConnection\": \"Connecting…\",\n \"requestOAuthConnectionButton\": \"Connect {name}\",\n \"requestOAuthConnectionInfo\": \"Authorization requested to access {name}'s data.\",\n \"requestOAuthConnectionPrompt\": \"To access {name} data, you need to authorize the connection.\",\n \"requestOAuthConnectionSuccess\": \"Successfully connected to {name}.\",\n \"revisedAnswers\": \"Search frequently asked questions…\",\n \"runSubagent\": \"Delegating to a sub-agent…\",\n \"runWorker\": \"Delegating to a worker…\",\n \"saveUserMemory\": \"Updating user memory…\",\n \"scheduleWakeup\": \"Scheduling the next check…\",\n \"searchingDocuments\": \"Memory search…\",\n \"showArtifact\": \"Preparing content…\",\n \"showCalendarEvent\": \"Creating calendar event…\",\n \"showComparison\": \"Building comparison…\",\n \"showContactForm\": \"Creating contact form…\",\n \"showDiagram\": \"Rendering diagram…\",\n \"showEmail\": \"Composing email…\",\n \"showForm\": \"Creating form…\",\n \"showImageGallery\": \"Loading gallery…\",\n \"showLocation\": \"Loading location…\",\n \"showMessage\": \"Composing message…\",\n \"showMultipleChoice\": \"Show the options…\",\n \"showProducts\": \"Loading products…\",\n \"showQrCode\": \"Generating QR code…\",\n \"showSources\": \"Loading sources…\",\n \"showSuggestedReply\": \"Suggest a reply…\",\n \"showVideo\": \"Loading video…\",\n \"showWeather\": \"Loading forecast…\",\n \"showWebPages\": \"Loading pages…\",\n \"stepCount\": \"{n} step | {n} steps\",\n \"stepDocument\": \"Document\",\n \"stepDropped\": \"{n} query left out: over the limit | {n} queries left out: over the limit\",\n \"stepError\": \"Error\",\n \"stepExcerpts\": \"{n} excerpt | {n} excerpts\",\n \"stepInput\": \"Input\",\n \"stepItems\": \"{n} item | {n} items\",\n \"stepNoResults\": \"No results found\",\n \"stepOutput\": \"Output\",\n \"stepRepeated\": \"{n} excerpt already found earlier | {n} excerpts already found earlier\",\n \"stepTimedOut\": \"{n} search did not answer in time: results may be missing | {n} searches did not answer in time: results may be missing\",\n \"steps\": \"Processing\",\n \"streaming\": \"Loading…\",\n \"tool\": \"Running a tool…\",\n \"webSearch\": \"Searching the web…\"\n },\n \"organizationLimits\": {\n \"legend\": \"Limits\",\n \"membersHint\": \"Empty: no limit. Users who arrive from the widget count too.\",\n \"membersInvalid\": \"Enter a whole number of at least 1, or leave it empty.\",\n \"membersLabel\": \"Maximum members\"\n },\n \"placeholder\": {\n \"allProviders\": \"All providers\",\n \"apiToolName\": \"e.g. get-product-availability\",\n \"apiToolUrl\": \"https://api.example.com/resource/{param}\",\n \"askAnything\": \"Type your message…\",\n \"autoDetect\": \"Auto detect\",\n \"autoGenerated\": \"Auto-generated if left blank\",\n \"comment\": \"Write your comment…\",\n \"completeName\": \"Enter full name\",\n \"constValue\": \"Constant value\",\n \"customAnswer\": \"Type your answer…\",\n \"description\": \"Enter description\",\n \"documentContent\": \"Enter document content\",\n \"documentName\": \"Enter document name\",\n \"documentOriginAll\": \"All origins\",\n \"documentRefreshAll\": \"All updates\",\n \"documentStatusAll\": \"All statuses\",\n \"documentUrl\": \"Enter the URL of the web page to import\",\n \"email\": \"Enter your email address\",\n \"endDate\": \"Select end date\",\n \"enterYourQuestion\": \"Enter your question…\",\n \"insert\": \"Type here…\",\n \"insertOrigin\": \"https://example.com\",\n \"insertImageHost\": \"images.example.com\",\n \"limit\": \"Enter the limit\",\n \"loading\": \"Loading…\",\n \"mcpServerHealthCheckPath\": \"Enter the health check endpoint\",\n \"mcpServerUrl\": \"Enter the MCP server URL\",\n \"model\": \"Select model\",\n \"modelEndpointBaseUrl\": \"https://internal-proxy/v1\",\n \"name\": \"Enter name\",\n \"noTrustedOrigins\": \"No trusted origins configured\",\n \"noImageHosts\": \"No image hosts: images from other hosts wait for a click\",\n \"oauthAuthorizationUrl\": \"e.g. https://provider.com/oauth/authorize\",\n \"oauthClientId\": \"e.g. my-client-app\",\n \"oauthClientSecret\": \"Enter the client secret\",\n \"oauthScopes\": \"e.g. read:contacts write:contacts\",\n \"oauthTokenUrl\": \"e.g. https://provider.com/oauth/token\",\n \"pages\": \"1, 4, 6, 8-12\",\n \"pasteJsonSample\": \"Paste a JSON example to generate the schema\",\n \"phone\": \"Enter your phone number\",\n \"prompt\": \"Enter the prompt\",\n \"request\": \"Request…\",\n \"search\": \"Search…\",\n \"secretEdit\": \"Leave blank to keep the current secret\",\n \"select\": \"Select\",\n \"selectAgent\": \"Select an agent\",\n \"selectLanguage\": \"Select language\",\n \"selectPriority\": \"Select priority\",\n \"similarity\": \"Enter the similarity\",\n \"sitemapUrl\": \"https://example.com/sitemap.xml\",\n \"slug\": \"Enter a URL-friendly slug\",\n \"startDate\": \"Select start date\",\n \"startUrl\": \"https://example.com\",\n \"temperature\": \"Enter the temperature\",\n \"title\": \"Enter title\",\n \"uploadFile\": \"Upload a file\",\n \"emailAddress\": \"name{'@'}company.com\"\n },\n \"platformLink\": {\n \"title\": \"Link WhatsApp\",\n \"cardTitle\": \"Link your WhatsApp number\",\n \"description\": \"Whoever writes from this number on WhatsApp will use your account, its integrations included: mail, calendar, files. Link only a number that is yours.\",\n \"summaryAvailable\": \"It will use the account {email}.\",\n \"summaryReplaces\": \"It will replace {phone}, which uses your account today.\",\n \"summaryLinkedHere\": \"It already uses your account.\",\n \"summaryLinkedElsewhere\": \"It uses another account. Unlink it there first, or ask the agent on WhatsApp to unlink it.\",\n \"summaryExpired\": \"This link has expired. Ask the agent on WhatsApp for a new one.\",\n \"summaryInvalid\": \"This link is not valid, or it was already used. Ask the agent on WhatsApp for a new one.\",\n \"summaryLinked\": \"Linked. Go back to WhatsApp: the agent has written to you there.\",\n \"requestedAt\": \"Link requested at {issued}, valid until {expires}.\",\n \"doNotConfirm\": \"If someone sent you this link, do not confirm.\",\n \"confirmOnlyIf\": \"Confirm only if you asked for this link yourself, from the phone with this number, in the last hour.\",\n \"link\": \"Link {phone} to my account\",\n \"replace\": \"Link {phone} instead of {current}\",\n \"linked\": \"The WhatsApp number {phone} now uses your account.\",\n \"identitiesTitle\": \"Linked numbers\",\n \"identitiesDescription\": \"The messaging numbers that write as your account. Unlink one to stop it from using your account and its integrations.\",\n \"linkedAt\": \"Linked on {date}\",\n \"unlinkQuestion\": \"Unlink {phone}?\",\n \"unlinkDescription\": \"Whoever writes from this number will no longer use your account and its integrations. The conversations stay in your account.\",\n \"unlinked\": \"{phone} no longer uses your account.\"\n },\n \"problemReasons\": {\n \"file-upload-validation\": {\n \"audio-too-large\": \"The recording is over 100 MB, the most that is transcribed: upload a shorter or more compressed copy, for example an m4a or an mp3.\"\n },\n \"gateway-disabled\": {\n \"gateway-disabled\": \"This organization does not use the platform AI gateway, and this document needs something that runs there: the embedding, if it is not active on the endpoint (Models, Embedding section), or the document's AI model, to replace with one of the endpoint.\",\n \"transcription-off\": \"This organization does not use the platform AI gateway, which is where audio recordings are transcribed: upload the transcript as a text file instead.\"\n },\n \"input-validation\": {\n \"header-env-placeholder\": \"A header refers to an environment variable of the platform, which API tools no longer resolve: header values are sent exactly as written, so type the value itself.\",\n \"header-origin-changed\": \"The URL points to another host: type the values of the headers again, the saved ones stay with the previous host.\",\n \"header-url-host-placeholder\": \"A tool with headers needs a fixed host: the scheme, host and port of its URL cannot hold a placeholder the model fills in.\",\n \"header-value-missing\": \"A header has no value: type it, or remove the header.\",\n \"secret-body-method\": \"A GET or DELETE request sends no body: put the secret parameters in the query string, or change the method.\",\n \"secret-env-placeholder\": \"A secret parameter refers to an environment variable of the platform, which API tools do not resolve: type the value itself.\",\n \"secret-origin-changed\": \"The URL points to another host: type the values of the secret parameters again, the saved ones stay with the previous host.\",\n \"secret-path-placeholder\": \"A secret parameter cannot fill a placeholder of the URL path: the path is filled in by the model, which never sees the secret.\",\n \"secret-url-host-placeholder\": \"A tool with secret parameters needs a fixed host: the scheme, host and port of its URL cannot hold a placeholder the model fills in.\",\n \"secret-value-missing\": \"A secret parameter has no value: type it, or remove the parameter.\"\n },\n \"model-unavailable\": {\n \"embedding-endpoint-off\": \"The endpoint that computes this organization's embedding is off: switch it back on in the Models page.\",\n \"endpoint-off\": \"This document needs the organization's endpoint, for the embedding or for the document's AI model, and the endpoint is off: switch it back on in the Models page.\"\n },\n \"provider-request-failed\": {\n \"timeout\": \"The external provider did not answer in time: try again in a moment.\"\n }\n },\n \"problems\": {\n \"conflict\": \"A conflict occurred. The resource may already exist.\",\n \"conversation-blocked\": \"This conversation has been blocked.\",\n \"credit-exhausted\": \"Credits exhausted. Contact your administrator.\",\n \"embedding-identity-failed\": \"The endpoint does not serve the declared embedding model: its vectors would not match the knowledge base. Check the model id.\",\n \"entity-not-found\": \"Resource not found or disabled.\",\n \"feature-disabled\": \"This feature is not enabled for your organization.\",\n \"file-upload-disabled\": \"File upload is not enabled for this agent.\",\n \"file-upload-validation\": \"Invalid file: check size, type, or number of files.\",\n \"gateway-disabled\": \"This organization does not use the platform AI gateway, so its models are not available. Use a model of the organization's own endpoint.\",\n \"hubspot-missing-scopes\": \"The HubSpot token is missing required permissions. Add the \\\"crm.objects.owners.read\\\" scope.\",\n \"input-validation\": \"Input validation failed. Check the data format.\",\n \"internal-server-error\": \"An unexpected error occurred. Try again later.\",\n \"mcp-endpoint-invalid\": \"This URL does not point to an MCP endpoint. Check the path, MCP servers usually expose it under /mcp.\",\n \"method-not-allowed\": \"HTTP method not allowed for this endpoint.\",\n \"model-default-unavailable\": \"A default model has to be a model the organization can use: pick another default first.\",\n \"model-not-chat\": \"This is an embedding model, not a chat model: it cannot answer an agent.\",\n \"model-price-missing\": \"A model cannot be switched on without a price: pick a model it costs like, or type the price.\",\n \"model-unavailable\": \"The chosen model is not available to this organization: pick another one.\",\n \"not-found\": \"Page not found.\",\n \"oauth-authorization-required\": \"OAuth authorization required. Complete the authorization flow for this MCP server.\",\n \"oauth-config-incomplete\": \"OAuth configuration incomplete. Set the Client ID to enable OAuth.\",\n \"origin-not-allowed\": \"Request origin is not allowed.\",\n \"price-list-unavailable\": \"The gateway price list cannot be reached right now: try again, or type the price by hand.\",\n \"provider-request-failed\": \"The external provider refused the request.\",\n \"rate-limit-exceeded\": \"Too many requests. Try again later.\",\n \"two-factor-required\": \"An organization you belong to requires two-step verification: set it up to continue.\",\n \"unauthorized\": \"Authentication required. Sign in.\",\n \"validation-error\": \"Validation error. Check the submitted data.\"\n },\n \"profileSection\": {\n \"backToApp\": \"Back to the app\",\n \"general\": {\n \"title\": \"Profile and preferences\",\n \"description\": \"Your name and picture, and how the app looks to you.\",\n \"pictureHint\": \"PNG or JPG.\"\n },\n \"notifications\": {\n \"title\": \"Notifications\",\n \"description\": \"Which notices you get, in the app and by email.\",\n \"groups\": \"Notification types\",\n \"alwaysOn\": \"Account security notices and messages from administrators always arrive.\",\n \"loadFailed\": \"Your preferences could not be read.\",\n \"channel\": {\n \"inApp\": \"App\",\n \"email\": \"Email\"\n },\n \"agent_replies\": {\n \"title\": \"Agent replies\",\n \"summary\": \"When an agent you asked to check again has news for you.\"\n },\n \"documents\": {\n \"title\": \"Documents and sources\",\n \"summary\": \"Documents that fail to process, and pages removed from a synced source.\"\n },\n \"integrations\": {\n \"title\": \"Integrations and keys\",\n \"summary\": \"An integration sign-in ended by an administrator, and API keys about to expire.\"\n },\n \"flagged_conversations\": {\n \"title\": \"Flagged conversations\",\n \"summary\": \"Conversations the analysis flagged or blocked.\"\n },\n \"usage_limits\": {\n \"title\": \"Usage limits\",\n \"summary\": \"When the organization uses up the day's automatic runs.\"\n }\n },\n \"security\": {\n \"title\": \"Security\",\n \"description\": \"How you sign in, and where you are signed in.\",\n \"signIn\": \"Sign-in\",\n \"passwordSummary\": \"Used with {email} to sign in.\",\n \"connectedAccountsNote\": \"to sign in without a password\",\n \"connected\": \"Connected\",\n \"devices\": \"No devices | One device | {count} devices\",\n \"deviceOn\": \"{browser} on {os}\"\n },\n \"integrations\": {\n \"title\": \"Integrations and API keys\",\n \"description\": \"Services your agents reach for you, and keys to call the platform.\",\n \"available\": \"To connect\",\n \"keyExpires\": \"Expires {date}\",\n \"keyNeverExpires\": \"No expiry\",\n \"keyRequests\": \"No requests | One request | {count} requests\"\n },\n \"organizations\": {\n \"title\": \"Organizations\",\n \"description\": \"Where you work: switch, create an API key, leave.\",\n \"current\": \"Where you are now\",\n \"onlyYou\": \"Only you\",\n \"members\": \"{count} member | {count} members\",\n \"memberSince\": \"Member since {date}\",\n \"asksTwoFactor\": \"Asks for two-step verification\"\n },\n \"data\": {\n \"title\": \"My data\",\n \"description\": \"Files you uploaded in chats, a copy of everything, your account.\",\n \"account\": \"Your account\"\n }\n },\n \"refreshInterval\": {\n \"daily\": \"Every day\",\n \"manual\": \"Manual\",\n \"monthly\": \"Every month\",\n \"weekly\": \"Every week\"\n },\n \"releaseNotes\": {\n \"heading\": \"What's new\",\n \"installed\": \"You're on\",\n \"lead\": \"Latest features, improvements and fixes.\"\n },\n \"role\": {\n \"admin\": \"Administrator\",\n \"member\": \"Member\",\n \"owner\": \"Owner\",\n \"user\": \"User\"\n },\n \"nav\": {\n \"organization\": \"Organization\",\n \"configure\": \"Configure\",\n \"monitor\": \"Monitor\",\n \"allAgents\": \"All agents\",\n \"agentSettings\": \"Settings\",\n \"agentTry\": \"Try\",\n \"searchAgent\": \"Search an agent\",\n \"searchOrganization\": \"Search an organization\",\n \"allOrganizations\": \"All organizations\"\n },\n \"route\": {\n \"agentEndpoints\": \"API endpoints\",\n \"agents\": \"Agents\",\n \"apiTools\": \"API tools\",\n \"backoffice\": \"Backoffice\",\n \"branding\": \"Branding\",\n \"catalog\": \"Catalog\",\n \"channels\": \"Channels\",\n \"chatLogs\": \"Chat logs\",\n \"copatForYou\": \"Eight Wave for-U\",\n \"dashboard\": \"Dashboard\",\n \"dataProtection\": \"Data protection\",\n \"documents\": \"Documents\",\n \"endpointLogs\": \"Endpoint logs\",\n \"feedbacks\": \"Feedback\",\n \"frontoffice\": \"Frontoffice\",\n \"home\": \"Home\",\n \"integrations\": \"Integrations\",\n \"invitations\": \"Invitations\",\n \"leads\": \"Contacts\",\n \"mcpServer\": \"MCP server\",\n \"members\": \"Members\",\n \"models\": \"Models\",\n \"notFound\": \"Page not found\",\n \"notifications\": \"Notifications\",\n \"organizations\": \"Organizations\",\n \"playground\": \"Playground\",\n \"profile\": \"Profile\",\n \"reasoningLogs\": \"Reasoning logs\",\n \"releaseNotes\": \"Release notes\",\n \"requestPasswordReset\": \"Forgot password\",\n \"resetPassword\": \"Reset password\",\n \"revisedAnswers\": \"Revised answers\",\n \"signIn\": \"Sign in\",\n \"signUp\": \"Sign up\",\n \"subAgents\": \"Sub-agents\",\n \"system\": \"System\",\n \"twoFactor\": \"Two-step verification\",\n \"twoFactorSetup\": \"Set up two-step verification\",\n \"users\": \"Users\",\n \"video\": \"Video\",\n \"virtualAssistant\": \"Virtual assistant\"\n },\n \"showForm\": {\n \"completed\": \"Form completed\",\n \"otherPlaceholder\": \"Other…\",\n \"step\": \"Step {current} of {total}\"\n },\n \"subAgentStatus\": {\n \"active\": \"Active\",\n \"inactive\": \"Inactive\"\n },\n \"time\": {\n \"future\": \"in\",\n \"past\": \"ago\",\n \"unit\": {\n \"day\": \"day | days\",\n \"hour\": \"hour | hours\",\n \"minute\": \"minute | minutes\",\n \"second\": \"second | seconds\"\n }\n },\n \"toolApproval\": {\n \"approved\": \"Approved: the action was performed.\",\n \"cancelled\": \"Cancelled: the action was not performed.\",\n \"confirmed\": \"Confirmed: the agent proceeded with the action.\",\n \"denied\": \"Denied: the action was not performed.\",\n \"expired\": \"This request is no longer answerable: the action was not performed.\",\n \"prompt\": \"Your confirmation is needed to continue:\"\n },\n \"toolGroup\": {\n \"channels\": \"Messaging channels\",\n \"communication\": \"Communication\",\n \"delegation\": \"Delegation & automation\",\n \"knowledgeSearch\": \"Knowledge base & search\",\n \"locationWeather\": \"Location & weather\",\n \"personalization\": \"Personalization\",\n \"richContent\": \"Interactive content\"\n },\n \"toolGroupInfo\": {\n \"channels\": \"Extra capabilities on messaging platforms like Microsoft Teams.\",\n \"communication\": \"Emails, messages, contact forms, and calendar events.\",\n \"delegation\": \"Generic workers the agent can run in parallel to handle independent sub-tasks, and checks it repeats by itself over time when the user asks.\",\n \"knowledgeSearch\": \"Knowledge base search, document sources, and web page suggestions.\",\n \"locationWeather\": \"Geolocation, geocoding, interactive maps, and weather forecasts.\",\n \"personalization\": \"Per-user memory, the user's own uploaded files and the spreadsheets they attach.\",\n \"richContent\": \"Structured content: artifacts, comparisons, image galleries, QR codes, and guided replies.\"\n },\n \"toolSelection\": {\n \"cost\": \"Cost charged to the organization: {cost}\",\n \"enabled\": \"Brought back\",\n \"exposed\": \"Groups exposed to the model: probability {threshold} or higher, or used earlier\",\n \"failed\": \"Failed\",\n \"inputTokens\": \"Input tokens\",\n \"kind\": {\n \"api\": \"API tool\",\n \"mcp\": \"MCP server\",\n \"subagent\": \"Sub-agent\"\n },\n \"latency\": \"Evaluation time, limit {budget} ms\",\n \"leadFailed\": \"The evaluation failed or did not answer within {budget} ms: every group stayed exposed.\",\n \"missed\": \"Missed\",\n \"missedActive\": \"{n} used group had been left out, and the model had to bring it back | {n} used groups had been left out, and the model had to bring them back\",\n \"missedShadow\": \"{n} used group would have been left out | {n} used groups would have been left out\",\n \"mode\": {\n \"active\": \"Active\",\n \"shadow\": \"Shadow\"\n },\n \"modeHint\": {\n \"active\": \"Applied before the first step: the model saw only the groups with a check, and could bring the others back.\",\n \"shadow\": \"Recorded alongside the reply: the model saw every group, and the check is only compared with the calls.\"\n },\n \"notCharged\": \"Not charged\",\n \"probability\": \"Probability that the message needs the group; exposed from {threshold}\",\n \"seeded\": \"Used earlier\",\n \"title\": \"Tool selection\",\n \"tools\": \"{n} tool | {n} tools\",\n \"used\": \"Used\"\n },\n \"tooltip\": {\n \"agentsUsedInfo\": \"Number of agents used compared to the maximum available.\",\n \"mcpConnectionStatus\": {\n \"active\": \"The agents use it on the user's behalf.\",\n \"orphan\": \"No agent uses it any more (the integration was deleted, switched off or removed from the agents), but the sign-in is still stored.\",\n \"stale\": \"Expired with no way to renew it: it is deleted the next time it is used, and the user will have to sign in again.\"\n },\n \"requestsUsedInfo\": \"Number of requests used compared to the maximum allowed.\"\n },\n \"turnEvaluation\": {\n \"cost\": \"Cost, not charged to the organization: {cost}\",\n \"leadFailed\": \"The evaluation failed or did not answer within {budget} ms: nothing was recorded.\",\n \"modeHint\": \"Recorded after the reply, with no effect: nothing reads these probabilities yet.\",\n \"probability\": \"Probability the evaluation model gives to the question: from 0.5 it leans towards yes\",\n \"question\": {\n \"abusive\": \"Abusive message\",\n \"asksHuman\": \"Asks for a human operator\",\n \"durableFact\": \"Lasting fact about the user\",\n \"informationGap\": \"A piece of information is missing, not a capability\",\n \"manipulation\": \"Tries to manipulate the agent\",\n \"missingInfo\": \"The reply says the information is missing\"\n },\n \"title\": \"Evaluation after the reply\",\n \"version\": \"Questions version {version}\"\n },\n \"twoFactor\": {\n \"adminBackupCodes\": \"No backup codes left | One backup code left | {count} backup codes left\",\n \"adminChanges\": \"Latest changes\",\n \"adminChangesEmpty\": \"No changes yet.\",\n \"adminChangesHint\": \"From the notices sent to the user, who can delete them.\",\n \"adminDevicesForgotten\": \"The trusted devices were forgotten.\",\n \"adminFailedAttempts\": \"One wrong code in a row | {count} wrong codes in a row\",\n \"adminFilterEmpty\": \"No user is in this state.\",\n \"adminForgetDevices\": \"Forget trusted devices\",\n \"adminForgetDevicesDescription\": \"On each of them the next sign-in asks for the code again. We will tell them by email.\",\n \"adminForgetDevicesQuestion\": \"Forget the trusted devices of {name}?\",\n \"adminLocked\": \"Paused after too many wrong codes, until {date}.\",\n \"adminPasskeySynced\": \"Synced across their devices\",\n \"adminRemovePasskeyDescription\": \"It will no longer sign them in. Sessions already open stay open: if the device is lost, close them from Active sessions. We will tell them by email.\",\n \"adminRemovePasskeyQuestion\": \"Remove the passkey {passkey} of {name}?\",\n \"adminRequiredPending\": \"Required by {organizations} and not set up yet: their next page stops on the setup.\",\n \"adminStateNoneHint\": \"No second factor and no passkey\",\n \"adminSummaryAll\": \"All\",\n \"adminTrustedDevices\": \"No trusted devices | One trusted device, until {date} | {count} trusted devices, the last one until {date}\",\n \"adminUnlock\": \"Unlock\",\n \"adminUnlockDescription\": \"Do it only if they asked: the pause slows down whoever is trying their codes. We will tell them by email.\",\n \"adminUnlocked\": \"Unlocked: they can enter their code again.\",\n \"adminUnlockQuestion\": \"Unlock the two-step verification of {name}?\",\n \"adoptionRatio\": \"{count} of {total}\",\n \"adoptionState\": {\n \"totp\": \"With the app\",\n \"otp\": \"With email\",\n \"passkey\": \"With a passkey\",\n \"required\": \"To set up\",\n \"none\": \"No verification\"\n },\n \"adoptionTitle\": \"Protected members\",\n \"adoptionTitleUsers\": \"Protected users\",\n \"backupCode\": \"Backup code\",\n \"backupCodesDescription\": \"Each code works once, in place of the app's. Keep them somewhere safe: without your phone and without these codes, only an administrator can restore your access.\",\n \"backupCodesFileHeader\": \"{name} backup codes. Each one works once.\",\n \"backupCodesReplaced\": \"Here are your new backup codes: the old ones no longer work. Save them now, they will not be shown again.\",\n \"backupCodesSaved\": \"I saved the codes\",\n \"badge\": \"Two-step verification\",\n \"challengeApp\": \"Enter the 6-digit code from your authenticator app.\",\n \"challengeBackup\": \"Enter one of the backup codes you saved.\",\n \"challengeEmailSending\": \"We are sending a code to your email.\",\n \"challengeEmailSent\": \"We sent a 6-digit code to your email. It expires in 5 minutes.\",\n \"challengeTitle\": \"Two-step verification\",\n \"code\": \"6-digit code\",\n \"column\": \"2FA\",\n \"disabledMessage\": \"Two-step verification is off.\",\n \"enabledMessage\": \"Two-step verification is on.\",\n \"manualKey\": \"Can't scan it? Enter this key in the app:\",\n \"memberOff\": \"Off\",\n \"memberOn\": \"On\",\n \"memberPasskey\": \"Passkey\",\n \"memberPasskeyHint\": \"Signs in with a passkey, which meets the policy. With the password alone, the setup comes first.\",\n \"memberPending\": \"To set up\",\n \"memberPendingHint\": \"Signs in with a password and has no second factor: they will be asked to set it up before going on\",\n \"memberSocialOnly\": \"Not needed\",\n \"memberSocialOnlyHint\": \"Signs in only with Google or Microsoft, whose own security applies\",\n \"methodApp\": \"Authenticator app\",\n \"methodAppSummary\": \"A code that changes every 30 seconds, from Google Authenticator, Microsoft Authenticator, 1Password or similar. Recommended.\",\n \"methodEmail\": \"Code by email\",\n \"methodEmailSummary\": \"A code sent to {email} at every sign-in with the password.\",\n \"newBackupCodes\": \"New backup codes\",\n \"newBackupCodesDescription\": \"The codes you have now stop working, and you get ten new ones.\",\n \"passkeyAdd\": \"Add a passkey\",\n \"passkeyAddDescription\": \"Confirm your password, then follow your device: it will ask for your fingerprint, your face or its PIN.\",\n \"passkeyAdded\": \"The passkey is ready: use it next time you sign in.\",\n \"passkeyAddNoPasswordDescription\": \"Follow your device: it will ask for your fingerprint, your face or its PIN.\",\n \"passkeyAlreadyRegistered\": \"This device already holds a passkey for your account.\",\n \"passkeyCancelled\": \"The device did not create the passkey: try again when you are ready.\",\n \"passkeyCreate\": \"Create the passkey\",\n \"passkeyCreatedAt\": \"Added on {date}\",\n \"passkeyDeviceBound\": \"On one device only\",\n \"passkeyDeviceRefused\": \"The device did not create the passkey. Check that it has a screen lock, a fingerprint or a PIN, then try again.\",\n \"passkeyFallbackName\": \"Passkey\",\n \"passkeyName\": \"Name\",\n \"passkeyNameHint\": \"To recognize it in the list\",\n \"passkeyRemove\": \"Remove\",\n \"passkeyRemoved\": \"The passkey was removed.\",\n \"passkeyRemoveDescription\": \"It will no longer sign you in. You can add a new one at any time.\",\n \"passkeyRemoveQuestion\": \"Remove the passkey {name}?\",\n \"passkeys\": \"Passkeys\",\n \"passkeysDescription\": \"Sign in with your fingerprint, your face or the PIN of your device: no password and no code. A passkey also meets an organization that requires two-step verification.\",\n \"passkeysEmpty\": \"No passkeys yet.\",\n \"passkeySynced\": \"Synced across your devices\",\n \"qrLabel\": \"QR code for the authenticator app\",\n \"requireConsequence\": \"Members who sign in with a password and have not set it up yet will be stopped at their next page until they do.\",\n \"requiredBy\": \"Required by {organizations}.\",\n \"requiredByPasskeyEnough\": \"Required by {organizations}: your passkey is enough, while the password alone will ask you to set it up.\",\n \"requireHint\": \"Members who sign in with a password must set it up before using the platform. Those who sign in with Google or Microsoft are not affected.\",\n \"requireLabel\": \"Require two-step verification\",\n \"requireOff\": \"Two-step verification is no longer required.\",\n \"requireOn\": \"Two-step verification is now required.\",\n \"requireQuestion\": \"Require two-step verification from the members?\",\n \"requireTitle\": \"Require two-step verification\",\n \"reset\": \"Reset two-step verification\",\n \"resetConfirm\": \"Reset\",\n \"resetDescription\": \"The authenticator app and the backup codes stop working and the user is signed out everywhere. They can sign in with the password alone and set it up again: we will tell them by email.\",\n \"resetQuestion\": \"Reset the two-step verification of {name}?\",\n \"scanDescription\": \"Open your authenticator app, add an account and scan the QR code. Then enter the 6-digit code it shows.\",\n \"sendAgain\": \"Send a new code\",\n \"setupAddAnotherPasskey\": \"Add a new passkey\",\n \"setupAddPasskey\": \"Use a passkey instead\",\n \"setupDescription\": \"{organizations} requires it for everyone who signs in with a password.\",\n \"setupSignInWithPasskey\": \"Sign in with your passkey\",\n \"setupTitle\": \"Set up two-step verification\",\n \"signInState\": {\n \"totp\": \"App\",\n \"otp\": \"Email\",\n \"passkey\": \"Passkey\",\n \"required\": \"To set up\",\n \"none\": \"Off\"\n },\n \"signInWithPasskey\": \"Sign in with a passkey\",\n \"stateNoPassword\": \"Not available for this account\",\n \"stateOff\": \"Off\",\n \"stateOnApp\": \"On, with an authenticator app\",\n \"stateOnEmail\": \"On, with a code by email\",\n \"summaryNoPassword\": \"You sign in with Google or Microsoft, so their own security applies. Add a password and you can protect it here too.\",\n \"summaryOff\": \"Asks for a code, besides the password, every time you sign in with email and password.\",\n \"summaryOnApp\": \"No backup codes left: generate new ones. | One backup code left. | {count} backup codes left.\",\n \"summaryOnEmail\": \"The code goes to {email}.\",\n \"switchToApp\": \"Use an authenticator app\",\n \"title\": \"Two-step verification\",\n \"trustDevice\": \"Trust this device for 30 days\",\n \"turnOff\": \"Turn off\",\n \"turnOffDescription\": \"From now on the password alone is enough to sign in. We will send you an email to confirm.\",\n \"turnOffRequired\": \"An organization you belong to requires it\",\n \"turnOffTitle\": \"Turn off two-step verification\",\n \"turnOn\": \"Turn on\",\n \"turnOnTitle\": \"Turn on two-step verification\",\n \"useApp\": \"Use the authenticator app\",\n \"useBackupCode\": \"Use a backup code\",\n \"verify\": \"Verify\"\n },\n \"userFiles\": {\n \"allAgents\": \"All agents\",\n \"chatFilesEmpty\": \"No files uploaded in this chat.\",\n \"chatFilesTitle\": \"Files in this chat\",\n \"deleteSpreadsheet\": \"Delete file\",\n \"deleteSpreadsheetConfirm\": \"The uploaded file and every version the agent wrote of it are deleted, from the chat too. This cannot be undone.\",\n \"emptyHint\": \"Files you upload in chat are added here automatically and become searchable by the agent.\",\n \"emptyTitle\": \"No files yet\",\n \"exclude\": \"Remove file\",\n \"excludeConfirm\": \"The agent will not be able to search it any more. It stays in the chat you uploaded it to.\",\n \"loading\": \"Loading…\",\n \"open\": \"Open file\",\n \"openInChat\": \"Open in chat\",\n \"spreadsheetInChatOnly\": \"In its chat only\",\n \"spreadsheetVersion\": \"Edited by the agent\",\n \"subtitle\": \"Files you uploaded in chat, available to the agent.\",\n \"title\": \"My files\",\n \"untitled\": \"Untitled file\",\n \"uploadedAt\": \"Uploaded\"\n },\n \"validation\": {\n \"duplicateHeader\": \"Two headers have the same name\",\n \"duplicateSecretParameter\": \"Two secret parameters have the same name\",\n \"invalidPhoneNumber\": \"The number entered is incorrect\",\n \"invalidToolName\": \"Name must be snake_case or kebab-case (lowercase letters, numbers, underscores, and hyphens)\",\n \"passwordMismatch\": \"Passwords do not match\"\n },\n \"voiceEagerness\": {\n \"eager\": \"Eager\",\n \"normal\": \"Normal\",\n \"patient\": \"Patient\"\n },\n \"weather\": {\n \"airQuality\": \"Air quality\",\n \"aqiFair\": \"Fair\",\n \"aqiGood\": \"Good\",\n \"aqiHazardous\": \"Hazardous\",\n \"aqiModerate\": \"Moderate\",\n \"aqiPoor\": \"Poor\",\n \"aqiVeryPoor\": \"Very poor\",\n \"dailyForecast\": \"Daily forecast\",\n \"feelsLike\": \"Feels like\",\n \"today\": \"Today\"\n },\n \"unsubscribe\": {\n \"title\": \"Unsubscribe from these emails\",\n \"message\": \"Stop getting “{group}” notifications by email. The ones in the app do not change.\",\n \"action\": \"Unsubscribe\",\n \"doneTitle\": \"Done\",\n \"doneMessage\": \"You will no longer get “{group}” notifications by email. You can turn them back on from your profile at any time.\",\n \"invalidTitle\": \"Link not valid\",\n \"invalidMessage\": \"This link no longer works. You can turn the emails off from your profile, in the Notifications section.\",\n \"openSettings\": \"Open notification settings\"\n }\n}\n","{\n \"invalidType\": \"Expected {expected}, received {received}\",\n \"invalidTypeReceivedUndefined\": \"Required\",\n \"invalidTypeReceivedNull\": \"Required\",\n \"invalidValue\": \"Invalid value, expected {expected} | Invalid value, expected one of {expected}\",\n \"unrecognizedKeys\": \"Unrecognized keys: {keys}\",\n \"invalidKey\": \"Invalid key in {origin}\",\n \"invalidUnion\": \"Invalid value\",\n \"invalidElement\": \"Invalid value in {origin}\",\n \"custom\": \"Invalid value\",\n \"notMultipleOf\": \"The number must be a multiple of {multipleOf}\",\n \"invalidFormat\": {\n \"starts_with\": \"Must start with {prefix}\",\n \"ends_with\": \"Must end with {suffix}\",\n \"includes\": \"Must include {includes}\",\n \"regex\": \"Must match the pattern {pattern}\",\n \"default\": \"Invalid format, expected {format}\"\n },\n \"tooSmall\": {\n \"number\": {\n \"exact\": \"Enter exactly {minimum}\",\n \"inclusive\": \"Enter a value greater than or equal to {minimum}\",\n \"notInclusive\": \"Enter a value greater than {minimum}\"\n },\n \"int\": {\n \"exact\": \"Enter exactly {minimum}\",\n \"inclusive\": \"Enter a value greater than or equal to {minimum}\",\n \"notInclusive\": \"Enter a value greater than {minimum}\"\n },\n \"bigint\": {\n \"exact\": \"Enter exactly {minimum}\",\n \"inclusive\": \"Enter a value greater than or equal to {minimum}\",\n \"notInclusive\": \"Enter a value greater than {minimum}\"\n },\n \"date\": {\n \"exact\": \"The date must be exactly {minimum}\",\n \"inclusive\": \"The date must be on or after {minimum}\",\n \"notInclusive\": \"The date must be after {minimum}\"\n },\n \"string\": {\n \"exact\": \"Enter exactly {minimum} character(s)\",\n \"inclusive\": \"Minimum length {minimum} character(s)\",\n \"notInclusive\": \"Enter more than {minimum} character(s)\"\n },\n \"array\": {\n \"exact\": \"Enter exactly {minimum} item(s)\",\n \"inclusive\": \"Enter at least {minimum} item(s)\",\n \"notInclusive\": \"Enter more than {minimum} item(s)\"\n },\n \"set\": {\n \"exact\": \"Enter exactly {minimum} item(s)\",\n \"inclusive\": \"Enter at least {minimum} item(s)\",\n \"notInclusive\": \"Enter more than {minimum} item(s)\"\n },\n \"file\": {\n \"exact\": \"Upload a file of exactly {minimum} bytes\",\n \"inclusive\": \"Upload a file of at least {minimum} bytes\",\n \"notInclusive\": \"Upload a file of more than {minimum} bytes\"\n }\n },\n \"tooBig\": {\n \"number\": {\n \"exact\": \"Enter exactly {maximum}\",\n \"inclusive\": \"Enter a value less than or equal to {maximum}\",\n \"notInclusive\": \"Enter a value less than {maximum}\"\n },\n \"int\": {\n \"exact\": \"Enter exactly {maximum}\",\n \"inclusive\": \"Enter a value less than or equal to {maximum}\",\n \"notInclusive\": \"Enter a value less than {maximum}\"\n },\n \"bigint\": {\n \"exact\": \"Enter exactly {maximum}\",\n \"inclusive\": \"Enter a value less than or equal to {maximum}\",\n \"notInclusive\": \"Enter a value less than {maximum}\"\n },\n \"date\": {\n \"exact\": \"The date must be exactly {maximum}\",\n \"inclusive\": \"The date must be on or before {maximum}\",\n \"notInclusive\": \"The date must be before {maximum}\"\n },\n \"string\": {\n \"exact\": \"Enter exactly {maximum} character(s)\",\n \"inclusive\": \"Maximum length {maximum} character(s)\",\n \"notInclusive\": \"Enter less than {maximum} character(s)\"\n },\n \"array\": {\n \"exact\": \"Enter exactly {maximum} item(s)\",\n \"inclusive\": \"Enter at most {maximum} item(s)\",\n \"notInclusive\": \"Enter less than {maximum} item(s)\"\n },\n \"set\": {\n \"exact\": \"Enter exactly {maximum} item(s)\",\n \"inclusive\": \"Enter at most {maximum} item(s)\",\n \"notInclusive\": \"Enter less than {maximum} item(s)\"\n },\n \"file\": {\n \"exact\": \"Upload a file of exactly {maximum} bytes\",\n \"inclusive\": \"Upload a file of at most {maximum} bytes\",\n \"notInclusive\": \"Upload a file of less than {maximum} bytes\"\n }\n },\n \"types\": {\n \"regex\": \"input\",\n \"email\": \"email address\",\n \"url\": \"URL\",\n \"emoji\": \"emoji\",\n \"uuid\": \"UUID\",\n \"uuidv4\": \"UUIDv4\",\n \"uuidv6\": \"UUIDv6\",\n \"nanoid\": \"nanoid\",\n \"guid\": \"GUID\",\n \"cuid\": \"cuid\",\n \"cuid2\": \"cuid2\",\n \"ulid\": \"ULID\",\n \"xid\": \"XID\",\n \"ksuid\": \"KSUID\",\n \"datetime\": \"ISO date and time\",\n \"date\": \"ISO date\",\n \"time\": \"ISO time\",\n \"duration\": \"ISO duration\",\n \"ipv4\": \"IPv4 address\",\n \"ipv6\": \"IPv6 address\",\n \"cidrv4\": \"IPv4 range\",\n \"cidrv6\": \"IPv6 range\",\n \"base64\": \"base64 encoded string\",\n \"base64url\": \"base64 encoded URL\",\n \"json_string\": \"JSON string\",\n \"e164\": \"E.164 number\",\n \"jwt\": \"JWT\",\n \"template_literal\": \"input\"\n }\n}\n","{\n \"invalidType\": \"Previsto {expected}, ricevuto {received}\",\n \"invalidTypeReceivedUndefined\": \"Obbligatorio\",\n \"invalidTypeReceivedNull\": \"Obbligatorio\",\n \"invalidValue\": \"Valore non valido, previsto {expected} | Valore non valido, atteso uno tra {expected}\",\n \"unrecognizedKeys\": \"Chiavi non riconosciute: {keys}\",\n \"invalidKey\": \"Chiave non valida in {origin}\",\n \"invalidUnion\": \"Valore non valido\",\n \"invalidElement\": \"Valore non valido in {origin}\",\n \"custom\": \"Valore non valido\",\n \"notMultipleOf\": \"Il numero dev'essere un multiplo di {multipleOf}\",\n \"invalidFormat\": {\n \"starts_with\": \"Deve iniziare con {prefix}\",\n \"ends_with\": \"Deve terminare con {suffix}\",\n \"includes\": \"Deve includere {includes}\",\n \"regex\": \"Deve corrispondere al pattern {pattern}\",\n \"default\": \"Formato non valido, previsto {format}\"\n },\n \"tooSmall\": {\n \"number\": {\n \"exact\": \"Inserire esattamente {minimum}\",\n \"inclusive\": \"Inserire un valore maggiore o uguale a {minimum}\",\n \"notInclusive\": \"Inserire un valore maggiore di {minimum}\"\n },\n \"int\": {\n \"exact\": \"Inserire esattamente {minimum}\",\n \"inclusive\": \"Inserire un valore maggiore o uguale a {minimum}\",\n \"notInclusive\": \"Inserire un valore maggiore di {minimum}\"\n },\n \"bigint\": {\n \"exact\": \"Inserire esattamente {minimum}\",\n \"inclusive\": \"Inserire un valore maggiore o uguale a {minimum}\",\n \"notInclusive\": \"Inserire un valore maggiore di {minimum}\"\n },\n \"date\": {\n \"exact\": \"La data dev'essere esattamente il {minimum}\",\n \"inclusive\": \"La data dev'essere successiva o uguale al {minimum}\",\n \"notInclusive\": \"La data dev'essere successiva al {minimum}\"\n },\n \"string\": {\n \"exact\": \"Inserire esattamente {minimum} carattere/i\",\n \"inclusive\": \"Lunghezza minima {minimum} carattere/i\",\n \"notInclusive\": \"Inserire più di {minimum} carattere/i\"\n },\n \"array\": {\n \"exact\": \"Inserire esattamente {minimum} elemento/i\",\n \"inclusive\": \"Inserire almeno {minimum} elemento/i\",\n \"notInclusive\": \"Inserire più di {minimum} elemento/i\"\n },\n \"set\": {\n \"exact\": \"Inserire esattamente {minimum} elemento/i\",\n \"inclusive\": \"Inserire almeno {minimum} elemento/i\",\n \"notInclusive\": \"Inserire più di {minimum} elemento/i\"\n },\n \"file\": {\n \"exact\": \"Inserire un file di esattamente {minimum} byte\",\n \"inclusive\": \"Inserire un file di almeno {minimum} byte\",\n \"notInclusive\": \"Inserire un file di più di {minimum} byte\"\n }\n },\n \"tooBig\": {\n \"number\": {\n \"exact\": \"Inserire esattamente {maximum}\",\n \"inclusive\": \"Inserire un valore minore o uguale a {maximum}\",\n \"notInclusive\": \"Inserire un valore minore di {maximum}\"\n },\n \"int\": {\n \"exact\": \"Inserire esattamente {maximum}\",\n \"inclusive\": \"Inserire un valore minore o uguale a {maximum}\",\n \"notInclusive\": \"Inserire un valore minore di {maximum}\"\n },\n \"bigint\": {\n \"exact\": \"Inserire esattamente {maximum}\",\n \"inclusive\": \"Inserire un valore minore o uguale a {maximum}\",\n \"notInclusive\": \"Inserire un valore minore di {maximum}\"\n },\n \"date\": {\n \"exact\": \"La data dev'essere esattamente il {maximum}\",\n \"inclusive\": \"La data dev'essere precedente o uguale al {maximum}\",\n \"notInclusive\": \"La data dev'essere precedente al {maximum}\"\n },\n \"string\": {\n \"exact\": \"Inserire esattamente {maximum} carattere/i\",\n \"inclusive\": \"Lunghezza massima {maximum} carattere/i\",\n \"notInclusive\": \"Inserire meno di {maximum} carattere/i\"\n },\n \"array\": {\n \"exact\": \"Inserire esattamente {maximum} elemento/i\",\n \"inclusive\": \"Inserire al massimo {maximum} elemento/i\",\n \"notInclusive\": \"Inserire meno di {maximum} elemento/i\"\n },\n \"set\": {\n \"exact\": \"Inserire esattamente {maximum} elemento/i\",\n \"inclusive\": \"Inserire al massimo {maximum} elemento/i\",\n \"notInclusive\": \"Inserire meno di {maximum} elemento/i\"\n },\n \"file\": {\n \"exact\": \"Inserire un file di esattamente {maximum} byte\",\n \"inclusive\": \"Inserire un file di al massimo {maximum} byte\",\n \"notInclusive\": \"Inserire un file di meno di {maximum} byte\"\n }\n },\n \"types\": {\n \"regex\": \"input\",\n \"email\": \"indirizzo email\",\n \"url\": \"URL\",\n \"emoji\": \"emoji\",\n \"uuid\": \"UUID\",\n \"uuidv4\": \"UUIDv4\",\n \"uuidv6\": \"UUIDv6\",\n \"nanoid\": \"nanoid\",\n \"guid\": \"GUID\",\n \"cuid\": \"cuid\",\n \"cuid2\": \"cuid2\",\n \"ulid\": \"ULID\",\n \"xid\": \"XID\",\n \"ksuid\": \"KSUID\",\n \"datetime\": \"data e ora ISO\",\n \"date\": \"data ISO\",\n \"time\": \"ora ISO\",\n \"duration\": \"durata ISO\",\n \"ipv4\": \"indirizzo IPv4\",\n \"ipv6\": \"indirizzo IPv6\",\n \"cidrv4\": \"intervallo IPv4\",\n \"cidrv6\": \"intervallo IPv6\",\n \"base64\": \"stringa codificata in base64\",\n \"base64url\": \"URL codificata in base64\",\n \"json_string\": \"stringa JSON\",\n \"e164\": \"numero E.164\",\n \"jwt\": \"JWT\",\n \"template_literal\": \"input\"\n }\n}\n","import { createI18n } from 'vue-i18n'\nimport it from './it.json'\nimport en from './en.json'\nimport enErrors from '@volverjs/zod-vue-i18n/locales/v4/en.json'\nimport itErrors from '@volverjs/zod-vue-i18n/locales/v4/it.json'\n\nexport const SUPPORTED_LOCALES = ['it', 'en'] as const\nexport type SupportedLocale = (typeof SUPPORTED_LOCALES)[number]\n\nfunction detectLocale(): SupportedLocale {\n const browserLang = navigator.language.split('-')[0]\n return (SUPPORTED_LOCALES as readonly string[]).includes(browserLang)\n ? (browserLang as SupportedLocale)\n : 'en'\n}\n\n/*\n * Setup i18n\n * https://vue-i18n.intlify.dev/\n */\n\nexport const i18n = createI18n<false>({\n locale: detectLocale(),\n legacy: false,\n globalInjection: true,\n fallbackWarn: false,\n messages: {\n it: {\n ...it,\n errors: { ...itErrors, ...it.errors },\n },\n en: {\n ...en,\n errors: { ...enErrors, ...en.errors },\n },\n },\n numberFormats: {\n it: {\n currencyEUR: {\n style: 'currency',\n currency: 'EUR',\n currencySign: 'accounting',\n notation: 'standard',\n maximumFractionDigits: 4,\n useGrouping: true,\n },\n currencyUSD: {\n style: 'currency',\n currency: 'USD',\n currencySign: 'accounting',\n notation: 'standard',\n maximumFractionDigits: 4,\n useGrouping: true,\n },\n EUR: {\n style: 'currency',\n currency: 'EUR',\n currencyDisplay: 'narrowSymbol',\n notation: 'standard',\n maximumFractionDigits: 2,\n useGrouping: true,\n },\n USD: {\n style: 'currency',\n currency: 'USD',\n currencyDisplay: 'narrowSymbol',\n notation: 'standard',\n maximumFractionDigits: 2,\n useGrouping: true,\n },\n decimal: {\n style: 'decimal',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n useGrouping: true,\n },\n integer: {\n style: 'decimal',\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n useGrouping: true,\n },\n compact: {\n style: 'decimal',\n notation: 'compact',\n compactDisplay: 'short',\n minimumFractionDigits: 0,\n maximumFractionDigits: 1,\n useGrouping: true,\n },\n seconds: {\n style: 'unit',\n unit: 'second',\n unitDisplay: 'long',\n maximumFractionDigits: 1,\n },\n },\n en: {\n currencyEUR: {\n style: 'currency',\n currency: 'EUR',\n currencySign: 'accounting',\n notation: 'standard',\n maximumFractionDigits: 4,\n useGrouping: true,\n },\n currencyUSD: {\n style: 'currency',\n currency: 'USD',\n currencySign: 'accounting',\n notation: 'standard',\n maximumFractionDigits: 4,\n useGrouping: true,\n },\n EUR: {\n style: 'currency',\n currency: 'EUR',\n currencyDisplay: 'narrowSymbol',\n notation: 'standard',\n maximumFractionDigits: 2,\n useGrouping: true,\n },\n USD: {\n style: 'currency',\n currency: 'USD',\n currencyDisplay: 'narrowSymbol',\n notation: 'standard',\n maximumFractionDigits: 2,\n useGrouping: true,\n },\n decimal: {\n style: 'decimal',\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n useGrouping: true,\n },\n integer: {\n style: 'decimal',\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n useGrouping: true,\n },\n compact: {\n style: 'decimal',\n notation: 'compact',\n compactDisplay: 'short',\n minimumFractionDigits: 0,\n maximumFractionDigits: 1,\n useGrouping: true,\n },\n seconds: {\n style: 'unit',\n unit: 'second',\n unitDisplay: 'long',\n maximumFractionDigits: 1,\n },\n },\n },\n datetimeFormats: {\n it: {\n short: {\n dateStyle: 'short',\n },\n 'month-short': {\n month: 'short',\n },\n 'date-medium': {\n dateStyle: 'medium',\n },\n 'date-time': {\n dateStyle: 'short',\n timeStyle: 'short',\n },\n 'date-time-medium': {\n dateStyle: 'medium',\n timeStyle: 'short',\n },\n time: {\n timeStyle: 'short',\n },\n 'weekday-day': {\n weekday: 'short',\n day: 'numeric',\n },\n },\n en: {\n short: {\n dateStyle: 'short',\n },\n 'month-short': {\n month: 'short',\n },\n 'date-medium': {\n dateStyle: 'medium',\n },\n 'date-time': {\n dateStyle: 'short',\n timeStyle: 'short',\n },\n 'date-time-medium': {\n dateStyle: 'medium',\n timeStyle: 'short',\n },\n time: {\n timeStyle: 'short',\n },\n 'weekday-day': {\n weekday: 'short',\n day: 'numeric',\n },\n },\n },\n})\n\n/**\n * `onResponse` hook for the better-auth clients. better-auth writes its error\n * messages in English only, so the `message` of an error response is replaced\n * by the translation of its code (`errors.<CODE>`), and every `error.message`\n * a page shows arrives in the user's language. A code with no translation\n * keeps better-auth's text, the `YOU_ARE_NOT_ALLOWED_TO_*` codes share one\n * message, a 429 reads as `errors.TOO_MANY_REQUESTS` whatever its body, and a\n * body that is not JSON (a proxy's page) gets the generic error instead of no\n * message. It never throws: a failure leaves the response as it came.\n */\nexport async function translateAuthError({\n response,\n}: {\n response: Response\n}): Promise<Response | undefined> {\n if (response.ok) {\n return\n }\n try {\n let body: Record<string, unknown> | undefined\n try {\n const parsed = await response.clone().json()\n body = parsed && typeof parsed === 'object' ? parsed : {}\n } catch {\n body = undefined\n }\n const code = typeof body?.code === 'string' ? body.code : undefined\n let key = `errors.${code}`\n if (response.status === 429) {\n key = 'errors.TOO_MANY_REQUESTS'\n } else if (code?.startsWith('YOU_ARE_NOT_ALLOWED_TO_')) {\n key = 'errors.NOT_ALLOWED'\n } else if (!body) {\n key = 'auth.genericError'\n }\n if (!i18n.global.te(key)) {\n return\n }\n return new Response(\n JSON.stringify({ ...body, message: i18n.global.t(key) }),\n {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n },\n )\n } catch {\n return\n }\n}\n","import type { MaybeRefOrGetter } from 'vue'\nimport type {\n BetterAuthClientOptions,\n BetterAuthClientPlugin,\n} from 'better-auth/client'\nimport type { AdditionalFieldsOptions } from 'auth/src/additional-fields'\nimport { computed, ref, watch, toValue } from 'vue'\nimport { createAuthClient } from 'better-auth/vue'\nimport {\n inferAdditionalFields,\n anonymousClient,\n} from 'better-auth/client/plugins'\nimport { translateAuthError } from 'i18n'\nimport {\n getSessionCookie,\n setSessionCookie,\n getAnonymousUserIdCookie,\n setAnonymousUserIdCookie,\n clearAnonymousUserIdCookie,\n BACKEND_URL,\n AUTH_BASE_PATH,\n} from '~/utils'\n\nfunction anonymousReauthClient() {\n return {\n id: 'anonymous-reauth' as const,\n getActions: ($fetch) => ({\n signIn: {\n anonymousReauth: async (data: { userId: string }) => {\n return $fetch<{\n token: string\n user: Record<string, unknown>\n }>('/sign-in/anonymous-reauth', {\n method: 'POST',\n body: data,\n })\n },\n },\n }),\n pathMethods: {\n '/sign-in/anonymous-reauth': 'POST' as const,\n },\n } satisfies BetterAuthClientPlugin\n}\n\nfunction externalAuthClient() {\n return {\n id: 'external-auth' as const,\n getActions: ($fetch) => ({\n signIn: {\n externalToken: async (data: { token: string }) => {\n return $fetch<{\n token: string\n user: Record<string, unknown>\n }>('/sign-in/external-token', {\n method: 'POST',\n body: data,\n })\n },\n },\n }),\n pathMethods: {\n '/sign-in/external-token': 'POST' as const,\n },\n atomListeners: [\n {\n matcher: (path: string) => path === '/sign-in/external-token',\n signal: '$sessionSignal' as const,\n },\n ],\n } satisfies BetterAuthClientPlugin\n}\n\n/**\n * The `type` better-auth's `oauthPopup` completion page posts. Written here\n * rather than imported: `better-auth/plugins` would pull every server plugin\n * into the widget bundle.\n */\nconst OAUTH_POPUP_MESSAGE_TYPE = 'better-auth:oauth-popup'\n\n/**\n * A random nonce tying the popup's answer to the call that opened it.\n * `getRandomValues` rather than `randomUUID`, which only exists on pages\n * served over HTTPS.\n */\nfunction createPopupNonce(): string {\n const bytes = crypto.getRandomValues(new Uint8Array(16))\n return Array.from(bytes, (b) => b.toString(16).padStart(2, '0')).join('')\n}\n\ntype AuthClientOptions = {\n baseURL?: string\n basePath?: string\n plugins: [\n ReturnType<typeof inferAdditionalFields<AdditionalFieldsOptions>>,\n ReturnType<typeof anonymousClient>,\n ReturnType<typeof anonymousReauthClient>,\n ReturnType<typeof externalAuthClient>,\n ]\n}\n\nexport type AuthClient = ReturnType<typeof createAuthClient<AuthClientOptions>>\n\ntype ClientFetchOptions = NonNullable<BetterAuthClientOptions['fetchOptions']>\n\nexport function useChatbotAuth(\n options: {\n baseUrl?: string\n basePath?: string\n externalToken?: MaybeRefOrGetter<string | undefined>\n awaitExternalToken?: boolean\n /**\n * Host-session mode: the widget never signs in on its own and sends\n * no Authorization header; the session comes from the host\n * platform's better-auth cookie (sent thanks to\n * `credentials: 'include'`). The session belongs to the host, so\n * account management is hidden and `signOut` is a no-op. Intended\n * for the widget embedded in the platform itself (Backoffice\n * copilot, spec platform-copilot-session-bridge.md); it only works\n * where the host cookie context works, not on third-party embeds.\n */\n useHostSession?: MaybeRefOrGetter<boolean | undefined>\n isActive?: MaybeRefOrGetter<boolean>\n cookieName?: string\n /** Called when a session is established or the user changes. */\n onSignedIn?: (detail: { userId: string; isAnonymous: boolean }) => void\n /** Called when the session ends without an immediate replacement. */\n onSignedOut?: () => void\n /**\n * Called when an external token sign-in fails (expired token, invalid\n * signature or disabled config): the host should provide a fresh token.\n */\n onExternalAuthExpired?: () => void\n } = {},\n) {\n const _token = ref(getSessionCookie(options.cookieName))\n const useHostSession = computed(\n () => toValue(options.useHostSession) ?? false,\n )\n\n const token = computed({\n get: () => _token.value,\n set: (token: string) => {\n setSessionCookie(token, options.cookieName)\n _token.value = token\n },\n })\n\n const headers = computed(() =>\n !useHostSession.value && token.value\n ? { Authorization: `Bearer ${token.value}` }\n : undefined,\n )\n\n // Both fetch callbacks are typed by hand. createAuthClient is generic over\n // its options and TypeScript defers context-sensitive functions inside a\n // generic argument until inference is done, by which point the inferred\n // options type no longer carries them and their parameters fall to\n // implicit any. Annotating them with the public option type restores the\n // contextual type without touching how the client itself is inferred.\n const onFetchSuccess: NonNullable<ClientFetchOptions['onSuccess']> = (\n ctx,\n ) => {\n if (useHostSession.value) {\n // The host session token must never be persisted as the widget's\n // own Bearer: it would keep impersonating the host after the mode\n // is turned off.\n return\n }\n const newTokenFromHeader = ctx.response.headers.get('set-auth-token')\n if (newTokenFromHeader) {\n token.value = newTokenFromHeader\n }\n }\n\n // Only host-session mode may exchange cookies: with credentials on, an\n // anonymous sign-in's Set-Cookie would REPLACE the user's platform session\n // cookie on the backend origin.\n const customFetchImpl: NonNullable<\n ClientFetchOptions['customFetchImpl']\n > = (input, init) =>\n fetch(input, {\n ...init,\n credentials: useHostSession.value ? 'include' : init?.credentials,\n })\n\n const client = createAuthClient({\n baseURL: options.baseUrl ?? BACKEND_URL,\n basePath: options.basePath ?? AUTH_BASE_PATH,\n plugins: [\n inferAdditionalFields<AdditionalFieldsOptions>(),\n anonymousClient(),\n anonymousReauthClient(),\n externalAuthClient(),\n ],\n fetchOptions: {\n onSuccess: onFetchSuccess,\n onResponse: translateAuthError,\n auth: {\n type: 'Bearer',\n // Host-session mode relies on the cookie alone: the widget's\n // stored Bearer (e.g. a previous anonymous session) would\n // shadow it.\n token: () => (useHostSession.value ? '' : token.value),\n },\n customFetchImpl,\n },\n }) as AuthClient\n\n const session = client.useSession()\n const isAuthenticating = ref(false)\n const externalToken = computed(() => toValue(options.externalToken))\n const isActive = computed(() => toValue(options.isActive) ?? true)\n\n /**\n * External token currently authorized for automatic (re-)authentication.\n * Follows the `externalToken` option and imperative sign-in calls; cleared\n * by `signOut`, so the watchers never re-login with a token the host has\n * withdrawn.\n */\n const activeExternalToken = ref(externalToken.value)\n\n // External token / host-session mode: the host application owns the auth\n // lifecycle, so the widget must not offer account management (sign-out,\n // profile).\n const isExternalAuth = computed(\n () =>\n !!externalToken.value ||\n !!options.awaitExternalToken ||\n !!activeExternalToken.value ||\n useHostSession.value,\n )\n\n /**\n * Serializes sign-in operations: a request arriving while another is in\n * flight runs right after it instead of being dropped. Each task re-checks\n * state when it starts, so superseded requests no-op.\n */\n let authChain: Promise<void> = Promise.resolve()\n function runExclusiveAuth(task: () => Promise<void>): Promise<void> {\n const run = authChain.then(task, task)\n authChain = run\n return run\n }\n\n // Notify the host on session transitions, whatever flow caused them\n // (anonymous, external token, email, social).\n watch(\n () => session.value.data?.user,\n (user, previousUser) => {\n if (user && user.id !== previousUser?.id) {\n options.onSignedIn?.({\n userId: user.id,\n isAnonymous: !!user.isAnonymous,\n })\n }\n if (!user && previousUser) {\n options.onSignedOut?.()\n }\n },\n )\n\n async function signInAnonymously(): Promise<void> {\n const { data } = await client.signIn.anonymous()\n if (data?.token) {\n token.value = data.token\n if (data.user?.id) {\n setAnonymousUserIdCookie(\n data.user.id as string,\n options.cookieName,\n )\n }\n }\n }\n\n /**\n * Attempts to create a new session for an existing anonymous user.\n * Returns true if re-auth succeeded, false otherwise.\n */\n async function tryAnonymousReauth(): Promise<boolean> {\n const storedUserId = getAnonymousUserIdCookie(options.cookieName)\n if (!storedUserId) {\n return false\n }\n try {\n const { data } = await client.signIn.anonymousReauth({\n userId: storedUserId,\n })\n if (data?.token) {\n token.value = data.token\n await session.value.refetch()\n return true\n }\n } catch {\n // user record may have been deleted — fall back to creating a new one\n }\n return false\n }\n\n /** Re-authenticates the stored anonymous user, or creates a fresh one. */\n async function reauthOrSignInAnonymously(): Promise<void> {\n const reauthed = await tryAnonymousReauth()\n if (!reauthed) {\n await signInAnonymously()\n }\n }\n\n /**\n * The external token was rejected (expired, invalid or config disabled):\n * notify the host so it can provide a fresh one, then apply the fallback\n * (keep waiting in `awaitExternalToken` mode, anonymous otherwise).\n */\n async function handleExternalTokenFailure(\n failedExternalToken: string,\n ): Promise<void> {\n if (activeExternalToken.value !== failedExternalToken) {\n // Withdrawn (sign-out) or replaced while the request was in flight\n return\n }\n options.onExternalAuthExpired?.()\n if (options.awaitExternalToken) {\n return\n }\n await reauthOrSignInAnonymously()\n }\n\n /** Raw token exchange; must run inside `runExclusiveAuth`. */\n async function exchangeExternalToken(\n newExternalToken: string,\n ): Promise<void> {\n isAuthenticating.value = true\n try {\n const { data } = await client.signIn.externalToken({\n token: newExternalToken,\n })\n if (activeExternalToken.value !== newExternalToken) {\n // Withdrawn (sign-out) or replaced while the request was in flight\n return\n }\n if (data?.token) {\n token.value = data.token\n await session.value.refetch()\n return\n }\n await handleExternalTokenFailure(newExternalToken)\n } catch {\n await handleExternalTokenFailure(newExternalToken)\n } finally {\n isAuthenticating.value = false\n }\n }\n\n /** External token currently queued or in flight, to drop duplicate requests. */\n let pendingExternalToken: string | undefined\n\n /**\n * Last external token an exchange was attempted with, whatever the\n * trigger. The session watcher consults it so a token that was already\n * tried is never auto-retried: a rejected token must not loop between\n * exchange and fallback. Deliberate retries (prop change, imperative\n * `signIn`, 401 handler) bypass it.\n */\n let attemptedExternalToken: string | undefined\n\n /** The cookie-restored external session was reconciled with the host state. */\n let externalSessionReconciled = false\n\n async function signInWithExternalToken(\n newExternalToken: string,\n ): Promise<void> {\n if (!newExternalToken || pendingExternalToken === newExternalToken) {\n return\n }\n activeExternalToken.value = newExternalToken\n attemptedExternalToken = newExternalToken\n pendingExternalToken = newExternalToken\n try {\n await runExclusiveAuth(async () => {\n if (activeExternalToken.value !== newExternalToken) {\n // Superseded while waiting for the previous operation\n return\n }\n await exchangeExternalToken(newExternalToken)\n })\n } finally {\n pendingExternalToken = undefined\n }\n }\n\n async function signInAnonymouslyWithFallback(): Promise<void> {\n if (isAuthenticating.value) {\n // The `[isActive, session]` watcher retries on the next session change\n return\n }\n await runExclusiveAuth(async () => {\n if (activeExternalToken.value || useHostSession.value) {\n // A host-owned sign-in was requested in the meantime\n return\n }\n isAuthenticating.value = true\n try {\n await reauthOrSignInAnonymously()\n } finally {\n isAuthenticating.value = false\n }\n })\n }\n\n watch(\n [isActive, session],\n ([newIsActive, newSession]) => {\n if (!newIsActive) {\n return\n }\n if (\n !newSession.isPending &&\n !newSession.isRefetching &&\n !isAuthenticating.value &&\n !newSession.data\n ) {\n if (useHostSession.value) {\n // Host-session mode: the session comes from the host\n // cookie, the widget never signs in on its own. No\n // session means the host is not (or no longer) logged in.\n return\n }\n if (activeExternalToken.value) {\n signInWithExternalToken(activeExternalToken.value)\n return\n }\n if (options.awaitExternalToken) {\n return\n }\n signInAnonymouslyWithFallback()\n return\n }\n\n const user = newSession.data?.user\n\n if (useHostSession.value) {\n // Host-session mode: the session is read from (and owned by)\n // the host cookie, none of the widget-session housekeeping\n // below applies.\n return\n }\n\n // A session created by an external token exchange (the only kind\n // with `hardExpiresAt`) may have been restored from the cookie\n // after a page navigation, where prop changes cannot be observed:\n // reconcile it once with the auth state the host declares now.\n if (\n newSession.data?.session?.hardExpiresAt &&\n !externalSessionReconciled\n ) {\n externalSessionReconciled = true\n if (!activeExternalToken.value) {\n // The host no longer provides a token (it logged out\n // before this page load): drop the stale session. The\n // usual fallback rules apply (keep waiting in\n // `awaitExternalToken` mode, anonymous otherwise).\n signOut()\n return\n }\n if (attemptedExternalToken !== activeExternalToken.value) {\n // Re-exchange the current token, so a token minted for a\n // different user replaces the restored session and an\n // expired one raises `external-auth-expired` right away.\n signInWithExternalToken(activeExternalToken.value)\n return\n }\n }\n\n // Upgrade an anonymous session restored from the cookie when an\n // external token is available (e.g. the user logged into the host\n // app between page loads). Attempted once per token.\n if (\n user?.isAnonymous &&\n activeExternalToken.value &&\n attemptedExternalToken !== activeExternalToken.value\n ) {\n signInWithExternalToken(activeExternalToken.value)\n return\n }\n\n // Backfill userId cookie for existing anonymous sessions\n if (\n user?.isAnonymous &&\n user.id &&\n !getAnonymousUserIdCookie(options.cookieName)\n ) {\n setAnonymousUserIdCookie(user.id as string, options.cookieName)\n }\n },\n { immediate: true },\n )\n\n // Host-session mode toggle: on entry re-read the session from the host\n // cookie (the widget Bearer is already suppressed by the mode); on exit\n // re-read without the cookie, so the `[isActive, session]` watcher\n // re-establishes the widget's own flow (anonymous or external token).\n watch(useHostSession, () => {\n session.value.refetch()\n })\n\n watch(externalToken, (newToken, previousToken) => {\n if (newToken) {\n // Track the intent even when inactive: the `[isActive, session]`\n // watcher signs in with it once the widget becomes active.\n activeExternalToken.value = newToken\n if (isActive.value) {\n signInWithExternalToken(newToken)\n }\n return\n }\n // The host withdrew the token (logged out): sign out without\n // re-authenticating; the fallback rules apply (keep waiting in\n // `awaitExternalToken` mode, anonymous otherwise).\n if (previousToken && activeExternalToken.value === previousToken) {\n signOut()\n }\n })\n\n function onError(error: { type: string; title: string; status: number }) {\n if (error.status !== 401) {\n return\n }\n if (useHostSession.value) {\n // The widget cannot recover a host session on its own (a 401\n // here means the host session expired): re-read it so the UI\n // reflects the signed-out state.\n session.value.refetch()\n return\n }\n if (activeExternalToken.value) {\n signInWithExternalToken(activeExternalToken.value)\n return\n }\n if (options.awaitExternalToken) {\n return\n }\n signInAnonymouslyWithFallback()\n }\n\n const userId = computed(() => session.value.data?.user?.id)\n\n /**\n * The second step of an email sign-in for an account with two-step\n * verification (docs/specs/released/two-factor-authentication.md, D4). better-auth\n * keeps the challenge in a cookie, which a cross-origin widget never\n * holds: the backend hands its value over in the sign-in answer and takes\n * it back in a header.\n */\n const twoFactorChallenge = ref<{ token: string; methods: string[] }>()\n\n // Auth methods for widget login screen\n async function signInWithEmail(\n email: string,\n password: string,\n rememberMe?: boolean,\n ) {\n const result = await client.signIn.email({\n email,\n password,\n rememberMe,\n })\n const challenge = result.data as {\n twoFactorRedirect?: boolean\n twoFactorToken?: string | null\n twoFactorMethods?: string[]\n } | null\n if (challenge?.twoFactorRedirect) {\n twoFactorChallenge.value = challenge.twoFactorToken\n ? {\n token: challenge.twoFactorToken,\n methods: challenge.twoFactorMethods ?? [],\n }\n : undefined\n // The sign-in already linked and removed the anonymous user, as\n // below: its userId can no longer be re-authenticated.\n clearAnonymousUserIdCookie(options.cookieName)\n return result\n }\n // Capture the session token from the response body. Relying solely on\n // the `set-auth-token` header is unreliable here, so we mirror the\n // anonymous/social flows and store the token explicitly.\n if (result.data?.token) {\n token.value = result.data.token\n // Signing in from an anonymous session links (and deletes) the\n // anonymous user server-side, so its stored userId can no longer\n // be re-authenticated — drop it so a later sign-out falls straight\n // back to a fresh anonymous session.\n clearAnonymousUserIdCookie(options.cookieName)\n }\n return result\n }\n\n const TWO_FACTOR_PATHS = {\n totp: '/two-factor/verify-totp',\n otp: '/two-factor/verify-otp',\n backup: '/two-factor/verify-backup-code',\n } as const\n\n /** Fetch options of a request that answers the challenge in flight. */\n function twoFactorRequest(challenge: { token: string }) {\n return {\n method: 'POST' as const,\n headers: { 'x-two-factor-token': challenge.token },\n // No bearer: the challenge is the identity of this request, and a\n // session token would turn it into a verification of that session.\n auth: { type: 'Bearer' as const, token: '' },\n }\n }\n\n const lostChallenge = {\n data: null,\n error: { code: 'INVALID_TWO_FACTOR_COOKIE', message: undefined },\n }\n\n /** Answers the challenge with a code of the app, the email or a backup code. */\n async function verifyTwoFactor(\n kind: keyof typeof TWO_FACTOR_PATHS,\n code: string,\n ) {\n const challenge = twoFactorChallenge.value\n if (!challenge) {\n return lostChallenge\n }\n const result = await client.$fetch<{ token?: string }>(\n TWO_FACTOR_PATHS[kind],\n { ...twoFactorRequest(challenge), body: { code } },\n )\n if (result.data?.token) {\n token.value = result.data.token\n twoFactorChallenge.value = undefined\n }\n return result\n }\n\n /** Sends the code by email, for an account whose factor is the email. */\n async function sendTwoFactorCode() {\n const challenge = twoFactorChallenge.value\n if (!challenge) {\n return lostChallenge\n }\n return client.$fetch<{ status: boolean }>(\n '/two-factor/send-otp',\n twoFactorRequest(challenge),\n )\n }\n\n /** Back to the sign-in form: the challenge left behind simply expires. */\n function cancelTwoFactor() {\n twoFactorChallenge.value = undefined\n }\n\n function signUpWithEmail(params: {\n email: string\n password: string\n name: string\n }) {\n return client.signUp.email(params)\n }\n\n function requestPasswordReset(email: string, redirectTo: string) {\n return client.requestPasswordReset({ email, redirectTo })\n }\n\n /**\n * Opens a popup for social OAuth sign-in.\n *\n * The popup navigates top-level to better-auth's `/oauth-popup/start` on\n * the backend origin, so the OAuth `state` cookie is set first-party there\n * and survives the round trip (a cross-origin XHR `signIn.social` would set\n * it as a third-party cookie that browsers drop, causing `state_mismatch`).\n * The server binds the flow to this page's origin and, on the callback,\n * posts the token of the session it just created to that origin only. The\n * message is taken only from the popup this call opened, from the backend\n * origin, carrying the nonce this call generated.\n *\n * better-auth's own `signIn.popup` is not used: it keeps the token to\n * itself, and the widget authenticates with its own stored Bearer.\n */\n async function signInWithSocialPopup(\n provider: 'google' | 'microsoft',\n onAuthSuccess?: () => void,\n ): Promise<{ popupBlocked: boolean }> {\n const baseUrl = options.baseUrl ?? BACKEND_URL\n const basePath = options.basePath ?? AUTH_BASE_PATH\n const nonce = createPopupNonce()\n const startUrl = new URL(`${baseUrl}/${basePath}/oauth-popup/start`)\n startUrl.searchParams.set('provider', provider)\n startUrl.searchParams.set('popupOrigin', window.location.origin)\n startUrl.searchParams.set('popupNonce', nonce)\n\n const popup = window.open(\n startUrl.toString(),\n 'eightwave-oauth',\n 'width=600,height=700,menubar=no,toolbar=no',\n )\n\n if (!popup) {\n return { popupBlocked: true }\n }\n\n return new Promise((resolve) => {\n const allowedOrigin = new URL(baseUrl).origin\n // Resolve too if the user closes the popup without completing OAuth.\n const closedPollId = setInterval(() => {\n if (popup?.closed) {\n finish()\n }\n }, 500)\n\n function finish() {\n window.removeEventListener('message', onOAuthMessage)\n clearInterval(closedPollId)\n resolve({ popupBlocked: false })\n }\n\n function onOAuthMessage(event: MessageEvent) {\n const isTrustedOAuthMessage =\n event.origin === allowedOrigin &&\n event.source === popup &&\n event.data?.type === OAUTH_POPUP_MESSAGE_TYPE &&\n event.data.nonce === nonce\n if (!isTrustedOAuthMessage) {\n return\n }\n popup?.close()\n // A refusal or a failure at the provider comes back as\n // `error`, with no token: the user simply stays as they were.\n if (typeof event.data.token === 'string' && event.data.token) {\n token.value = event.data.token\n // Same as the email flow: the anonymous user was linked\n // and deleted server-side, its stored userId is stale.\n clearAnonymousUserIdCookie(options.cookieName)\n session.value.refetch().then(() => onAuthSuccess?.())\n }\n finish()\n }\n\n window.addEventListener('message', onOAuthMessage)\n })\n }\n\n /**\n * Signs the current user out and clears the locally stored session token.\n * Withdraws the active external token first, so the watchers never\n * re-authenticate with it: in external mode the host signs the widget back\n * in (prop change or `signInWithExternalToken`), while in the other modes\n * the `[isActive, session]` watcher re-establishes an anonymous session\n * (re-using the stored anonymous userId cookie when present).\n */\n async function signOut(): Promise<void> {\n if (useHostSession.value) {\n // The session belongs to the host application (cookie): revoking\n // it from the widget would log the user out of the host too.\n // Leaving host-session mode is the host's move (prop change).\n return\n }\n activeExternalToken.value = undefined\n const revokedToken = token.value\n try {\n await client.signOut()\n } finally {\n // A concurrent exchange may have stored a fresh session token\n // while the revoke request was in flight (e.g. a host `signIn`\n // racing the mount-time reconcile): only clear our own token,\n // never the newer one.\n if (token.value === revokedToken) {\n token.value = ''\n }\n await session.value.refetch()\n }\n }\n\n return {\n client,\n session,\n isAuthenticating,\n isExternalAuth,\n token,\n headers,\n onError,\n userId,\n signInWithEmail,\n twoFactorChallenge,\n verifyTwoFactor,\n sendTwoFactorCode,\n cancelTwoFactor,\n signUpWithEmail,\n requestPasswordReset,\n signInSocial: client.signIn.social,\n signInWithSocialPopup,\n signInWithExternalToken,\n signOut,\n }\n}\n","import { getCurrentInstance, onBeforeUnmount, onMounted } from 'vue'\n\n/**\n * Prevents external focus-trapping libraries (e.g. Bootstrap 5 modals) from\n * stealing focus away from elements inside this custom element's shadow root.\n *\n * Bootstrap modals attach a `focusin` listener on `document` that pulls focus\n * back whenever it leaves the modal subtree. Because our custom element lives\n * outside the modal in the DOM, every focus event that escapes the shadow root\n * is treated as a \"focus escape\" and gets redirected back into the modal.\n *\n * Fix: intercept `focusin` at the shadow root boundary in the **bubble phase**\n * and stop its propagation. The event still reaches every internal element\n * normally (capture → target → bubble up through the shadow tree), but is\n * stopped at the shadow root before it can re-target and continue to `document`.\n *\n * Must be called inside a `.ce.vue` root component's `<script setup>`.\n */\nexport function useFocusTrapBypass() {\n let shadowRoot: ShadowRoot | null = null\n\n const stopFocusPropagation = (event: Event) => {\n event.stopPropagation()\n }\n\n onMounted(() => {\n const instance = getCurrentInstance()\n const rootNode = instance?.proxy?.$el?.getRootNode()\n\n if (!(rootNode instanceof ShadowRoot)) {\n return\n }\n\n shadowRoot = rootNode\n shadowRoot.addEventListener('focusin', stopFocusPropagation)\n })\n\n onBeforeUnmount(() => {\n if (!shadowRoot) {\n return\n }\n\n shadowRoot.removeEventListener('focusin', stopFocusPropagation)\n shadowRoot = null\n })\n}\n"],"ignoreList":[5,6],"mappings":";;;;;;;;;;AAEA,IAAMiG,IAAsB,iBACtBC,IAAgC,QAChCC,IAAmB;AAEzB,SAASC,EAAU,GAAc,GAAe,GAAgB;CAC5D,IAAI;EAKA,SAAS,SAAS,GAAGC,EAAK,GAAGC,EAAM,oBAAoBC,IADnDA,IAAS,IAAI,KAAK,0CACkD;CAC5E,SAASC,GAAO;EACZ,EAAO,KACH,iEACAA,CACJ;CACJ;AACJ;AAEA,SAASC,EAAU,GAAsB;CACrC,IAAI;EAIA,IAAMC,IAAS,GAAGL,EAAK,IACjBM,IAAM,SAAS,OAChB,MAAM,IAAI,CAAC,CACX,MAAM,MAAUC,EAAM,WAAWF,CAAM,CAAC;EAC7C,OAAOC,IAAMA,EAAI,MAAMD,EAAO,MAAM,IAAI;CAC5C,SAASF,GAAO;EAKZ,OAJAX,EAAO,KACH,iEACAW,CACJ,GACO;CACX;AACJ;AAIA,SAAgBK,EACZ,GACA,IAAqBZ,GACvB;CACE,EAAUa,GAAYC,GAAOA,IAAQZ,IAAmB,CAAC;AAC7D;AAGA,SAAgBa,EAAiB,IAAqBf,GAAqB;CACvE,OAAOQ,EAAUK,CAAU;AAC/B;AAGA,SAAgBG,EACZ,GACA,IAAqBhB,GACvB;CACE,EACI,GAAGa,IAAaZ,KAChBgB,GACAf,CACJ;AACJ;AAGA,SAAgBgB,EACZ,IAAqBlB,GACvB;CACE,OAAOQ,EAAU,GAAGK,IAAaZ,GAA+B;AACpE;AAIA,SAAgBkB,EACZ,IAAqBnB,GACvB;CACE,EAAU,GAAGa,IAAaZ,KAAiC,IAAI,CAAC;AACpE;;;AC7EA,IAAamB,IAAA,KAAA,GACAC,IAAA,KAAA,GACAC,IAAiB;;;ACM9B,SAAgBC,EAAgB,GAY7B;CACC,IAAMC,IAAQC,EAAiB,GACzBC,IAAWD,EAAmB,GAC9BE,IAAcF,EAAiB,GAE/BG,IAAgBH,EAAY,GAC5BI,IAAeJ,EAAI,EAAK,GACxBK,IAAWL,EAAI,EAAK,GACpBM,IAAYN,EAAI,EAAK;CAE3B,eAAeO,IAAO;EAClB,IAAMC,IAAUC,EAAQC,EAAQ,gBAAgB,GAC1CC,IAAUF,EAAQC,EAAQ,OAAO;EACvC,IAAI,CAACF,KAAW,CAACG,GACb;EAEJ,IAAMC,IAAY3C,EAAuB;GACrC,SAASyC,EAAQ,WAAA,KAAA;GACjB,UAAUA,EAAQ;GAClB,eAAeD,EAAQC,EAAQ,OAAO;EAC1C,CAAC;EACD,EAAU,QAAQ;EAClB,IAAI;GACA,IAAMG,IAAS,MAAMD,EAAU,eAAeJ,GAASG,CAAO;GAY9D,AAXA,EAAY,QAAQE,EAAO,aAC3B,EAAc,QAAQA,EAAO,oBAAoB,KAC7CA,EAAO,gBACP,EAAa,QAAQ,IACrB,EAAS,QAAQA,EAAO,YAAY,KAAA,GACpC,EAAM,QAAQ,KAAA,MAEd,EAAa,QAAQ,IACrB,EAAS,QAAQ,KAAA,GACjB,EAAM,QAAQA,EAAO,SAAS,KAAA,IAElC,EAAS,QAAQ;EACrB,QAAQ;GAKJ,AAJA,EAAS,QAAQ,IACjB,EAAc,QAAQ,KAAA,GACtB,EAAM,QAAQ,KAAA,GACd,EAAS,QAAQ,KAAA,GACjB,EAAa,QAAQ;EACzB,UAAU;GACN,EAAU,QAAQ;EACtB;CACJ;CAeA,AAZAC,EACI,OACUL,EAAQC,EAAQ,gBAAgB,SAChCD,EAAQC,EAAQ,OAAO,CACjC,SACM;EACF,EAAK;CACT,GACA,EAAE,WAAW,GAAK,CACtB,GAGAI,QACUL,EAAQC,EAAQ,OAAO,SACvB;EACF,AAAIN,EAAa,SACbG,EAAK;CAEb,CACJ;CAGA,IAAMQ,IAASC,QACLjB,EAAM,OAAO,aAAaE,EAAS,OAAO,SACpD,GAEMgB,IAAgBD,QAClB3C,EAAqB0C,EAAO,OAAO,WAAWA,EAAO,OAAO,SAAS,CACzE,GACMG,IAAYF,QAAeD,EAAO,OAAO,SAAS;CAkBxD,OAAO;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA,QAAQR;EACR;EACA;EACA,YA3BeS,QAAe;GAC9B,IAAMG,IAAQJ,EAAO,OAAO;GAC5B,IAAII,KAASA,MAAU,QACnB,OAAO,CAAC,SAAS,UAAUA,GAAO;GAEtC,IAAMC,IAAcX,EAAQC,EAAQ,WAAW;GAI/C,OAHIU,IACO,CAAC,SAAS,UAAUA,GAAa,IAErC,CAAC,OAAO;EACnB,CAiBI;EACA,YAhBeJ,QACf1C,EAAgB4C,EAAU,OAAOD,EAAc,KAAK,CAepD;CACJ;AACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GK7Ha2nC,IAAoB,CAAC,MAAM,IAAI;AAG5C,SAASC,IAAgC;CACrC,IAAMC,IAAc,UAAU,SAAS,MAAM,GAAG,CAAC,CAAC;CAClD,OAAQF,EAAwC,SAASE,CAAW,IAC7DA,IACD;AACV;AAOA,IAAaC,IAAOC,EAAkB;CAClC,QAAQH,EAAa;CACrB,QAAQ;CACR,iBAAiB;CACjB,cAAc;CACd,UAAU;EACN,IAAI;GACA,GAAGhrC;GACH,QAAQ;IAAE,GAAGC;IAAU,GAAGD,EAAG;GAAO;EACxC;EACA,IAAI;GACA,GAAGE;GACH,QAAQ;IAAE,GAAGC;IAAU,GAAGD,EAAG;GAAO;EACxC;CACJ;CACA,eAAe;EACX,IAAI;GACA,aAAa;IACT,OAAO;IACP,UAAU;IACV,cAAc;IACd,UAAU;IACV,uBAAuB;IACvB,aAAa;GACjB;GACA,aAAa;IACT,OAAO;IACP,UAAU;IACV,cAAc;IACd,UAAU;IACV,uBAAuB;IACvB,aAAa;GACjB;GACA,KAAK;IACD,OAAO;IACP,UAAU;IACV,iBAAiB;IACjB,UAAU;IACV,uBAAuB;IACvB,aAAa;GACjB;GACA,KAAK;IACD,OAAO;IACP,UAAU;IACV,iBAAiB;IACjB,UAAU;IACV,uBAAuB;IACvB,aAAa;GACjB;GACA,SAAS;IACL,OAAO;IACP,uBAAuB;IACvB,uBAAuB;IACvB,aAAa;GACjB;GACA,SAAS;IACL,OAAO;IACP,uBAAuB;IACvB,uBAAuB;IACvB,aAAa;GACjB;GACA,SAAS;IACL,OAAO;IACP,UAAU;IACV,gBAAgB;IAChB,uBAAuB;IACvB,uBAAuB;IACvB,aAAa;GACjB;GACA,SAAS;IACL,OAAO;IACP,MAAM;IACN,aAAa;IACb,uBAAuB;GAC3B;EACJ;EACA,IAAI;GACA,aAAa;IACT,OAAO;IACP,UAAU;IACV,cAAc;IACd,UAAU;IACV,uBAAuB;IACvB,aAAa;GACjB;GACA,aAAa;IACT,OAAO;IACP,UAAU;IACV,cAAc;IACd,UAAU;IACV,uBAAuB;IACvB,aAAa;GACjB;GACA,KAAK;IACD,OAAO;IACP,UAAU;IACV,iBAAiB;IACjB,UAAU;IACV,uBAAuB;IACvB,aAAa;GACjB;GACA,KAAK;IACD,OAAO;IACP,UAAU;IACV,iBAAiB;IACjB,UAAU;IACV,uBAAuB;IACvB,aAAa;GACjB;GACA,SAAS;IACL,OAAO;IACP,uBAAuB;IACvB,uBAAuB;IACvB,aAAa;GACjB;GACA,SAAS;IACL,OAAO;IACP,uBAAuB;IACvB,uBAAuB;IACvB,aAAa;GACjB;GACA,SAAS;IACL,OAAO;IACP,UAAU;IACV,gBAAgB;IAChB,uBAAuB;IACvB,uBAAuB;IACvB,aAAa;GACjB;GACA,SAAS;IACL,OAAO;IACP,MAAM;IACN,aAAa;IACb,uBAAuB;GAC3B;EACJ;CACJ;CACA,iBAAiB;EACb,IAAI;GACA,OAAO,EACH,WAAW,QACf;GACA,eAAe,EACX,OAAO,QACX;GACA,eAAe,EACX,WAAW,SACf;GACA,aAAa;IACT,WAAW;IACX,WAAW;GACf;GACA,oBAAoB;IAChB,WAAW;IACX,WAAW;GACf;GACA,MAAM,EACF,WAAW,QACf;GACA,eAAe;IACX,SAAS;IACT,KAAK;GACT;EACJ;EACA,IAAI;GACA,OAAO,EACH,WAAW,QACf;GACA,eAAe,EACX,OAAO,QACX;GACA,eAAe,EACX,WAAW,SACf;GACA,aAAa;IACT,WAAW;IACX,WAAW;GACf;GACA,oBAAoB;IAChB,WAAW;IACX,WAAW;GACf;GACA,MAAM,EACF,WAAW,QACf;GACA,eAAe;IACX,SAAS;IACT,KAAK;GACT;EACJ;CACJ;AACJ,CAAC;AAYD,eAAsBkrC,EAAmB,EACrC,eAG8B;CAC9B,IAAI,GAAS,IAGb,IAAI;EACA,IAAIC;EACJ,IAAI;GACA,IAAMC,IAAS,MAAMC,EAAS,MAAM,CAAC,CAAC,KAAK;GAC3C,IAAOD,KAAU,OAAOA,KAAW,WAAWA,IAAS,CAAC;EAC5D,QAAQ;GACJ,IAAO,KAAA;EACX;EACA,IAAME,IAAO,OAAOH,GAAM,QAAS,WAAWA,EAAK,OAAO,KAAA,GACtDI,IAAM,UAAUD;EAWpB,OAVID,EAAS,WAAW,MACpB,IAAM,6BACCC,GAAM,WAAW,yBAAyB,IACjD,IAAM,uBACEH,MACR,IAAM,sBAELH,EAAK,OAAO,GAAGO,CAAG,IAGhB,IAAI,SACP,KAAK,UAAU;GAAE,GAAGJ;GAAM,SAASH,EAAK,OAAO,EAAEO,CAAG;EAAE,CAAC,GACvD;GACI,QAAQF,EAAS;GACjB,YAAYA,EAAS;GACrB,SAASA,EAAS;EACtB,CACJ,IATI;CAUR,QAAQ;EACJ;CACJ;AACJ;;;AChPA,SAASG,IAAwB;CAC7B,OAAO;EACH,IAAI;EACJ,aAAa,OAAY,EACrB,QAAQ,EACJ,iBAAiB,OAAO,MACbC,EAGJ,6BAA6B;GAC5B,QAAQ;GACR,MAAMC;EACV,CAAC,EAET,EACJ;EACA,aAAa,EACT,6BAA6B,OACjC;CACJ;AACJ;AAEA,SAASC,IAAqB;CAC1B,OAAO;EACH,IAAI;EACJ,aAAa,OAAY,EACrB,QAAQ,EACJ,eAAe,OAAO,MACXF,EAGJ,2BAA2B;GAC1B,QAAQ;GACR,MAAMC;EACV,CAAC,EAET,EACJ;EACA,aAAa,EACT,2BAA2B,OAC/B;EACA,eAAe,CACX;GACI,UAAU,MAAiBE,MAAS;GACpC,QAAQ;EACZ,CACJ;CACJ;AACJ;AAOA,IAAMC,IAA2B;AAOjC,SAASC,IAA2B;CAChC,IAAMC,IAAQ,OAAO,gCAAgB,IAAI,WAAW,EAAE,CAAC;CACvD,OAAO,MAAM,KAAKA,IAAQ,MAAMC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE;AAC5E;AAiBA,SAAgBC,EACZ,IA2BI,CAAC,GACP;CACE,IAAMC,IAASjqC,EAAIV,EAAiBoB,EAAQ,UAAU,CAAC,GACjDwpC,IAAiBlpC,QACbP,EAAQC,EAAQ,cAAc,KAAK,EAC7C,GAEMrB,IAAQ2B,EAAS;EACnB,WAAWipC,EAAO;EAClB,MAAM,MAAkB;GAEpB,AADA9qC,EAAiBE,GAAOqB,EAAQ,UAAU,GAC1C,EAAO,QAAQrB;EACnB;CACJ,CAAC,GAEK8qC,IAAUnpC,QACZ,CAACkpC,EAAe,SAAS7qC,EAAM,QACzB,EAAE,eAAe,UAAUA,EAAM,QAAQ,IACzC,KAAA,CACV,GAkCM+qC,IAASC,EAAiB;EAC5B,SAAS3pC,EAAQ,WAAA,KAAA;EACjB,UAAUA,EAAQ,YAAA;EAClB,SAAS;GACL4pC,EAA+C;GAC/CC,EAAgB;GAChBhB,EAAsB;GACtBG,EAAmB;EACvB;EACA,cAAc;GACV,YAnCJ,MACC;IACD,IAAIQ,EAAe,OAIf;IAEJ,IAAMM,IAAqBC,EAAI,SAAS,QAAQ,IAAI,gBAAgB;IACpE,AAAID,MACA,EAAM,QAAQA;GAEtB;GAwBQ,YAAYvB;GACZ,MAAM;IACF,MAAM;IAIN,aAAciB,EAAe,QAAQ,KAAK7qC,EAAM;GACpD;GACA,kBAzBH,GAAO,MACR,MAAMqrC,GAAO;IACT,GAAGC;IACH,aAAaT,EAAe,QAAQ,YAAYS,GAAM;GAC1D,CAAC;EAsBD;CACJ,CAAC,GAEKC,IAAUR,EAAO,WAAW,GAC5BS,IAAmB7qC,EAAI,EAAK,GAC5B8qC,IAAgB9pC,QAAeP,EAAQC,EAAQ,aAAa,CAAC,GAC7DqqC,IAAW/pC,QAAeP,EAAQC,EAAQ,QAAQ,KAAK,EAAI,GAQ3DsqC,IAAsBhrC,EAAI8qC,EAAc,KAAK,GAK7CG,IAAiBjqC,QAEf,CAAC,CAAC8pC,EAAc,SAChB,CAAC,CAACpqC,EAAQ,sBACV,CAAC,CAACsqC,EAAoB,SACtBd,EAAe,KACvB,GAOIgB,IAA2B,QAAQ,QAAQ;CAC/C,SAASC,EAAiB,GAA0C;EAChE,IAAMC,IAAMF,EAAU,KAAKG,GAAMA,CAAI;EAErC,OADA,IAAYD,GACLA;CACX;CAIA,QACUR,EAAQ,MAAM,MAAM,OACzB,GAAM,MAAiB;EAOpB,AANIU,KAAQA,EAAK,OAAOC,GAAc,MAClC7qC,EAAQ,aAAa;GACjB,QAAQ4qC,EAAK;GACb,aAAa,CAAC,CAACA,EAAK;EACxB,CAAC,GAED,CAACA,KAAQC,KACT7qC,EAAQ,cAAc;CAE9B,CACJ;CAEA,eAAe8qC,IAAmC;EAC9C,IAAM,EAAE,YAAS,MAAMpB,EAAO,OAAO,UAAU;EAC/C,AAAIX,GAAM,UACN,EAAM,QAAQA,EAAK,OACfA,EAAK,MAAM,MACXlqC,EACIkqC,EAAK,KAAK,IACV/oC,EAAQ,UACZ;CAGZ;CAMA,eAAe+qC,IAAuC;EAClD,IAAMC,IAAejsC,EAAyBiB,EAAQ,UAAU;EAChE,IAAI,CAACgrC,GACD,OAAO;EAEX,IAAI;GACA,IAAM,EAAE,YAAS,MAAMtB,EAAO,OAAO,gBAAgB,EACjD,QAAQsB,EACZ,CAAC;GACD,IAAIjC,GAAM,OAGN,OAFA,EAAM,QAAQA,EAAK,OACnB,MAAMmB,EAAQ,MAAM,QAAQ,GACrB;EAEf,QAAQ,CAER;EACA,OAAO;CACX;CAGA,eAAee,IAA2C;EAEtD,AAAK,MADkBF,EAAmB,KAEtC,MAAMD,EAAkB;CAEhC;CAOA,eAAeI,EACX,GACa;EACb,AAAIZ,EAAoB,UAAUa,MAIlCnrC,EAAQ,wBAAwB,GAC5B,GAAQ,sBAGZ,MAAMirC,EAA0B;CACpC;CAGA,eAAeG,EACX,GACa;EACb,EAAiB,QAAQ;EACzB,IAAI;GACA,IAAM,EAAE,YAAS,MAAM1B,EAAO,OAAO,cAAc,EAC/C,OAAO2B,EACX,CAAC;GACD,IAAIf,EAAoB,UAAUe,GAE9B;GAEJ,IAAItC,GAAM,OAAO;IAEb,AADA,EAAM,QAAQA,EAAK,OACnB,MAAMmB,EAAQ,MAAM,QAAQ;IAC5B;GACJ;GACA,MAAMgB,EAA2BG,CAAgB;EACrD,QAAQ;GACJ,MAAMH,EAA2BG,CAAgB;EACrD,UAAU;GACN,EAAiB,QAAQ;EAC7B;CACJ;CAGA,IAAIC,GASAC,GAGAC,IAA4B;CAEhC,eAAeC,EACX,GACa;EACb,IAAKJ,KAAoBC,MAAyBD,GAGlD;GAEA,AAFA,EAAoB,QAAQA,GAC5B,IAAyBA,GACzB,IAAuBA;GACvB,IAAI;IACA,MAAMZ,EAAiB,YAAY;KAC/B,AAAIH,EAAoB,UAAUe,KAIlC,MAAMD,EAAsBC,CAAgB;IAChD,CAAC;GACL,UAAU;IACN,IAAuB,KAAA;GAC3B;EAb4B;CAchC;CAEA,eAAeK,IAA+C;EAC1D,AAAIvB,EAAiB,SAIrB,MAAMM,EAAiB,YAAY;GAC/B,IAAI,IAAoB,SAASjB,EAAe,QAIhD;MAAiB,QAAQ;IACzB,IAAI;KACA,MAAMyB,EAA0B;IACpC,UAAU;KACN,EAAiB,QAAQ;IAC7B;GALyB;EAM7B,CAAC;CACL;CAkGA,AAhGA7qC,EACI,CAACiqC,GAAUH,CAAO,IACjB,CAACyB,GAAaC,OAAgB;EAC3B,IAAI,CAACD,GACD;EAEJ,IACI,CAACC,EAAW,aACZ,CAACA,EAAW,gBACZ,CAACzB,EAAiB,SAClB,CAACyB,EAAW,MACd;GACE,IAAIpC,EAAe,OAIf;GAEJ,IAAIc,EAAoB,OAAO;IAC3B,EAAwBA,EAAoB,KAAK;IACjD;GACJ;GACA,IAAItqC,EAAQ,oBACR;GAEJ,EAA8B;GAC9B;EACJ;EAEA,IAAM4qC,IAAOgB,EAAW,MAAM;EAE9B,IAAI,GAAe,OAWnB;OACIA,EAAW,MAAM,SAAS,iBAC1B,CAACJ,GACH;IAEE,IADA,IAA4B,IACxB,CAAClB,EAAoB,OAAO;KAK5B,EAAQ;KACR;IACJ;IACA,IAAIiB,MAA2BjB,EAAoB,OAAO;KAItD,EAAwBA,EAAoB,KAAK;KACjD;IACJ;GACJ;GAKA,AACIM,GAAM,eACNN,EAAoB,SACpBiB,MAA2BjB,EAAoB,QAE/CmB,EAAwBnB,EAAoB,KAAK,IAMjDM,GAAM,eACNA,EAAK,MACL,CAAC7rC,EAAyBiB,EAAQ,UAAU,KAE5CnB,EAAyB+rC,EAAK,IAAc5qC,EAAQ,UAAU;EApBlE;CAsBJ,GACA,EAAE,WAAW,GAAK,CACtB,GAMAI,EAAMopC,SAAsB;EACxB,EAAQ,MAAM,QAAQ;CAC1B,CAAC,GAEDppC,EAAMgqC,IAAgB,GAAU,MAAkB;EAC9C,AAAIyB,KAGA,EAAoB,QAAQA,GACxBxB,EAAS,SACToB,EAAwBI,CAAQ,KAOpCC,KAAiBxB,EAAoB,UAAUwB,KAC/CC,EAAQ;CAEhB,CAAC;CAED,SAASC,EAAQ,GAAwD;EACrE,AAAI5tC,EAAM,WAAW,QAGjBorC,EAAe,QAIfU,EAAQ,MAAM,QAAQ,IAGtBI,EAAoB,QACpBmB,EAAwBnB,EAAoB,KAAK,IAGjDtqC,EAAQ,sBAGZ0rC,EAA8B;CAClC;CAEA,IAAM5sC,IAASwB,QAAe4pC,EAAQ,MAAM,MAAM,MAAM,EAAE,GASpD+B,IAAqB3sC,EAA0C;CAGrE,eAAe4sC,EACX,GACA,GACA,GACF;EACE,IAAM/rC,IAAS,MAAMupC,EAAO,OAAO,MAAM;GACrC;GACA;GACA;EACJ,CAAC,GACKyC,IAAYhsC,EAAO;EA4BzB,OAvBIgsC,GAAW,qBACX,EAAmB,QAAQA,EAAU,iBAC/B;GACI,OAAOA,EAAU;GACjB,SAASA,EAAU,oBAAoB,CAAC;EAC5C,IACA,KAAA,GAGNntC,EAA2BgB,EAAQ,UAAU,GACtCG,MAKPA,EAAO,MAAM,UACb,EAAM,QAAQA,EAAO,KAAK,OAK1BnB,EAA2BgB,EAAQ,UAAU,IAE1CG;CACX;CAEA,IAAMisC,IAAmB;EACrB,MAAM;EACN,KAAK;EACL,QAAQ;CACZ;CAGA,SAASC,EAAiB,GAA8B;EACpD,OAAO;GACH,QAAQ;GACR,SAAS,EAAE,sBAAsBF,EAAU,MAAM;GAGjD,MAAM;IAAE,MAAM;IAAmB,OAAO;GAAG;EAC/C;CACJ;CAEA,IAAMG,IAAgB;EAClB,MAAM;EACN,OAAO;GAAE,MAAM;GAA6B,SAAS,KAAA;EAAU;CACnE;CAGA,eAAeC,EACX,GACA,GACF;EACE,IAAMJ,IAAYF,EAAmB;EACrC,IAAI,CAACE,GACD,OAAOG;EAEX,IAAMnsC,IAAS,MAAMupC,EAAO,OACxB0C,EAAiBI,IACjB;GAAE,GAAGH,EAAiBF,CAAS;GAAG,MAAM,EAAE,QAAK;EAAE,CACrD;EAKA,OAJIhsC,EAAO,MAAM,UACb,EAAM,QAAQA,EAAO,KAAK,OAC1B,EAAmB,QAAQ,KAAA,IAExBA;CACX;CAGA,eAAessC,IAAoB;EAC/B,IAAMN,IAAYF,EAAmB;EAIrC,OAHKE,IAGEzC,EAAO,OACV,wBACA2C,EAAiBF,CAAS,CAC9B,IALWG;CAMf;CAGA,SAASI,IAAkB;EACvB,EAAmB,QAAQ,KAAA;CAC/B;CAEA,SAASC,EAAgB,GAItB;EACC,OAAOjD,EAAO,OAAO,MAAMkD,CAAM;CACrC;CAEA,SAASC,EAAqB,GAAe,GAAoB;EAC7D,OAAOnD,EAAO,qBAAqB;GAAE;GAAO;EAAW,CAAC;CAC5D;CAiBA,eAAeoD,GACX,GACA,GACkC;EAClC,IAAMC,IAAU/sC,EAAQ,WAAA,KAAA,GAClBgtC,IAAWhtC,EAAQ,YAAA,QACnBitC,IAAQ9D,EAAiB,GACzB+D,IAAW,IAAI,IAAI,GAAGH,EAAQ,GAAGC,EAAS,mBAAmB;EAGnE,AAFAE,EAAS,aAAa,IAAI,YAAYC,CAAQ,GAC9CD,EAAS,aAAa,IAAI,eAAe,OAAO,SAAS,MAAM,GAC/DA,EAAS,aAAa,IAAI,cAAcD,CAAK;EAE7C,IAAMG,IAAQ,OAAO,KACjBF,EAAS,SAAS,GAClB,mBACA,4CACJ;EAMA,OAJKE,IAIE,IAAI,SAAS,MAAY;GAC5B,IAAMC,IAAgB,IAAI,IAAIN,CAAO,CAAC,CAAC,QAEjCO,IAAe,kBAAkB;IACnC,AAAIF,GAAO,UACPG,EAAO;GAEf,GAAG,GAAG;GAEN,SAASA,IAAS;IAGd,AAFA,OAAO,oBAAoB,WAAWC,CAAc,GACpD,cAAcF,CAAY,GAC1BG,EAAQ,EAAE,cAAc,GAAM,CAAC;GACnC;GAEA,SAASD,EAAe,GAAqB;IAMzC,AAJIE,EAAM,WAAWL,KACjBK,EAAM,WAAWN,KACjBM,EAAM,MAAM,SAASxE,KACrBwE,EAAM,KAAK,UAAUT,MAIzBG,GAAO,MAAM,GAGT,OAAOM,EAAM,KAAK,SAAU,YAAYA,EAAM,KAAK,UACnD,EAAM,QAAQA,EAAM,KAAK,OAGzB1uC,EAA2BgB,EAAQ,UAAU,GAC7CkqC,EAAQ,MAAM,QAAQ,CAAC,CAAC,WAAWyD,IAAgB,CAAC,IAExDJ,EAAO;GACX;GAEA,OAAO,iBAAiB,WAAWC,CAAc;EACrD,CAAC,IAzCU,EAAE,cAAc,GAAK;CA0CpC;CAUA,eAAezB,IAAyB;EACpC,IAAIvC,EAAe,OAIf;EAEJ,EAAoB,QAAQ,KAAA;EAC5B,IAAMoE,IAAejvC,EAAM;EAC3B,IAAI;GACA,MAAM+qC,EAAO,QAAQ;EACzB,UAAU;GAQN,AAHI/qC,EAAM,UAAUivC,MAChB,EAAM,QAAQ,KAElB,MAAM1D,EAAQ,MAAM,QAAQ;EAChC;CACJ;CAEA,OAAO;EACH;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAcR,EAAO,OAAO;EAC5B;EACA;EACA;CACJ;AACJ;;;AC3wBA,SAAgBmE,IAAqB;CACjC,IAAIC,IAAgC,MAE9BC,KAAwB,MAAiB;EAC3C,EAAM,gBAAgB;CAC1B;CAcA,AAZAC,QAAgB;EAEZ,IAAMC,IADWC,EACA,CAAA,EAAU,OAAO,KAAK,YAAY;EAEnD,AAAMD,aAAoB,eAI1B,IAAaA,GACbH,EAAW,iBAAiB,WAAWC,CAAoB;CAC/D,CAAC,GAEDI,QAAsB;EAClB,AAKAL,OADAA,EAAW,oBAAoB,WAAWC,CAAoB,GACjD;CACjB,CAAC;AACL"}
|