@iblai/iblai-js 1.25.2 → 1.25.3
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.
|
@@ -98332,11 +98332,16 @@ var clawSandboxAgentConfigPrompts$3 = {
|
|
|
98332
98332
|
updateSuccess: "{label} updated successfully",
|
|
98333
98333
|
updateError: "Failed to update {label}",
|
|
98334
98334
|
moreInfoAriaLabel: "More info about {label}",
|
|
98335
|
-
edit: "Edit"
|
|
98335
|
+
edit: "Edit",
|
|
98336
|
+
connectSandboxPrompt: "Connect a sandbox instance in the Sandbox tab to manage agent prompts.",
|
|
98337
|
+
enableSandboxPrompt: "Enable the dedicated sandbox on the Sandbox tab and connect it to an instance to manage agent prompts.",
|
|
98338
|
+
sandboxTabLabel: "Sandbox tab"
|
|
98336
98339
|
};
|
|
98337
98340
|
var clawSandboxAgentSkills$3 = {
|
|
98338
98341
|
loadingSkills: "Loading skills...",
|
|
98339
98342
|
connectSandboxPrompt: "Connect a sandbox instance in the Sandbox tab to manage skills.",
|
|
98343
|
+
enableSandboxPrompt: "Enable the dedicated sandbox on the Sandbox tab and connect it to an instance to manage skills.",
|
|
98344
|
+
sandboxTabLabel: "Sandbox tab",
|
|
98340
98345
|
newSkill: "New Skill",
|
|
98341
98346
|
noSkillsAvailable: "No skills available for this platform. Create one to get started.",
|
|
98342
98347
|
moreInfoAbout: "More info about {name}",
|
|
@@ -99855,6 +99860,11 @@ var privacyTabLabels$3 = {
|
|
|
99855
99860
|
title: "Privacy",
|
|
99856
99861
|
description: "Detect and filter personally identifiable information from chat messages."
|
|
99857
99862
|
},
|
|
99863
|
+
capability: {
|
|
99864
|
+
title: "PII filtering",
|
|
99865
|
+
description: "Automatically find and hide personal information — names, emails, phone numbers and more — in messages before the agent sees them. When on, choose what to detect and how to handle it below.",
|
|
99866
|
+
offHint: "Turn it on to detect and hide personal information in messages."
|
|
99867
|
+
},
|
|
99858
99868
|
fields: {
|
|
99859
99869
|
enableRouter: {
|
|
99860
99870
|
label: "Enable Privacy Router",
|
|
@@ -99866,12 +99876,14 @@ var privacyTabLabels$3 = {
|
|
|
99866
99876
|
options: {
|
|
99867
99877
|
redact: "Redact",
|
|
99868
99878
|
mask: "Mask",
|
|
99869
|
-
block: "Block"
|
|
99879
|
+
block: "Block",
|
|
99880
|
+
allow: "Allow"
|
|
99870
99881
|
},
|
|
99871
99882
|
descriptions: {
|
|
99872
99883
|
redact: "PII is replaced with its type — e.g. \"Email [EMAIL_ADDRESS]\".",
|
|
99873
99884
|
mask: "PII is hidden behind asterisks — e.g. \"Email ***********\".",
|
|
99874
|
-
block: "The message is rejected and your block message is shown to the user."
|
|
99885
|
+
block: "The message is rejected and your block message is shown to the user.",
|
|
99886
|
+
allow: "PII is detected but left untouched — the message passes through unchanged. Use this to monitor or audit personal information without altering messages."
|
|
99875
99887
|
}
|
|
99876
99888
|
},
|
|
99877
99889
|
blockMessage: {
|
|
@@ -100561,6 +100573,11 @@ var screenshareTabLabels$3 = {
|
|
|
100561
100573
|
title: "Screen Share",
|
|
100562
100574
|
description: "How your agent behaves when a user shares their screen during a voice call."
|
|
100563
100575
|
},
|
|
100576
|
+
capability: {
|
|
100577
|
+
title: "Screen sharing",
|
|
100578
|
+
description: "Let people share their screen during a voice call so the agent can see what they're doing and guide them step by step. When on, set the screen-sharing prompts below.",
|
|
100579
|
+
offHint: "Turn it on to let people share their screen during a call and edit these prompts."
|
|
100580
|
+
},
|
|
100564
100581
|
disabledHint: "Screen sharing is currently turned off for this agent. These prompts will be saved but only take effect once it’s turned on.",
|
|
100565
100582
|
fields: {
|
|
100566
100583
|
systemPrompt: {
|
|
@@ -101327,7 +101344,8 @@ var tabsVoiceTab$3 = {
|
|
|
101327
101344
|
var tasksTabLabels$3 = {
|
|
101328
101345
|
header: {
|
|
101329
101346
|
title: "Tasks",
|
|
101330
|
-
description: "Configure automated tasks for your agent."
|
|
101347
|
+
description: "Configure automated tasks for your agent.",
|
|
101348
|
+
infoBox: "Let your agent work on its own schedule. Set up recurring tasks it runs automatically — like daily summaries or reminders — without anyone having to ask."
|
|
101331
101349
|
},
|
|
101332
101350
|
toolbar: {
|
|
101333
101351
|
searchPlaceholder: "Search all tasks...",
|
|
@@ -101469,11 +101487,54 @@ var voiceTabCallConfigSection$3 = {
|
|
|
101469
101487
|
refreshingAriaLabel: "Refreshing",
|
|
101470
101488
|
moreInfoAbout: "More info about {label}"
|
|
101471
101489
|
};
|
|
101490
|
+
var analyticsTabLabels$3 = {
|
|
101491
|
+
header: {
|
|
101492
|
+
title: "Analytics",
|
|
101493
|
+
description: "Usage reports and insights for this agent."
|
|
101494
|
+
},
|
|
101495
|
+
infoBox: "See how this agent is being used — who's chatting with it, what they talk about, what it costs, and more. Pick a report below to dive in.",
|
|
101496
|
+
openAria: "Open {label}",
|
|
101497
|
+
tabs: {
|
|
101498
|
+
overview: {
|
|
101499
|
+
label: "Overview",
|
|
101500
|
+
description: "A high-level snapshot of usage and engagement over time."
|
|
101501
|
+
},
|
|
101502
|
+
users: {
|
|
101503
|
+
label: "Users",
|
|
101504
|
+
description: "See who's chatting with this agent and how active they are."
|
|
101505
|
+
},
|
|
101506
|
+
topics: {
|
|
101507
|
+
label: "Topics",
|
|
101508
|
+
description: "The subjects people bring up most across conversations."
|
|
101509
|
+
},
|
|
101510
|
+
transcripts: {
|
|
101511
|
+
label: "Transcripts",
|
|
101512
|
+
description: "Read full conversation transcripts message by message."
|
|
101513
|
+
},
|
|
101514
|
+
financial: {
|
|
101515
|
+
label: "Costs",
|
|
101516
|
+
description: "Track token usage and what this agent is costing you."
|
|
101517
|
+
},
|
|
101518
|
+
audit: {
|
|
101519
|
+
label: "Audit",
|
|
101520
|
+
description: "Review the log of changes and activity for this agent."
|
|
101521
|
+
},
|
|
101522
|
+
reports: {
|
|
101523
|
+
label: "Data Reports",
|
|
101524
|
+
description: "Generate and download detailed reports to share or archive."
|
|
101525
|
+
}
|
|
101526
|
+
}
|
|
101527
|
+
};
|
|
101472
101528
|
var voiceTabLabels$3 = {
|
|
101473
101529
|
header: {
|
|
101474
101530
|
title: "Voice",
|
|
101475
101531
|
description: "Choose the voice your agent uses and how voice calls work."
|
|
101476
101532
|
},
|
|
101533
|
+
capability: {
|
|
101534
|
+
title: "Voice calls",
|
|
101535
|
+
description: "Let people talk to this agent out loud and hear it reply, like a phone call. When on, pick the voice and fine-tune how calls behave below.",
|
|
101536
|
+
offHint: "Turn it on to let people start voice conversations with this agent."
|
|
101537
|
+
},
|
|
101477
101538
|
subTabs: {
|
|
101478
101539
|
voice: "Voice",
|
|
101479
101540
|
callConfig: "Voice call"
|
|
@@ -101721,6 +101782,13 @@ var ltiTabLabels$3 = {
|
|
|
101721
101782
|
title: "LTI",
|
|
101722
101783
|
description: "Manage LTI agent links, signing keys, tools, and platform endpoints."
|
|
101723
101784
|
},
|
|
101785
|
+
capability: {
|
|
101786
|
+
title: "LTI launches",
|
|
101787
|
+
description: "Let this agent be added to a Learning Management System (Canvas, Brightspace, Blackboard or Moodle) so students can open it right inside their course. When on, create the links, signing keys, and tools your LMS needs below.",
|
|
101788
|
+
offHint: "Turn it on to let this agent be embedded in an LMS and set up its links and keys.",
|
|
101789
|
+
toggleSuccess: "LTI setting updated",
|
|
101790
|
+
toggleError: "Couldn't update LTI setting"
|
|
101791
|
+
},
|
|
101724
101792
|
subTabs: {
|
|
101725
101793
|
agentLinks: "Links",
|
|
101726
101794
|
keys: "Keys",
|
|
@@ -102124,6 +102192,7 @@ var en = {
|
|
|
102124
102192
|
userProfileDropdownIndex: userProfileDropdownIndex$3,
|
|
102125
102193
|
version: version$6,
|
|
102126
102194
|
voiceTabCallConfigSection: voiceTabCallConfigSection$3,
|
|
102195
|
+
analyticsTabLabels: analyticsTabLabels$3,
|
|
102127
102196
|
voiceTabLabels: voiceTabLabels$3,
|
|
102128
102197
|
voiceTabVoicePicker: voiceTabVoicePicker$3,
|
|
102129
102198
|
welcomeChatConversationStarters: welcomeChatConversationStarters$3,
|
|
@@ -103642,11 +103711,16 @@ var clawSandboxAgentConfigPrompts$2 = {
|
|
|
103642
103711
|
updateSuccess: "{label} mis à jour avec succès",
|
|
103643
103712
|
updateError: "Échec de la mise à jour de {label}",
|
|
103644
103713
|
moreInfoAriaLabel: "Plus d'informations sur {label}",
|
|
103645
|
-
edit: "Modifier"
|
|
103714
|
+
edit: "Modifier",
|
|
103715
|
+
connectSandboxPrompt: "Connectez une instance de sandbox dans l'onglet Sandbox pour gérer les invites de l'agent.",
|
|
103716
|
+
enableSandboxPrompt: "Activez le bac à sable dédié dans l'onglet Sandbox et connectez-le à une instance pour gérer les invites de l'agent.",
|
|
103717
|
+
sandboxTabLabel: "onglet Sandbox"
|
|
103646
103718
|
};
|
|
103647
103719
|
var clawSandboxAgentSkills$2 = {
|
|
103648
103720
|
loadingSkills: "Chargement des compétences...",
|
|
103649
103721
|
connectSandboxPrompt: "Connectez une instance sandbox dans l'onglet Sandbox pour gérer les compétences.",
|
|
103722
|
+
enableSandboxPrompt: "Activez le bac à sable dédié dans l'onglet Sandbox et connectez-le à une instance pour gérer les compétences.",
|
|
103723
|
+
sandboxTabLabel: "onglet Sandbox",
|
|
103650
103724
|
newSkill: "Nouvelle compétence",
|
|
103651
103725
|
noSkillsAvailable: "Aucune compétence disponible pour cette plateforme. Créez-en une pour commencer.",
|
|
103652
103726
|
moreInfoAbout: "Plus d'informations sur {name}",
|
|
@@ -105165,6 +105239,11 @@ var privacyTabLabels$2 = {
|
|
|
105165
105239
|
title: "Confidentialité",
|
|
105166
105240
|
description: "Détectez et filtrez les informations personnellement identifiables des messages de chat."
|
|
105167
105241
|
},
|
|
105242
|
+
capability: {
|
|
105243
|
+
title: "Filtrage des données personnelles",
|
|
105244
|
+
description: "Détectez et masquez automatiquement les informations personnelles — noms, e-mails, numéros de téléphone et plus — dans les messages avant que l'agent ne les voie. Une fois activé, choisissez ci-dessous ce qu'il faut détecter et comment le traiter.",
|
|
105245
|
+
offHint: "Activez-le pour détecter et masquer les informations personnelles dans les messages."
|
|
105246
|
+
},
|
|
105168
105247
|
fields: {
|
|
105169
105248
|
enableRouter: {
|
|
105170
105249
|
label: "Activer le routeur de confidentialité",
|
|
@@ -105176,12 +105255,14 @@ var privacyTabLabels$2 = {
|
|
|
105176
105255
|
options: {
|
|
105177
105256
|
redact: "Masquer",
|
|
105178
105257
|
mask: "Flouter",
|
|
105179
|
-
block: "Bloquer"
|
|
105258
|
+
block: "Bloquer",
|
|
105259
|
+
allow: "Autoriser"
|
|
105180
105260
|
},
|
|
105181
105261
|
descriptions: {
|
|
105182
105262
|
redact: "Les PII sont remplacées par leur type — ex. \"Email [EMAIL_ADDRESS]\".",
|
|
105183
105263
|
mask: "Les PII sont masquées par des astérisques — ex. \"Email ***********\".",
|
|
105184
|
-
block: "Le message est rejeté et votre message de blocage est affiché à l'utilisateur."
|
|
105264
|
+
block: "Le message est rejeté et votre message de blocage est affiché à l'utilisateur.",
|
|
105265
|
+
allow: "Les PII sont détectées mais laissées intactes — le message passe sans modification. Utilisez cette option pour surveiller ou auditer les informations personnelles sans altérer les messages."
|
|
105185
105266
|
}
|
|
105186
105267
|
},
|
|
105187
105268
|
blockMessage: {
|
|
@@ -105871,6 +105952,11 @@ var screenshareTabLabels$2 = {
|
|
|
105871
105952
|
title: "Partage d’écran",
|
|
105872
105953
|
description: "Comment votre agent se comporte lorsqu’un utilisateur partage son écran pendant un appel vocal."
|
|
105873
105954
|
},
|
|
105955
|
+
capability: {
|
|
105956
|
+
title: "Partage d’écran",
|
|
105957
|
+
description: "Permettez aux utilisateurs de partager leur écran pendant un appel vocal afin que l'agent voie ce qu'ils font et les guide étape par étape. Une fois activé, définissez les invites de partage d'écran ci-dessous.",
|
|
105958
|
+
offHint: "Activez-le pour permettre le partage d'écran pendant un appel et modifier ces invites."
|
|
105959
|
+
},
|
|
105874
105960
|
disabledHint: "Le partage d’écran est actuellement désactivé pour cet agent. Ces invites seront enregistrées mais ne prendront effet qu’une fois activé.",
|
|
105875
105961
|
fields: {
|
|
105876
105962
|
systemPrompt: {
|
|
@@ -106637,7 +106723,8 @@ var tabsVoiceTab$2 = {
|
|
|
106637
106723
|
var tasksTabLabels$2 = {
|
|
106638
106724
|
header: {
|
|
106639
106725
|
title: "Tâches",
|
|
106640
|
-
description: "Configurez les tâches automatisées pour votre agent."
|
|
106726
|
+
description: "Configurez les tâches automatisées pour votre agent.",
|
|
106727
|
+
infoBox: "Laissez votre agent travailler selon son propre calendrier. Configurez des tâches récurrentes qu'il exécute automatiquement — comme des résumés quotidiens ou des rappels — sans que personne ait à le demander."
|
|
106641
106728
|
},
|
|
106642
106729
|
toolbar: {
|
|
106643
106730
|
searchPlaceholder: "Rechercher toutes les tâches...",
|
|
@@ -106779,11 +106866,54 @@ var voiceTabCallConfigSection$2 = {
|
|
|
106779
106866
|
refreshingAriaLabel: "Actualisation en cours",
|
|
106780
106867
|
moreInfoAbout: "Plus d'infos sur {label}"
|
|
106781
106868
|
};
|
|
106869
|
+
var analyticsTabLabels$2 = {
|
|
106870
|
+
header: {
|
|
106871
|
+
title: "Analytique",
|
|
106872
|
+
description: "Rapports d'utilisation et insights pour cet agent."
|
|
106873
|
+
},
|
|
106874
|
+
infoBox: "Découvrez comment cet agent est utilisé — qui discute avec lui, de quoi les gens parlent, combien il coûte, et plus encore. Choisissez un rapport ci-dessous pour approfondir.",
|
|
106875
|
+
openAria: "Ouvrir {label}",
|
|
106876
|
+
tabs: {
|
|
106877
|
+
overview: {
|
|
106878
|
+
label: "Vue d’ensemble",
|
|
106879
|
+
description: "Un aperçu global de l'utilisation et de l'engagement dans le temps."
|
|
106880
|
+
},
|
|
106881
|
+
users: {
|
|
106882
|
+
label: "Utilisateurs",
|
|
106883
|
+
description: "Voyez qui discute avec cet agent et à quel point ils sont actifs."
|
|
106884
|
+
},
|
|
106885
|
+
topics: {
|
|
106886
|
+
label: "Sujets",
|
|
106887
|
+
description: "Les sujets que les gens abordent le plus dans les conversations."
|
|
106888
|
+
},
|
|
106889
|
+
transcripts: {
|
|
106890
|
+
label: "Transcriptions",
|
|
106891
|
+
description: "Lisez les transcriptions complètes des conversations, message par message."
|
|
106892
|
+
},
|
|
106893
|
+
financial: {
|
|
106894
|
+
label: "Coûts",
|
|
106895
|
+
description: "Suivez l'utilisation des jetons et ce que cet agent vous coûte."
|
|
106896
|
+
},
|
|
106897
|
+
audit: {
|
|
106898
|
+
label: "Audit",
|
|
106899
|
+
description: "Consultez le journal des modifications et de l'activité de cet agent."
|
|
106900
|
+
},
|
|
106901
|
+
reports: {
|
|
106902
|
+
label: "Rapports de données",
|
|
106903
|
+
description: "Générez et téléchargez des rapports détaillés à partager ou à archiver."
|
|
106904
|
+
}
|
|
106905
|
+
}
|
|
106906
|
+
};
|
|
106782
106907
|
var voiceTabLabels$2 = {
|
|
106783
106908
|
header: {
|
|
106784
106909
|
title: "Voix",
|
|
106785
106910
|
description: "Choisissez la voix utilisée par votre agent et le fonctionnement des appels vocaux."
|
|
106786
106911
|
},
|
|
106912
|
+
capability: {
|
|
106913
|
+
title: "Appels vocaux",
|
|
106914
|
+
description: "Permettez aux utilisateurs de parler à cet agent à voix haute et d'entendre sa réponse, comme lors d'un appel téléphonique. Une fois activé, choisissez la voix et affinez le comportement des appels ci-dessous.",
|
|
106915
|
+
offHint: "Activez-le pour permettre aux utilisateurs de démarrer des conversations vocales avec cet agent."
|
|
106916
|
+
},
|
|
106787
106917
|
subTabs: {
|
|
106788
106918
|
voice: "Voix",
|
|
106789
106919
|
callConfig: "Appel vocal"
|
|
@@ -107031,6 +107161,13 @@ var ltiTabLabels$2 = {
|
|
|
107031
107161
|
title: "LTI",
|
|
107032
107162
|
description: "Gérez les liens LTI de l'agent, les clés de signature, les outils et les endpoints de la plateforme."
|
|
107033
107163
|
},
|
|
107164
|
+
capability: {
|
|
107165
|
+
title: "Lancements LTI",
|
|
107166
|
+
description: "Permettez d'ajouter cet agent à un système de gestion de l'apprentissage (Canvas, Brightspace, Blackboard ou Moodle) afin que les étudiants puissent l'ouvrir directement dans leur cours. Une fois activé, créez ci-dessous les liens, les clés de signature et les outils dont votre LMS a besoin.",
|
|
107167
|
+
offHint: "Activez-le pour permettre l'intégration de cet agent dans un LMS et configurer ses liens et ses clés.",
|
|
107168
|
+
toggleSuccess: "Paramètre LTI mis à jour",
|
|
107169
|
+
toggleError: "Impossible de mettre à jour le paramètre LTI"
|
|
107170
|
+
},
|
|
107034
107171
|
subTabs: {
|
|
107035
107172
|
agentLinks: "Liens",
|
|
107036
107173
|
keys: "Clés",
|
|
@@ -107434,6 +107571,7 @@ var fr = {
|
|
|
107434
107571
|
userProfileDropdownIndex: userProfileDropdownIndex$2,
|
|
107435
107572
|
version: version$5,
|
|
107436
107573
|
voiceTabCallConfigSection: voiceTabCallConfigSection$2,
|
|
107574
|
+
analyticsTabLabels: analyticsTabLabels$2,
|
|
107437
107575
|
voiceTabLabels: voiceTabLabels$2,
|
|
107438
107576
|
voiceTabVoicePicker: voiceTabVoicePicker$2,
|
|
107439
107577
|
welcomeChatConversationStarters: welcomeChatConversationStarters$2,
|
|
@@ -108952,11 +109090,16 @@ var clawSandboxAgentConfigPrompts$1 = {
|
|
|
108952
109090
|
updateSuccess: "{label} actualizado correctamente",
|
|
108953
109091
|
updateError: "Error al actualizar {label}",
|
|
108954
109092
|
moreInfoAriaLabel: "Más información sobre {label}",
|
|
108955
|
-
edit: "Editar"
|
|
109093
|
+
edit: "Editar",
|
|
109094
|
+
connectSandboxPrompt: "Conecta una instancia de sandbox en la pestaña Sandbox para gestionar las indicaciones del agente.",
|
|
109095
|
+
enableSandboxPrompt: "Activa el sandbox dedicado en la pestaña Sandbox y conéctalo a una instancia para gestionar las indicaciones del agente.",
|
|
109096
|
+
sandboxTabLabel: "pestaña Sandbox"
|
|
108956
109097
|
};
|
|
108957
109098
|
var clawSandboxAgentSkills$1 = {
|
|
108958
109099
|
loadingSkills: "Cargando habilidades...",
|
|
108959
109100
|
connectSandboxPrompt: "Conecta una instancia de sandbox en la pestaña Sandbox para gestionar habilidades.",
|
|
109101
|
+
enableSandboxPrompt: "Activa el sandbox dedicado en la pestaña Sandbox y conéctalo a una instancia para gestionar habilidades.",
|
|
109102
|
+
sandboxTabLabel: "pestaña Sandbox",
|
|
108960
109103
|
newSkill: "Nueva habilidad",
|
|
108961
109104
|
noSkillsAvailable: "No hay habilidades disponibles para esta plataforma. Crea una para empezar.",
|
|
108962
109105
|
moreInfoAbout: "Más información sobre {name}",
|
|
@@ -110475,6 +110618,11 @@ var privacyTabLabels$1 = {
|
|
|
110475
110618
|
title: "Privacidad",
|
|
110476
110619
|
description: "Detecta y filtra información de identificación personal de los mensajes del chat."
|
|
110477
110620
|
},
|
|
110621
|
+
capability: {
|
|
110622
|
+
title: "Filtrado de datos personales",
|
|
110623
|
+
description: "Detecta y oculta automáticamente la información personal — nombres, correos, números de teléfono y más — en los mensajes antes de que el agente los vea. Cuando esté activado, elige a continuación qué detectar y cómo tratarlo.",
|
|
110624
|
+
offHint: "Actívalo para detectar y ocultar la información personal en los mensajes."
|
|
110625
|
+
},
|
|
110478
110626
|
fields: {
|
|
110479
110627
|
enableRouter: {
|
|
110480
110628
|
label: "Activar enrutador de privacidad",
|
|
@@ -110486,12 +110634,14 @@ var privacyTabLabels$1 = {
|
|
|
110486
110634
|
options: {
|
|
110487
110635
|
redact: "Redactar",
|
|
110488
110636
|
mask: "Enmascarar",
|
|
110489
|
-
block: "Bloquear"
|
|
110637
|
+
block: "Bloquear",
|
|
110638
|
+
allow: "Permitir"
|
|
110490
110639
|
},
|
|
110491
110640
|
descriptions: {
|
|
110492
110641
|
redact: "La PII se reemplaza por su tipo — ej. \"Email [EMAIL_ADDRESS]\".",
|
|
110493
110642
|
mask: "La PII se oculta con asteriscos — ej. \"Email ***********\".",
|
|
110494
|
-
block: "El mensaje es rechazado y se muestra al usuario el mensaje de bloqueo."
|
|
110643
|
+
block: "El mensaje es rechazado y se muestra al usuario el mensaje de bloqueo.",
|
|
110644
|
+
allow: "La PII se detecta pero se deja intacta — el mensaje pasa sin cambios. Use esta opción para supervisar o auditar la información personal sin alterar los mensajes."
|
|
110495
110645
|
}
|
|
110496
110646
|
},
|
|
110497
110647
|
blockMessage: {
|
|
@@ -111181,6 +111331,11 @@ var screenshareTabLabels$1 = {
|
|
|
111181
111331
|
title: "Pantalla compartida",
|
|
111182
111332
|
description: "Cómo se comporta tu agente cuando un usuario comparte su pantalla durante una llamada de voz."
|
|
111183
111333
|
},
|
|
111334
|
+
capability: {
|
|
111335
|
+
title: "Pantalla compartida",
|
|
111336
|
+
description: "Permite que las personas compartan su pantalla durante una llamada de voz para que el agente vea lo que hacen y las guíe paso a paso. Cuando esté activado, define las indicaciones de pantalla compartida a continuación.",
|
|
111337
|
+
offHint: "Actívalo para permitir compartir la pantalla durante una llamada y editar estas indicaciones."
|
|
111338
|
+
},
|
|
111184
111339
|
disabledHint: "El uso compartido de pantalla está actualmente desactivado para este agente. Estas instrucciones se guardarán, pero solo surtirán efecto una vez que se active.",
|
|
111185
111340
|
fields: {
|
|
111186
111341
|
systemPrompt: {
|
|
@@ -111947,7 +112102,8 @@ var tabsVoiceTab$1 = {
|
|
|
111947
112102
|
var tasksTabLabels$1 = {
|
|
111948
112103
|
header: {
|
|
111949
112104
|
title: "Tareas",
|
|
111950
|
-
description: "Configure las tareas automatizadas para su agente."
|
|
112105
|
+
description: "Configure las tareas automatizadas para su agente.",
|
|
112106
|
+
infoBox: "Deja que tu agente trabaje según su propio calendario. Configura tareas recurrentes que ejecuta automáticamente —como resúmenes diarios o recordatorios— sin que nadie tenga que pedírselo."
|
|
111951
112107
|
},
|
|
111952
112108
|
toolbar: {
|
|
111953
112109
|
searchPlaceholder: "Buscar todas las tareas...",
|
|
@@ -112089,11 +112245,54 @@ var voiceTabCallConfigSection$1 = {
|
|
|
112089
112245
|
refreshingAriaLabel: "Actualizando",
|
|
112090
112246
|
moreInfoAbout: "Más información sobre {label}"
|
|
112091
112247
|
};
|
|
112248
|
+
var analyticsTabLabels$1 = {
|
|
112249
|
+
header: {
|
|
112250
|
+
title: "Analíticas",
|
|
112251
|
+
description: "Informes de uso e insights para este agente."
|
|
112252
|
+
},
|
|
112253
|
+
infoBox: "Descubre cómo se usa este agente: quién chatea con él, de qué hablan, cuánto cuesta y más. Elige un informe a continuación para profundizar.",
|
|
112254
|
+
openAria: "Abrir {label}",
|
|
112255
|
+
tabs: {
|
|
112256
|
+
overview: {
|
|
112257
|
+
label: "Resumen",
|
|
112258
|
+
description: "Una vista general del uso y la participación a lo largo del tiempo."
|
|
112259
|
+
},
|
|
112260
|
+
users: {
|
|
112261
|
+
label: "Usuarios",
|
|
112262
|
+
description: "Mira quién chatea con este agente y qué tan activos son."
|
|
112263
|
+
},
|
|
112264
|
+
topics: {
|
|
112265
|
+
label: "Temas",
|
|
112266
|
+
description: "Los temas que la gente menciona más en las conversaciones."
|
|
112267
|
+
},
|
|
112268
|
+
transcripts: {
|
|
112269
|
+
label: "Transcripciones",
|
|
112270
|
+
description: "Lee las transcripciones completas de las conversaciones, mensaje a mensaje."
|
|
112271
|
+
},
|
|
112272
|
+
financial: {
|
|
112273
|
+
label: "Costos",
|
|
112274
|
+
description: "Controla el uso de tokens y lo que te cuesta este agente."
|
|
112275
|
+
},
|
|
112276
|
+
audit: {
|
|
112277
|
+
label: "Auditoría",
|
|
112278
|
+
description: "Revisa el registro de cambios y actividad de este agente."
|
|
112279
|
+
},
|
|
112280
|
+
reports: {
|
|
112281
|
+
label: "Informes de datos",
|
|
112282
|
+
description: "Genera y descarga informes detallados para compartir o archivar."
|
|
112283
|
+
}
|
|
112284
|
+
}
|
|
112285
|
+
};
|
|
112092
112286
|
var voiceTabLabels$1 = {
|
|
112093
112287
|
header: {
|
|
112094
112288
|
title: "Voz",
|
|
112095
112289
|
description: "Elige la voz que usa tu agente y cómo funcionan las llamadas de voz."
|
|
112096
112290
|
},
|
|
112291
|
+
capability: {
|
|
112292
|
+
title: "Llamadas de voz",
|
|
112293
|
+
description: "Permite que las personas hablen con este agente en voz alta y escuchen su respuesta, como en una llamada telefónica. Cuando esté activado, elige la voz y ajusta el comportamiento de las llamadas a continuación.",
|
|
112294
|
+
offHint: "Actívalo para permitir que las personas inicien conversaciones de voz con este agente."
|
|
112295
|
+
},
|
|
112097
112296
|
subTabs: {
|
|
112098
112297
|
voice: "Voz",
|
|
112099
112298
|
callConfig: "Llamada de voz"
|
|
@@ -112341,6 +112540,13 @@ var ltiTabLabels$1 = {
|
|
|
112341
112540
|
title: "LTI",
|
|
112342
112541
|
description: "Gestiona los enlaces LTI del agente, las claves de firma, las herramientas y los endpoints de la plataforma."
|
|
112343
112542
|
},
|
|
112543
|
+
capability: {
|
|
112544
|
+
title: "Lanzamientos LTI",
|
|
112545
|
+
description: "Permite añadir este agente a un sistema de gestión del aprendizaje (Canvas, Brightspace, Blackboard o Moodle) para que los estudiantes puedan abrirlo directamente en su curso. Cuando esté activado, crea a continuación los enlaces, las claves de firma y las herramientas que necesita tu LMS.",
|
|
112546
|
+
offHint: "Actívalo para permitir que este agente se integre en un LMS y configurar sus enlaces y claves.",
|
|
112547
|
+
toggleSuccess: "Ajuste de LTI actualizado",
|
|
112548
|
+
toggleError: "No se pudo actualizar el ajuste de LTI"
|
|
112549
|
+
},
|
|
112344
112550
|
subTabs: {
|
|
112345
112551
|
agentLinks: "Enlaces",
|
|
112346
112552
|
keys: "Claves",
|
|
@@ -112744,6 +112950,7 @@ var es = {
|
|
|
112744
112950
|
userProfileDropdownIndex: userProfileDropdownIndex$1,
|
|
112745
112951
|
version: version$4,
|
|
112746
112952
|
voiceTabCallConfigSection: voiceTabCallConfigSection$1,
|
|
112953
|
+
analyticsTabLabels: analyticsTabLabels$1,
|
|
112747
112954
|
voiceTabLabels: voiceTabLabels$1,
|
|
112748
112955
|
voiceTabVoicePicker: voiceTabVoicePicker$1,
|
|
112749
112956
|
welcomeChatConversationStarters: welcomeChatConversationStarters$1,
|
|
@@ -114262,11 +114469,16 @@ var clawSandboxAgentConfigPrompts = {
|
|
|
114262
114469
|
updateSuccess: "{label} 更新成功",
|
|
114263
114470
|
updateError: "更新 {label} 失败",
|
|
114264
114471
|
moreInfoAriaLabel: "关于 {label} 的更多信息",
|
|
114265
|
-
edit: "编辑"
|
|
114472
|
+
edit: "编辑",
|
|
114473
|
+
connectSandboxPrompt: "在沙盒选项卡中连接沙盒实例以管理智能体提示词。",
|
|
114474
|
+
enableSandboxPrompt: "在沙盒选项卡中启用专用沙盒并连接到实例,以管理智能体提示词。",
|
|
114475
|
+
sandboxTabLabel: "沙盒选项卡"
|
|
114266
114476
|
};
|
|
114267
114477
|
var clawSandboxAgentSkills = {
|
|
114268
114478
|
loadingSkills: "正在加载技能...",
|
|
114269
114479
|
connectSandboxPrompt: "在 Sandbox 标签页中连接一个 sandbox 实例以管理技能。",
|
|
114480
|
+
enableSandboxPrompt: "在 Sandbox 标签页中启用专用沙盒并连接到实例,以管理技能。",
|
|
114481
|
+
sandboxTabLabel: "Sandbox 标签页",
|
|
114270
114482
|
newSkill: "新建技能",
|
|
114271
114483
|
noSkillsAvailable: "该平台暂无可用技能。创建一个以开始使用。",
|
|
114272
114484
|
moreInfoAbout: "关于 {name} 的更多信息",
|
|
@@ -115785,6 +115997,11 @@ var privacyTabLabels = {
|
|
|
115785
115997
|
title: "隐私",
|
|
115786
115998
|
description: "检测并过滤聊天消息中的个人身份信息。"
|
|
115787
115999
|
},
|
|
116000
|
+
capability: {
|
|
116001
|
+
title: "个人信息过滤",
|
|
116002
|
+
description: "在智能体看到消息之前,自动查找并隐藏其中的个人信息——姓名、电子邮件、电话号码等。开启后,可在下方选择要检测的内容及处理方式。",
|
|
116003
|
+
offHint: "开启后可检测并隐藏消息中的个人信息。"
|
|
116004
|
+
},
|
|
115788
116005
|
fields: {
|
|
115789
116006
|
enableRouter: {
|
|
115790
116007
|
label: "启用隐私路由",
|
|
@@ -115796,12 +116013,14 @@ var privacyTabLabels = {
|
|
|
115796
116013
|
options: {
|
|
115797
116014
|
redact: "编辑",
|
|
115798
116015
|
mask: "遮蔽",
|
|
115799
|
-
block: "拦截"
|
|
116016
|
+
block: "拦截",
|
|
116017
|
+
allow: "允许"
|
|
115800
116018
|
},
|
|
115801
116019
|
descriptions: {
|
|
115802
116020
|
redact: "PII 将被替换为其类型,例如:「Email [EMAIL_ADDRESS]」。",
|
|
115803
116021
|
mask: "PII 将被星号隐藏,例如:「Email ***********」。",
|
|
115804
|
-
block: "消息将被拒绝,并向用户显示您的拦截消息。"
|
|
116022
|
+
block: "消息将被拒绝,并向用户显示您的拦截消息。",
|
|
116023
|
+
allow: "检测到 PII 但不做处理——消息将原样通过。适用于在不修改消息的情况下监控或审计个人信息。"
|
|
115805
116024
|
}
|
|
115806
116025
|
},
|
|
115807
116026
|
blockMessage: {
|
|
@@ -116491,6 +116710,11 @@ var screenshareTabLabels = {
|
|
|
116491
116710
|
title: "屏幕共享",
|
|
116492
116711
|
description: "当用户在语音通话中共享屏幕时,您的智能体的表现方式。"
|
|
116493
116712
|
},
|
|
116713
|
+
capability: {
|
|
116714
|
+
title: "屏幕共享",
|
|
116715
|
+
description: "允许用户在语音通话中共享屏幕,以便智能体看到他们的操作并逐步引导。开启后,可在下方设置屏幕共享提示词。",
|
|
116716
|
+
offHint: "开启后可允许在通话中共享屏幕并编辑这些提示词。"
|
|
116717
|
+
},
|
|
116494
116718
|
disabledHint: "屏幕共享当前已为该智能体关闭。这些提示将被保存,但开启后才会生效。",
|
|
116495
116719
|
fields: {
|
|
116496
116720
|
systemPrompt: {
|
|
@@ -117257,7 +117481,8 @@ var tabsVoiceTab = {
|
|
|
117257
117481
|
var tasksTabLabels = {
|
|
117258
117482
|
header: {
|
|
117259
117483
|
title: "任务",
|
|
117260
|
-
description: "为您的智能体配置自动化任务。"
|
|
117484
|
+
description: "为您的智能体配置自动化任务。",
|
|
117485
|
+
infoBox: "让您的智能体按自己的日程工作。设置它自动运行的周期性任务——例如每日摘要或提醒——无需任何人主动提出。"
|
|
117261
117486
|
},
|
|
117262
117487
|
toolbar: {
|
|
117263
117488
|
searchPlaceholder: "搜索所有任务...",
|
|
@@ -117399,11 +117624,54 @@ var voiceTabCallConfigSection = {
|
|
|
117399
117624
|
refreshingAriaLabel: "刷新中",
|
|
117400
117625
|
moreInfoAbout: "关于 {label} 的更多信息"
|
|
117401
117626
|
};
|
|
117627
|
+
var analyticsTabLabels = {
|
|
117628
|
+
header: {
|
|
117629
|
+
title: "分析",
|
|
117630
|
+
description: "该智能体的使用报告和数据洞察。"
|
|
117631
|
+
},
|
|
117632
|
+
infoBox: "了解该智能体的使用情况——谁在与它对话、大家在谈论什么、花费多少等等。在下方选择一份报告即可深入查看。",
|
|
117633
|
+
openAria: "打开{label}",
|
|
117634
|
+
tabs: {
|
|
117635
|
+
overview: {
|
|
117636
|
+
label: "概览",
|
|
117637
|
+
description: "随时间变化的使用情况和参与度的总体快照。"
|
|
117638
|
+
},
|
|
117639
|
+
users: {
|
|
117640
|
+
label: "用户",
|
|
117641
|
+
description: "查看谁在与该智能体对话以及他们的活跃程度。"
|
|
117642
|
+
},
|
|
117643
|
+
topics: {
|
|
117644
|
+
label: "主题",
|
|
117645
|
+
description: "对话中人们最常提及的主题。"
|
|
117646
|
+
},
|
|
117647
|
+
transcripts: {
|
|
117648
|
+
label: "对话记录",
|
|
117649
|
+
description: "逐条阅读完整的对话记录。"
|
|
117650
|
+
},
|
|
117651
|
+
financial: {
|
|
117652
|
+
label: "费用",
|
|
117653
|
+
description: "跟踪令牌用量以及该智能体的花费。"
|
|
117654
|
+
},
|
|
117655
|
+
audit: {
|
|
117656
|
+
label: "审计",
|
|
117657
|
+
description: "查看该智能体的更改和活动日志。"
|
|
117658
|
+
},
|
|
117659
|
+
reports: {
|
|
117660
|
+
label: "数据报告",
|
|
117661
|
+
description: "生成并下载详细报告以供分享或存档。"
|
|
117662
|
+
}
|
|
117663
|
+
}
|
|
117664
|
+
};
|
|
117402
117665
|
var voiceTabLabels = {
|
|
117403
117666
|
header: {
|
|
117404
117667
|
title: "语音",
|
|
117405
117668
|
description: "选择您的智能体使用的声音以及语音通话的工作方式。"
|
|
117406
117669
|
},
|
|
117670
|
+
capability: {
|
|
117671
|
+
title: "语音通话",
|
|
117672
|
+
description: "让用户可以与该智能体语音交谈并听到其回复,就像打电话一样。开启后,可在下方选择声音并微调通话行为。",
|
|
117673
|
+
offHint: "开启后可让用户与该智能体开始语音对话。"
|
|
117674
|
+
},
|
|
117407
117675
|
subTabs: {
|
|
117408
117676
|
voice: "语音",
|
|
117409
117677
|
callConfig: "语音通话"
|
|
@@ -117651,6 +117919,13 @@ var ltiTabLabels = {
|
|
|
117651
117919
|
title: "LTI",
|
|
117652
117920
|
description: "管理此智能体的 LTI 链接、签名密钥、工具和平台端点。"
|
|
117653
117921
|
},
|
|
117922
|
+
capability: {
|
|
117923
|
+
title: "LTI 启动",
|
|
117924
|
+
description: "允许将此智能体添加到学习管理系统(Canvas、Brightspace、Blackboard 或 Moodle),以便学生可以直接在课程中打开它。开启后,可在下方创建您的 LMS 所需的链接、签名密钥和工具。",
|
|
117925
|
+
offHint: "开启后可将此智能体嵌入 LMS 并设置其链接和密钥。",
|
|
117926
|
+
toggleSuccess: "LTI 设置已更新",
|
|
117927
|
+
toggleError: "无法更新 LTI 设置"
|
|
117928
|
+
},
|
|
117654
117929
|
subTabs: {
|
|
117655
117930
|
agentLinks: "链接",
|
|
117656
117931
|
keys: "密钥",
|
|
@@ -118054,6 +118329,7 @@ var zh = {
|
|
|
118054
118329
|
userProfileDropdownIndex: userProfileDropdownIndex,
|
|
118055
118330
|
version: version$3,
|
|
118056
118331
|
voiceTabCallConfigSection: voiceTabCallConfigSection,
|
|
118332
|
+
analyticsTabLabels: analyticsTabLabels,
|
|
118057
118333
|
voiceTabLabels: voiceTabLabels,
|
|
118058
118334
|
voiceTabVoicePicker: voiceTabVoicePicker,
|
|
118059
118335
|
welcomeChatConversationStarters: welcomeChatConversationStarters,
|
|
@@ -258933,6 +259209,129 @@ function AgentMemoryTab({ labels: labelsOverride } = {}) {
|
|
|
258933
259209
|
return (jsxs(Fragment$1, { children: [jsx("div", { className: "flex h-[73px] flex-shrink-0 items-center border-b border-gray-200 bg-white p-4 lg:block", children: jsxs("div", { children: [jsx("h3", { className: "mb-1 text-base font-medium text-gray-900", children: labels.header.title }), jsx("p", { className: "text-xs text-gray-600", children: labels.header.description })] }) }), jsx("div", { className: "flex-1 space-y-6 overflow-y-auto p-3 lg:p-4", children: jsx("div", { className: "space-y-8", children: jsx(ManageMemories, { tenantKey: tenantKey, username: username, mentorId: mentorId }) }) })] }));
|
|
258934
259210
|
}
|
|
258935
259211
|
|
|
259212
|
+
/**
|
|
259213
|
+
* Icon per analytics `value` — icons carry no user-facing text so they live
|
|
259214
|
+
* outside i18n.
|
|
259215
|
+
*/
|
|
259216
|
+
const ANALYTICS_HUB_ICONS = {
|
|
259217
|
+
'': LayoutDashboard,
|
|
259218
|
+
users: Users,
|
|
259219
|
+
topics: MessageSquare,
|
|
259220
|
+
transcripts: FileText,
|
|
259221
|
+
financial: DollarSign,
|
|
259222
|
+
audit: ScrollText,
|
|
259223
|
+
reports: ChartColumn,
|
|
259224
|
+
};
|
|
259225
|
+
/**
|
|
259226
|
+
* Canonical order + the i18n key that supplies each destination's copy. The
|
|
259227
|
+
* route `value` mirrors the SDK `AnalyticsLayout` (Overview, Users, Topics,
|
|
259228
|
+
* Transcripts, Costs=`financial`, Audit, Data Reports=`reports`).
|
|
259229
|
+
*/
|
|
259230
|
+
const ANALYTICS_HUB_ORDER = [
|
|
259231
|
+
{ value: '', key: 'overview' },
|
|
259232
|
+
{ value: 'users', key: 'users' },
|
|
259233
|
+
{ value: 'topics', key: 'topics' },
|
|
259234
|
+
{ value: 'transcripts', key: 'transcripts' },
|
|
259235
|
+
{ value: 'financial', key: 'financial' },
|
|
259236
|
+
{ value: 'audit', key: 'audit' },
|
|
259237
|
+
{ value: 'reports', key: 'reports' },
|
|
259238
|
+
];
|
|
259239
|
+
/**
|
|
259240
|
+
* English fallback bundle. Rendered copy comes from i18n via
|
|
259241
|
+
* {@link buildAnalyticsTabLabels}; this is only used when no translate
|
|
259242
|
+
* function is available (e.g. outside an i18n provider) and to seed
|
|
259243
|
+
* {@link DEFAULT_ANALYTICS_HUB_TABS}. Mirrors the pattern of the other tab
|
|
259244
|
+
* label bundles.
|
|
259245
|
+
*/
|
|
259246
|
+
const AGENT_ANALYTICS_TAB_LABELS = {
|
|
259247
|
+
header: {
|
|
259248
|
+
title: 'Analytics',
|
|
259249
|
+
description: 'Usage reports and insights for this agent.',
|
|
259250
|
+
},
|
|
259251
|
+
infoBox: "See how this agent is being used — who's chatting with it, what they talk about, what it costs, and more. Pick a report below to dive in.",
|
|
259252
|
+
openAria: (label) => `Open ${label}`,
|
|
259253
|
+
tabs: {
|
|
259254
|
+
overview: {
|
|
259255
|
+
label: 'Overview',
|
|
259256
|
+
description: 'A high-level snapshot of usage and engagement over time.',
|
|
259257
|
+
},
|
|
259258
|
+
users: {
|
|
259259
|
+
label: 'Users',
|
|
259260
|
+
description: "See who's chatting with this agent and how active they are.",
|
|
259261
|
+
},
|
|
259262
|
+
topics: {
|
|
259263
|
+
label: 'Topics',
|
|
259264
|
+
description: 'The subjects people bring up most across conversations.',
|
|
259265
|
+
},
|
|
259266
|
+
transcripts: {
|
|
259267
|
+
label: 'Transcripts',
|
|
259268
|
+
description: 'Read full conversation transcripts message by message.',
|
|
259269
|
+
},
|
|
259270
|
+
financial: {
|
|
259271
|
+
label: 'Costs',
|
|
259272
|
+
description: 'Track token usage and what this agent is costing you.',
|
|
259273
|
+
},
|
|
259274
|
+
audit: {
|
|
259275
|
+
label: 'Audit',
|
|
259276
|
+
description: 'Review the log of changes and activity for this agent.',
|
|
259277
|
+
},
|
|
259278
|
+
reports: {
|
|
259279
|
+
label: 'Data Reports',
|
|
259280
|
+
description: 'Generate and download detailed reports to share or archive.',
|
|
259281
|
+
},
|
|
259282
|
+
},
|
|
259283
|
+
};
|
|
259284
|
+
function buildAnalyticsTabLabels(t) {
|
|
259285
|
+
const tabs = {};
|
|
259286
|
+
for (const { key } of ANALYTICS_HUB_ORDER) {
|
|
259287
|
+
tabs[key] = {
|
|
259288
|
+
label: t(`analyticsTabLabels.tabs.${key}.label`),
|
|
259289
|
+
description: t(`analyticsTabLabels.tabs.${key}.description`),
|
|
259290
|
+
};
|
|
259291
|
+
}
|
|
259292
|
+
return {
|
|
259293
|
+
header: {
|
|
259294
|
+
title: t('analyticsTabLabels.header.title'),
|
|
259295
|
+
description: t('analyticsTabLabels.header.description'),
|
|
259296
|
+
},
|
|
259297
|
+
infoBox: t('analyticsTabLabels.infoBox'),
|
|
259298
|
+
openAria: (label) => t('analyticsTabLabels.openAria', { label }),
|
|
259299
|
+
tabs,
|
|
259300
|
+
};
|
|
259301
|
+
}
|
|
259302
|
+
function resolveAnalyticsTabLabels(t) {
|
|
259303
|
+
return t ? buildAnalyticsTabLabels(t) : AGENT_ANALYTICS_TAB_LABELS;
|
|
259304
|
+
}
|
|
259305
|
+
/** Build the destination list (value + icon + copy) from a labels bundle. */
|
|
259306
|
+
function buildHubTabs(labels) {
|
|
259307
|
+
return ANALYTICS_HUB_ORDER.map(({ value, key }) => ({
|
|
259308
|
+
value,
|
|
259309
|
+
label: labels.tabs[key].label,
|
|
259310
|
+
description: labels.tabs[key].description,
|
|
259311
|
+
icon: ANALYTICS_HUB_ICONS[value],
|
|
259312
|
+
}));
|
|
259313
|
+
}
|
|
259314
|
+
/** English default destinations — see {@link AGENT_ANALYTICS_TAB_LABELS}. */
|
|
259315
|
+
const DEFAULT_ANALYTICS_HUB_TABS = buildHubTabs(AGENT_ANALYTICS_TAB_LABELS);
|
|
259316
|
+
/**
|
|
259317
|
+
* Analytics "hub" rendered inside the Edit-Agent modal. Instead of embedding
|
|
259318
|
+
* the full analytics dashboards in the dialog, it presents each analytics
|
|
259319
|
+
* destination as a card; activating one hands the value back to the host,
|
|
259320
|
+
* which navigates to the corresponding full-page analytics view.
|
|
259321
|
+
*/
|
|
259322
|
+
function AgentAnalyticsTab({ tabs, excludeTabs = [], onNavigate }) {
|
|
259323
|
+
const t = useT();
|
|
259324
|
+
const labels = React__default.useMemo(() => resolveAnalyticsTabLabels(t), [t]);
|
|
259325
|
+
const defaultHubTabs = React__default.useMemo(() => buildHubTabs(labels), [labels]);
|
|
259326
|
+
const hubTabs = tabs !== null && tabs !== void 0 ? tabs : defaultHubTabs;
|
|
259327
|
+
const visibleTabs = hubTabs.filter((tab) => !excludeTabs.includes(tab.value));
|
|
259328
|
+
return (jsxs(Fragment$1, { children: [jsx("div", { className: "flex h-[73px] flex-shrink-0 items-center border-b border-gray-200 bg-white p-4 lg:block", children: jsxs("div", { children: [jsx("h3", { className: "mb-1 text-base font-medium text-gray-900", children: labels.header.title }), jsx("p", { className: "text-xs text-gray-600", children: labels.header.description })] }) }), jsxs("div", { className: "flex-1 p-3 lg:p-4", style: { overflowY: 'auto', overflowX: 'hidden' }, "data-testid": "analytics-tab-body", children: [jsx("div", { className: "mb-4 rounded-md border border-gray-200 bg-gray-50 p-3 text-xs text-gray-600", "data-testid": "analytics-info-box", children: labels.infoBox }), jsx("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: visibleTabs.map((tab) => {
|
|
259329
|
+
var _a;
|
|
259330
|
+
const Icon = (_a = tab.icon) !== null && _a !== void 0 ? _a : LayoutDashboard;
|
|
259331
|
+
return (jsxs("button", { type: "button", onClick: () => onNavigate(tab.value), "aria-label": labels.openAria(tab.label), "data-testid": `analytics-hub-${tab.value || 'overview'}`, className: cn('group flex items-start gap-3 rounded-lg border border-gray-200 bg-white p-4 text-left transition-all', 'hover:border-blue-300 hover:shadow-sm focus-visible:ring-2 focus-visible:ring-blue-500 focus-visible:outline-none'), children: [jsx("span", { className: "flex h-9 w-9 flex-shrink-0 items-center justify-center rounded-md bg-blue-50 text-blue-600", children: jsx(Icon, { className: "h-5 w-5", "aria-hidden": "true" }) }), jsxs("span", { className: "min-w-0 flex-1", children: [jsxs("span", { className: "flex items-center justify-between gap-2", children: [jsx("span", { className: "text-sm font-medium text-gray-900", children: tab.label }), jsx(ChevronRight, { className: "h-4 w-4 flex-shrink-0 text-gray-400 transition-transform group-hover:translate-x-0.5 group-hover:text-blue-600", "aria-hidden": "true" })] }), jsx("span", { className: "mt-0.5 block text-xs leading-relaxed text-gray-600", children: tab.description })] })] }, tab.value || 'overview'));
|
|
259332
|
+
}) })] })] }));
|
|
259333
|
+
}
|
|
259334
|
+
|
|
258936
259335
|
const AUTH_SCOPE = {
|
|
258937
259336
|
TENANT: 'tenant',
|
|
258938
259337
|
MENTOR: 'mentor',
|
|
@@ -260931,11 +261330,30 @@ function AgentSafetyTab({ renderPromptContent, FlaggedPromptsModal, showFlaggedP
|
|
|
260931
261330
|
selectedPrompt: selectedPrompt, isEditing: isEditMentorLoading })), isFlaggedPromptsModalOpen && FlaggedPromptsModal && (jsx(FlaggedPromptsModal, { isOpen: isFlaggedPromptsModalOpen, onClose: () => setIsFlaggedPromptsModalOpen(false), mentorId: mentorId, tenantKey: tenantKey, username: username !== null && username !== void 0 ? username : '' }))] }) })] }));
|
|
260932
261331
|
}
|
|
260933
261332
|
|
|
261333
|
+
/**
|
|
261334
|
+
* Reusable header used at the top of every capability-gated agent-settings
|
|
261335
|
+
* tab. It surfaces the capability's on/off toggle (previously buried in the
|
|
261336
|
+
* Settings → Capabilities list) right where the feature is configured, with a
|
|
261337
|
+
* naive-friendly explanation.
|
|
261338
|
+
*
|
|
261339
|
+
* The configuration UI below is always rendered so admins can preview what
|
|
261340
|
+
* they'll get, but it's grayed out and made inert (`pointer-events-none`,
|
|
261341
|
+
* `aria-hidden`) until the capability is switched on.
|
|
261342
|
+
*/
|
|
261343
|
+
function CapabilityGate({ title, description, enabled, onToggle, disabled = false, ariaLabel, offHint, toggleTestId, children, }) {
|
|
261344
|
+
return (jsxs("div", { className: "space-y-4", children: [jsxs("div", { className: "flex items-start justify-between gap-4 rounded-lg border border-gray-200 bg-gray-50/60 p-4", "data-testid": "capability-gate-header", children: [jsx("div", { className: "min-w-0", children: jsxs("p", { className: "text-xs leading-relaxed text-gray-600", children: [description, !enabled && offHint && (jsxs("span", { className: "font-medium text-gray-500", "data-testid": "capability-gate-off-hint", children: [' ', offHint] }))] }) }), jsx(CustomSwitch, { checked: enabled, onCheckedChange: onToggle, disabled: disabled, "aria-label": ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : title, "aria-checked": enabled, "data-testid": toggleTestId, className: "mt-0.5 flex-shrink-0" })] }), jsx("div", { className: cn('transition-opacity', !enabled && 'pointer-events-none select-none opacity-50'), "aria-hidden": !enabled, inert: !enabled, "data-testid": "capability-gate-content", "data-enabled": enabled, children: children })] }));
|
|
261345
|
+
}
|
|
261346
|
+
|
|
260934
261347
|
const AGENT_PRIVACY_TAB_LABELS = {
|
|
260935
261348
|
header: {
|
|
260936
261349
|
title: 'Privacy',
|
|
260937
261350
|
description: 'Detect and filter personally identifiable information from chat messages.',
|
|
260938
261351
|
},
|
|
261352
|
+
capability: {
|
|
261353
|
+
title: 'PII filtering',
|
|
261354
|
+
description: 'Automatically find and hide personal information — names, emails, phone numbers and more — in messages before the agent sees them. When on, choose what to detect and how to handle it below.',
|
|
261355
|
+
offHint: 'Turn it on to detect and hide personal information in messages.',
|
|
261356
|
+
},
|
|
260939
261357
|
fields: {
|
|
260940
261358
|
enableRouter: {
|
|
260941
261359
|
label: 'Enable Privacy Router',
|
|
@@ -260948,11 +261366,13 @@ const AGENT_PRIVACY_TAB_LABELS = {
|
|
|
260948
261366
|
redact: 'Redact',
|
|
260949
261367
|
mask: 'Mask',
|
|
260950
261368
|
block: 'Block',
|
|
261369
|
+
allow: 'Allow',
|
|
260951
261370
|
},
|
|
260952
261371
|
descriptions: {
|
|
260953
261372
|
redact: 'PII is replaced with its type — e.g. "Email [EMAIL_ADDRESS]".',
|
|
260954
261373
|
mask: 'PII is hidden behind asterisks — e.g. "Email ***********".',
|
|
260955
261374
|
block: 'The message is rejected and your block message is shown to the user.',
|
|
261375
|
+
allow: 'PII is detected but left untouched — the message passes through unchanged. Use this to monitor or audit personal information without altering messages.',
|
|
260956
261376
|
},
|
|
260957
261377
|
},
|
|
260958
261378
|
blockMessage: {
|
|
@@ -260995,6 +261415,11 @@ function buildPrivacyTabLabels(t) {
|
|
|
260995
261415
|
title: t('privacyTabLabels.header.title'),
|
|
260996
261416
|
description: t('privacyTabLabels.header.description'),
|
|
260997
261417
|
},
|
|
261418
|
+
capability: {
|
|
261419
|
+
title: t('privacyTabLabels.capability.title'),
|
|
261420
|
+
description: t('privacyTabLabels.capability.description'),
|
|
261421
|
+
offHint: t('privacyTabLabels.capability.offHint'),
|
|
261422
|
+
},
|
|
260998
261423
|
fields: {
|
|
260999
261424
|
enableRouter: {
|
|
261000
261425
|
label: t('privacyTabLabels.fields.enableRouter.label'),
|
|
@@ -261007,11 +261432,13 @@ function buildPrivacyTabLabels(t) {
|
|
|
261007
261432
|
redact: t('privacyTabLabels.fields.action.options.redact'),
|
|
261008
261433
|
mask: t('privacyTabLabels.fields.action.options.mask'),
|
|
261009
261434
|
block: t('privacyTabLabels.fields.action.options.block'),
|
|
261435
|
+
allow: t('privacyTabLabels.fields.action.options.allow'),
|
|
261010
261436
|
},
|
|
261011
261437
|
descriptions: {
|
|
261012
261438
|
redact: t('privacyTabLabels.fields.action.descriptions.redact'),
|
|
261013
261439
|
mask: t('privacyTabLabels.fields.action.descriptions.mask'),
|
|
261014
261440
|
block: t('privacyTabLabels.fields.action.descriptions.block'),
|
|
261441
|
+
allow: t('privacyTabLabels.fields.action.descriptions.allow'),
|
|
261015
261442
|
},
|
|
261016
261443
|
},
|
|
261017
261444
|
blockMessage: {
|
|
@@ -261120,24 +261547,24 @@ function AgentPrivacyTab({ labels: labelsOverride, tenantKey: tenantKeyProp, men
|
|
|
261120
261547
|
: entities.filter((e) => e !== entity);
|
|
261121
261548
|
void updateField('privacy_entities', next);
|
|
261122
261549
|
}
|
|
261123
|
-
return (jsxs(Fragment$1, { children: [jsx("div", { className: "flex hidden h-[73px] flex-shrink-0 items-center border-b border-gray-200 bg-white p-4 lg:block", children: jsxs("div", { children: [jsx("h3", { className: "mb-1 text-base font-medium text-gray-900", children: labels.header.title }), jsx("p", { className: "text-xs text-gray-700", children: labels.header.description })] }) }), jsx("div", { "data-testid": "privacy-tab-body", className: "flex-1 space-y-6 p-3 lg:p-4", style: { overflowY: 'auto', overflowX: 'hidden' }, children: enabled
|
|
261124
|
-
|
|
261125
|
-
|
|
261126
|
-
|
|
261127
|
-
|
|
261128
|
-
|
|
261129
|
-
|
|
261130
|
-
|
|
261131
|
-
|
|
261132
|
-
|
|
261133
|
-
|
|
261134
|
-
|
|
261135
|
-
|
|
261136
|
-
|
|
261137
|
-
|
|
261138
|
-
|
|
261139
|
-
|
|
261140
|
-
|
|
261550
|
+
return (jsxs(Fragment$1, { children: [jsx("div", { className: "flex hidden h-[73px] flex-shrink-0 items-center border-b border-gray-200 bg-white p-4 lg:block", children: jsxs("div", { children: [jsx("h3", { className: "mb-1 text-base font-medium text-gray-900", children: labels.header.title }), jsx("p", { className: "text-xs text-gray-700", children: labels.header.description })] }) }), jsx("div", { "data-testid": "privacy-tab-body", className: "flex-1 space-y-6 p-3 lg:p-4", style: { overflowY: 'auto', overflowX: 'hidden' }, children: jsx(CapabilityGate, { title: labels.capability.title, description: labels.capability.description, offHint: labels.capability.offHint, enabled: enabled, onToggle: (checked) => void updateField('enable_privacy_router', checked), disabled: isDisabled, ariaLabel: labels.capability.title, toggleTestId: "privacy-capability-toggle", children: jsxs("div", { className: "space-y-6", children: [jsx(WithFormPermissions, { name: "privacy_action",
|
|
261551
|
+
// @ts-ignore
|
|
261552
|
+
permissions: (_h = mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.permissions) === null || _h === void 0 ? void 0 : _h.field, enableRBAC: enableRBAC, children: ({ disabled }) => (jsxs("div", { className: "space-y-2", children: [jsxs("div", { className: "flex items-center gap-2", children: [jsx(Label$1, { className: "text-sm font-medium text-[#646464]", children: labels.fields.action.label }), jsx(FieldTooltip$1, { text: labels.fields.action.tooltip })] }), jsxs(Select$1, { value: action, onValueChange: (v) => void updateField('privacy_action', v), disabled: isDisabled || disabled, children: [jsx(SelectTrigger, { "aria-label": labels.fields.action.label, children: jsx(SelectValue, {}) }), jsx(SelectContent, { children: PRIVACY_ACTIONS.map((opt) => (jsx(SelectItem, { value: opt, children: labels.fields.action.options[opt] }, opt))) })] }), jsx("p", { className: "text-xs text-gray-500", children: labels.fields.action.descriptions[action] })] })) }), action === 'block' && (jsx(WithFormPermissions, { name: "privacy_response",
|
|
261553
|
+
// @ts-ignore
|
|
261554
|
+
permissions: (_j = mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.permissions) === null || _j === void 0 ? void 0 : _j.field, enableRBAC: enableRBAC, children: ({ disabled }) => (jsxs("div", { className: "space-y-2", children: [jsx(Label$1, { className: "text-sm font-medium text-[#646464]", children: labels.fields.blockMessage.label }), jsx(Textarea, { value: localResponse, onChange: (e) => setLocalResponse(e.target.value), onBlur: () => {
|
|
261555
|
+
if (localResponse !== responseText) {
|
|
261556
|
+
void updateField('privacy_response', localResponse);
|
|
261557
|
+
}
|
|
261558
|
+
}, placeholder: labels.fields.blockMessage.placeholder, className: "min-h-[100px]", disabled: isDisabled || disabled, "aria-label": labels.fields.blockMessage.label })] })) })), jsx(WithFormPermissions, { name: "privacy_entities",
|
|
261559
|
+
// @ts-ignore
|
|
261560
|
+
permissions: (_k = mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.permissions) === null || _k === void 0 ? void 0 : _k.field, enableRBAC: enableRBAC, children: ({ disabled }) => (jsxs("div", { className: "space-y-2", children: [jsxs("div", { className: "flex items-center gap-2", children: [jsx(Label$1, { className: "text-sm font-medium text-[#646464]", children: labels.fields.entities.label }), jsx(FieldTooltip$1, { text: labels.fields.entities.tooltip })] }), jsx("div", { className: "flex flex-wrap gap-2", children: PRIVACY_ENTITY_TYPES.map((entity) => {
|
|
261561
|
+
var _a;
|
|
261562
|
+
return (jsx(EntityChip, { entity: entity, label: (_a = labels.fields.entities.labels[entity]) !== null && _a !== void 0 ? _a : entity, selected: entities.includes(entity), disabled: isDisabled || disabled, onToggle: (checked) => toggleEntity(entity, checked) }, entity));
|
|
261563
|
+
}) }), entities.length === 0 && (jsx("p", { className: "text-xs text-gray-500", children: labels.fields.entities.emptyHint }))] })) }), jsx(WithFormPermissions, { name: "enable_privacy_output_filter",
|
|
261564
|
+
// @ts-ignore
|
|
261565
|
+
permissions: (_l = mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.permissions) === null || _l === void 0 ? void 0 : _l.field, enableRBAC: enableRBAC, children: ({ disabled }) => (jsxs("div", { className: "flex items-center justify-between", children: [jsxs("div", { className: "flex items-center gap-2", children: [jsx("span", { className: "text-sm font-medium text-[#646464]", children: labels.fields.outputFilter.label }), jsx(FieldTooltip$1, { text: labels.fields.outputFilter.tooltip })] }), jsx(CustomSwitch, { checked: outputFilter, onCheckedChange: (checked) => void updateField('enable_privacy_output_filter', checked), disabled: isDisabled || disabled, "aria-label": outputFilter
|
|
261566
|
+
? t('tabsPrivacyTab.outputFilterAriaLabelEnabled')
|
|
261567
|
+
: t('tabsPrivacyTab.outputFilterAriaLabelDisabled') })] })) })] }) }) })] }));
|
|
261141
261568
|
}
|
|
261142
261569
|
function FieldTooltip$1({ text }) {
|
|
261143
261570
|
const t = useT();
|
|
@@ -261154,6 +261581,11 @@ const AGENT_VOICE_TAB_LABELS = {
|
|
|
261154
261581
|
title: 'Voice',
|
|
261155
261582
|
description: 'Choose the voice your agent uses and how voice calls work.',
|
|
261156
261583
|
},
|
|
261584
|
+
capability: {
|
|
261585
|
+
title: 'Voice calls',
|
|
261586
|
+
description: 'Let people talk to this agent out loud and hear it reply, like a phone call. When on, pick the voice and fine-tune how calls behave below.',
|
|
261587
|
+
offHint: 'Turn it on to let people start voice conversations with this agent.',
|
|
261588
|
+
},
|
|
261157
261589
|
subTabs: {
|
|
261158
261590
|
voice: 'Voice',
|
|
261159
261591
|
callConfig: 'Voice call',
|
|
@@ -261247,6 +261679,11 @@ function buildVoiceTabLabels(t) {
|
|
|
261247
261679
|
title: t('voiceTabLabels.header.title'),
|
|
261248
261680
|
description: t('voiceTabLabels.header.description'),
|
|
261249
261681
|
},
|
|
261682
|
+
capability: {
|
|
261683
|
+
title: t('voiceTabLabels.capability.title'),
|
|
261684
|
+
description: t('voiceTabLabels.capability.description'),
|
|
261685
|
+
offHint: t('voiceTabLabels.capability.offHint'),
|
|
261686
|
+
},
|
|
261250
261687
|
subTabs: {
|
|
261251
261688
|
voice: t('voiceTabLabels.subTabs.voice'),
|
|
261252
261689
|
callConfig: t('voiceTabLabels.subTabs.callConfig'),
|
|
@@ -261842,7 +262279,7 @@ function readVoiceName(value) {
|
|
|
261842
262279
|
return null;
|
|
261843
262280
|
}
|
|
261844
262281
|
function AgentVoiceTab({ labels: labelsOverride, defaultSubTab = 'voice', renderPromptContent, tenantKey: tenantKeyProp, mentorId: mentorIdProp, username: usernameProp, enableRBAC: enableRBACProp, }) {
|
|
261845
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
262282
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
261846
262283
|
const ctx = useAgentSettingsOptional();
|
|
261847
262284
|
const tenantKey = (_a = tenantKeyProp !== null && tenantKeyProp !== void 0 ? tenantKeyProp : ctx === null || ctx === void 0 ? void 0 : ctx.tenantKey) !== null && _a !== void 0 ? _a : '';
|
|
261848
262285
|
const mentorId = (_b = mentorIdProp !== null && mentorIdProp !== void 0 ? mentorIdProp : ctx === null || ctx === void 0 ? void 0 : ctx.mentorId) !== null && _b !== void 0 ? _b : '';
|
|
@@ -261890,6 +262327,37 @@ function AgentVoiceTab({ labels: labelsOverride, defaultSubTab = 'voice', render
|
|
|
261890
262327
|
const effectiveOpenaiVoice = (_h = pickedOpenaiVoice !== null && pickedOpenaiVoice !== void 0 ? pickedOpenaiVoice : resolvedOpenaiVoice) !== null && _h !== void 0 ? _h : null;
|
|
261891
262328
|
const effectiveGoogleVoice = (_j = pickedGoogleVoice !== null && pickedGoogleVoice !== void 0 ? pickedGoogleVoice : resolvedGoogleVoice) !== null && _j !== void 0 ? _j : null;
|
|
261892
262329
|
const [editMentor, { isLoading: isSavingMentor }] = useEditMentorMutation();
|
|
262330
|
+
// "Enable voice calls" master toggle. Optimistic local mirror of the
|
|
262331
|
+
// server value so the switch responds instantly; re-synced whenever the
|
|
262332
|
+
// settings response changes.
|
|
262333
|
+
const serverVoiceCallEnabled = (_k = mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.show_voice_call) !== null && _k !== void 0 ? _k : true;
|
|
262334
|
+
const [voiceCallEnabled, setVoiceCallEnabled] = React__default.useState(serverVoiceCallEnabled);
|
|
262335
|
+
const [isTogglingVoiceCall, setIsTogglingVoiceCall] = React__default.useState(false);
|
|
262336
|
+
React__default.useEffect(() => {
|
|
262337
|
+
setVoiceCallEnabled(serverVoiceCallEnabled);
|
|
262338
|
+
}, [serverVoiceCallEnabled]);
|
|
262339
|
+
const handleToggleVoiceCall = async (checked) => {
|
|
262340
|
+
setVoiceCallEnabled(checked); // optimistic
|
|
262341
|
+
setIsTogglingVoiceCall(true);
|
|
262342
|
+
try {
|
|
262343
|
+
await editMentor({
|
|
262344
|
+
mentor: mentorId,
|
|
262345
|
+
org: tenantKey,
|
|
262346
|
+
// @ts-expect-error userId is accepted at runtime
|
|
262347
|
+
userId: username,
|
|
262348
|
+
formData: { show_voice_call: checked },
|
|
262349
|
+
}).unwrap();
|
|
262350
|
+
toast.success(labels.toasts.voiceSaved);
|
|
262351
|
+
}
|
|
262352
|
+
catch (error) {
|
|
262353
|
+
console.error('[AgentVoiceTab] toggle voice calls error', error);
|
|
262354
|
+
setVoiceCallEnabled(!checked); // roll back
|
|
262355
|
+
toast.error(labels.toasts.voiceError);
|
|
262356
|
+
}
|
|
262357
|
+
finally {
|
|
262358
|
+
setIsTogglingVoiceCall(false);
|
|
262359
|
+
}
|
|
262360
|
+
};
|
|
261893
262361
|
const isDisabled = isMentorSettingsLoading || isSavingMentor;
|
|
261894
262362
|
const isDirty = provider !== initialProvider || pickedOpenaiVoice != null || pickedGoogleVoice != null;
|
|
261895
262363
|
/**
|
|
@@ -261955,22 +262423,24 @@ function AgentVoiceTab({ labels: labelsOverride, defaultSubTab = 'voice', render
|
|
|
261955
262423
|
else if (provider === 'google')
|
|
261956
262424
|
setPickedGoogleVoice(voice);
|
|
261957
262425
|
};
|
|
261958
|
-
return (jsxs(Fragment$1, { children: [jsx("div", { className: "flex h-[73px] flex-shrink-0 items-center border-b border-gray-200 bg-white p-4 lg:block", children: jsxs("div", { children: [jsx("h3", { className: "mb-1 text-base font-medium text-gray-900", children: labels.header.title }), jsx("p", { className: "text-xs text-gray-600", children: labels.header.description })] }) }), jsx("div", { className: "flex-1 space-y-4 p-3 lg:p-4", style: { overflowY: 'auto', overflowX: 'hidden' }, "data-testid": "voice-tab-body", children: isMentorSettingsLoading ? (jsx("div", { className: "flex items-center justify-center py-12", "data-testid": "voice-tab-loading", children: jsx(Spinner, {}) })) : (jsxs(Tabs, { defaultValue: SUB_TAB_VALUES[defaultSubTab], className: "w-full", children: [jsxs(TabsList, { "aria-label": labels.header.title, "data-testid": "voice-sub-tabs", children: [jsx(TabsTrigger, { value: SUB_TAB_VALUES.voice, "data-testid": "voice-sub-tab-voice", children: labels.subTabs.voice }), jsx(TabsTrigger, { value: SUB_TAB_VALUES.callConfig, "data-testid": "voice-sub-tab-call-config", children: labels.subTabs.callConfig })] }), jsxs(TabsContent, { value: SUB_TAB_VALUES.voice, className: "space-y-4", children: [jsx("p", { className: "text-xs text-gray-600", children: labels.mentorVoice.description }), jsx(WithFormPermissions, { name: "voice_provider",
|
|
261959
|
-
|
|
261960
|
-
|
|
261961
|
-
|
|
261962
|
-
|
|
261963
|
-
|
|
261964
|
-
|
|
261965
|
-
|
|
261966
|
-
|
|
261967
|
-
|
|
261968
|
-
|
|
261969
|
-
|
|
261970
|
-
|
|
261971
|
-
|
|
261972
|
-
|
|
261973
|
-
|
|
262426
|
+
return (jsxs(Fragment$1, { children: [jsx("div", { className: "flex h-[73px] flex-shrink-0 items-center border-b border-gray-200 bg-white p-4 lg:block", children: jsxs("div", { children: [jsx("h3", { className: "mb-1 text-base font-medium text-gray-900", children: labels.header.title }), jsx("p", { className: "text-xs text-gray-600", children: labels.header.description })] }) }), jsx("div", { className: "flex-1 space-y-4 p-3 lg:p-4", style: { overflowY: 'auto', overflowX: 'hidden' }, "data-testid": "voice-tab-body", children: isMentorSettingsLoading ? (jsx("div", { className: "flex items-center justify-center py-12", "data-testid": "voice-tab-loading", children: jsx(Spinner, {}) })) : (jsx(CapabilityGate, { title: labels.capability.title, description: labels.capability.description, offHint: labels.capability.offHint, enabled: voiceCallEnabled, onToggle: handleToggleVoiceCall, disabled: isDisabled || isTogglingVoiceCall, ariaLabel: labels.capability.title, toggleTestId: "voice-capability-toggle", children: jsxs(Tabs, { defaultValue: SUB_TAB_VALUES[defaultSubTab], className: "w-full", children: [jsxs(TabsList, { "aria-label": labels.header.title, "data-testid": "voice-sub-tabs", children: [jsx(TabsTrigger, { value: SUB_TAB_VALUES.voice, "data-testid": "voice-sub-tab-voice", children: labels.subTabs.voice }), jsx(TabsTrigger, { value: SUB_TAB_VALUES.callConfig, "data-testid": "voice-sub-tab-call-config", children: labels.subTabs.callConfig })] }), jsxs(TabsContent, { value: SUB_TAB_VALUES.voice, className: "space-y-4", children: [jsx("p", { className: "text-xs text-gray-600", children: labels.mentorVoice.description }), jsx(WithFormPermissions, { name: "voice_provider",
|
|
262427
|
+
// @ts-expect-error permissions.field is opaque
|
|
262428
|
+
permissions: (_l = mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.permissions) === null || _l === void 0 ? void 0 : _l.field, enableRBAC: enableRBAC, children: ({ disabled }) => (jsxs("div", { className: "space-y-2", children: [jsxs("div", { className: "flex items-center gap-2", children: [jsx(Label$1, { className: "text-sm font-medium text-[#646464]", children: labels.mentorVoice.providerLabel }), jsx(FieldTooltip, { text: labels.mentorVoice.providerTooltip })] }), jsx("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-3", role: "radiogroup", "aria-label": labels.mentorVoice.providerLabel, children: providerOptions.map((option) => {
|
|
262429
|
+
const isSelected = provider === option.value;
|
|
262430
|
+
const isDisabledOption = isDisabled || disabled;
|
|
262431
|
+
return (jsxs("button", { type: "button", role: "radio", "aria-checked": isSelected, "aria-label": option.label, disabled: isDisabledOption, "data-testid": `voice-provider-${option.value}`, "data-voice-provider": option.value, onClick: () => setProvider(option.value), className: cn('flex flex-col items-start gap-2 rounded-lg border-2 p-3 text-left transition-all hover:shadow-sm', isSelected
|
|
262432
|
+
? 'border-blue-500 bg-blue-50/40'
|
|
262433
|
+
: 'border-gray-200 bg-white hover:border-gray-300', isDisabledOption && 'cursor-not-allowed opacity-60'), children: [jsxs("div", { className: "flex items-center gap-2", children: [jsx("span", { className: "flex h-6 w-6 flex-shrink-0 items-center justify-center", children: option.logo.type === 'image' ? (jsx(Image$4, { src: option.logo.src, alt: option.logo.alt, width: 24, height: 24, className: "h-6 w-6 object-contain" })) : (jsx(option.logo.Icon, { className: "h-5 w-5 text-blue-600", "aria-hidden": "true" })) }), jsx("span", { className: "text-sm font-medium text-gray-900", children: option.label })] }), jsx("p", { className: "text-xs text-gray-500", children: option.description })] }, option.value));
|
|
262434
|
+
}) })] })) }), (provider === 'openai' || provider === 'google') && (jsx(WithFormPermissions, { name: provider === 'openai' ? 'openai_voice' : 'google_voice',
|
|
262435
|
+
// @ts-expect-error permissions.field is opaque
|
|
262436
|
+
permissions: (_m = mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.permissions) === null || _m === void 0 ? void 0 : _m.field, enableRBAC: enableRBAC, children: ({ disabled }) => (jsxs("div", { className: "space-y-2", children: [jsx(Label$1, { className: "text-sm font-medium text-[#646464]", children: t('tabsVoiceTab.voiceLabel') }), jsx(VoicePickerTrigger, { org: tenantKey, userId: username, provider: provider, selectedVoice: selectedVoice, onSelect: onSelectVoice, disabled: isDisabled || disabled, labels: labels.mentorVoice, modalTitle: t('tabsVoiceTab.selectVoiceModalTitle', {
|
|
262437
|
+
voiceType: labels.mentorVoice.voicePickerLabel[provider],
|
|
262438
|
+
}), modalDescription: t('tabsVoiceTab.selectVoiceModalDescription'), testId: "mentor-voice-trigger" })] })) })), jsx("div", { className: "flex items-center justify-end border-t border-gray-100 pt-3", children: jsx(Button$1, { type: "button", onClick: handleSaveVoice, disabled: isDisabled || !isDirty, "data-testid": "voice-save-button", className: "bg-gradient-to-r from-[#2563EB] to-[#93C5FD] text-white hover:opacity-90", children: isSavingMentor
|
|
262439
|
+
? labels.mentorVoice.savingButton
|
|
262440
|
+
: labels.mentorVoice.saveButton }) })] }), jsxs(TabsContent, { value: SUB_TAB_VALUES.callConfig, className: "space-y-4", children: [jsx("p", { className: "text-xs text-gray-600", children: labels.callConfig.description }), mentorId && username && tenantKey && (jsx(CallConfigSection, { org: tenantKey, userId: username, mentorId: mentorId, isDisabled: isDisabled, labels: labels.callConfig, voicePickerLabels: labels.mentorVoice, initialConfig: (_o = mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.call_configuration) !== null && _o !== void 0 ? _o : null, renderPromptContent: renderPromptContent, toastLabels: {
|
|
262441
|
+
saved: labels.toasts.callConfigSaved,
|
|
262442
|
+
error: labels.toasts.callConfigError,
|
|
262443
|
+
} }))] })] }) })) })] }));
|
|
261974
262444
|
}
|
|
261975
262445
|
function FieldTooltip({ text }) {
|
|
261976
262446
|
const t = useT();
|
|
@@ -261995,6 +262465,11 @@ const AGENT_SCREENSHARE_TAB_LABELS = {
|
|
|
261995
262465
|
title: 'Screen Share',
|
|
261996
262466
|
description: 'How your agent behaves when a user shares their screen during a voice call.',
|
|
261997
262467
|
},
|
|
262468
|
+
capability: {
|
|
262469
|
+
title: 'Screen sharing',
|
|
262470
|
+
description: "Let people share their screen during a voice call so the agent can see what they're doing and guide them step by step. When on, set the screen-sharing prompts below.",
|
|
262471
|
+
offHint: 'Turn it on to let people share their screen during a call and edit these prompts.',
|
|
262472
|
+
},
|
|
261998
262473
|
disabledHint: 'Screen sharing is currently turned off for this agent. These prompts will be saved but only take effect once it’s turned on.',
|
|
261999
262474
|
fields: {
|
|
262000
262475
|
systemPrompt: {
|
|
@@ -262019,6 +262494,11 @@ function buildScreenShareTabLabels(t) {
|
|
|
262019
262494
|
title: t('screenshareTabLabels.header.title'),
|
|
262020
262495
|
description: t('screenshareTabLabels.header.description'),
|
|
262021
262496
|
},
|
|
262497
|
+
capability: {
|
|
262498
|
+
title: t('screenshareTabLabels.capability.title'),
|
|
262499
|
+
description: t('screenshareTabLabels.capability.description'),
|
|
262500
|
+
offHint: t('screenshareTabLabels.capability.offHint'),
|
|
262501
|
+
},
|
|
262022
262502
|
disabledHint: t('screenshareTabLabels.disabledHint'),
|
|
262023
262503
|
fields: {
|
|
262024
262504
|
systemPrompt: {
|
|
@@ -262080,6 +262560,13 @@ function AgentScreenShareTab({ labels: labelsOverride, renderPromptContent, tena
|
|
|
262080
262560
|
const initialSystemPrompt = (_e = existing === null || existing === void 0 ? void 0 : existing.screensharing_system_prompt) !== null && _e !== void 0 ? _e : '';
|
|
262081
262561
|
const initialProactivePrompt = (_f = existing === null || existing === void 0 ? void 0 : existing.screensharing_proactive_prompt) !== null && _f !== void 0 ? _f : '';
|
|
262082
262562
|
const enableVideo = (existing === null || existing === void 0 ? void 0 : existing.enable_video) === true;
|
|
262563
|
+
// "Enable screen sharing" master toggle. Optimistic local mirror of
|
|
262564
|
+
// `enable_video` on the CallConfiguration so the switch responds instantly.
|
|
262565
|
+
const [screenShareEnabled, setScreenShareEnabled] = React__default.useState(enableVideo);
|
|
262566
|
+
const [isTogglingScreenShare, setIsTogglingScreenShare] = React__default.useState(false);
|
|
262567
|
+
React__default.useEffect(() => {
|
|
262568
|
+
setScreenShareEnabled(enableVideo);
|
|
262569
|
+
}, [enableVideo]);
|
|
262083
262570
|
const [systemPrompt, setSystemPrompt] = React__default.useState(initialSystemPrompt);
|
|
262084
262571
|
const [proactivePrompt, setProactivePrompt] = React__default.useState(initialProactivePrompt);
|
|
262085
262572
|
const [selectedPrompt, setSelectedPrompt] = React__default.useState(null);
|
|
@@ -262123,6 +262610,43 @@ function AgentScreenShareTab({ labels: labelsOverride, renderPromptContent, tena
|
|
|
262123
262610
|
toast.error(labels.toasts.error);
|
|
262124
262611
|
}
|
|
262125
262612
|
};
|
|
262613
|
+
const handleToggleScreenShare = async (checked) => {
|
|
262614
|
+
setScreenShareEnabled(checked); // optimistic
|
|
262615
|
+
setIsTogglingScreenShare(true);
|
|
262616
|
+
try {
|
|
262617
|
+
if (existing === null || existing === void 0 ? void 0 : existing.id) {
|
|
262618
|
+
await updateCallConfig({
|
|
262619
|
+
org: tenantKey,
|
|
262620
|
+
userId: username,
|
|
262621
|
+
id: existing.id,
|
|
262622
|
+
requestBody: { enable_video: checked },
|
|
262623
|
+
}).unwrap();
|
|
262624
|
+
}
|
|
262625
|
+
else {
|
|
262626
|
+
// No CallConfiguration row yet — POST one so the flag has somewhere
|
|
262627
|
+
// to live. Mirrors the shape the Settings tab used to create.
|
|
262628
|
+
await createCallConfig({
|
|
262629
|
+
org: tenantKey,
|
|
262630
|
+
userId: username,
|
|
262631
|
+
requestBody: {
|
|
262632
|
+
mentor: mentorId,
|
|
262633
|
+
mode: 'realtime',
|
|
262634
|
+
language: 'en',
|
|
262635
|
+
enable_video: checked,
|
|
262636
|
+
},
|
|
262637
|
+
}).unwrap();
|
|
262638
|
+
}
|
|
262639
|
+
toast.success(labels.toasts.saved);
|
|
262640
|
+
}
|
|
262641
|
+
catch (error) {
|
|
262642
|
+
console.error('[AgentScreenShareTab] toggle screen sharing error', error);
|
|
262643
|
+
setScreenShareEnabled(!checked); // roll back
|
|
262644
|
+
toast.error(labels.toasts.error);
|
|
262645
|
+
}
|
|
262646
|
+
finally {
|
|
262647
|
+
setIsTogglingScreenShare(false);
|
|
262648
|
+
}
|
|
262649
|
+
};
|
|
262126
262650
|
const openEditor = (field) => {
|
|
262127
262651
|
setSelectedPrompt({
|
|
262128
262652
|
label: field === 'screensharing_system_prompt'
|
|
@@ -262138,7 +262662,7 @@ function AgentScreenShareTab({ labels: labelsOverride, renderPromptContent, tena
|
|
|
262138
262662
|
return renderPromptContent(text);
|
|
262139
262663
|
return jsx("p", { className: "text-sm whitespace-pre-wrap text-gray-700", children: text });
|
|
262140
262664
|
};
|
|
262141
|
-
return (jsxs(Fragment$1, { children: [jsx("div", { className: "flex h-[73px] flex-shrink-0 items-center border-b border-gray-200 bg-white p-4 lg:block", children: jsxs("div", { children: [jsx("h3", { className: "mb-1 text-base font-medium text-gray-900", children: labels.header.title }), jsx("p", { className: "text-xs text-gray-600", children: labels.header.description })] }) }), jsx("div", { className: "flex-1 space-y-4 p-3 lg:p-4", style: { overflowY: 'auto', overflowX: 'hidden' }, "data-testid": "screenshare-tab-body", children: isLoading ? (jsx("div", { className: "flex items-center justify-center py-12", "data-testid": "screenshare-tab-loading", children: jsx(Spinner, {}) })) : (jsxs(
|
|
262665
|
+
return (jsxs(Fragment$1, { children: [jsx("div", { className: "flex h-[73px] flex-shrink-0 items-center border-b border-gray-200 bg-white p-4 lg:block", children: jsxs("div", { children: [jsx("h3", { className: "mb-1 text-base font-medium text-gray-900", children: labels.header.title }), jsx("p", { className: "text-xs text-gray-600", children: labels.header.description })] }) }), jsx("div", { className: "flex-1 space-y-4 p-3 lg:p-4", style: { overflowY: 'auto', overflowX: 'hidden' }, "data-testid": "screenshare-tab-body", children: isLoading ? (jsx("div", { className: "flex items-center justify-center py-12", "data-testid": "screenshare-tab-loading", children: jsx(Spinner, {}) })) : (jsxs(CapabilityGate, { title: labels.capability.title, description: labels.capability.description, offHint: labels.capability.offHint, enabled: screenShareEnabled, onToggle: handleToggleScreenShare, disabled: isSaving || isTogglingScreenShare, ariaLabel: labels.capability.title, toggleTestId: "screenshare-capability-toggle", children: [jsxs("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: [jsx(PromptCard$1, { label: labels.fields.systemPrompt.label, placeholder: labels.fields.systemPrompt.placeholder, value: systemPrompt, disabled: isSaving, renderContent: renderContent, onEdit: () => openEditor('screensharing_system_prompt') }), jsx(PromptCard$1, { label: labels.fields.proactivePrompt.label, placeholder: labels.fields.proactivePrompt.placeholder, value: proactivePrompt, disabled: isSaving, renderContent: renderContent, onEdit: () => openEditor('screensharing_proactive_prompt') })] }), jsx("div", { className: "mt-4 flex items-center justify-end border-t border-gray-100 pt-3", children: jsx("button", { type: "button", onClick: handleSave, disabled: isSaving || !isDirty, "data-testid": "screenshare-save-button", className: "inline-flex items-center gap-2 rounded-md bg-gradient-to-r from-[#2563EB] to-[#93C5FD] px-4 py-2 text-sm font-medium text-white hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-50", children: isSaving ? labels.savingButton : labels.saveButton }) }), selectedPrompt && (
|
|
262142
262666
|
// EditPromptModal calls strict `useAgentSettings()` to read
|
|
262143
262667
|
// `tenantKey` / `username` / `executeGatedAction`. The host
|
|
262144
262668
|
// app may not have wrapped this tab in `<AgentSettingsProvider>`
|
|
@@ -262714,6 +263238,13 @@ const AGENT_LTI_TAB_LABELS = {
|
|
|
262714
263238
|
title: 'LTI',
|
|
262715
263239
|
description: 'Manage LTI agent links, signing keys, tools, and platform endpoints.',
|
|
262716
263240
|
},
|
|
263241
|
+
capability: {
|
|
263242
|
+
title: 'LTI launches',
|
|
263243
|
+
description: 'Let this agent be added to a Learning Management System (Canvas, Brightspace, Blackboard or Moodle) so students can open it right inside their course. When on, create the links, signing keys, and tools your LMS needs below.',
|
|
263244
|
+
offHint: 'Turn it on to let this agent be embedded in an LMS and set up its links and keys.',
|
|
263245
|
+
toggleSuccess: 'LTI setting updated',
|
|
263246
|
+
toggleError: "Couldn't update LTI setting",
|
|
263247
|
+
},
|
|
262717
263248
|
subTabs: {
|
|
262718
263249
|
agentLinks: 'Links',
|
|
262719
263250
|
keys: 'Keys',
|
|
@@ -262875,6 +263406,13 @@ function buildLtiTabLabels(t) {
|
|
|
262875
263406
|
title: t('ltiTabLabels.header.title'),
|
|
262876
263407
|
description: t('ltiTabLabels.header.description'),
|
|
262877
263408
|
},
|
|
263409
|
+
capability: {
|
|
263410
|
+
title: t('ltiTabLabels.capability.title'),
|
|
263411
|
+
description: t('ltiTabLabels.capability.description'),
|
|
263412
|
+
offHint: t('ltiTabLabels.capability.offHint'),
|
|
263413
|
+
toggleSuccess: t('ltiTabLabels.capability.toggleSuccess'),
|
|
263414
|
+
toggleError: t('ltiTabLabels.capability.toggleError'),
|
|
263415
|
+
},
|
|
262878
263416
|
subTabs: {
|
|
262879
263417
|
agentLinks: t('ltiTabLabels.subTabs.agentLinks'),
|
|
262880
263418
|
keys: t('ltiTabLabels.subTabs.keys'),
|
|
@@ -263535,7 +264073,39 @@ function AgentLtiTab({ labels: labelsOverride, tenantKey: tenantKeyProp, mentorI
|
|
|
263535
264073
|
const platformKey = tenantKey;
|
|
263536
264074
|
const settings = mentorSettings;
|
|
263537
264075
|
const mentorUniqueId = (_e = settings === null || settings === void 0 ? void 0 : settings.mentor_unique_id) !== null && _e !== void 0 ? _e : '';
|
|
263538
|
-
const
|
|
264076
|
+
const serverLtiAccessible = Boolean(settings === null || settings === void 0 ? void 0 : settings.is_lti_accessible);
|
|
264077
|
+
// "Enable LTI launches" master toggle (`is_lti_accessible`), moved here from
|
|
264078
|
+
// Settings → Capabilities. Optimistic local mirror so the switch — and the
|
|
264079
|
+
// sub-sections that key off `isLtiAccessible` — respond instantly.
|
|
264080
|
+
const [ltiEnabled, setLtiEnabled] = React__default.useState(serverLtiAccessible);
|
|
264081
|
+
const [isTogglingLti, setIsTogglingLti] = React__default.useState(false);
|
|
264082
|
+
React__default.useEffect(() => {
|
|
264083
|
+
setLtiEnabled(serverLtiAccessible);
|
|
264084
|
+
}, [serverLtiAccessible]);
|
|
264085
|
+
const [editMentor] = useEditMentorMutation();
|
|
264086
|
+
const handleToggleLti = async (checked) => {
|
|
264087
|
+
setLtiEnabled(checked); // optimistic
|
|
264088
|
+
setIsTogglingLti(true);
|
|
264089
|
+
try {
|
|
264090
|
+
await editMentor({
|
|
264091
|
+
mentor: mentorId,
|
|
264092
|
+
org: tenantKey,
|
|
264093
|
+
// @ts-expect-error userId is accepted at runtime
|
|
264094
|
+
userId: username,
|
|
264095
|
+
formData: { is_lti_accessible: checked },
|
|
264096
|
+
}).unwrap();
|
|
264097
|
+
toast.success(labels.capability.toggleSuccess);
|
|
264098
|
+
}
|
|
264099
|
+
catch (error) {
|
|
264100
|
+
console.error('[AgentLtiTab] toggle LTI launches error', error);
|
|
264101
|
+
setLtiEnabled(!checked); // roll back
|
|
264102
|
+
toast.error(labels.capability.toggleError);
|
|
264103
|
+
}
|
|
264104
|
+
finally {
|
|
264105
|
+
setIsTogglingLti(false);
|
|
264106
|
+
}
|
|
264107
|
+
};
|
|
264108
|
+
const isLtiAccessible = ltiEnabled;
|
|
263539
264109
|
const identity = {
|
|
263540
264110
|
tenantKey,
|
|
263541
264111
|
platformKey,
|
|
@@ -263551,7 +264121,7 @@ function AgentLtiTab({ labels: labelsOverride, tenantKey: tenantKeyProp, mentorI
|
|
|
263551
264121
|
isSettingsLoading,
|
|
263552
264122
|
isReady: Boolean(platformKey && username),
|
|
263553
264123
|
};
|
|
263554
|
-
return (jsxs(Fragment$1, { children: [jsx("div", { className: "flex h-[73px] flex-shrink-0 items-center border-b border-gray-200 bg-white p-4 lg:block", children: jsxs("div", { children: [jsx("h3", { className: "mb-1 text-base font-medium text-gray-900", children: labels.header.title }), jsx("p", { className: "text-xs text-gray-600", children: labels.header.description })] }) }), jsx("div", { className: "flex-1 p-3 lg:p-4", style: { overflowY: 'auto', overflowX: 'hidden' }, "data-testid": "lti-tab-body", children: jsxs(Tabs, { defaultValue: SUB_TABS.agentLinks, className: "w-full", children: [jsxs(TabsList, { "aria-label": labels.header.title, "data-testid": "lti-sub-tabs", children: [jsx(TabsTrigger, { value: SUB_TABS.agentLinks, "data-testid": "lti-sub-tab-agent-links", children: labels.subTabs.agentLinks }), jsx(TabsTrigger, { value: SUB_TABS.keys, "data-testid": "lti-sub-tab-keys", children: labels.subTabs.keys }), jsx(TabsTrigger, { value: SUB_TABS.tools, "data-testid": "lti-sub-tab-tools", children: labels.subTabs.tools }), jsx(TabsTrigger, { value: SUB_TABS.toolEndpoints, "data-testid": "lti-sub-tab-tool-endpoints", children: labels.subTabs.toolEndpoints })] }), jsx(TabsContent, { value: SUB_TABS.agentLinks, className: "space-y-4", children: jsx(AgentLinksSection, { identity: identity, labels: labels }) }), jsx(TabsContent, { value: SUB_TABS.keys, className: "space-y-4", children: jsx(KeysSection, { identity: identity, labels: labels }) }), jsx(TabsContent, { value: SUB_TABS.tools, className: "space-y-4", children: jsx(ToolsSection, { identity: identity, labels: labels }) }), jsx(TabsContent, { value: SUB_TABS.toolEndpoints, className: "space-y-4", children: jsx(ToolEndpointsSection, { identity: identity, labels: labels }) })] }) })] }));
|
|
264124
|
+
return (jsxs(Fragment$1, { children: [jsx("div", { className: "flex h-[73px] flex-shrink-0 items-center border-b border-gray-200 bg-white p-4 lg:block", children: jsxs("div", { children: [jsx("h3", { className: "mb-1 text-base font-medium text-gray-900", children: labels.header.title }), jsx("p", { className: "text-xs text-gray-600", children: labels.header.description })] }) }), jsx("div", { className: "flex-1 space-y-4 p-3 lg:p-4", style: { overflowY: 'auto', overflowX: 'hidden' }, "data-testid": "lti-tab-body", children: jsx(CapabilityGate, { title: labels.capability.title, description: labels.capability.description, offHint: labels.capability.offHint, enabled: ltiEnabled, onToggle: handleToggleLti, disabled: isSettingsLoading || isTogglingLti, ariaLabel: labels.capability.title, toggleTestId: "lti-capability-toggle", children: jsxs(Tabs, { defaultValue: SUB_TABS.agentLinks, className: "w-full", children: [jsxs(TabsList, { "aria-label": labels.header.title, "data-testid": "lti-sub-tabs", children: [jsx(TabsTrigger, { value: SUB_TABS.agentLinks, "data-testid": "lti-sub-tab-agent-links", children: labels.subTabs.agentLinks }), jsx(TabsTrigger, { value: SUB_TABS.keys, "data-testid": "lti-sub-tab-keys", children: labels.subTabs.keys }), jsx(TabsTrigger, { value: SUB_TABS.tools, "data-testid": "lti-sub-tab-tools", children: labels.subTabs.tools }), jsx(TabsTrigger, { value: SUB_TABS.toolEndpoints, "data-testid": "lti-sub-tab-tool-endpoints", children: labels.subTabs.toolEndpoints })] }), jsx(TabsContent, { value: SUB_TABS.agentLinks, className: "space-y-4", children: jsx(AgentLinksSection, { identity: identity, labels: labels }) }), jsx(TabsContent, { value: SUB_TABS.keys, className: "space-y-4", children: jsx(KeysSection, { identity: identity, labels: labels }) }), jsx(TabsContent, { value: SUB_TABS.tools, className: "space-y-4", children: jsx(ToolsSection, { identity: identity, labels: labels }) }), jsx(TabsContent, { value: SUB_TABS.toolEndpoints, className: "space-y-4", children: jsx(ToolEndpointsSection, { identity: identity, labels: labels }) })] }) }) })] }));
|
|
263555
264125
|
}
|
|
263556
264126
|
|
|
263557
264127
|
function SuggestedPrompts({ prompts, permissions, labels, renderContent, onSelectPrompt, onOpenAddPromptModal, }) {
|
|
@@ -271785,6 +272355,7 @@ const AGENT_TASKS_TAB_LABELS = {
|
|
|
271785
272355
|
header: {
|
|
271786
272356
|
title: 'Tasks',
|
|
271787
272357
|
description: 'Configure automated tasks for your agent.',
|
|
272358
|
+
infoBox: 'Let your agent work on its own schedule. Set up recurring tasks it runs automatically — like daily summaries or reminders — without anyone having to ask.',
|
|
271788
272359
|
},
|
|
271789
272360
|
toolbar: {
|
|
271790
272361
|
searchPlaceholder: 'Search all tasks...',
|
|
@@ -271871,6 +272442,7 @@ function buildTasksTabLabels(t) {
|
|
|
271871
272442
|
header: {
|
|
271872
272443
|
title: t('tasksTabLabels.header.title'),
|
|
271873
272444
|
description: t('tasksTabLabels.header.description'),
|
|
272445
|
+
infoBox: t('tasksTabLabels.header.infoBox'),
|
|
271874
272446
|
},
|
|
271875
272447
|
toolbar: {
|
|
271876
272448
|
searchPlaceholder: t('tasksTabLabels.toolbar.searchPlaceholder'),
|
|
@@ -272212,13 +272784,13 @@ function AgentTasksTab({ PaginationComponent = DefaultTasksPagination, labels: l
|
|
|
272212
272784
|
toast.error(labels.toasts.deleteError);
|
|
272213
272785
|
}
|
|
272214
272786
|
};
|
|
272215
|
-
return (jsxs("div", { className: "flex h-full flex-col", children: [jsx("div", { className: "flex hidden h-[73px] flex-shrink-0 items-center border-b border-gray-200 bg-white p-4 lg:block", children: jsxs("div", { children: [jsx("h3", { className: "mb-1 text-base font-medium text-gray-900", children: labels.header.title }), jsx("p", { className: "text-xs text-gray-700", children: labels.header.description })] }) }),
|
|
272216
|
-
|
|
272217
|
-
|
|
272218
|
-
|
|
272219
|
-
|
|
272220
|
-
|
|
272221
|
-
|
|
272787
|
+
return (jsxs("div", { className: "flex h-full flex-col", children: [jsx("div", { className: "flex hidden h-[73px] flex-shrink-0 items-center border-b border-gray-200 bg-white p-4 lg:block", children: jsxs("div", { children: [jsx("h3", { className: "mb-1 text-base font-medium text-gray-900", children: labels.header.title }), jsx("p", { className: "text-xs text-gray-700", children: labels.header.description })] }) }), jsxs("div", { className: "scrollbar-hide flex-1 overflow-y-auto p-3 lg:p-4", children: [jsx("div", { className: "mb-4 rounded-md border border-gray-200 bg-gray-50 p-3 text-xs text-gray-600", "data-testid": "tasks-info-box", children: labels.header.infoBox }), jsx(TasksTabContent, { taskDate: taskDate, setTaskDate: setTaskDate, setIsScheduleTaskDialogOpen: setIsScheduleTaskDialogOpen, tasksData: paginatedTasks, taskLogs: paginatedLogs, handleOpenDeleteDialog: handleOpenDeleteDialog, isLoading: isLoading, tasksCurrentPage: tasksCurrentPage, tasksTotalPages: tasksTotalPages, onTasksPageChange: setTasksCurrentPage, logsCurrentPage: logsCurrentPage, logsTotalPages: logsTotalPages, onLogsPageChange: setLogsCurrentPage, handleClickLog: (log) => {
|
|
272788
|
+
setSelectedLog(log);
|
|
272789
|
+
setIsLogDetailModalOpen(true);
|
|
272790
|
+
}, selectedTaskId: selectedTaskId, selectedTaskName: (_c = selectedTask === null || selectedTask === void 0 ? void 0 : selectedTask.name) !== null && _c !== void 0 ? _c : null, onSelectTask: setSelectedTaskId, isLogsLoading: isLogsLoading || isLogsFetching, searchQuery: searchQuery, setSearchQuery: setSearchQuery, PaginationComponent: PaginationComponent, labels: labels,
|
|
272791
|
+
/* Pass the full unpaginated set so the metric cards reflect totals
|
|
272792
|
+
across all pages — not just the visible page. */
|
|
272793
|
+
allTasksData: filteredTasks })] }), jsx(ScheduleTaskDialog, { open: isScheduleTaskDialogOpen, onOpenChange: setIsScheduleTaskDialogOpen, onSave: handleSaveTask, isCreating: isCreating, labels: labels }), jsx(DeleteTaskDialog, { open: isDeleteTaskDialogOpen, onOpenChange: setIsDeleteTaskDialogOpen, onConfirm: handleConfirmDelete, taskName: taskToDelete === null || taskToDelete === void 0 ? void 0 : taskToDelete.name, isDeleting: isDeleting, labels: labels }), selectedLog && (jsx(TaskLogDetails, { isOpen: isLogDetailModalOpen, onClose: () => {
|
|
272222
272794
|
setIsLogDetailModalOpen(false);
|
|
272223
272795
|
setSelectedLog(null);
|
|
272224
272796
|
}, selectedLog: selectedLog, labels: labels }))] }));
|
|
@@ -322644,5 +323216,5 @@ var index_es = /*#__PURE__*/Object.freeze({
|
|
|
322644
323216
|
vectorsRatio: vectorsRatio
|
|
322645
323217
|
});
|
|
322646
323218
|
|
|
322647
|
-
export { AGENT_ACCESS_TAB_LABELS, AGENT_API_TAB_LABELS, AGENT_DATASETS_TAB_LABELS, AGENT_DISCLAIMERS_TAB_LABELS, AGENT_EMBED_TAB_LABELS, AGENT_HISTORY_TAB_LABELS, AGENT_LLM_TAB_LABELS, AGENT_LTI_TAB_LABELS, AGENT_MEMORY_TAB_LABELS, AGENT_PICKER_LABELS, AGENT_PRIVACY_TAB_LABELS, AGENT_PROMPTS_TAB_LABELS, AGENT_SAFETY_TAB_LABELS, AGENT_SCREENSHARE_TAB_LABELS, AGENT_SEARCH_LABELS, AGENT_SETTINGS_TAB_LABELS, AGENT_TASKS_TAB_LABELS, AGENT_TOOLS_TAB_LABELS, AGENT_VOICE_TAB_LABELS, Account, AgentAccessTab, AgentApiTab, AgentCard, AgentDatasetsTab, AgentDisclaimersTab, AgentEmbedTab, AgentEmptyState, AgentHistoryTab, AgentLLMTab, AgentLtiTab, AgentMemoryTab, AgentPrivacyTab, AgentPromptsTab, AgentSafetyTab, AgentScreenShareTab, AgentSearch, AgentSearchFilters, AgentSearchInput, AgentSettingsProvider, AgentSettingsTab, AgentTasksTab, AgentToolsTab, AgentVoiceTab, AppSidebar, CATALOGS, Chat, ClientErrorPage, ConversationStarters$1 as ConversationStarters, CopyButton, CopyMentorModal, CourseBox, CourseContentLayout, CourseContentTabPage, CreatePathwayModal, CredentialDetailModal, CredentialMiniBox, DEFAULT_LOCALE, DeleteMentorModal, EMPTY_PROGRAM_SETTINGS_FORM, EdxIframe, ErrorPage, GreetingMethod, McpTab, MediaBox, MentorSelectionGrid, NavBar, OrganizationTab, PLATFORM_SIDEBAR_FLYOUT_ITEM_COLOR, PLATFORM_SIDEBAR_FLYOUT_TITLE_COLOR, PLATFORM_SIDEBAR_NAV_ACTIVE_BG_OPEN, PLATFORM_SIDEBAR_NAV_MUTED, PathwayDetailModal, PlatformAccountSheet, PlatformSidebar, PlatformSidebarCollapsedLabelFlyout, PlatformSidebarCollapsedNavFlyout, PlatformSidebarFooter, PlatformSidebarNavDivider, PlatformSidebarNavSection, PlatformSidebarSubNavItem, ProfileInfoCards, ProfileTabs, ProgramDetailModal, ProjectsSidebarDropdown, SUPPORTED_LOCALES, SidebarInset, SidebarProvider, SidebarTrigger, SsoLogin, StarButton, UserProfileDropdown, UserProfileModal, WebContainersI18nProvider, formatDateString, getCatalog, getLLMProviderDetails, initializeLocalStorageWithObject, isValidLocale, resolveAgentPickerLabels, resolveAgentSearchLabels, resolveSettingsTabLabels, useAgentSearch, useAgentSearchWithPagination, useAgentSettings, useAgentStar, useGetChatDetails, usePlatformSidebarFooterActions, usePlatformSidebarNavCallback, useSidebar, useT, useTimeTracker, useWebContainersI18n, useWebContainersLocale };
|
|
323219
|
+
export { AGENT_ACCESS_TAB_LABELS, AGENT_ANALYTICS_TAB_LABELS, AGENT_API_TAB_LABELS, AGENT_DATASETS_TAB_LABELS, AGENT_DISCLAIMERS_TAB_LABELS, AGENT_EMBED_TAB_LABELS, AGENT_HISTORY_TAB_LABELS, AGENT_LLM_TAB_LABELS, AGENT_LTI_TAB_LABELS, AGENT_MEMORY_TAB_LABELS, AGENT_PICKER_LABELS, AGENT_PRIVACY_TAB_LABELS, AGENT_PROMPTS_TAB_LABELS, AGENT_SAFETY_TAB_LABELS, AGENT_SCREENSHARE_TAB_LABELS, AGENT_SEARCH_LABELS, AGENT_SETTINGS_TAB_LABELS, AGENT_TASKS_TAB_LABELS, AGENT_TOOLS_TAB_LABELS, AGENT_VOICE_TAB_LABELS, Account, AgentAccessTab, AgentAnalyticsTab, AgentApiTab, AgentCard, AgentDatasetsTab, AgentDisclaimersTab, AgentEmbedTab, AgentEmptyState, AgentHistoryTab, AgentLLMTab, AgentLtiTab, AgentMemoryTab, AgentPrivacyTab, AgentPromptsTab, AgentSafetyTab, AgentScreenShareTab, AgentSearch, AgentSearchFilters, AgentSearchInput, AgentSettingsProvider, AgentSettingsTab, AgentTasksTab, AgentToolsTab, AgentVoiceTab, AppSidebar, CATALOGS, Chat, ClientErrorPage, ConversationStarters$1 as ConversationStarters, CopyButton, CopyMentorModal, CourseBox, CourseContentLayout, CourseContentTabPage, CreatePathwayModal, CredentialDetailModal, CredentialMiniBox, DEFAULT_ANALYTICS_HUB_TABS, DEFAULT_LOCALE, DeleteMentorModal, EMPTY_PROGRAM_SETTINGS_FORM, EdxIframe, ErrorPage, GreetingMethod, McpTab, MediaBox, MentorSelectionGrid, NavBar, OrganizationTab, PLATFORM_SIDEBAR_FLYOUT_ITEM_COLOR, PLATFORM_SIDEBAR_FLYOUT_TITLE_COLOR, PLATFORM_SIDEBAR_NAV_ACTIVE_BG_OPEN, PLATFORM_SIDEBAR_NAV_MUTED, PathwayDetailModal, PlatformAccountSheet, PlatformSidebar, PlatformSidebarCollapsedLabelFlyout, PlatformSidebarCollapsedNavFlyout, PlatformSidebarFooter, PlatformSidebarNavDivider, PlatformSidebarNavSection, PlatformSidebarSubNavItem, ProfileInfoCards, ProfileTabs, ProgramDetailModal, ProjectsSidebarDropdown, SUPPORTED_LOCALES, SidebarInset, SidebarProvider, SidebarTrigger, SsoLogin, StarButton, UserProfileDropdown, UserProfileModal, WebContainersI18nProvider, formatDateString, getCatalog, getLLMProviderDetails, initializeLocalStorageWithObject, isValidLocale, resolveAgentPickerLabels, resolveAgentSearchLabels, resolveSettingsTabLabels, useAgentSearch, useAgentSearchWithPagination, useAgentSettings, useAgentStar, useGetChatDetails, usePlatformSidebarFooterActions, usePlatformSidebarNavCallback, useSidebar, useT, useTimeTracker, useWebContainersI18n, useWebContainersLocale };
|
|
322648
323220
|
//# sourceMappingURL=index.esm.js.map
|