@iblai/iblai-js 1.25.2 → 1.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -96962,6 +96962,7 @@ var advancePagination$3 = {
|
|
|
96962
96962
|
var advancedAdvanced$3 = {
|
|
96963
96963
|
failedToUpdateSetting: "Failed to update setting",
|
|
96964
96964
|
settingUpdatedSuccessfully: "Setting updated successfully",
|
|
96965
|
+
save: "Save",
|
|
96965
96966
|
agentSettingUpdatedSuccessfully: "Agent setting updated successfully",
|
|
96966
96967
|
chatAreaSizeUpdatedSuccessfully: "Chat area size updated successfully",
|
|
96967
96968
|
moreInfoAbout: "More info about {label}",
|
|
@@ -98332,11 +98333,16 @@ var clawSandboxAgentConfigPrompts$3 = {
|
|
|
98332
98333
|
updateSuccess: "{label} updated successfully",
|
|
98333
98334
|
updateError: "Failed to update {label}",
|
|
98334
98335
|
moreInfoAriaLabel: "More info about {label}",
|
|
98335
|
-
edit: "Edit"
|
|
98336
|
+
edit: "Edit",
|
|
98337
|
+
connectSandboxPrompt: "Connect a sandbox instance in the Sandbox tab to manage agent prompts.",
|
|
98338
|
+
enableSandboxPrompt: "Enable the dedicated sandbox on the Sandbox tab and connect it to an instance to manage agent prompts.",
|
|
98339
|
+
sandboxTabLabel: "Sandbox tab"
|
|
98336
98340
|
};
|
|
98337
98341
|
var clawSandboxAgentSkills$3 = {
|
|
98338
98342
|
loadingSkills: "Loading skills...",
|
|
98339
98343
|
connectSandboxPrompt: "Connect a sandbox instance in the Sandbox tab to manage skills.",
|
|
98344
|
+
enableSandboxPrompt: "Enable the dedicated sandbox on the Sandbox tab and connect it to an instance to manage skills.",
|
|
98345
|
+
sandboxTabLabel: "Sandbox tab",
|
|
98340
98346
|
newSkill: "New Skill",
|
|
98341
98347
|
noSkillsAvailable: "No skills available for this platform. Create one to get started.",
|
|
98342
98348
|
moreInfoAbout: "More info about {name}",
|
|
@@ -99534,7 +99540,8 @@ var modalsPaywallModal$3 = {
|
|
|
99534
99540
|
subscribeToGetAccess: "Subscribe to get access to {itemName}",
|
|
99535
99541
|
redirecting: "Redirecting...",
|
|
99536
99542
|
pay: "Pay",
|
|
99537
|
-
thisIncludes: "This includes:"
|
|
99543
|
+
thisIncludes: "This includes:",
|
|
99544
|
+
secureCheckout: "Secure checkout"
|
|
99538
99545
|
};
|
|
99539
99546
|
var modalsPromptGalleryModal$3 = {
|
|
99540
99547
|
promptGallery: "Prompt Gallery",
|
|
@@ -99855,6 +99862,11 @@ var privacyTabLabels$3 = {
|
|
|
99855
99862
|
title: "Privacy",
|
|
99856
99863
|
description: "Detect and filter personally identifiable information from chat messages."
|
|
99857
99864
|
},
|
|
99865
|
+
capability: {
|
|
99866
|
+
title: "PII filtering",
|
|
99867
|
+
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.",
|
|
99868
|
+
offHint: "Turn it on to detect and hide personal information in messages."
|
|
99869
|
+
},
|
|
99858
99870
|
fields: {
|
|
99859
99871
|
enableRouter: {
|
|
99860
99872
|
label: "Enable Privacy Router",
|
|
@@ -99866,12 +99878,14 @@ var privacyTabLabels$3 = {
|
|
|
99866
99878
|
options: {
|
|
99867
99879
|
redact: "Redact",
|
|
99868
99880
|
mask: "Mask",
|
|
99869
|
-
block: "Block"
|
|
99881
|
+
block: "Block",
|
|
99882
|
+
allow: "Allow"
|
|
99870
99883
|
},
|
|
99871
99884
|
descriptions: {
|
|
99872
99885
|
redact: "PII is replaced with its type — e.g. \"Email [EMAIL_ADDRESS]\".",
|
|
99873
99886
|
mask: "PII is hidden behind asterisks — e.g. \"Email ***********\".",
|
|
99874
|
-
block: "The message is rejected and your block message is shown to the user."
|
|
99887
|
+
block: "The message is rejected and your block message is shown to the user.",
|
|
99888
|
+
allow: "PII is detected but left untouched — the message passes through unchanged. Use this to monitor or audit personal information without altering messages."
|
|
99875
99889
|
}
|
|
99876
99890
|
},
|
|
99877
99891
|
blockMessage: {
|
|
@@ -100561,6 +100575,11 @@ var screenshareTabLabels$3 = {
|
|
|
100561
100575
|
title: "Screen Share",
|
|
100562
100576
|
description: "How your agent behaves when a user shares their screen during a voice call."
|
|
100563
100577
|
},
|
|
100578
|
+
capability: {
|
|
100579
|
+
title: "Screen sharing",
|
|
100580
|
+
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.",
|
|
100581
|
+
offHint: "Turn it on to let people share their screen during a call and edit these prompts."
|
|
100582
|
+
},
|
|
100564
100583
|
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
100584
|
fields: {
|
|
100566
100585
|
systemPrompt: {
|
|
@@ -101327,7 +101346,8 @@ var tabsVoiceTab$3 = {
|
|
|
101327
101346
|
var tasksTabLabels$3 = {
|
|
101328
101347
|
header: {
|
|
101329
101348
|
title: "Tasks",
|
|
101330
|
-
description: "Configure automated tasks for your agent."
|
|
101349
|
+
description: "Configure automated tasks for your agent.",
|
|
101350
|
+
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
101351
|
},
|
|
101332
101352
|
toolbar: {
|
|
101333
101353
|
searchPlaceholder: "Search all tasks...",
|
|
@@ -101469,11 +101489,54 @@ var voiceTabCallConfigSection$3 = {
|
|
|
101469
101489
|
refreshingAriaLabel: "Refreshing",
|
|
101470
101490
|
moreInfoAbout: "More info about {label}"
|
|
101471
101491
|
};
|
|
101492
|
+
var analyticsTabLabels$3 = {
|
|
101493
|
+
header: {
|
|
101494
|
+
title: "Analytics",
|
|
101495
|
+
description: "Usage reports and insights for this agent."
|
|
101496
|
+
},
|
|
101497
|
+
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.",
|
|
101498
|
+
openAria: "Open {label}",
|
|
101499
|
+
tabs: {
|
|
101500
|
+
overview: {
|
|
101501
|
+
label: "Overview",
|
|
101502
|
+
description: "A high-level snapshot of usage and engagement over time."
|
|
101503
|
+
},
|
|
101504
|
+
users: {
|
|
101505
|
+
label: "Users",
|
|
101506
|
+
description: "See who's chatting with this agent and how active they are."
|
|
101507
|
+
},
|
|
101508
|
+
topics: {
|
|
101509
|
+
label: "Topics",
|
|
101510
|
+
description: "The subjects people bring up most across conversations."
|
|
101511
|
+
},
|
|
101512
|
+
transcripts: {
|
|
101513
|
+
label: "Transcripts",
|
|
101514
|
+
description: "Read full conversation transcripts message by message."
|
|
101515
|
+
},
|
|
101516
|
+
financial: {
|
|
101517
|
+
label: "Costs",
|
|
101518
|
+
description: "Track token usage and what this agent is costing you."
|
|
101519
|
+
},
|
|
101520
|
+
audit: {
|
|
101521
|
+
label: "Audit",
|
|
101522
|
+
description: "Review the log of changes and activity for this agent."
|
|
101523
|
+
},
|
|
101524
|
+
reports: {
|
|
101525
|
+
label: "Data Reports",
|
|
101526
|
+
description: "Generate and download detailed reports to share or archive."
|
|
101527
|
+
}
|
|
101528
|
+
}
|
|
101529
|
+
};
|
|
101472
101530
|
var voiceTabLabels$3 = {
|
|
101473
101531
|
header: {
|
|
101474
101532
|
title: "Voice",
|
|
101475
101533
|
description: "Choose the voice your agent uses and how voice calls work."
|
|
101476
101534
|
},
|
|
101535
|
+
capability: {
|
|
101536
|
+
title: "Voice calls",
|
|
101537
|
+
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.",
|
|
101538
|
+
offHint: "Turn it on to let people start voice conversations with this agent."
|
|
101539
|
+
},
|
|
101477
101540
|
subTabs: {
|
|
101478
101541
|
voice: "Voice",
|
|
101479
101542
|
callConfig: "Voice call"
|
|
@@ -101721,6 +101784,13 @@ var ltiTabLabels$3 = {
|
|
|
101721
101784
|
title: "LTI",
|
|
101722
101785
|
description: "Manage LTI agent links, signing keys, tools, and platform endpoints."
|
|
101723
101786
|
},
|
|
101787
|
+
capability: {
|
|
101788
|
+
title: "LTI launches",
|
|
101789
|
+
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.",
|
|
101790
|
+
offHint: "Turn it on to let this agent be embedded in an LMS and set up its links and keys.",
|
|
101791
|
+
toggleSuccess: "LTI setting updated",
|
|
101792
|
+
toggleError: "Couldn't update LTI setting"
|
|
101793
|
+
},
|
|
101724
101794
|
subTabs: {
|
|
101725
101795
|
agentLinks: "Links",
|
|
101726
101796
|
keys: "Keys",
|
|
@@ -102124,6 +102194,7 @@ var en = {
|
|
|
102124
102194
|
userProfileDropdownIndex: userProfileDropdownIndex$3,
|
|
102125
102195
|
version: version$6,
|
|
102126
102196
|
voiceTabCallConfigSection: voiceTabCallConfigSection$3,
|
|
102197
|
+
analyticsTabLabels: analyticsTabLabels$3,
|
|
102127
102198
|
voiceTabLabels: voiceTabLabels$3,
|
|
102128
102199
|
voiceTabVoicePicker: voiceTabVoicePicker$3,
|
|
102129
102200
|
welcomeChatConversationStarters: welcomeChatConversationStarters$3,
|
|
@@ -102272,6 +102343,7 @@ var advancePagination$2 = {
|
|
|
102272
102343
|
var advancedAdvanced$2 = {
|
|
102273
102344
|
failedToUpdateSetting: "Échec de la mise à jour du paramètre",
|
|
102274
102345
|
settingUpdatedSuccessfully: "Paramètre mis à jour avec succès",
|
|
102346
|
+
save: "Enregistrer",
|
|
102275
102347
|
agentSettingUpdatedSuccessfully: "Paramètre de l'agent mis à jour avec succès",
|
|
102276
102348
|
chatAreaSizeUpdatedSuccessfully: "Taille de la zone de discussion mise à jour avec succès",
|
|
102277
102349
|
moreInfoAbout: "Plus d'informations sur {label}",
|
|
@@ -103642,11 +103714,16 @@ var clawSandboxAgentConfigPrompts$2 = {
|
|
|
103642
103714
|
updateSuccess: "{label} mis à jour avec succès",
|
|
103643
103715
|
updateError: "Échec de la mise à jour de {label}",
|
|
103644
103716
|
moreInfoAriaLabel: "Plus d'informations sur {label}",
|
|
103645
|
-
edit: "Modifier"
|
|
103717
|
+
edit: "Modifier",
|
|
103718
|
+
connectSandboxPrompt: "Connectez une instance de sandbox dans l'onglet Sandbox pour gérer les invites de l'agent.",
|
|
103719
|
+
enableSandboxPrompt: "Activez le bac à sable dédié dans l'onglet Sandbox et connectez-le à une instance pour gérer les invites de l'agent.",
|
|
103720
|
+
sandboxTabLabel: "onglet Sandbox"
|
|
103646
103721
|
};
|
|
103647
103722
|
var clawSandboxAgentSkills$2 = {
|
|
103648
103723
|
loadingSkills: "Chargement des compétences...",
|
|
103649
103724
|
connectSandboxPrompt: "Connectez une instance sandbox dans l'onglet Sandbox pour gérer les compétences.",
|
|
103725
|
+
enableSandboxPrompt: "Activez le bac à sable dédié dans l'onglet Sandbox et connectez-le à une instance pour gérer les compétences.",
|
|
103726
|
+
sandboxTabLabel: "onglet Sandbox",
|
|
103650
103727
|
newSkill: "Nouvelle compétence",
|
|
103651
103728
|
noSkillsAvailable: "Aucune compétence disponible pour cette plateforme. Créez-en une pour commencer.",
|
|
103652
103729
|
moreInfoAbout: "Plus d'informations sur {name}",
|
|
@@ -104844,7 +104921,8 @@ var modalsPaywallModal$2 = {
|
|
|
104844
104921
|
subscribeToGetAccess: "Abonnez-vous pour accéder à {itemName}",
|
|
104845
104922
|
redirecting: "Redirection en cours...",
|
|
104846
104923
|
pay: "Payer",
|
|
104847
|
-
thisIncludes: "Cela comprend :"
|
|
104924
|
+
thisIncludes: "Cela comprend :",
|
|
104925
|
+
secureCheckout: "Paiement sécurisé"
|
|
104848
104926
|
};
|
|
104849
104927
|
var modalsPromptGalleryModal$2 = {
|
|
104850
104928
|
promptGallery: "Galerie d'invites",
|
|
@@ -105165,6 +105243,11 @@ var privacyTabLabels$2 = {
|
|
|
105165
105243
|
title: "Confidentialité",
|
|
105166
105244
|
description: "Détectez et filtrez les informations personnellement identifiables des messages de chat."
|
|
105167
105245
|
},
|
|
105246
|
+
capability: {
|
|
105247
|
+
title: "Filtrage des données personnelles",
|
|
105248
|
+
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.",
|
|
105249
|
+
offHint: "Activez-le pour détecter et masquer les informations personnelles dans les messages."
|
|
105250
|
+
},
|
|
105168
105251
|
fields: {
|
|
105169
105252
|
enableRouter: {
|
|
105170
105253
|
label: "Activer le routeur de confidentialité",
|
|
@@ -105176,12 +105259,14 @@ var privacyTabLabels$2 = {
|
|
|
105176
105259
|
options: {
|
|
105177
105260
|
redact: "Masquer",
|
|
105178
105261
|
mask: "Flouter",
|
|
105179
|
-
block: "Bloquer"
|
|
105262
|
+
block: "Bloquer",
|
|
105263
|
+
allow: "Autoriser"
|
|
105180
105264
|
},
|
|
105181
105265
|
descriptions: {
|
|
105182
105266
|
redact: "Les PII sont remplacées par leur type — ex. \"Email [EMAIL_ADDRESS]\".",
|
|
105183
105267
|
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."
|
|
105268
|
+
block: "Le message est rejeté et votre message de blocage est affiché à l'utilisateur.",
|
|
105269
|
+
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
105270
|
}
|
|
105186
105271
|
},
|
|
105187
105272
|
blockMessage: {
|
|
@@ -105871,6 +105956,11 @@ var screenshareTabLabels$2 = {
|
|
|
105871
105956
|
title: "Partage d’écran",
|
|
105872
105957
|
description: "Comment votre agent se comporte lorsqu’un utilisateur partage son écran pendant un appel vocal."
|
|
105873
105958
|
},
|
|
105959
|
+
capability: {
|
|
105960
|
+
title: "Partage d’écran",
|
|
105961
|
+
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.",
|
|
105962
|
+
offHint: "Activez-le pour permettre le partage d'écran pendant un appel et modifier ces invites."
|
|
105963
|
+
},
|
|
105874
105964
|
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
105965
|
fields: {
|
|
105876
105966
|
systemPrompt: {
|
|
@@ -106637,7 +106727,8 @@ var tabsVoiceTab$2 = {
|
|
|
106637
106727
|
var tasksTabLabels$2 = {
|
|
106638
106728
|
header: {
|
|
106639
106729
|
title: "Tâches",
|
|
106640
|
-
description: "Configurez les tâches automatisées pour votre agent."
|
|
106730
|
+
description: "Configurez les tâches automatisées pour votre agent.",
|
|
106731
|
+
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
106732
|
},
|
|
106642
106733
|
toolbar: {
|
|
106643
106734
|
searchPlaceholder: "Rechercher toutes les tâches...",
|
|
@@ -106779,11 +106870,54 @@ var voiceTabCallConfigSection$2 = {
|
|
|
106779
106870
|
refreshingAriaLabel: "Actualisation en cours",
|
|
106780
106871
|
moreInfoAbout: "Plus d'infos sur {label}"
|
|
106781
106872
|
};
|
|
106873
|
+
var analyticsTabLabels$2 = {
|
|
106874
|
+
header: {
|
|
106875
|
+
title: "Analytique",
|
|
106876
|
+
description: "Rapports d'utilisation et insights pour cet agent."
|
|
106877
|
+
},
|
|
106878
|
+
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.",
|
|
106879
|
+
openAria: "Ouvrir {label}",
|
|
106880
|
+
tabs: {
|
|
106881
|
+
overview: {
|
|
106882
|
+
label: "Vue d’ensemble",
|
|
106883
|
+
description: "Un aperçu global de l'utilisation et de l'engagement dans le temps."
|
|
106884
|
+
},
|
|
106885
|
+
users: {
|
|
106886
|
+
label: "Utilisateurs",
|
|
106887
|
+
description: "Voyez qui discute avec cet agent et à quel point ils sont actifs."
|
|
106888
|
+
},
|
|
106889
|
+
topics: {
|
|
106890
|
+
label: "Sujets",
|
|
106891
|
+
description: "Les sujets que les gens abordent le plus dans les conversations."
|
|
106892
|
+
},
|
|
106893
|
+
transcripts: {
|
|
106894
|
+
label: "Transcriptions",
|
|
106895
|
+
description: "Lisez les transcriptions complètes des conversations, message par message."
|
|
106896
|
+
},
|
|
106897
|
+
financial: {
|
|
106898
|
+
label: "Coûts",
|
|
106899
|
+
description: "Suivez l'utilisation des jetons et ce que cet agent vous coûte."
|
|
106900
|
+
},
|
|
106901
|
+
audit: {
|
|
106902
|
+
label: "Audit",
|
|
106903
|
+
description: "Consultez le journal des modifications et de l'activité de cet agent."
|
|
106904
|
+
},
|
|
106905
|
+
reports: {
|
|
106906
|
+
label: "Rapports de données",
|
|
106907
|
+
description: "Générez et téléchargez des rapports détaillés à partager ou à archiver."
|
|
106908
|
+
}
|
|
106909
|
+
}
|
|
106910
|
+
};
|
|
106782
106911
|
var voiceTabLabels$2 = {
|
|
106783
106912
|
header: {
|
|
106784
106913
|
title: "Voix",
|
|
106785
106914
|
description: "Choisissez la voix utilisée par votre agent et le fonctionnement des appels vocaux."
|
|
106786
106915
|
},
|
|
106916
|
+
capability: {
|
|
106917
|
+
title: "Appels vocaux",
|
|
106918
|
+
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.",
|
|
106919
|
+
offHint: "Activez-le pour permettre aux utilisateurs de démarrer des conversations vocales avec cet agent."
|
|
106920
|
+
},
|
|
106787
106921
|
subTabs: {
|
|
106788
106922
|
voice: "Voix",
|
|
106789
106923
|
callConfig: "Appel vocal"
|
|
@@ -107031,6 +107165,13 @@ var ltiTabLabels$2 = {
|
|
|
107031
107165
|
title: "LTI",
|
|
107032
107166
|
description: "Gérez les liens LTI de l'agent, les clés de signature, les outils et les endpoints de la plateforme."
|
|
107033
107167
|
},
|
|
107168
|
+
capability: {
|
|
107169
|
+
title: "Lancements LTI",
|
|
107170
|
+
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.",
|
|
107171
|
+
offHint: "Activez-le pour permettre l'intégration de cet agent dans un LMS et configurer ses liens et ses clés.",
|
|
107172
|
+
toggleSuccess: "Paramètre LTI mis à jour",
|
|
107173
|
+
toggleError: "Impossible de mettre à jour le paramètre LTI"
|
|
107174
|
+
},
|
|
107034
107175
|
subTabs: {
|
|
107035
107176
|
agentLinks: "Liens",
|
|
107036
107177
|
keys: "Clés",
|
|
@@ -107434,6 +107575,7 @@ var fr = {
|
|
|
107434
107575
|
userProfileDropdownIndex: userProfileDropdownIndex$2,
|
|
107435
107576
|
version: version$5,
|
|
107436
107577
|
voiceTabCallConfigSection: voiceTabCallConfigSection$2,
|
|
107578
|
+
analyticsTabLabels: analyticsTabLabels$2,
|
|
107437
107579
|
voiceTabLabels: voiceTabLabels$2,
|
|
107438
107580
|
voiceTabVoicePicker: voiceTabVoicePicker$2,
|
|
107439
107581
|
welcomeChatConversationStarters: welcomeChatConversationStarters$2,
|
|
@@ -107582,6 +107724,7 @@ var advancePagination$1 = {
|
|
|
107582
107724
|
var advancedAdvanced$1 = {
|
|
107583
107725
|
failedToUpdateSetting: "Error al actualizar la configuración",
|
|
107584
107726
|
settingUpdatedSuccessfully: "Configuración actualizada correctamente",
|
|
107727
|
+
save: "Guardar",
|
|
107585
107728
|
agentSettingUpdatedSuccessfully: "Configuración del agente actualizada correctamente",
|
|
107586
107729
|
chatAreaSizeUpdatedSuccessfully: "Tamaño del área de chat actualizado correctamente",
|
|
107587
107730
|
moreInfoAbout: "Más información sobre {label}",
|
|
@@ -108952,11 +109095,16 @@ var clawSandboxAgentConfigPrompts$1 = {
|
|
|
108952
109095
|
updateSuccess: "{label} actualizado correctamente",
|
|
108953
109096
|
updateError: "Error al actualizar {label}",
|
|
108954
109097
|
moreInfoAriaLabel: "Más información sobre {label}",
|
|
108955
|
-
edit: "Editar"
|
|
109098
|
+
edit: "Editar",
|
|
109099
|
+
connectSandboxPrompt: "Conecta una instancia de sandbox en la pestaña Sandbox para gestionar las indicaciones del agente.",
|
|
109100
|
+
enableSandboxPrompt: "Activa el sandbox dedicado en la pestaña Sandbox y conéctalo a una instancia para gestionar las indicaciones del agente.",
|
|
109101
|
+
sandboxTabLabel: "pestaña Sandbox"
|
|
108956
109102
|
};
|
|
108957
109103
|
var clawSandboxAgentSkills$1 = {
|
|
108958
109104
|
loadingSkills: "Cargando habilidades...",
|
|
108959
109105
|
connectSandboxPrompt: "Conecta una instancia de sandbox en la pestaña Sandbox para gestionar habilidades.",
|
|
109106
|
+
enableSandboxPrompt: "Activa el sandbox dedicado en la pestaña Sandbox y conéctalo a una instancia para gestionar habilidades.",
|
|
109107
|
+
sandboxTabLabel: "pestaña Sandbox",
|
|
108960
109108
|
newSkill: "Nueva habilidad",
|
|
108961
109109
|
noSkillsAvailable: "No hay habilidades disponibles para esta plataforma. Crea una para empezar.",
|
|
108962
109110
|
moreInfoAbout: "Más información sobre {name}",
|
|
@@ -110154,7 +110302,8 @@ var modalsPaywallModal$1 = {
|
|
|
110154
110302
|
subscribeToGetAccess: "Suscríbete para acceder a {itemName}",
|
|
110155
110303
|
redirecting: "Redirigiendo...",
|
|
110156
110304
|
pay: "Pagar",
|
|
110157
|
-
thisIncludes: "Esto incluye:"
|
|
110305
|
+
thisIncludes: "Esto incluye:",
|
|
110306
|
+
secureCheckout: "Pago seguro"
|
|
110158
110307
|
};
|
|
110159
110308
|
var modalsPromptGalleryModal$1 = {
|
|
110160
110309
|
promptGallery: "Galería de instrucciones",
|
|
@@ -110475,6 +110624,11 @@ var privacyTabLabels$1 = {
|
|
|
110475
110624
|
title: "Privacidad",
|
|
110476
110625
|
description: "Detecta y filtra información de identificación personal de los mensajes del chat."
|
|
110477
110626
|
},
|
|
110627
|
+
capability: {
|
|
110628
|
+
title: "Filtrado de datos personales",
|
|
110629
|
+
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.",
|
|
110630
|
+
offHint: "Actívalo para detectar y ocultar la información personal en los mensajes."
|
|
110631
|
+
},
|
|
110478
110632
|
fields: {
|
|
110479
110633
|
enableRouter: {
|
|
110480
110634
|
label: "Activar enrutador de privacidad",
|
|
@@ -110486,12 +110640,14 @@ var privacyTabLabels$1 = {
|
|
|
110486
110640
|
options: {
|
|
110487
110641
|
redact: "Redactar",
|
|
110488
110642
|
mask: "Enmascarar",
|
|
110489
|
-
block: "Bloquear"
|
|
110643
|
+
block: "Bloquear",
|
|
110644
|
+
allow: "Permitir"
|
|
110490
110645
|
},
|
|
110491
110646
|
descriptions: {
|
|
110492
110647
|
redact: "La PII se reemplaza por su tipo — ej. \"Email [EMAIL_ADDRESS]\".",
|
|
110493
110648
|
mask: "La PII se oculta con asteriscos — ej. \"Email ***********\".",
|
|
110494
|
-
block: "El mensaje es rechazado y se muestra al usuario el mensaje de bloqueo."
|
|
110649
|
+
block: "El mensaje es rechazado y se muestra al usuario el mensaje de bloqueo.",
|
|
110650
|
+
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
110651
|
}
|
|
110496
110652
|
},
|
|
110497
110653
|
blockMessage: {
|
|
@@ -111181,6 +111337,11 @@ var screenshareTabLabels$1 = {
|
|
|
111181
111337
|
title: "Pantalla compartida",
|
|
111182
111338
|
description: "Cómo se comporta tu agente cuando un usuario comparte su pantalla durante una llamada de voz."
|
|
111183
111339
|
},
|
|
111340
|
+
capability: {
|
|
111341
|
+
title: "Pantalla compartida",
|
|
111342
|
+
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.",
|
|
111343
|
+
offHint: "Actívalo para permitir compartir la pantalla durante una llamada y editar estas indicaciones."
|
|
111344
|
+
},
|
|
111184
111345
|
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
111346
|
fields: {
|
|
111186
111347
|
systemPrompt: {
|
|
@@ -111947,7 +112108,8 @@ var tabsVoiceTab$1 = {
|
|
|
111947
112108
|
var tasksTabLabels$1 = {
|
|
111948
112109
|
header: {
|
|
111949
112110
|
title: "Tareas",
|
|
111950
|
-
description: "Configure las tareas automatizadas para su agente."
|
|
112111
|
+
description: "Configure las tareas automatizadas para su agente.",
|
|
112112
|
+
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
112113
|
},
|
|
111952
112114
|
toolbar: {
|
|
111953
112115
|
searchPlaceholder: "Buscar todas las tareas...",
|
|
@@ -112089,11 +112251,54 @@ var voiceTabCallConfigSection$1 = {
|
|
|
112089
112251
|
refreshingAriaLabel: "Actualizando",
|
|
112090
112252
|
moreInfoAbout: "Más información sobre {label}"
|
|
112091
112253
|
};
|
|
112254
|
+
var analyticsTabLabels$1 = {
|
|
112255
|
+
header: {
|
|
112256
|
+
title: "Analíticas",
|
|
112257
|
+
description: "Informes de uso e insights para este agente."
|
|
112258
|
+
},
|
|
112259
|
+
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.",
|
|
112260
|
+
openAria: "Abrir {label}",
|
|
112261
|
+
tabs: {
|
|
112262
|
+
overview: {
|
|
112263
|
+
label: "Resumen",
|
|
112264
|
+
description: "Una vista general del uso y la participación a lo largo del tiempo."
|
|
112265
|
+
},
|
|
112266
|
+
users: {
|
|
112267
|
+
label: "Usuarios",
|
|
112268
|
+
description: "Mira quién chatea con este agente y qué tan activos son."
|
|
112269
|
+
},
|
|
112270
|
+
topics: {
|
|
112271
|
+
label: "Temas",
|
|
112272
|
+
description: "Los temas que la gente menciona más en las conversaciones."
|
|
112273
|
+
},
|
|
112274
|
+
transcripts: {
|
|
112275
|
+
label: "Transcripciones",
|
|
112276
|
+
description: "Lee las transcripciones completas de las conversaciones, mensaje a mensaje."
|
|
112277
|
+
},
|
|
112278
|
+
financial: {
|
|
112279
|
+
label: "Costos",
|
|
112280
|
+
description: "Controla el uso de tokens y lo que te cuesta este agente."
|
|
112281
|
+
},
|
|
112282
|
+
audit: {
|
|
112283
|
+
label: "Auditoría",
|
|
112284
|
+
description: "Revisa el registro de cambios y actividad de este agente."
|
|
112285
|
+
},
|
|
112286
|
+
reports: {
|
|
112287
|
+
label: "Informes de datos",
|
|
112288
|
+
description: "Genera y descarga informes detallados para compartir o archivar."
|
|
112289
|
+
}
|
|
112290
|
+
}
|
|
112291
|
+
};
|
|
112092
112292
|
var voiceTabLabels$1 = {
|
|
112093
112293
|
header: {
|
|
112094
112294
|
title: "Voz",
|
|
112095
112295
|
description: "Elige la voz que usa tu agente y cómo funcionan las llamadas de voz."
|
|
112096
112296
|
},
|
|
112297
|
+
capability: {
|
|
112298
|
+
title: "Llamadas de voz",
|
|
112299
|
+
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.",
|
|
112300
|
+
offHint: "Actívalo para permitir que las personas inicien conversaciones de voz con este agente."
|
|
112301
|
+
},
|
|
112097
112302
|
subTabs: {
|
|
112098
112303
|
voice: "Voz",
|
|
112099
112304
|
callConfig: "Llamada de voz"
|
|
@@ -112341,6 +112546,13 @@ var ltiTabLabels$1 = {
|
|
|
112341
112546
|
title: "LTI",
|
|
112342
112547
|
description: "Gestiona los enlaces LTI del agente, las claves de firma, las herramientas y los endpoints de la plataforma."
|
|
112343
112548
|
},
|
|
112549
|
+
capability: {
|
|
112550
|
+
title: "Lanzamientos LTI",
|
|
112551
|
+
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.",
|
|
112552
|
+
offHint: "Actívalo para permitir que este agente se integre en un LMS y configurar sus enlaces y claves.",
|
|
112553
|
+
toggleSuccess: "Ajuste de LTI actualizado",
|
|
112554
|
+
toggleError: "No se pudo actualizar el ajuste de LTI"
|
|
112555
|
+
},
|
|
112344
112556
|
subTabs: {
|
|
112345
112557
|
agentLinks: "Enlaces",
|
|
112346
112558
|
keys: "Claves",
|
|
@@ -112744,6 +112956,7 @@ var es = {
|
|
|
112744
112956
|
userProfileDropdownIndex: userProfileDropdownIndex$1,
|
|
112745
112957
|
version: version$4,
|
|
112746
112958
|
voiceTabCallConfigSection: voiceTabCallConfigSection$1,
|
|
112959
|
+
analyticsTabLabels: analyticsTabLabels$1,
|
|
112747
112960
|
voiceTabLabels: voiceTabLabels$1,
|
|
112748
112961
|
voiceTabVoicePicker: voiceTabVoicePicker$1,
|
|
112749
112962
|
welcomeChatConversationStarters: welcomeChatConversationStarters$1,
|
|
@@ -112892,6 +113105,7 @@ var advancePagination = {
|
|
|
112892
113105
|
var advancedAdvanced = {
|
|
112893
113106
|
failedToUpdateSetting: "更新设置失败",
|
|
112894
113107
|
settingUpdatedSuccessfully: "设置已成功更新",
|
|
113108
|
+
save: "保存",
|
|
112895
113109
|
agentSettingUpdatedSuccessfully: "代理设置已成功更新",
|
|
112896
113110
|
chatAreaSizeUpdatedSuccessfully: "聊天区域大小已成功更新",
|
|
112897
113111
|
moreInfoAbout: "关于 {label} 的更多信息",
|
|
@@ -114262,11 +114476,16 @@ var clawSandboxAgentConfigPrompts = {
|
|
|
114262
114476
|
updateSuccess: "{label} 更新成功",
|
|
114263
114477
|
updateError: "更新 {label} 失败",
|
|
114264
114478
|
moreInfoAriaLabel: "关于 {label} 的更多信息",
|
|
114265
|
-
edit: "编辑"
|
|
114479
|
+
edit: "编辑",
|
|
114480
|
+
connectSandboxPrompt: "在沙盒选项卡中连接沙盒实例以管理智能体提示词。",
|
|
114481
|
+
enableSandboxPrompt: "在沙盒选项卡中启用专用沙盒并连接到实例,以管理智能体提示词。",
|
|
114482
|
+
sandboxTabLabel: "沙盒选项卡"
|
|
114266
114483
|
};
|
|
114267
114484
|
var clawSandboxAgentSkills = {
|
|
114268
114485
|
loadingSkills: "正在加载技能...",
|
|
114269
114486
|
connectSandboxPrompt: "在 Sandbox 标签页中连接一个 sandbox 实例以管理技能。",
|
|
114487
|
+
enableSandboxPrompt: "在 Sandbox 标签页中启用专用沙盒并连接到实例,以管理技能。",
|
|
114488
|
+
sandboxTabLabel: "Sandbox 标签页",
|
|
114270
114489
|
newSkill: "新建技能",
|
|
114271
114490
|
noSkillsAvailable: "该平台暂无可用技能。创建一个以开始使用。",
|
|
114272
114491
|
moreInfoAbout: "关于 {name} 的更多信息",
|
|
@@ -115464,7 +115683,8 @@ var modalsPaywallModal = {
|
|
|
115464
115683
|
subscribeToGetAccess: "订阅以获取 {itemName} 的访问权限",
|
|
115465
115684
|
redirecting: "正在跳转...",
|
|
115466
115685
|
pay: "支付",
|
|
115467
|
-
thisIncludes: "包含以下内容:"
|
|
115686
|
+
thisIncludes: "包含以下内容:",
|
|
115687
|
+
secureCheckout: "安全结账"
|
|
115468
115688
|
};
|
|
115469
115689
|
var modalsPromptGalleryModal = {
|
|
115470
115690
|
promptGallery: "提示库",
|
|
@@ -115785,6 +116005,11 @@ var privacyTabLabels = {
|
|
|
115785
116005
|
title: "隐私",
|
|
115786
116006
|
description: "检测并过滤聊天消息中的个人身份信息。"
|
|
115787
116007
|
},
|
|
116008
|
+
capability: {
|
|
116009
|
+
title: "个人信息过滤",
|
|
116010
|
+
description: "在智能体看到消息之前,自动查找并隐藏其中的个人信息——姓名、电子邮件、电话号码等。开启后,可在下方选择要检测的内容及处理方式。",
|
|
116011
|
+
offHint: "开启后可检测并隐藏消息中的个人信息。"
|
|
116012
|
+
},
|
|
115788
116013
|
fields: {
|
|
115789
116014
|
enableRouter: {
|
|
115790
116015
|
label: "启用隐私路由",
|
|
@@ -115796,12 +116021,14 @@ var privacyTabLabels = {
|
|
|
115796
116021
|
options: {
|
|
115797
116022
|
redact: "编辑",
|
|
115798
116023
|
mask: "遮蔽",
|
|
115799
|
-
block: "拦截"
|
|
116024
|
+
block: "拦截",
|
|
116025
|
+
allow: "允许"
|
|
115800
116026
|
},
|
|
115801
116027
|
descriptions: {
|
|
115802
116028
|
redact: "PII 将被替换为其类型,例如:「Email [EMAIL_ADDRESS]」。",
|
|
115803
116029
|
mask: "PII 将被星号隐藏,例如:「Email ***********」。",
|
|
115804
|
-
block: "消息将被拒绝,并向用户显示您的拦截消息。"
|
|
116030
|
+
block: "消息将被拒绝,并向用户显示您的拦截消息。",
|
|
116031
|
+
allow: "检测到 PII 但不做处理——消息将原样通过。适用于在不修改消息的情况下监控或审计个人信息。"
|
|
115805
116032
|
}
|
|
115806
116033
|
},
|
|
115807
116034
|
blockMessage: {
|
|
@@ -116491,6 +116718,11 @@ var screenshareTabLabels = {
|
|
|
116491
116718
|
title: "屏幕共享",
|
|
116492
116719
|
description: "当用户在语音通话中共享屏幕时,您的智能体的表现方式。"
|
|
116493
116720
|
},
|
|
116721
|
+
capability: {
|
|
116722
|
+
title: "屏幕共享",
|
|
116723
|
+
description: "允许用户在语音通话中共享屏幕,以便智能体看到他们的操作并逐步引导。开启后,可在下方设置屏幕共享提示词。",
|
|
116724
|
+
offHint: "开启后可允许在通话中共享屏幕并编辑这些提示词。"
|
|
116725
|
+
},
|
|
116494
116726
|
disabledHint: "屏幕共享当前已为该智能体关闭。这些提示将被保存,但开启后才会生效。",
|
|
116495
116727
|
fields: {
|
|
116496
116728
|
systemPrompt: {
|
|
@@ -117257,7 +117489,8 @@ var tabsVoiceTab = {
|
|
|
117257
117489
|
var tasksTabLabels = {
|
|
117258
117490
|
header: {
|
|
117259
117491
|
title: "任务",
|
|
117260
|
-
description: "为您的智能体配置自动化任务。"
|
|
117492
|
+
description: "为您的智能体配置自动化任务。",
|
|
117493
|
+
infoBox: "让您的智能体按自己的日程工作。设置它自动运行的周期性任务——例如每日摘要或提醒——无需任何人主动提出。"
|
|
117261
117494
|
},
|
|
117262
117495
|
toolbar: {
|
|
117263
117496
|
searchPlaceholder: "搜索所有任务...",
|
|
@@ -117399,11 +117632,54 @@ var voiceTabCallConfigSection = {
|
|
|
117399
117632
|
refreshingAriaLabel: "刷新中",
|
|
117400
117633
|
moreInfoAbout: "关于 {label} 的更多信息"
|
|
117401
117634
|
};
|
|
117635
|
+
var analyticsTabLabels = {
|
|
117636
|
+
header: {
|
|
117637
|
+
title: "分析",
|
|
117638
|
+
description: "该智能体的使用报告和数据洞察。"
|
|
117639
|
+
},
|
|
117640
|
+
infoBox: "了解该智能体的使用情况——谁在与它对话、大家在谈论什么、花费多少等等。在下方选择一份报告即可深入查看。",
|
|
117641
|
+
openAria: "打开{label}",
|
|
117642
|
+
tabs: {
|
|
117643
|
+
overview: {
|
|
117644
|
+
label: "概览",
|
|
117645
|
+
description: "随时间变化的使用情况和参与度的总体快照。"
|
|
117646
|
+
},
|
|
117647
|
+
users: {
|
|
117648
|
+
label: "用户",
|
|
117649
|
+
description: "查看谁在与该智能体对话以及他们的活跃程度。"
|
|
117650
|
+
},
|
|
117651
|
+
topics: {
|
|
117652
|
+
label: "主题",
|
|
117653
|
+
description: "对话中人们最常提及的主题。"
|
|
117654
|
+
},
|
|
117655
|
+
transcripts: {
|
|
117656
|
+
label: "对话记录",
|
|
117657
|
+
description: "逐条阅读完整的对话记录。"
|
|
117658
|
+
},
|
|
117659
|
+
financial: {
|
|
117660
|
+
label: "费用",
|
|
117661
|
+
description: "跟踪令牌用量以及该智能体的花费。"
|
|
117662
|
+
},
|
|
117663
|
+
audit: {
|
|
117664
|
+
label: "审计",
|
|
117665
|
+
description: "查看该智能体的更改和活动日志。"
|
|
117666
|
+
},
|
|
117667
|
+
reports: {
|
|
117668
|
+
label: "数据报告",
|
|
117669
|
+
description: "生成并下载详细报告以供分享或存档。"
|
|
117670
|
+
}
|
|
117671
|
+
}
|
|
117672
|
+
};
|
|
117402
117673
|
var voiceTabLabels = {
|
|
117403
117674
|
header: {
|
|
117404
117675
|
title: "语音",
|
|
117405
117676
|
description: "选择您的智能体使用的声音以及语音通话的工作方式。"
|
|
117406
117677
|
},
|
|
117678
|
+
capability: {
|
|
117679
|
+
title: "语音通话",
|
|
117680
|
+
description: "让用户可以与该智能体语音交谈并听到其回复,就像打电话一样。开启后,可在下方选择声音并微调通话行为。",
|
|
117681
|
+
offHint: "开启后可让用户与该智能体开始语音对话。"
|
|
117682
|
+
},
|
|
117407
117683
|
subTabs: {
|
|
117408
117684
|
voice: "语音",
|
|
117409
117685
|
callConfig: "语音通话"
|
|
@@ -117651,6 +117927,13 @@ var ltiTabLabels = {
|
|
|
117651
117927
|
title: "LTI",
|
|
117652
117928
|
description: "管理此智能体的 LTI 链接、签名密钥、工具和平台端点。"
|
|
117653
117929
|
},
|
|
117930
|
+
capability: {
|
|
117931
|
+
title: "LTI 启动",
|
|
117932
|
+
description: "允许将此智能体添加到学习管理系统(Canvas、Brightspace、Blackboard 或 Moodle),以便学生可以直接在课程中打开它。开启后,可在下方创建您的 LMS 所需的链接、签名密钥和工具。",
|
|
117933
|
+
offHint: "开启后可将此智能体嵌入 LMS 并设置其链接和密钥。",
|
|
117934
|
+
toggleSuccess: "LTI 设置已更新",
|
|
117935
|
+
toggleError: "无法更新 LTI 设置"
|
|
117936
|
+
},
|
|
117654
117937
|
subTabs: {
|
|
117655
117938
|
agentLinks: "链接",
|
|
117656
117939
|
keys: "密钥",
|
|
@@ -118054,6 +118337,7 @@ var zh = {
|
|
|
118054
118337
|
userProfileDropdownIndex: userProfileDropdownIndex,
|
|
118055
118338
|
version: version$3,
|
|
118056
118339
|
voiceTabCallConfigSection: voiceTabCallConfigSection,
|
|
118340
|
+
analyticsTabLabels: analyticsTabLabels,
|
|
118057
118341
|
voiceTabLabels: voiceTabLabels,
|
|
118058
118342
|
voiceTabVoicePicker: voiceTabVoicePicker,
|
|
118059
118343
|
welcomeChatConversationStarters: welcomeChatConversationStarters,
|
|
@@ -173446,6 +173730,10 @@ function Profile({ tenant, username, tenants, onClose, customization = {}, isAdm
|
|
|
173446
173730
|
: activeTab === 'experience' && experienceSubTab === 'resume'
|
|
173447
173731
|
? { onClick: handleAddResume, upload: true, ariaLabel: t('profileIndex.ariaAddResume') }
|
|
173448
173732
|
: null;
|
|
173733
|
+
// Rendered inline on the sub-tabs row (education/experience/resume), pushed to
|
|
173734
|
+
// the far right. `headerAdd` already encodes which sub-tab is active, so this
|
|
173735
|
+
// only appears on the sub-tabs that support adding/uploading.
|
|
173736
|
+
const headerAddButton = headerAdd && (jsx(Button$1, { size: "icon", onClick: headerAdd.onClick, className: "text-gray-700 bg-gradient-to-r from-[#2563EB] to-[#93C5FD] hover:opacity-90 text-white flex-shrink-0", "aria-label": headerAdd.ariaLabel, children: headerAdd.upload ? jsx(Upload, { className: "h-4 w-4" }) : jsx(Plus, { className: "h-4 w-4" }) }));
|
|
173449
173737
|
const tabDescription = (id) => {
|
|
173450
173738
|
const key = (isReadOnly && TAB_DESC_PREVIEW_KEYS[id]) || TAB_DESC_KEYS[id];
|
|
173451
173739
|
return key ? t(`profileIndex.${key}`) : '';
|
|
@@ -173460,10 +173748,10 @@ function Profile({ tenant, username, tenants, onClose, customization = {}, isAdm
|
|
|
173460
173748
|
? 'bg-blue-50 text-blue-700 font-medium'
|
|
173461
173749
|
: 'hover:bg-gray-50 text-gray-700 dark:text-gray-300 hover:text-gray-900 dark:hover:text-gray-100'}`, children: [jsx(tab.renderIcon, { className: "h-5 w-5 mr-3 flex-shrink-0", "aria-hidden": "true" }), jsx("span", { className: "truncate", children: tab.label })] }, tab.id))) }) }) })] }), jsx("nav", { className: "lg:hidden", "aria-label": t('profileIndex.ariaProfileTabsMobile'), children: jsx("div", { className: "w-full justify-start px-6 py-2 bg-white border-b border-gray-200 rounded-none h-auto overflow-x-auto", children: jsx("div", { className: "flex space-x-2", role: "tablist", "aria-orientation": "horizontal", children: TABS.map((tab) => (jsxs("button", { role: "tab", "aria-selected": activeTab === tab.id, "aria-controls": `${tab.id}-tabpanel`, id: `${tab.id}-tab-mobile`, onClick: () => setActiveTab(tab.id), className: `flex items-center gap-2 px-3 py-2 rounded-lg whitespace-nowrap text-sm transition-all ${activeTab === tab.id
|
|
173462
173750
|
? 'bg-blue-50 text-blue-600 font-medium'
|
|
173463
|
-
: 'text-gray-600 hover:bg-gray-50'}`, children: [jsx(tab.renderIcon, { className: "h-4 w-4", "aria-hidden": "true" }), jsx("span", { className: "hidden sm:inline", children: tab.label }), jsx("span", { className: "sm:hidden", children: tab.label })] }, tab.id))) }) }) }), jsxs("div", { className: "flex-1 flex flex-col overflow-hidden", style: { height: '100%' }, children: [jsx("div", { className: "hidden lg:block flex-shrink-0 p-6 border-b border-gray-200 bg-white dark:bg-gray-900", children:
|
|
173751
|
+
: 'text-gray-600 hover:bg-gray-50'}`, children: [jsx(tab.renderIcon, { className: "h-4 w-4", "aria-hidden": "true" }), jsx("span", { className: "hidden sm:inline", children: tab.label }), jsx("span", { className: "sm:hidden", children: tab.label })] }, tab.id))) }) }) }), jsxs("div", { className: "flex-1 flex flex-col overflow-hidden", style: { height: '100%' }, children: [jsx("div", { className: "hidden lg:block flex-shrink-0 p-6 border-b border-gray-200 bg-white dark:bg-gray-900", children: jsx("div", { className: "flex items-center justify-between", children: jsxs("div", { children: [jsx("h3", { className: "text-lg font-medium text-gray-900 dark:text-gray-100 mb-2", children: (_f = (_e = TABS.find((t) => t.id === activeTab)) === null || _e === void 0 ? void 0 : _e.label) !== null && _f !== void 0 ? _f : activeTab }), jsx("p", { className: "text-gray-600 dark:text-gray-400 text-sm", children: tabDescription(activeTab) })] }) }) }), jsxs("div", { className: "flex-1 p-6 space-y-6", style: {
|
|
173464
173752
|
overflowY: 'auto',
|
|
173465
173753
|
overflowX: 'hidden',
|
|
173466
|
-
}, role: "tabpanel", id: `${activeTab}-tabpanel`, "aria-labelledby": `${activeTab}-tab`, tabIndex: 0, children: [jsx("div", { className: "lg:hidden mb-6", children:
|
|
173754
|
+
}, role: "tabpanel", id: `${activeTab}-tabpanel`, "aria-labelledby": `${activeTab}-tab`, tabIndex: 0, children: [jsx("div", { className: "lg:hidden mb-6", children: jsx("div", { className: "flex flex-row items-center sm:justify-between gap-3", children: jsxs("div", { children: [jsx("h3", { className: "text-lg font-medium text-gray-900 dark:text-gray-100 mb-2", children: (_h = (_g = TABS.find((t) => t.id === activeTab)) === null || _g === void 0 ? void 0 : _g.label) !== null && _h !== void 0 ? _h : activeTab }), jsx("p", { className: "text-gray-600 dark:text-gray-400 text-sm", children: tabDescription(activeTab) })] }) }) }), activeTab === 'basic' && (jsx("div", { className: "space-y-6", children: jsxs("form", { onSubmit: (formEvent) => {
|
|
173467
173755
|
formEvent.preventDefault();
|
|
173468
173756
|
formEvent.stopPropagation();
|
|
173469
173757
|
if (isReadOnly)
|
|
@@ -173538,7 +173826,7 @@ function Profile({ tenant, username, tenants, onClose, customization = {}, isAdm
|
|
|
173538
173826
|
var _a;
|
|
173539
173827
|
return (jsxs(Fragment$1, { children: [jsxs("div", { className: "relative mb-0", children: [jsx("div", { className: "absolute inset-y-0 left-4 flex items-center pointer-events-none", "aria-hidden": "true", children: jsx("div", { className: "bg-black text-white rounded w-8 h-8 flex items-center justify-center", children: jsx("span", { className: "font-bold text-sm", children: "X" }) }) }), jsx(Input, { id: "x", className: "w-full bg-gray-50 border-gray-200 focus:ring-blue-500 focus:border-blue-500 text-base py-3 pl-16 h-10", placeholder: t('profileIndex.placeholderX'), value: field.state.value, onChange: (e) => handleSocialLinkChange(e.target.value, field.handleChange, X_URL_PREFIX), disabled: socialForm.state.isSubmitting || isReadOnly })] }), jsx("p", { className: "text-red-500 dark:text-gray-400 text-sm", role: ((_a = field.state.meta.errors) === null || _a === void 0 ? void 0 : _a.length) ? 'alert' : undefined, "aria-live": "polite", children: field.state.meta.errors })] }));
|
|
173540
173828
|
},
|
|
173541
|
-
})] })] }) })), activeTab === 'education' && (jsxs(Tabs, { value: educationSubTab, onValueChange: setEducationSubTab, className: "space-y-4", children: [jsxs(TabsList, { children: [jsx(TabsTrigger, { value: "education", children: t('profileIndex.tabEducation') }), jsx(TabsTrigger, { value: "credentials", children: t('gradebookGradebookTab.typeCredentials') }), jsx(TabsTrigger, { value: "skills", children: t('gradebookGradebookTab.typeSkills') })] }), jsx(TabsContent, { value: "education", children: jsx(EducationTab, { org: tenant, username: username }) }), jsx(TabsContent, { value: "credentials", children: jsx(CredentialsList, { org: tenant, username: username }) }), jsx(TabsContent, { value: "skills", children: jsx(SkillsList, { org: tenant, username: username }) })] })), activeTab === 'gradebook' && jsx(GradebookTab, { org: tenant, username: username }), activeTab === 'experience' && (jsxs(Tabs, { value: experienceSubTab, onValueChange: setExperienceSubTab, className: "space-y-4", children: [jsxs(TabsList, { children: [jsx(TabsTrigger, { value: "experience", children: t('profileIndex.tabExperience') }), jsx(TabsTrigger, { value: "resume", children: t('profileIndex.tabResume') })] }), jsx(TabsContent, { value: "experience", children: jsx(ExperienceTab, { org: tenant, username: username }) }), jsx(TabsContent, { value: "resume", children: jsx(ResumeTab, { org: tenant, username: username }) })] })), activeTab === 'purchases' && jsx(PurchasesTab, { org: tenant, username: username }), activeTab === 'memory' && jsx(MemoryTab, { org: tenant, username: username }), activeTab === 'privacy' && jsx(ChatPrivacyTab, { org: tenant, username: username }), !isReadOnly && activeTab === 'security' && (jsx(Security, { app: currentSPA || '', email: (userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.email) || '', platformKey: tenant, onAccountDeleted: onAccountDeleted })), activeTab === 'advanced' && (localLLMProps || systemControlProps) && (jsxs("div", { className: "space-y-6", children: [localLLMProps && (jsx(LocalModelsContent, { isAvailable: localLLMProps.isAvailable, state: localLLMProps.state, ollamaStatus: localLLMProps.ollamaStatus, systemMemory: localLLMProps.systemMemory, isUsingFoundry: localLLMProps.isUsingFoundry, foundryModels: localLLMProps.foundryModels, selectedFoundryModel: localLLMProps.selectedFoundryModel, foundryStatus: localLLMProps.foundryStatus, onStartDownload: localLLMProps.onStartDownload, onCancelDownload: localLLMProps.onCancelDownload, onInstallOllama: localLLMProps.onInstallOllama, onStopManager: localLLMProps.onStopManager, onInstallFoundry: localLLMProps.onInstallFoundry, onCheckStatus: localLLMProps.onCheckStatus, onResetState: localLLMProps.onResetState, onSelectFoundryModel: localLLMProps.onSelectFoundryModel })), systemControlProps && (jsx(SystemControlContent, { isAvailable: systemControlProps.isAvailable, state: systemControlProps.state, status: systemControlProps.status, requiredSizeGb: systemControlProps.requiredSizeGb, ollamaStatus: systemControlProps.ollamaStatus, systemMemory: systemControlProps.systemMemory, accessibilityPermission: systemControlProps.accessibilityPermission, onInstall: systemControlProps.onInstall, onStop: systemControlProps.onStop, onCheckStatus: systemControlProps.onCheckStatus, onResetState: systemControlProps.onResetState, onRequestAccessibilityPermission: systemControlProps.onRequestAccessibilityPermission, onDownloadModel: systemControlProps.onDownloadModel }))] }))] }), !isReadOnly && ['basic', 'social'].includes(activeTab) && (jsx("div", { className: "flex-shrink-0 border-t border-gray-200 p-6 bg-white dark:bg-gray-900", children: jsxs("div", { className: "flex justify-end gap-3", children: [jsx(Button$1, { onClick: onClose, variant: "outline", children: t('profileIndex.buttonCancel') }), jsx(Button$1, { onClick: () => {
|
|
173829
|
+
})] })] }) })), activeTab === 'education' && (jsxs(Tabs, { value: educationSubTab, onValueChange: setEducationSubTab, className: "space-y-4", children: [jsxs("div", { className: "flex items-center justify-between gap-3", children: [jsxs(TabsList, { children: [jsx(TabsTrigger, { value: "education", children: t('profileIndex.tabEducation') }), jsx(TabsTrigger, { value: "credentials", children: t('gradebookGradebookTab.typeCredentials') }), jsx(TabsTrigger, { value: "skills", children: t('gradebookGradebookTab.typeSkills') })] }), headerAddButton] }), jsx(TabsContent, { value: "education", children: jsx(EducationTab, { org: tenant, username: username }) }), jsx(TabsContent, { value: "credentials", children: jsx(CredentialsList, { org: tenant, username: username }) }), jsx(TabsContent, { value: "skills", children: jsx(SkillsList, { org: tenant, username: username }) })] })), activeTab === 'gradebook' && jsx(GradebookTab, { org: tenant, username: username }), activeTab === 'experience' && (jsxs(Tabs, { value: experienceSubTab, onValueChange: setExperienceSubTab, className: "space-y-4", children: [jsxs("div", { className: "flex items-center justify-between gap-3", children: [jsxs(TabsList, { children: [jsx(TabsTrigger, { value: "experience", children: t('profileIndex.tabExperience') }), jsx(TabsTrigger, { value: "resume", children: t('profileIndex.tabResume') })] }), headerAddButton] }), jsx(TabsContent, { value: "experience", children: jsx(ExperienceTab, { org: tenant, username: username }) }), jsx(TabsContent, { value: "resume", children: jsx(ResumeTab, { org: tenant, username: username }) })] })), activeTab === 'purchases' && jsx(PurchasesTab, { org: tenant, username: username }), activeTab === 'memory' && jsx(MemoryTab, { org: tenant, username: username }), activeTab === 'privacy' && jsx(ChatPrivacyTab, { org: tenant, username: username }), !isReadOnly && activeTab === 'security' && (jsx(Security, { app: currentSPA || '', email: (userMetadata === null || userMetadata === void 0 ? void 0 : userMetadata.email) || '', platformKey: tenant, onAccountDeleted: onAccountDeleted })), activeTab === 'advanced' && (localLLMProps || systemControlProps) && (jsxs("div", { className: "space-y-6", children: [localLLMProps && (jsx(LocalModelsContent, { isAvailable: localLLMProps.isAvailable, state: localLLMProps.state, ollamaStatus: localLLMProps.ollamaStatus, systemMemory: localLLMProps.systemMemory, isUsingFoundry: localLLMProps.isUsingFoundry, foundryModels: localLLMProps.foundryModels, selectedFoundryModel: localLLMProps.selectedFoundryModel, foundryStatus: localLLMProps.foundryStatus, onStartDownload: localLLMProps.onStartDownload, onCancelDownload: localLLMProps.onCancelDownload, onInstallOllama: localLLMProps.onInstallOllama, onStopManager: localLLMProps.onStopManager, onInstallFoundry: localLLMProps.onInstallFoundry, onCheckStatus: localLLMProps.onCheckStatus, onResetState: localLLMProps.onResetState, onSelectFoundryModel: localLLMProps.onSelectFoundryModel })), systemControlProps && (jsx(SystemControlContent, { isAvailable: systemControlProps.isAvailable, state: systemControlProps.state, status: systemControlProps.status, requiredSizeGb: systemControlProps.requiredSizeGb, ollamaStatus: systemControlProps.ollamaStatus, systemMemory: systemControlProps.systemMemory, accessibilityPermission: systemControlProps.accessibilityPermission, onInstall: systemControlProps.onInstall, onStop: systemControlProps.onStop, onCheckStatus: systemControlProps.onCheckStatus, onResetState: systemControlProps.onResetState, onRequestAccessibilityPermission: systemControlProps.onRequestAccessibilityPermission, onDownloadModel: systemControlProps.onDownloadModel }))] }))] }), !isReadOnly && ['basic', 'social'].includes(activeTab) && (jsx("div", { className: "flex-shrink-0 border-t border-gray-200 p-6 bg-white dark:bg-gray-900", children: jsxs("div", { className: "flex justify-end gap-3", children: [jsx(Button$1, { onClick: onClose, variant: "outline", children: t('profileIndex.buttonCancel') }), jsx(Button$1, { onClick: () => {
|
|
173542
173830
|
if (activeTab === 'basic') {
|
|
173543
173831
|
basicForm.handleSubmit();
|
|
173544
173832
|
}
|
|
@@ -183537,26 +183825,19 @@ const ChatPrivacyContent = ({ platformKey, username }) => {
|
|
|
183537
183825
|
};
|
|
183538
183826
|
|
|
183539
183827
|
function StringSettingInput({ value, defaultValue, disabled, onSave, }) {
|
|
183540
|
-
const
|
|
183541
|
-
const
|
|
183828
|
+
const t = useT();
|
|
183829
|
+
const savedValue = value || defaultValue;
|
|
183830
|
+
const [localValue, setLocalValue] = useState(savedValue);
|
|
183542
183831
|
useEffect(() => {
|
|
183543
|
-
setLocalValue(
|
|
183544
|
-
}, [
|
|
183545
|
-
const
|
|
183546
|
-
|
|
183547
|
-
if (
|
|
183548
|
-
|
|
183549
|
-
|
|
183550
|
-
onSave(newValue);
|
|
183551
|
-
}, 800);
|
|
183832
|
+
setLocalValue(savedValue);
|
|
183833
|
+
}, [savedValue]);
|
|
183834
|
+
const isDirty = localValue !== savedValue;
|
|
183835
|
+
const handleSave = () => {
|
|
183836
|
+
if (!isDirty || disabled)
|
|
183837
|
+
return;
|
|
183838
|
+
onSave(localValue);
|
|
183552
183839
|
};
|
|
183553
|
-
|
|
183554
|
-
return () => {
|
|
183555
|
-
if (debounceRef.current)
|
|
183556
|
-
clearTimeout(debounceRef.current);
|
|
183557
|
-
};
|
|
183558
|
-
}, []);
|
|
183559
|
-
return (jsxs("div", { className: "flex items-center gap-2", children: [jsx(Input, { value: localValue, onChange: (e) => handleChange(e.target.value), disabled: disabled, className: "max-w-[240px] w-[110px] sm:w-[230px] font-medium text-[#646464] text-sm" }), disabled && (jsx("div", { className: "w-4 h-4 border-2 border-blue-500 border-t-transparent rounded-full animate-spin" }))] }));
|
|
183840
|
+
return (jsxs("div", { className: "flex items-center gap-2", children: [isDirty && (jsx(Button$1, { type: "button", size: "sm", onClick: handleSave, disabled: disabled, className: "h-8 bg-blue-500 hover:bg-blue-600 text-white", children: t('advancedAdvanced.save') })), jsx(Input, { value: localValue, onChange: (e) => setLocalValue(e.target.value), disabled: disabled, className: "max-w-[240px] w-[110px] sm:w-[230px] font-medium text-[#646464] text-sm" }), disabled && (jsx("div", { className: "w-4 h-4 border-2 border-blue-500 border-t-transparent rounded-full animate-spin" }))] }));
|
|
183560
183841
|
}
|
|
183561
183842
|
function AdvancedTab({ platformKey, username, currentSPA, authURL, currentPlatformBaseDomain, }) {
|
|
183562
183843
|
const t = useT();
|
|
@@ -183602,6 +183883,7 @@ function AdvancedTab({ platformKey, username, currentSPA, authURL, currentPlatfo
|
|
|
183602
183883
|
'overall_default_mentor',
|
|
183603
183884
|
'help_center_url',
|
|
183604
183885
|
'monetization_base_path',
|
|
183886
|
+
'skills_welcome_tagline',
|
|
183605
183887
|
];
|
|
183606
183888
|
const configurableMetadatas = allMetadatas.filter((metadata) => (typeof metadata.defaultValue === 'boolean' ||
|
|
183607
183889
|
(typeof metadata.defaultValue === 'string' &&
|
|
@@ -258933,6 +259215,129 @@ function AgentMemoryTab({ labels: labelsOverride } = {}) {
|
|
|
258933
259215
|
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
259216
|
}
|
|
258935
259217
|
|
|
259218
|
+
/**
|
|
259219
|
+
* Icon per analytics `value` — icons carry no user-facing text so they live
|
|
259220
|
+
* outside i18n.
|
|
259221
|
+
*/
|
|
259222
|
+
const ANALYTICS_HUB_ICONS = {
|
|
259223
|
+
'': LayoutDashboard,
|
|
259224
|
+
users: Users,
|
|
259225
|
+
topics: MessageSquare,
|
|
259226
|
+
transcripts: FileText,
|
|
259227
|
+
financial: DollarSign,
|
|
259228
|
+
audit: ScrollText,
|
|
259229
|
+
reports: ChartColumn,
|
|
259230
|
+
};
|
|
259231
|
+
/**
|
|
259232
|
+
* Canonical order + the i18n key that supplies each destination's copy. The
|
|
259233
|
+
* route `value` mirrors the SDK `AnalyticsLayout` (Overview, Users, Topics,
|
|
259234
|
+
* Transcripts, Costs=`financial`, Audit, Data Reports=`reports`).
|
|
259235
|
+
*/
|
|
259236
|
+
const ANALYTICS_HUB_ORDER = [
|
|
259237
|
+
{ value: '', key: 'overview' },
|
|
259238
|
+
{ value: 'users', key: 'users' },
|
|
259239
|
+
{ value: 'topics', key: 'topics' },
|
|
259240
|
+
{ value: 'transcripts', key: 'transcripts' },
|
|
259241
|
+
{ value: 'financial', key: 'financial' },
|
|
259242
|
+
{ value: 'audit', key: 'audit' },
|
|
259243
|
+
{ value: 'reports', key: 'reports' },
|
|
259244
|
+
];
|
|
259245
|
+
/**
|
|
259246
|
+
* English fallback bundle. Rendered copy comes from i18n via
|
|
259247
|
+
* {@link buildAnalyticsTabLabels}; this is only used when no translate
|
|
259248
|
+
* function is available (e.g. outside an i18n provider) and to seed
|
|
259249
|
+
* {@link DEFAULT_ANALYTICS_HUB_TABS}. Mirrors the pattern of the other tab
|
|
259250
|
+
* label bundles.
|
|
259251
|
+
*/
|
|
259252
|
+
const AGENT_ANALYTICS_TAB_LABELS = {
|
|
259253
|
+
header: {
|
|
259254
|
+
title: 'Analytics',
|
|
259255
|
+
description: 'Usage reports and insights for this agent.',
|
|
259256
|
+
},
|
|
259257
|
+
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.",
|
|
259258
|
+
openAria: (label) => `Open ${label}`,
|
|
259259
|
+
tabs: {
|
|
259260
|
+
overview: {
|
|
259261
|
+
label: 'Overview',
|
|
259262
|
+
description: 'A high-level snapshot of usage and engagement over time.',
|
|
259263
|
+
},
|
|
259264
|
+
users: {
|
|
259265
|
+
label: 'Users',
|
|
259266
|
+
description: "See who's chatting with this agent and how active they are.",
|
|
259267
|
+
},
|
|
259268
|
+
topics: {
|
|
259269
|
+
label: 'Topics',
|
|
259270
|
+
description: 'The subjects people bring up most across conversations.',
|
|
259271
|
+
},
|
|
259272
|
+
transcripts: {
|
|
259273
|
+
label: 'Transcripts',
|
|
259274
|
+
description: 'Read full conversation transcripts message by message.',
|
|
259275
|
+
},
|
|
259276
|
+
financial: {
|
|
259277
|
+
label: 'Costs',
|
|
259278
|
+
description: 'Track token usage and what this agent is costing you.',
|
|
259279
|
+
},
|
|
259280
|
+
audit: {
|
|
259281
|
+
label: 'Audit',
|
|
259282
|
+
description: 'Review the log of changes and activity for this agent.',
|
|
259283
|
+
},
|
|
259284
|
+
reports: {
|
|
259285
|
+
label: 'Data Reports',
|
|
259286
|
+
description: 'Generate and download detailed reports to share or archive.',
|
|
259287
|
+
},
|
|
259288
|
+
},
|
|
259289
|
+
};
|
|
259290
|
+
function buildAnalyticsTabLabels(t) {
|
|
259291
|
+
const tabs = {};
|
|
259292
|
+
for (const { key } of ANALYTICS_HUB_ORDER) {
|
|
259293
|
+
tabs[key] = {
|
|
259294
|
+
label: t(`analyticsTabLabels.tabs.${key}.label`),
|
|
259295
|
+
description: t(`analyticsTabLabels.tabs.${key}.description`),
|
|
259296
|
+
};
|
|
259297
|
+
}
|
|
259298
|
+
return {
|
|
259299
|
+
header: {
|
|
259300
|
+
title: t('analyticsTabLabels.header.title'),
|
|
259301
|
+
description: t('analyticsTabLabels.header.description'),
|
|
259302
|
+
},
|
|
259303
|
+
infoBox: t('analyticsTabLabels.infoBox'),
|
|
259304
|
+
openAria: (label) => t('analyticsTabLabels.openAria', { label }),
|
|
259305
|
+
tabs,
|
|
259306
|
+
};
|
|
259307
|
+
}
|
|
259308
|
+
function resolveAnalyticsTabLabels(t) {
|
|
259309
|
+
return t ? buildAnalyticsTabLabels(t) : AGENT_ANALYTICS_TAB_LABELS;
|
|
259310
|
+
}
|
|
259311
|
+
/** Build the destination list (value + icon + copy) from a labels bundle. */
|
|
259312
|
+
function buildHubTabs(labels) {
|
|
259313
|
+
return ANALYTICS_HUB_ORDER.map(({ value, key }) => ({
|
|
259314
|
+
value,
|
|
259315
|
+
label: labels.tabs[key].label,
|
|
259316
|
+
description: labels.tabs[key].description,
|
|
259317
|
+
icon: ANALYTICS_HUB_ICONS[value],
|
|
259318
|
+
}));
|
|
259319
|
+
}
|
|
259320
|
+
/** English default destinations — see {@link AGENT_ANALYTICS_TAB_LABELS}. */
|
|
259321
|
+
const DEFAULT_ANALYTICS_HUB_TABS = buildHubTabs(AGENT_ANALYTICS_TAB_LABELS);
|
|
259322
|
+
/**
|
|
259323
|
+
* Analytics "hub" rendered inside the Edit-Agent modal. Instead of embedding
|
|
259324
|
+
* the full analytics dashboards in the dialog, it presents each analytics
|
|
259325
|
+
* destination as a card; activating one hands the value back to the host,
|
|
259326
|
+
* which navigates to the corresponding full-page analytics view.
|
|
259327
|
+
*/
|
|
259328
|
+
function AgentAnalyticsTab({ tabs, excludeTabs = [], onNavigate }) {
|
|
259329
|
+
const t = useT();
|
|
259330
|
+
const labels = React__default.useMemo(() => resolveAnalyticsTabLabels(t), [t]);
|
|
259331
|
+
const defaultHubTabs = React__default.useMemo(() => buildHubTabs(labels), [labels]);
|
|
259332
|
+
const hubTabs = tabs !== null && tabs !== void 0 ? tabs : defaultHubTabs;
|
|
259333
|
+
const visibleTabs = hubTabs.filter((tab) => !excludeTabs.includes(tab.value));
|
|
259334
|
+
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) => {
|
|
259335
|
+
var _a;
|
|
259336
|
+
const Icon = (_a = tab.icon) !== null && _a !== void 0 ? _a : LayoutDashboard;
|
|
259337
|
+
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'));
|
|
259338
|
+
}) })] })] }));
|
|
259339
|
+
}
|
|
259340
|
+
|
|
258936
259341
|
const AUTH_SCOPE = {
|
|
258937
259342
|
TENANT: 'tenant',
|
|
258938
259343
|
MENTOR: 'mentor',
|
|
@@ -260931,11 +261336,30 @@ function AgentSafetyTab({ renderPromptContent, FlaggedPromptsModal, showFlaggedP
|
|
|
260931
261336
|
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
261337
|
}
|
|
260933
261338
|
|
|
261339
|
+
/**
|
|
261340
|
+
* Reusable header used at the top of every capability-gated agent-settings
|
|
261341
|
+
* tab. It surfaces the capability's on/off toggle (previously buried in the
|
|
261342
|
+
* Settings → Capabilities list) right where the feature is configured, with a
|
|
261343
|
+
* naive-friendly explanation.
|
|
261344
|
+
*
|
|
261345
|
+
* The configuration UI below is always rendered so admins can preview what
|
|
261346
|
+
* they'll get, but it's grayed out and made inert (`pointer-events-none`,
|
|
261347
|
+
* `aria-hidden`) until the capability is switched on.
|
|
261348
|
+
*/
|
|
261349
|
+
function CapabilityGate({ title, description, enabled, onToggle, disabled = false, ariaLabel, offHint, toggleTestId, children, }) {
|
|
261350
|
+
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 })] }));
|
|
261351
|
+
}
|
|
261352
|
+
|
|
260934
261353
|
const AGENT_PRIVACY_TAB_LABELS = {
|
|
260935
261354
|
header: {
|
|
260936
261355
|
title: 'Privacy',
|
|
260937
261356
|
description: 'Detect and filter personally identifiable information from chat messages.',
|
|
260938
261357
|
},
|
|
261358
|
+
capability: {
|
|
261359
|
+
title: 'PII filtering',
|
|
261360
|
+
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.',
|
|
261361
|
+
offHint: 'Turn it on to detect and hide personal information in messages.',
|
|
261362
|
+
},
|
|
260939
261363
|
fields: {
|
|
260940
261364
|
enableRouter: {
|
|
260941
261365
|
label: 'Enable Privacy Router',
|
|
@@ -260948,11 +261372,13 @@ const AGENT_PRIVACY_TAB_LABELS = {
|
|
|
260948
261372
|
redact: 'Redact',
|
|
260949
261373
|
mask: 'Mask',
|
|
260950
261374
|
block: 'Block',
|
|
261375
|
+
allow: 'Allow',
|
|
260951
261376
|
},
|
|
260952
261377
|
descriptions: {
|
|
260953
261378
|
redact: 'PII is replaced with its type — e.g. "Email [EMAIL_ADDRESS]".',
|
|
260954
261379
|
mask: 'PII is hidden behind asterisks — e.g. "Email ***********".',
|
|
260955
261380
|
block: 'The message is rejected and your block message is shown to the user.',
|
|
261381
|
+
allow: 'PII is detected but left untouched — the message passes through unchanged. Use this to monitor or audit personal information without altering messages.',
|
|
260956
261382
|
},
|
|
260957
261383
|
},
|
|
260958
261384
|
blockMessage: {
|
|
@@ -260995,6 +261421,11 @@ function buildPrivacyTabLabels(t) {
|
|
|
260995
261421
|
title: t('privacyTabLabels.header.title'),
|
|
260996
261422
|
description: t('privacyTabLabels.header.description'),
|
|
260997
261423
|
},
|
|
261424
|
+
capability: {
|
|
261425
|
+
title: t('privacyTabLabels.capability.title'),
|
|
261426
|
+
description: t('privacyTabLabels.capability.description'),
|
|
261427
|
+
offHint: t('privacyTabLabels.capability.offHint'),
|
|
261428
|
+
},
|
|
260998
261429
|
fields: {
|
|
260999
261430
|
enableRouter: {
|
|
261000
261431
|
label: t('privacyTabLabels.fields.enableRouter.label'),
|
|
@@ -261007,11 +261438,13 @@ function buildPrivacyTabLabels(t) {
|
|
|
261007
261438
|
redact: t('privacyTabLabels.fields.action.options.redact'),
|
|
261008
261439
|
mask: t('privacyTabLabels.fields.action.options.mask'),
|
|
261009
261440
|
block: t('privacyTabLabels.fields.action.options.block'),
|
|
261441
|
+
allow: t('privacyTabLabels.fields.action.options.allow'),
|
|
261010
261442
|
},
|
|
261011
261443
|
descriptions: {
|
|
261012
261444
|
redact: t('privacyTabLabels.fields.action.descriptions.redact'),
|
|
261013
261445
|
mask: t('privacyTabLabels.fields.action.descriptions.mask'),
|
|
261014
261446
|
block: t('privacyTabLabels.fields.action.descriptions.block'),
|
|
261447
|
+
allow: t('privacyTabLabels.fields.action.descriptions.allow'),
|
|
261015
261448
|
},
|
|
261016
261449
|
},
|
|
261017
261450
|
blockMessage: {
|
|
@@ -261120,24 +261553,24 @@ function AgentPrivacyTab({ labels: labelsOverride, tenantKey: tenantKeyProp, men
|
|
|
261120
261553
|
: entities.filter((e) => e !== entity);
|
|
261121
261554
|
void updateField('privacy_entities', next);
|
|
261122
261555
|
}
|
|
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
|
-
|
|
261556
|
+
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",
|
|
261557
|
+
// @ts-ignore
|
|
261558
|
+
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",
|
|
261559
|
+
// @ts-ignore
|
|
261560
|
+
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: () => {
|
|
261561
|
+
if (localResponse !== responseText) {
|
|
261562
|
+
void updateField('privacy_response', localResponse);
|
|
261563
|
+
}
|
|
261564
|
+
}, placeholder: labels.fields.blockMessage.placeholder, className: "min-h-[100px]", disabled: isDisabled || disabled, "aria-label": labels.fields.blockMessage.label })] })) })), jsx(WithFormPermissions, { name: "privacy_entities",
|
|
261565
|
+
// @ts-ignore
|
|
261566
|
+
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) => {
|
|
261567
|
+
var _a;
|
|
261568
|
+
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));
|
|
261569
|
+
}) }), entities.length === 0 && (jsx("p", { className: "text-xs text-gray-500", children: labels.fields.entities.emptyHint }))] })) }), jsx(WithFormPermissions, { name: "enable_privacy_output_filter",
|
|
261570
|
+
// @ts-ignore
|
|
261571
|
+
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
|
|
261572
|
+
? t('tabsPrivacyTab.outputFilterAriaLabelEnabled')
|
|
261573
|
+
: t('tabsPrivacyTab.outputFilterAriaLabelDisabled') })] })) })] }) }) })] }));
|
|
261141
261574
|
}
|
|
261142
261575
|
function FieldTooltip$1({ text }) {
|
|
261143
261576
|
const t = useT();
|
|
@@ -261154,6 +261587,11 @@ const AGENT_VOICE_TAB_LABELS = {
|
|
|
261154
261587
|
title: 'Voice',
|
|
261155
261588
|
description: 'Choose the voice your agent uses and how voice calls work.',
|
|
261156
261589
|
},
|
|
261590
|
+
capability: {
|
|
261591
|
+
title: 'Voice calls',
|
|
261592
|
+
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.',
|
|
261593
|
+
offHint: 'Turn it on to let people start voice conversations with this agent.',
|
|
261594
|
+
},
|
|
261157
261595
|
subTabs: {
|
|
261158
261596
|
voice: 'Voice',
|
|
261159
261597
|
callConfig: 'Voice call',
|
|
@@ -261247,6 +261685,11 @@ function buildVoiceTabLabels(t) {
|
|
|
261247
261685
|
title: t('voiceTabLabels.header.title'),
|
|
261248
261686
|
description: t('voiceTabLabels.header.description'),
|
|
261249
261687
|
},
|
|
261688
|
+
capability: {
|
|
261689
|
+
title: t('voiceTabLabels.capability.title'),
|
|
261690
|
+
description: t('voiceTabLabels.capability.description'),
|
|
261691
|
+
offHint: t('voiceTabLabels.capability.offHint'),
|
|
261692
|
+
},
|
|
261250
261693
|
subTabs: {
|
|
261251
261694
|
voice: t('voiceTabLabels.subTabs.voice'),
|
|
261252
261695
|
callConfig: t('voiceTabLabels.subTabs.callConfig'),
|
|
@@ -261842,7 +262285,7 @@ function readVoiceName(value) {
|
|
|
261842
262285
|
return null;
|
|
261843
262286
|
}
|
|
261844
262287
|
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;
|
|
262288
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
|
|
261846
262289
|
const ctx = useAgentSettingsOptional();
|
|
261847
262290
|
const tenantKey = (_a = tenantKeyProp !== null && tenantKeyProp !== void 0 ? tenantKeyProp : ctx === null || ctx === void 0 ? void 0 : ctx.tenantKey) !== null && _a !== void 0 ? _a : '';
|
|
261848
262291
|
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 +262333,37 @@ function AgentVoiceTab({ labels: labelsOverride, defaultSubTab = 'voice', render
|
|
|
261890
262333
|
const effectiveOpenaiVoice = (_h = pickedOpenaiVoice !== null && pickedOpenaiVoice !== void 0 ? pickedOpenaiVoice : resolvedOpenaiVoice) !== null && _h !== void 0 ? _h : null;
|
|
261891
262334
|
const effectiveGoogleVoice = (_j = pickedGoogleVoice !== null && pickedGoogleVoice !== void 0 ? pickedGoogleVoice : resolvedGoogleVoice) !== null && _j !== void 0 ? _j : null;
|
|
261892
262335
|
const [editMentor, { isLoading: isSavingMentor }] = useEditMentorMutation();
|
|
262336
|
+
// "Enable voice calls" master toggle. Optimistic local mirror of the
|
|
262337
|
+
// server value so the switch responds instantly; re-synced whenever the
|
|
262338
|
+
// settings response changes.
|
|
262339
|
+
const serverVoiceCallEnabled = (_k = mentorSettings === null || mentorSettings === void 0 ? void 0 : mentorSettings.show_voice_call) !== null && _k !== void 0 ? _k : true;
|
|
262340
|
+
const [voiceCallEnabled, setVoiceCallEnabled] = React__default.useState(serverVoiceCallEnabled);
|
|
262341
|
+
const [isTogglingVoiceCall, setIsTogglingVoiceCall] = React__default.useState(false);
|
|
262342
|
+
React__default.useEffect(() => {
|
|
262343
|
+
setVoiceCallEnabled(serverVoiceCallEnabled);
|
|
262344
|
+
}, [serverVoiceCallEnabled]);
|
|
262345
|
+
const handleToggleVoiceCall = async (checked) => {
|
|
262346
|
+
setVoiceCallEnabled(checked); // optimistic
|
|
262347
|
+
setIsTogglingVoiceCall(true);
|
|
262348
|
+
try {
|
|
262349
|
+
await editMentor({
|
|
262350
|
+
mentor: mentorId,
|
|
262351
|
+
org: tenantKey,
|
|
262352
|
+
// @ts-expect-error userId is accepted at runtime
|
|
262353
|
+
userId: username,
|
|
262354
|
+
formData: { show_voice_call: checked },
|
|
262355
|
+
}).unwrap();
|
|
262356
|
+
toast.success(labels.toasts.voiceSaved);
|
|
262357
|
+
}
|
|
262358
|
+
catch (error) {
|
|
262359
|
+
console.error('[AgentVoiceTab] toggle voice calls error', error);
|
|
262360
|
+
setVoiceCallEnabled(!checked); // roll back
|
|
262361
|
+
toast.error(labels.toasts.voiceError);
|
|
262362
|
+
}
|
|
262363
|
+
finally {
|
|
262364
|
+
setIsTogglingVoiceCall(false);
|
|
262365
|
+
}
|
|
262366
|
+
};
|
|
261893
262367
|
const isDisabled = isMentorSettingsLoading || isSavingMentor;
|
|
261894
262368
|
const isDirty = provider !== initialProvider || pickedOpenaiVoice != null || pickedGoogleVoice != null;
|
|
261895
262369
|
/**
|
|
@@ -261955,22 +262429,24 @@ function AgentVoiceTab({ labels: labelsOverride, defaultSubTab = 'voice', render
|
|
|
261955
262429
|
else if (provider === 'google')
|
|
261956
262430
|
setPickedGoogleVoice(voice);
|
|
261957
262431
|
};
|
|
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
|
-
|
|
262432
|
+
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",
|
|
262433
|
+
// @ts-expect-error permissions.field is opaque
|
|
262434
|
+
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) => {
|
|
262435
|
+
const isSelected = provider === option.value;
|
|
262436
|
+
const isDisabledOption = isDisabled || disabled;
|
|
262437
|
+
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
|
|
262438
|
+
? 'border-blue-500 bg-blue-50/40'
|
|
262439
|
+
: '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));
|
|
262440
|
+
}) })] })) }), (provider === 'openai' || provider === 'google') && (jsx(WithFormPermissions, { name: provider === 'openai' ? 'openai_voice' : 'google_voice',
|
|
262441
|
+
// @ts-expect-error permissions.field is opaque
|
|
262442
|
+
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', {
|
|
262443
|
+
voiceType: labels.mentorVoice.voicePickerLabel[provider],
|
|
262444
|
+
}), 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
|
|
262445
|
+
? labels.mentorVoice.savingButton
|
|
262446
|
+
: 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: {
|
|
262447
|
+
saved: labels.toasts.callConfigSaved,
|
|
262448
|
+
error: labels.toasts.callConfigError,
|
|
262449
|
+
} }))] })] }) })) })] }));
|
|
261974
262450
|
}
|
|
261975
262451
|
function FieldTooltip({ text }) {
|
|
261976
262452
|
const t = useT();
|
|
@@ -261995,6 +262471,11 @@ const AGENT_SCREENSHARE_TAB_LABELS = {
|
|
|
261995
262471
|
title: 'Screen Share',
|
|
261996
262472
|
description: 'How your agent behaves when a user shares their screen during a voice call.',
|
|
261997
262473
|
},
|
|
262474
|
+
capability: {
|
|
262475
|
+
title: 'Screen sharing',
|
|
262476
|
+
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.",
|
|
262477
|
+
offHint: 'Turn it on to let people share their screen during a call and edit these prompts.',
|
|
262478
|
+
},
|
|
261998
262479
|
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
262480
|
fields: {
|
|
262000
262481
|
systemPrompt: {
|
|
@@ -262019,6 +262500,11 @@ function buildScreenShareTabLabels(t) {
|
|
|
262019
262500
|
title: t('screenshareTabLabels.header.title'),
|
|
262020
262501
|
description: t('screenshareTabLabels.header.description'),
|
|
262021
262502
|
},
|
|
262503
|
+
capability: {
|
|
262504
|
+
title: t('screenshareTabLabels.capability.title'),
|
|
262505
|
+
description: t('screenshareTabLabels.capability.description'),
|
|
262506
|
+
offHint: t('screenshareTabLabels.capability.offHint'),
|
|
262507
|
+
},
|
|
262022
262508
|
disabledHint: t('screenshareTabLabels.disabledHint'),
|
|
262023
262509
|
fields: {
|
|
262024
262510
|
systemPrompt: {
|
|
@@ -262080,6 +262566,13 @@ function AgentScreenShareTab({ labels: labelsOverride, renderPromptContent, tena
|
|
|
262080
262566
|
const initialSystemPrompt = (_e = existing === null || existing === void 0 ? void 0 : existing.screensharing_system_prompt) !== null && _e !== void 0 ? _e : '';
|
|
262081
262567
|
const initialProactivePrompt = (_f = existing === null || existing === void 0 ? void 0 : existing.screensharing_proactive_prompt) !== null && _f !== void 0 ? _f : '';
|
|
262082
262568
|
const enableVideo = (existing === null || existing === void 0 ? void 0 : existing.enable_video) === true;
|
|
262569
|
+
// "Enable screen sharing" master toggle. Optimistic local mirror of
|
|
262570
|
+
// `enable_video` on the CallConfiguration so the switch responds instantly.
|
|
262571
|
+
const [screenShareEnabled, setScreenShareEnabled] = React__default.useState(enableVideo);
|
|
262572
|
+
const [isTogglingScreenShare, setIsTogglingScreenShare] = React__default.useState(false);
|
|
262573
|
+
React__default.useEffect(() => {
|
|
262574
|
+
setScreenShareEnabled(enableVideo);
|
|
262575
|
+
}, [enableVideo]);
|
|
262083
262576
|
const [systemPrompt, setSystemPrompt] = React__default.useState(initialSystemPrompt);
|
|
262084
262577
|
const [proactivePrompt, setProactivePrompt] = React__default.useState(initialProactivePrompt);
|
|
262085
262578
|
const [selectedPrompt, setSelectedPrompt] = React__default.useState(null);
|
|
@@ -262123,6 +262616,43 @@ function AgentScreenShareTab({ labels: labelsOverride, renderPromptContent, tena
|
|
|
262123
262616
|
toast.error(labels.toasts.error);
|
|
262124
262617
|
}
|
|
262125
262618
|
};
|
|
262619
|
+
const handleToggleScreenShare = async (checked) => {
|
|
262620
|
+
setScreenShareEnabled(checked); // optimistic
|
|
262621
|
+
setIsTogglingScreenShare(true);
|
|
262622
|
+
try {
|
|
262623
|
+
if (existing === null || existing === void 0 ? void 0 : existing.id) {
|
|
262624
|
+
await updateCallConfig({
|
|
262625
|
+
org: tenantKey,
|
|
262626
|
+
userId: username,
|
|
262627
|
+
id: existing.id,
|
|
262628
|
+
requestBody: { enable_video: checked },
|
|
262629
|
+
}).unwrap();
|
|
262630
|
+
}
|
|
262631
|
+
else {
|
|
262632
|
+
// No CallConfiguration row yet — POST one so the flag has somewhere
|
|
262633
|
+
// to live. Mirrors the shape the Settings tab used to create.
|
|
262634
|
+
await createCallConfig({
|
|
262635
|
+
org: tenantKey,
|
|
262636
|
+
userId: username,
|
|
262637
|
+
requestBody: {
|
|
262638
|
+
mentor: mentorId,
|
|
262639
|
+
mode: 'realtime',
|
|
262640
|
+
language: 'en',
|
|
262641
|
+
enable_video: checked,
|
|
262642
|
+
},
|
|
262643
|
+
}).unwrap();
|
|
262644
|
+
}
|
|
262645
|
+
toast.success(labels.toasts.saved);
|
|
262646
|
+
}
|
|
262647
|
+
catch (error) {
|
|
262648
|
+
console.error('[AgentScreenShareTab] toggle screen sharing error', error);
|
|
262649
|
+
setScreenShareEnabled(!checked); // roll back
|
|
262650
|
+
toast.error(labels.toasts.error);
|
|
262651
|
+
}
|
|
262652
|
+
finally {
|
|
262653
|
+
setIsTogglingScreenShare(false);
|
|
262654
|
+
}
|
|
262655
|
+
};
|
|
262126
262656
|
const openEditor = (field) => {
|
|
262127
262657
|
setSelectedPrompt({
|
|
262128
262658
|
label: field === 'screensharing_system_prompt'
|
|
@@ -262138,7 +262668,7 @@ function AgentScreenShareTab({ labels: labelsOverride, renderPromptContent, tena
|
|
|
262138
262668
|
return renderPromptContent(text);
|
|
262139
262669
|
return jsx("p", { className: "text-sm whitespace-pre-wrap text-gray-700", children: text });
|
|
262140
262670
|
};
|
|
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(
|
|
262671
|
+
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
262672
|
// EditPromptModal calls strict `useAgentSettings()` to read
|
|
262143
262673
|
// `tenantKey` / `username` / `executeGatedAction`. The host
|
|
262144
262674
|
// app may not have wrapped this tab in `<AgentSettingsProvider>`
|
|
@@ -262714,6 +263244,13 @@ const AGENT_LTI_TAB_LABELS = {
|
|
|
262714
263244
|
title: 'LTI',
|
|
262715
263245
|
description: 'Manage LTI agent links, signing keys, tools, and platform endpoints.',
|
|
262716
263246
|
},
|
|
263247
|
+
capability: {
|
|
263248
|
+
title: 'LTI launches',
|
|
263249
|
+
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.',
|
|
263250
|
+
offHint: 'Turn it on to let this agent be embedded in an LMS and set up its links and keys.',
|
|
263251
|
+
toggleSuccess: 'LTI setting updated',
|
|
263252
|
+
toggleError: "Couldn't update LTI setting",
|
|
263253
|
+
},
|
|
262717
263254
|
subTabs: {
|
|
262718
263255
|
agentLinks: 'Links',
|
|
262719
263256
|
keys: 'Keys',
|
|
@@ -262875,6 +263412,13 @@ function buildLtiTabLabels(t) {
|
|
|
262875
263412
|
title: t('ltiTabLabels.header.title'),
|
|
262876
263413
|
description: t('ltiTabLabels.header.description'),
|
|
262877
263414
|
},
|
|
263415
|
+
capability: {
|
|
263416
|
+
title: t('ltiTabLabels.capability.title'),
|
|
263417
|
+
description: t('ltiTabLabels.capability.description'),
|
|
263418
|
+
offHint: t('ltiTabLabels.capability.offHint'),
|
|
263419
|
+
toggleSuccess: t('ltiTabLabels.capability.toggleSuccess'),
|
|
263420
|
+
toggleError: t('ltiTabLabels.capability.toggleError'),
|
|
263421
|
+
},
|
|
262878
263422
|
subTabs: {
|
|
262879
263423
|
agentLinks: t('ltiTabLabels.subTabs.agentLinks'),
|
|
262880
263424
|
keys: t('ltiTabLabels.subTabs.keys'),
|
|
@@ -263535,7 +264079,39 @@ function AgentLtiTab({ labels: labelsOverride, tenantKey: tenantKeyProp, mentorI
|
|
|
263535
264079
|
const platformKey = tenantKey;
|
|
263536
264080
|
const settings = mentorSettings;
|
|
263537
264081
|
const mentorUniqueId = (_e = settings === null || settings === void 0 ? void 0 : settings.mentor_unique_id) !== null && _e !== void 0 ? _e : '';
|
|
263538
|
-
const
|
|
264082
|
+
const serverLtiAccessible = Boolean(settings === null || settings === void 0 ? void 0 : settings.is_lti_accessible);
|
|
264083
|
+
// "Enable LTI launches" master toggle (`is_lti_accessible`), moved here from
|
|
264084
|
+
// Settings → Capabilities. Optimistic local mirror so the switch — and the
|
|
264085
|
+
// sub-sections that key off `isLtiAccessible` — respond instantly.
|
|
264086
|
+
const [ltiEnabled, setLtiEnabled] = React__default.useState(serverLtiAccessible);
|
|
264087
|
+
const [isTogglingLti, setIsTogglingLti] = React__default.useState(false);
|
|
264088
|
+
React__default.useEffect(() => {
|
|
264089
|
+
setLtiEnabled(serverLtiAccessible);
|
|
264090
|
+
}, [serverLtiAccessible]);
|
|
264091
|
+
const [editMentor] = useEditMentorMutation();
|
|
264092
|
+
const handleToggleLti = async (checked) => {
|
|
264093
|
+
setLtiEnabled(checked); // optimistic
|
|
264094
|
+
setIsTogglingLti(true);
|
|
264095
|
+
try {
|
|
264096
|
+
await editMentor({
|
|
264097
|
+
mentor: mentorId,
|
|
264098
|
+
org: tenantKey,
|
|
264099
|
+
// @ts-expect-error userId is accepted at runtime
|
|
264100
|
+
userId: username,
|
|
264101
|
+
formData: { is_lti_accessible: checked },
|
|
264102
|
+
}).unwrap();
|
|
264103
|
+
toast.success(labels.capability.toggleSuccess);
|
|
264104
|
+
}
|
|
264105
|
+
catch (error) {
|
|
264106
|
+
console.error('[AgentLtiTab] toggle LTI launches error', error);
|
|
264107
|
+
setLtiEnabled(!checked); // roll back
|
|
264108
|
+
toast.error(labels.capability.toggleError);
|
|
264109
|
+
}
|
|
264110
|
+
finally {
|
|
264111
|
+
setIsTogglingLti(false);
|
|
264112
|
+
}
|
|
264113
|
+
};
|
|
264114
|
+
const isLtiAccessible = ltiEnabled;
|
|
263539
264115
|
const identity = {
|
|
263540
264116
|
tenantKey,
|
|
263541
264117
|
platformKey,
|
|
@@ -263551,7 +264127,7 @@ function AgentLtiTab({ labels: labelsOverride, tenantKey: tenantKeyProp, mentorI
|
|
|
263551
264127
|
isSettingsLoading,
|
|
263552
264128
|
isReady: Boolean(platformKey && username),
|
|
263553
264129
|
};
|
|
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 }) })] }) })] }));
|
|
264130
|
+
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
264131
|
}
|
|
263556
264132
|
|
|
263557
264133
|
function SuggestedPrompts({ prompts, permissions, labels, renderContent, onSelectPrompt, onOpenAddPromptModal, }) {
|
|
@@ -271785,6 +272361,7 @@ const AGENT_TASKS_TAB_LABELS = {
|
|
|
271785
272361
|
header: {
|
|
271786
272362
|
title: 'Tasks',
|
|
271787
272363
|
description: 'Configure automated tasks for your agent.',
|
|
272364
|
+
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
272365
|
},
|
|
271789
272366
|
toolbar: {
|
|
271790
272367
|
searchPlaceholder: 'Search all tasks...',
|
|
@@ -271871,6 +272448,7 @@ function buildTasksTabLabels(t) {
|
|
|
271871
272448
|
header: {
|
|
271872
272449
|
title: t('tasksTabLabels.header.title'),
|
|
271873
272450
|
description: t('tasksTabLabels.header.description'),
|
|
272451
|
+
infoBox: t('tasksTabLabels.header.infoBox'),
|
|
271874
272452
|
},
|
|
271875
272453
|
toolbar: {
|
|
271876
272454
|
searchPlaceholder: t('tasksTabLabels.toolbar.searchPlaceholder'),
|
|
@@ -272212,13 +272790,13 @@ function AgentTasksTab({ PaginationComponent = DefaultTasksPagination, labels: l
|
|
|
272212
272790
|
toast.error(labels.toasts.deleteError);
|
|
272213
272791
|
}
|
|
272214
272792
|
};
|
|
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
|
-
|
|
272793
|
+
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) => {
|
|
272794
|
+
setSelectedLog(log);
|
|
272795
|
+
setIsLogDetailModalOpen(true);
|
|
272796
|
+
}, 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,
|
|
272797
|
+
/* Pass the full unpaginated set so the metric cards reflect totals
|
|
272798
|
+
across all pages — not just the visible page. */
|
|
272799
|
+
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
272800
|
setIsLogDetailModalOpen(false);
|
|
272223
272801
|
setSelectedLog(null);
|
|
272224
272802
|
}, selectedLog: selectedLog, labels: labels }))] }));
|
|
@@ -322644,5 +323222,5 @@ var index_es = /*#__PURE__*/Object.freeze({
|
|
|
322644
323222
|
vectorsRatio: vectorsRatio
|
|
322645
323223
|
});
|
|
322646
323224
|
|
|
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 };
|
|
323225
|
+
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
323226
|
//# sourceMappingURL=index.esm.js.map
|