@iblai/iblai-js 2.14.0 → 2.16.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.
@@ -96763,6 +96763,7 @@ var analyticsAnalyticsCourses$3 = {
96763
96763
  loading: "Loading...",
96764
96764
  colCourseName: "Course Name",
96765
96765
  colCourseId: "Course ID",
96766
+ openCourseAriaLabel: "Open course {id} in a new tab",
96766
96767
  colEnrollments: "Enrollments",
96767
96768
  viewCourseAriaLabel: "View details for {name}",
96768
96769
  goToFirstPage: "Go to first page",
@@ -96815,15 +96816,15 @@ var analyticsAnalyticsFinancialStats$3 = {
96815
96816
  viewTraces: "Traces →",
96816
96817
  costByLLMFooter: "{shown} models · ranked by cost"
96817
96818
  };
96819
+ var analyticsAgentScopeLink$3 = {
96820
+ scopeToAgent: "View analytics for {name}"
96821
+ };
96818
96822
  var analyticsAnalyticsMemoryStats$3 = {
96819
96823
  noPermission: "You do not have permission to view user memories.",
96820
96824
  scopeLabel: "Memory scope",
96821
96825
  scopeMentor: "This Agent",
96822
96826
  scopeAllMentors: "All Agents",
96823
96827
  scopeGlobal: "Global",
96824
- searchAgents: "Search Agents…",
96825
- searchAgentsTitle: "Search Agents",
96826
- clearAgentSearch: "Clear Agent Search",
96827
96828
  contentPlaceholder: "Search memory content",
96828
96829
  pickDateRange: "Pick a Date Range",
96829
96830
  allCategories: "All Categories",
@@ -96968,6 +96969,7 @@ var analyticsAnalyticsPrograms$3 = {
96968
96969
  loading: "Loading...",
96969
96970
  programName: "Program Name",
96970
96971
  programId: "Program ID",
96972
+ openProgramAriaLabel: "Open program {id} in a new tab",
96971
96973
  viewDetailsAriaLabel: "View details for {name}",
96972
96974
  goToFirstPage: "Go to first page",
96973
96975
  goToPreviousPage: "Go to previous page",
@@ -97047,7 +97049,6 @@ var analyticsAnalyticsTranscriptsStats$3 = {
97047
97049
  labelModel: "Model:",
97048
97050
  labelModelCard: "model:",
97049
97051
  labelUser: "User:",
97050
- labelUserId: "user_id:",
97051
97052
  roleUser: "User",
97052
97053
  roleAgent: "Agent",
97053
97054
  noMessages: "No messages in this conversation.",
@@ -100453,6 +100454,10 @@ var settingsTabLabels$3 = {
100453
100454
  label: "Featured",
100454
100455
  tooltip: "Feature this agent to highlight it in listings."
100455
100456
  },
100457
+ showExploreMentors: {
100458
+ label: "Show additional agents",
100459
+ tooltip: "Shows the additional agents section on this agent's welcome screen."
100460
+ },
100456
100461
  showAttachment: {
100457
100462
  label: "Show Attachment",
100458
100463
  tooltip: "Lets people attach files to a conversation. Each surface has its own switch: In-app chat covers conversations hosted in the app, Embed widget covers the widget on your own site."
@@ -101271,6 +101276,7 @@ var tabsSettingsTab$3 = {
101271
101276
  whoCanViewTooltipAriaLabel: "More info about chat access",
101272
101277
  whoCanChatTooltipAriaLabel: "More info about chat access",
101273
101278
  featuredTooltipAriaLabel: "More info about featured",
101279
+ showExploreMentorsTooltipAriaLabel: "More info about show additional agents",
101274
101280
  showAttachmentTooltipAriaLabel: "More info about show attachment",
101275
101281
  showVoiceRecordTooltipAriaLabel: "More info about show voice record",
101276
101282
  showVoiceCallTooltipAriaLabel: "More info about show voice call",
@@ -102967,6 +102973,7 @@ var en = {
102967
102973
  analyticsAnalyticsCourseDetail: analyticsAnalyticsCourseDetail$3,
102968
102974
  analyticsAnalyticsCourses: analyticsAnalyticsCourses$3,
102969
102975
  analyticsAnalyticsFinancialStats: analyticsAnalyticsFinancialStats$3,
102976
+ analyticsAgentScopeLink: analyticsAgentScopeLink$3,
102970
102977
  analyticsAnalyticsMemoryStats: analyticsAnalyticsMemoryStats$3,
102971
102978
  analyticsAnalyticsMonetizationStats: analyticsAnalyticsMonetizationStats$3,
102972
102979
  analyticsAnalyticsOverview: analyticsAnalyticsOverview$3,
@@ -103914,6 +103921,7 @@ var analyticsAnalyticsCourses$2 = {
103914
103921
  loading: "Chargement...",
103915
103922
  colCourseName: "Nom du cours",
103916
103923
  colCourseId: "ID du cours",
103924
+ openCourseAriaLabel: "Ouvrir le cours {id} dans un nouvel onglet",
103917
103925
  colEnrollments: "Inscriptions",
103918
103926
  viewCourseAriaLabel: "Voir les détails de {name}",
103919
103927
  goToFirstPage: "Aller à la première page",
@@ -103966,15 +103974,15 @@ var analyticsAnalyticsFinancialStats$2 = {
103966
103974
  viewTraces: "Traces →",
103967
103975
  costByLLMFooter: "{shown} modèles · classés par coût"
103968
103976
  };
103977
+ var analyticsAgentScopeLink$2 = {
103978
+ scopeToAgent: "Voir les analyses de {name}"
103979
+ };
103969
103980
  var analyticsAnalyticsMemoryStats$2 = {
103970
103981
  noPermission: "Vous n'avez pas l'autorisation de consulter les mémoires des utilisateurs.",
103971
103982
  scopeLabel: "Portée de la mémoire",
103972
103983
  scopeMentor: "Cet agent",
103973
103984
  scopeAllMentors: "Tous les agents",
103974
103985
  scopeGlobal: "Global",
103975
- searchAgents: "Rechercher des agents…",
103976
- searchAgentsTitle: "Rechercher des agents",
103977
- clearAgentSearch: "Effacer la recherche d'agent",
103978
103986
  contentPlaceholder: "Rechercher dans le contenu des mémoires",
103979
103987
  pickDateRange: "Choisir une plage de dates",
103980
103988
  allCategories: "Toutes les catégories",
@@ -104119,6 +104127,7 @@ var analyticsAnalyticsPrograms$2 = {
104119
104127
  loading: "Chargement...",
104120
104128
  programName: "Nom du programme",
104121
104129
  programId: "ID du programme",
104130
+ openProgramAriaLabel: "Ouvrir le programme {id} dans un nouvel onglet",
104122
104131
  viewDetailsAriaLabel: "Voir les détails de {name}",
104123
104132
  goToFirstPage: "Aller à la première page",
104124
104133
  goToPreviousPage: "Aller à la page précédente",
@@ -104198,7 +104207,6 @@ var analyticsAnalyticsTranscriptsStats$2 = {
104198
104207
  labelModel: "Modèle :",
104199
104208
  labelModelCard: "modèle :",
104200
104209
  labelUser: "Utilisateur :",
104201
- labelUserId: "ID utilisateur :",
104202
104210
  roleUser: "Utilisateur",
104203
104211
  roleAgent: "Agent",
104204
104212
  noMessages: "Aucun message dans cette conversation.",
@@ -107770,6 +107778,10 @@ var settingsTabLabels$2 = {
107770
107778
  label: "En vedette",
107771
107779
  tooltip: "Mettez cet agent en avant pour le mettre en valeur dans les listes."
107772
107780
  },
107781
+ showExploreMentors: {
107782
+ label: "Afficher les agents supplémentaires",
107783
+ tooltip: "Affiche la section des agents supplémentaires sur l'écran d'accueil de cet agent."
107784
+ },
107773
107785
  showAttachment: {
107774
107786
  label: "Afficher les pièces jointes",
107775
107787
  tooltip: "Permet aux personnes de joindre des fichiers à une conversation. Chaque surface a son propre interrupteur : In-app chat couvre les conversations hébergées dans l'application et Embed widget couvre le widget sur votre propre site."
@@ -108588,6 +108600,7 @@ var tabsSettingsTab$2 = {
108588
108600
  whoCanViewTooltipAriaLabel: "Plus d'informations sur l'accès à la consultation",
108589
108601
  whoCanChatTooltipAriaLabel: "Plus d'informations sur l'accès au chat",
108590
108602
  featuredTooltipAriaLabel: "Plus d'informations sur la mise en avant",
108603
+ showExploreMentorsTooltipAriaLabel: "Plus d'informations sur l'affichage des agents supplémentaires",
108591
108604
  showAttachmentTooltipAriaLabel: "Plus d'informations sur l'affichage des pièces jointes",
108592
108605
  showVoiceRecordTooltipAriaLabel: "Plus d'informations sur l'affichage de l'enregistrement vocal",
108593
108606
  showVoiceCallTooltipAriaLabel: "More info about show voice call",
@@ -110118,6 +110131,7 @@ var fr = {
110118
110131
  analyticsAnalyticsCourseDetail: analyticsAnalyticsCourseDetail$2,
110119
110132
  analyticsAnalyticsCourses: analyticsAnalyticsCourses$2,
110120
110133
  analyticsAnalyticsFinancialStats: analyticsAnalyticsFinancialStats$2,
110134
+ analyticsAgentScopeLink: analyticsAgentScopeLink$2,
110121
110135
  analyticsAnalyticsMemoryStats: analyticsAnalyticsMemoryStats$2,
110122
110136
  analyticsAnalyticsMonetizationStats: analyticsAnalyticsMonetizationStats$2,
110123
110137
  analyticsAnalyticsOverview: analyticsAnalyticsOverview$2,
@@ -111065,6 +111079,7 @@ var analyticsAnalyticsCourses$1 = {
111065
111079
  loading: "Cargando...",
111066
111080
  colCourseName: "Nombre del curso",
111067
111081
  colCourseId: "ID del curso",
111082
+ openCourseAriaLabel: "Abrir el curso {id} en una pestaña nueva",
111068
111083
  colEnrollments: "Inscripciones",
111069
111084
  viewCourseAriaLabel: "Ver detalles de {name}",
111070
111085
  goToFirstPage: "Ir a la primera página",
@@ -111117,15 +111132,15 @@ var analyticsAnalyticsFinancialStats$1 = {
111117
111132
  viewTraces: "Trazas →",
111118
111133
  costByLLMFooter: "{shown} modelos · ordenados por costo"
111119
111134
  };
111135
+ var analyticsAgentScopeLink$1 = {
111136
+ scopeToAgent: "Ver analíticas de {name}"
111137
+ };
111120
111138
  var analyticsAnalyticsMemoryStats$1 = {
111121
111139
  noPermission: "No tienes permiso para ver los recuerdos de los usuarios.",
111122
111140
  scopeLabel: "Alcance de la memoria",
111123
111141
  scopeMentor: "Este agente",
111124
111142
  scopeAllMentors: "Todos los agentes",
111125
111143
  scopeGlobal: "Global",
111126
- searchAgents: "Buscar agentes…",
111127
- searchAgentsTitle: "Buscar agentes",
111128
- clearAgentSearch: "Borrar la búsqueda de agentes",
111129
111144
  contentPlaceholder: "Buscar en el contenido de los recuerdos",
111130
111145
  pickDateRange: "Elige un rango de fechas",
111131
111146
  allCategories: "Todas las categorías",
@@ -111270,6 +111285,7 @@ var analyticsAnalyticsPrograms$1 = {
111270
111285
  loading: "Cargando...",
111271
111286
  programName: "Nombre del programa",
111272
111287
  programId: "ID del programa",
111288
+ openProgramAriaLabel: "Abrir el programa {id} en una pestaña nueva",
111273
111289
  viewDetailsAriaLabel: "Ver detalles de {name}",
111274
111290
  goToFirstPage: "Ir a la primera página",
111275
111291
  goToPreviousPage: "Ir a la página anterior",
@@ -111349,7 +111365,6 @@ var analyticsAnalyticsTranscriptsStats$1 = {
111349
111365
  labelModel: "Modelo:",
111350
111366
  labelModelCard: "modelo:",
111351
111367
  labelUser: "Usuario:",
111352
- labelUserId: "ID de usuario:",
111353
111368
  roleUser: "Usuario",
111354
111369
  roleAgent: "Agente",
111355
111370
  noMessages: "No hay mensajes en esta conversación.",
@@ -114921,6 +114936,10 @@ var settingsTabLabels$1 = {
114921
114936
  label: "Destacado",
114922
114937
  tooltip: "Destaque este agente para resaltarlo en los listados."
114923
114938
  },
114939
+ showExploreMentors: {
114940
+ label: "Mostrar agentes adicionales",
114941
+ tooltip: "Muestra la sección de agentes adicionales en la pantalla de bienvenida de este agente."
114942
+ },
114924
114943
  showAttachment: {
114925
114944
  label: "Mostrar archivos adjuntos",
114926
114945
  tooltip: "Permite que las personas adjunten archivos a una conversación. Cada superficie tiene su propio interruptor: In-app chat cubre las conversaciones alojadas en la aplicación y Embed widget cubre el widget en tu propio sitio."
@@ -115739,6 +115758,7 @@ var tabsSettingsTab$1 = {
115739
115758
  whoCanViewTooltipAriaLabel: "Más información sobre el acceso de visualización",
115740
115759
  whoCanChatTooltipAriaLabel: "Más información sobre el acceso al chat",
115741
115760
  featuredTooltipAriaLabel: "Más información sobre destacado",
115761
+ showExploreMentorsTooltipAriaLabel: "Más información sobre mostrar agentes adicionales",
115742
115762
  showAttachmentTooltipAriaLabel: "Más información sobre mostrar adjuntos",
115743
115763
  showVoiceRecordTooltipAriaLabel: "Más información sobre mostrar grabación de voz",
115744
115764
  showVoiceCallTooltipAriaLabel: "More info about show voice call",
@@ -117269,6 +117289,7 @@ var es = {
117269
117289
  analyticsAnalyticsCourseDetail: analyticsAnalyticsCourseDetail$1,
117270
117290
  analyticsAnalyticsCourses: analyticsAnalyticsCourses$1,
117271
117291
  analyticsAnalyticsFinancialStats: analyticsAnalyticsFinancialStats$1,
117292
+ analyticsAgentScopeLink: analyticsAgentScopeLink$1,
117272
117293
  analyticsAnalyticsMemoryStats: analyticsAnalyticsMemoryStats$1,
117273
117294
  analyticsAnalyticsMonetizationStats: analyticsAnalyticsMonetizationStats$1,
117274
117295
  analyticsAnalyticsOverview: analyticsAnalyticsOverview$1,
@@ -118216,6 +118237,7 @@ var analyticsAnalyticsCourses = {
118216
118237
  loading: "加载中...",
118217
118238
  colCourseName: "课程名称",
118218
118239
  colCourseId: "课程 ID",
118240
+ openCourseAriaLabel: "在新标签页中打开课程 {id}",
118219
118241
  colEnrollments: "注册人数",
118220
118242
  viewCourseAriaLabel: "查看 {name} 的详情",
118221
118243
  goToFirstPage: "跳转到第一页",
@@ -118268,15 +118290,15 @@ var analyticsAnalyticsFinancialStats = {
118268
118290
  viewTraces: "追踪 →",
118269
118291
  costByLLMFooter: "{shown} 个模型 · 按成本排序"
118270
118292
  };
118293
+ var analyticsAgentScopeLink = {
118294
+ scopeToAgent: "查看 {name} 的分析"
118295
+ };
118271
118296
  var analyticsAnalyticsMemoryStats = {
118272
118297
  noPermission: "您没有查看用户记忆的权限。",
118273
118298
  scopeLabel: "记忆范围",
118274
118299
  scopeMentor: "当前智能体",
118275
118300
  scopeAllMentors: "所有智能体",
118276
118301
  scopeGlobal: "全局",
118277
- searchAgents: "搜索智能体…",
118278
- searchAgentsTitle: "搜索智能体",
118279
- clearAgentSearch: "清除智能体搜索",
118280
118302
  contentPlaceholder: "搜索记忆内容",
118281
118303
  pickDateRange: "选择日期范围",
118282
118304
  allCategories: "所有类别",
@@ -118421,6 +118443,7 @@ var analyticsAnalyticsPrograms = {
118421
118443
  loading: "加载中...",
118422
118444
  programName: "项目名称",
118423
118445
  programId: "项目 ID",
118446
+ openProgramAriaLabel: "在新标签页中打开项目 {id}",
118424
118447
  viewDetailsAriaLabel: "查看 {name} 的详情",
118425
118448
  goToFirstPage: "跳至第一页",
118426
118449
  goToPreviousPage: "跳至上一页",
@@ -118500,7 +118523,6 @@ var analyticsAnalyticsTranscriptsStats = {
118500
118523
  labelModel: "模型:",
118501
118524
  labelModelCard: "模型:",
118502
118525
  labelUser: "用户:",
118503
- labelUserId: "用户 ID:",
118504
118526
  roleUser: "用户",
118505
118527
  roleAgent: "智能体",
118506
118528
  noMessages: "此对话中没有消息。",
@@ -122072,6 +122094,10 @@ var settingsTabLabels = {
122072
122094
  label: "推荐",
122073
122095
  tooltip: "将此智能体设为推荐,使其在列表中突出显示。"
122074
122096
  },
122097
+ showExploreMentors: {
122098
+ label: "显示其他智能体",
122099
+ tooltip: "在此智能体的欢迎界面上显示“其他智能体”部分。"
122100
+ },
122075
122101
  showAttachment: {
122076
122102
  label: "显示附件",
122077
122103
  tooltip: "允许用户在对话中添加附件。每个界面都有独立的开关:In-app chat 用于应用内托管的对话,Embed widget 用于您自己网站上的小组件。"
@@ -122890,6 +122916,7 @@ var tabsSettingsTab = {
122890
122916
  whoCanViewTooltipAriaLabel: "关于查看访问权限的更多信息",
122891
122917
  whoCanChatTooltipAriaLabel: "关于聊天访问权限的更多信息",
122892
122918
  featuredTooltipAriaLabel: "关于精选的更多信息",
122919
+ showExploreMentorsTooltipAriaLabel: "关于显示其他智能体的更多信息",
122893
122920
  showAttachmentTooltipAriaLabel: "关于显示附件的更多信息",
122894
122921
  showVoiceRecordTooltipAriaLabel: "关于显示语音录制的更多信息",
122895
122922
  showVoiceCallTooltipAriaLabel: "More info about show voice call",
@@ -124420,6 +124447,7 @@ var zh = {
124420
124447
  analyticsAnalyticsCourseDetail: analyticsAnalyticsCourseDetail,
124421
124448
  analyticsAnalyticsCourses: analyticsAnalyticsCourses,
124422
124449
  analyticsAnalyticsFinancialStats: analyticsAnalyticsFinancialStats,
124450
+ analyticsAgentScopeLink: analyticsAgentScopeLink,
124423
124451
  analyticsAnalyticsMemoryStats: analyticsAnalyticsMemoryStats,
124424
124452
  analyticsAnalyticsMonetizationStats: analyticsAnalyticsMonetizationStats,
124425
124453
  analyticsAnalyticsOverview: analyticsAnalyticsOverview,
@@ -218122,7 +218150,7 @@ function MultiSearchSelect({ labels, selected, onSelect, onRemove, searchTerm, o
218122
218150
  */
218123
218151
  function useAgentSearch({ tenantKey, query, limit = 6, offset, starred, featured, category, subjects, llm, types, includeMainPublicMentors, orderDirection, skip = false, }) {
218124
218152
  var _a, _b, _c;
218125
- const { data, isLoading, isFetching, refetch } = useGetAiSearchMentorsQuery({
218153
+ const { data, isLoading, isFetching, isUninitialized, refetch } = useGetAiSearchMentorsQuery({
218126
218154
  platform_key: tenantKey,
218127
218155
  query: query || undefined,
218128
218156
  limit,
@@ -218146,6 +218174,7 @@ function useAgentSearch({ tenantKey, query, limit = 6, offset, starred, featured
218146
218174
  totalPages: (_c = data === null || data === void 0 ? void 0 : data.total_pages) !== null && _c !== void 0 ? _c : 0,
218147
218175
  isLoading,
218148
218176
  isFetching,
218177
+ isUninitialized,
218149
218178
  refetch,
218150
218179
  };
218151
218180
  }
@@ -226751,29 +226780,60 @@ function SpendLimitsSection({ tenantKey, labels: labelsOverride }) {
226751
226780
  return (jsxs(Fragment$1, { children: [jsxs("div", { "data-testid": "spend-limits-workspace-section", className: "rounded-lg border border-[#e5e5e5] bg-white shadow-[0_1px_2px_0_rgba(0,0,0,0.05)] dark:bg-zinc-900 dark:border-zinc-800", children: [jsx("div", { className: "flex flex-col gap-2 p-4 sm:flex-row sm:items-start sm:justify-between", children: jsxs("div", { className: "space-y-0.5", children: [jsx("h3", { className: "text-[16px] font-medium leading-6 text-[#101828] dark:text-gray-100", children: labels.tenantSections.workspace.title }), jsx("p", { className: "text-[13px] font-normal leading-5 text-[#4a5565] dark:text-gray-400", children: labels.tenantSections.workspace.description })] }) }), jsx("div", { className: "border-t border-[#e5e7eb] dark:border-zinc-800 px-4 py-3", children: isTenantCapLoading ? (jsx("div", { className: "flex items-center justify-center py-8", "data-testid": "tenant-cap-loading", children: jsx(Spinner, {}) })) : isTenantForbidden ? (jsxs("div", { className: "flex flex-col items-center gap-2 rounded-lg border border-gray-200 bg-gray-50 px-4 py-10 text-center", "data-testid": "spend-limits-denied", children: [jsx(ShieldAlert, { className: "h-6 w-6 text-gray-400" }), jsx("p", { className: "text-sm font-medium text-gray-900", children: labels.denied.title }), jsx("p", { className: "max-w-sm text-xs text-gray-600", children: labels.denied.description })] })) : (jsxs("div", { className: "space-y-4", children: [!tenantCap && (monthlySpend != null || totalSpend != null) && (jsxs("div", { className: "space-y-1", "data-testid": "workspace-actual-spend-stats", children: [jsxs("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2", children: [monthlySpend != null && (jsxs("div", { className: "space-y-0.5", children: [jsx("p", { className: "text-[11px] font-medium uppercase tracking-wide text-[#6a7282] dark:text-gray-400", children: labels.tenantSections.noCapStats.spentThisMonth }), jsx("p", { className: "text-[18px] font-semibold leading-6 text-[#101828] dark:text-gray-100", "data-testid": "workspace-actual-spend-month", children: formatUsd$1(String(monthlySpend)) })] })), totalSpend != null && (jsxs("div", { className: "space-y-0.5", children: [jsx("p", { className: "text-[11px] font-medium uppercase tracking-wide text-[#6a7282] dark:text-gray-400", children: labels.tenantSections.noCapStats.spentAllTime }), jsx("p", { className: "text-[18px] font-semibold leading-6 text-[#101828] dark:text-gray-100", "data-testid": "workspace-actual-spend-total", children: formatUsd$1(String(totalSpend)) })] }))] }), jsx("p", { className: "text-[12px] font-normal leading-4 text-[#6a7282] dark:text-gray-500", children: labels.tenantSections.noCapStats.hint })] })), jsx(SpendCapForm, { labels: labels, cap: tenantCap, isSaving: isSavingTenantCap, isDeleting: isDeletingTenantCap, onSave: saveTenantCap, onDelete: () => setIsDeleteOpen(true), testId: "tenant-cap" })] })) })] }), jsx(Dialog, { open: isDeleteOpen, onOpenChange: () => setIsDeleteOpen(false), children: jsxs(DialogContent, { "aria-describedby": "tenant-cap-delete-description", "data-testid": "tenant-cap-delete-modal", children: [jsx(DialogHeader, { children: jsx(DialogTitle, { className: "ibl-dialog-title", children: labels.deleteModal.title }) }), jsx("div", { className: "my-5", id: "tenant-cap-delete-description", children: jsx("p", { className: "text-sm text-[#646464]", children: labels.deleteModal.description }) }), jsxs(DialogFooter, { className: "gap-3", children: [jsx(Button$1, { variant: "outline", onClick: () => setIsDeleteOpen(false), children: labels.deleteModal.cancel }), jsx(Button$1, { className: "bg-gradient-to-r from-[#2563EB] to-[#93C5FD] text-white hover:opacity-90", onClick: handleConfirmDelete, disabled: isDeletingTenantCap, "data-testid": "tenant-cap-delete-confirm", children: isDeletingTenantCap ? labels.form.removing : labels.deleteModal.confirm })] })] }) })] }));
226752
226781
  }
226753
226782
 
226783
+ /** SPAs whose users have coursework, so the profile leads with a Gradebook tab. */
226784
+ const GRADEBOOK_SPAS = ['lms', 'skills'];
226785
+ /**
226786
+ * The customization `Profile` is opened with: whatever the host passed, with
226787
+ * the Gradebook tab defaulted from the SPA it runs in. An explicit
226788
+ * `showGradebookTab` always wins, so a host can force it either way.
226789
+ */
226790
+ function profileCustomization(customization, currentSPA) {
226791
+ var _a;
226792
+ return {
226793
+ ...customization,
226794
+ showGradebookTab: (_a = customization === null || customization === void 0 ? void 0 : customization.showGradebookTab) !== null && _a !== void 0 ? _a : GRADEBOOK_SPAS.includes((currentSPA !== null && currentSPA !== void 0 ? currentSPA : '').trim().toLowerCase()),
226795
+ };
226796
+ }
226754
226797
  /**
226755
226798
  * The shared `Profile` viewer in a dialog — the same modal the tenant
226756
226799
  * Management tab opens when a user row is clicked. Controlled variant for
226757
226800
  * hosts that trigger it from a whole table row.
226801
+ *
226802
+ * Radix portals the dialog into `document.body`, but a React portal still
226803
+ * bubbles its events through the React tree — so without the guard below, a
226804
+ * click *inside* the open profile would reach the row this dialog is rendered
226805
+ * from and fire its `onClick` (e.g. opening the enrollment progress modal
226806
+ * behind the profile). The wrapper is `display: contents`, so it adds nothing
226807
+ * to the host's layout.
226758
226808
  */
226759
- function UserProfileDialog({ tenantKey, username, isOpen, onClose }) {
226809
+ function UserProfileDialog({ tenantKey, username, isOpen, onClose, customization, currentSPA, }) {
226760
226810
  const t = useT();
226761
226811
  if (!isOpen)
226762
226812
  return null;
226763
- return (jsx(Dialog, { open: true, onOpenChange: onClose, children: jsxs(DialogContent, { autoFocus: false, className: "profile-component-dialog max-w-7xl w-[85vw] gap-0 overflow-hidden bg-white p-0", style: { height: '85vh', display: 'flex', flexDirection: 'column' }, "data-testid": "user-profile-link-dialog", children: [jsx(DialogTitle, { className: "sr-only", children: t('tabsUserstab.profileDialogTitle') }), jsx(DialogDescription, { className: "sr-only", children: t('tabsUserstab.profileDialogDescription') }), jsx(Profile, { tenant: tenantKey, tenants: [], username: username, onClose: onClose })] }) }));
226813
+ return (jsx("span", { className: "contents", onClick: (event) => event.stopPropagation(), onMouseDown: (event) => event.stopPropagation(), onKeyDown: (event) => event.stopPropagation(), children: jsx(Dialog, { open: true, onOpenChange: onClose, children: jsxs(DialogContent, { autoFocus: false, className: "profile-component-dialog max-w-7xl w-[85vw] gap-0 overflow-hidden bg-white p-0", style: { height: '85vh', display: 'flex', flexDirection: 'column' }, "data-testid": "user-profile-link-dialog", children: [jsx(DialogTitle, { className: "sr-only", children: t('tabsUserstab.profileDialogTitle') }), jsx(DialogDescription, { className: "sr-only", children: t('tabsUserstab.profileDialogDescription') }), jsx(Profile, { tenant: tenantKey, tenants: [], username: username, onClose: onClose, customization: profileCustomization(customization, currentSPA), currentSPA: currentSPA })] }) }) }));
226764
226814
  }
226765
226815
  /**
226766
226816
  * Clickable user identity that opens the shared `Profile` viewer in a dialog
226767
226817
  * — the same modal the tenant Management tab opens when a user row is
226768
- * clicked. Used by the per-user limits table and the user-limit modal.
226818
+ * clicked. `Profile` drops into preview (read-only) mode on its own for anyone
226819
+ * but the signed-in user. Used by the spend-cap tables and every analytics
226820
+ * surface that names a user; safe inside clickable rows and cards, since
226821
+ * neither its clicks nor its key presses reach the host's handlers.
226769
226822
  */
226770
- function UserProfileLink({ tenantKey, username, display, className, testId, }) {
226823
+ function UserProfileLink({ tenantKey, username, display, className, testId, customization, currentSPA, }) {
226771
226824
  const t = useT();
226772
226825
  const [isOpen, setIsOpen] = React__default.useState(false);
226826
+ if (!username) {
226827
+ // `inline-block`, or `truncate`'s `overflow: hidden` has nothing to clip:
226828
+ // an inline box takes its width from its own text.
226829
+ return (jsx("span", { className: cn('inline-block max-w-full truncate', className), "data-testid": testId, children: display }));
226830
+ }
226773
226831
  return (jsxs(Fragment$1, { children: [jsx("button", { type: "button", onClick: (event) => {
226774
226832
  event.stopPropagation();
226775
226833
  setIsOpen(true);
226776
- }, className: cn('max-w-full cursor-pointer truncate text-left hover:text-blue-600 hover:underline focus:text-blue-600 focus:outline-none', className), "aria-label": t('tabsUserstab.viewProfileAriaLabel', { name: display }), "data-testid": testId, children: display }), jsx(UserProfileDialog, { tenantKey: tenantKey, username: username, isOpen: isOpen, onClose: () => setIsOpen(false) })] }));
226834
+ },
226835
+ // Rows that open on Enter/Space would otherwise swallow the key press.
226836
+ onKeyDown: (event) => event.stopPropagation(), className: cn('max-w-full cursor-pointer truncate text-left hover:text-blue-600 hover:underline focus:text-blue-600 focus:outline-none', className), "aria-label": t('tabsUserstab.viewProfileAriaLabel', { name: display }), "data-testid": testId, children: display }), jsx(UserProfileDialog, { tenantKey: tenantKey, username: username, isOpen: isOpen, onClose: () => setIsOpen(false), customization: customization, currentSPA: currentSPA })] }));
226777
226837
  }
226778
226838
 
226779
226839
  /**
@@ -258095,27 +258155,6 @@ function SheetDescription({ className, ...props }) {
258095
258155
  return (jsx(DialogPrimitive.Description, { "data-slot": "sheet-description", className: cn('text-muted-foreground text-sm', className), ...props }));
258096
258156
  }
258097
258157
 
258098
- function MentorSelectionGrid({ selectedMentorIds, onMentorSelect, searchQuery, onSearchChange, tenantKey, itemsPerPage = 8, showSearch = true, minHeight = '400px', }) {
258099
- const t = useT();
258100
- const { agents: mentors, isLoading: isMentorsLoading, isFetching: isMentorsFetching, currentPage, totalPages, setSearchQuery: setMentorSearch, handlePageChange, } = useAgentSearchWithPagination({ tenantKey, itemsPerPage });
258101
- // Update search query with debounce effect handled by the hook
258102
- React__default.useEffect(() => {
258103
- setMentorSearch(searchQuery);
258104
- }, [searchQuery]);
258105
- const isMentorSelected = (mentorId) => {
258106
- return selectedMentorIds.includes(mentorId);
258107
- };
258108
- return (jsxs("div", { className: "space-y-4", children: [showSearch && (jsxs("div", { className: "relative", children: [isMentorsFetching ? (jsx(Spinner, { className: "absolute top-1/2 left-3 h-4 w-4 -translate-y-1/2 transform text-gray-400" })) : (jsx(Search, { className: "absolute top-1/2 left-3 h-4 w-4 -translate-y-1/2 transform text-gray-400" })), jsx(Input, { placeholder: t('mentorsMentorSelectionGrid.searchAgentsPlaceholder'), value: searchQuery, onChange: (e) => onSearchChange(e.target.value), className: "h-10 border-gray-200 pl-10 focus:border-blue-500 focus:ring-0" })] })), jsxs("div", { className: "space-y-4", children: [jsx("div", { className: "grid max-h-96 auto-rows-min grid-cols-1 items-start gap-3 overflow-y-auto rounded-lg border border-gray-200 p-4 md:max-h-none md:grid-cols-2", style: { minHeight }, children: isMentorsLoading ? (jsx("div", { className: "col-span-full py-8 text-center text-gray-500", children: t('mentorsMentorSelectionGrid.loadingAgents') })) : mentors.length === 0 ? (jsx("div", { className: "col-span-full py-8 text-center text-gray-500", children: t('mentorsMentorSelectionGrid.noAgentsFound') })) : (mentors.map((mentor) => {
258109
- const isSelected = isMentorSelected(mentor.unique_id || '');
258110
- const isAlreadyAdded = selectedMentorIds.includes(mentor.unique_id || '');
258111
- return (jsxs("button", { onClick: () => onMentorSelect(mentor), className: `flex cursor-pointer items-center gap-3 rounded-lg border-2 p-3 transition-all ${isSelected
258112
- ? 'border-blue-500 bg-blue-50'
258113
- : isAlreadyAdded
258114
- ? 'bg-blue-25 border-blue-300'
258115
- : 'border-gray-200 hover:border-gray-300 hover:bg-gray-50'}`, children: [jsxs(Avatar, { className: "h-12 w-12 flex-shrink-0", children: [jsx(AvatarImage, { src: mentor.profile_image || '/placeholder.svg', alt: mentor.name }), jsx(AvatarFallback, { children: mentor.name.substring(0, 2) })] }), jsxs("div", { className: "flex min-w-0 flex-1 flex-col justify-start text-left", children: [jsx("h4", { className: "truncate text-sm font-medium text-gray-900", children: mentor.name }), jsx("p", { className: "line-clamp-2 text-xs text-gray-600", children: mentor.description })] }), isSelected && (jsx("div", { className: "flex-shrink-0", children: jsx("div", { className: "flex h-6 w-6 items-center justify-center rounded-full bg-blue-600", children: jsx(Check, { className: "h-4 w-4 text-white" }) }) })), isAlreadyAdded && !isSelected && (jsx("div", { className: "flex-shrink-0", children: jsx("div", { className: "flex h-6 w-6 items-center justify-center rounded-full bg-blue-400", children: jsx(Check, { className: "h-4 w-4 text-white" }) }) }))] }, mentor.unique_id));
258116
- })) }), jsx(IblPagination, { currentPage: currentPage, totalPages: totalPages, onPageChange: handlePageChange, disabled: isMentorsFetching || isMentorsLoading })] })] }));
258117
- }
258118
-
258119
258158
  const SkeletonMultiplier = ({ Skeleton, multiplier }) => {
258120
258159
  return (jsx(Fragment$1, { children: Array.from({ length: multiplier }).map((_, index) => (jsx(Skeleton, {}, index))) }));
258121
258160
  };
@@ -262507,6 +262546,27 @@ var minimumMentorAlert = /*#__PURE__*/Object.freeze({
262507
262546
  MinimumMentorAlert: MinimumMentorAlert
262508
262547
  });
262509
262548
 
262549
+ function MentorSelectionGrid({ selectedMentorIds, onMentorSelect, searchQuery, onSearchChange, tenantKey, itemsPerPage = 8, showSearch = true, minHeight = '400px', }) {
262550
+ const t = useT();
262551
+ const { agents: mentors, isLoading: isMentorsLoading, isFetching: isMentorsFetching, currentPage, totalPages, setSearchQuery: setMentorSearch, handlePageChange, } = useAgentSearchWithPagination({ tenantKey, itemsPerPage });
262552
+ // Update search query with debounce effect handled by the hook
262553
+ React__default.useEffect(() => {
262554
+ setMentorSearch(searchQuery);
262555
+ }, [searchQuery]);
262556
+ const isMentorSelected = (mentorId) => {
262557
+ return selectedMentorIds.includes(mentorId);
262558
+ };
262559
+ return (jsxs("div", { className: "space-y-4", children: [showSearch && (jsxs("div", { className: "relative", children: [isMentorsFetching ? (jsx(Spinner, { className: "absolute top-1/2 left-3 h-4 w-4 -translate-y-1/2 transform text-gray-400" })) : (jsx(Search, { className: "absolute top-1/2 left-3 h-4 w-4 -translate-y-1/2 transform text-gray-400" })), jsx(Input, { placeholder: t('mentorsMentorSelectionGrid.searchAgentsPlaceholder'), value: searchQuery, onChange: (e) => onSearchChange(e.target.value), className: "h-10 border-gray-200 pl-10 focus:border-blue-500 focus:ring-0" })] })), jsxs("div", { className: "space-y-4", children: [jsx("div", { className: "grid max-h-96 auto-rows-min grid-cols-1 items-start gap-3 overflow-y-auto rounded-lg border border-gray-200 p-4 md:max-h-none md:grid-cols-2", style: { minHeight }, children: isMentorsLoading ? (jsx("div", { className: "col-span-full py-8 text-center text-gray-500", children: t('mentorsMentorSelectionGrid.loadingAgents') })) : mentors.length === 0 ? (jsx("div", { className: "col-span-full py-8 text-center text-gray-500", children: t('mentorsMentorSelectionGrid.noAgentsFound') })) : (mentors.map((mentor) => {
262560
+ const isSelected = isMentorSelected(mentor.unique_id || '');
262561
+ const isAlreadyAdded = selectedMentorIds.includes(mentor.unique_id || '');
262562
+ return (jsxs("button", { onClick: () => onMentorSelect(mentor), className: `flex cursor-pointer items-center gap-3 rounded-lg border-2 p-3 transition-all ${isSelected
262563
+ ? 'border-blue-500 bg-blue-50'
262564
+ : isAlreadyAdded
262565
+ ? 'bg-blue-25 border-blue-300'
262566
+ : 'border-gray-200 hover:border-gray-300 hover:bg-gray-50'}`, children: [jsxs(Avatar, { className: "h-12 w-12 flex-shrink-0", children: [jsx(AvatarImage, { src: mentor.profile_image || '/placeholder.svg', alt: mentor.name }), jsx(AvatarFallback, { children: mentor.name.substring(0, 2) })] }), jsxs("div", { className: "flex min-w-0 flex-1 flex-col justify-start text-left", children: [jsx("h4", { className: "truncate text-sm font-medium text-gray-900", children: mentor.name }), jsx("p", { className: "line-clamp-2 text-xs text-gray-600", children: mentor.description })] }), isSelected && (jsx("div", { className: "flex-shrink-0", children: jsx("div", { className: "flex h-6 w-6 items-center justify-center rounded-full bg-blue-600", children: jsx(Check, { className: "h-4 w-4 text-white" }) }) })), isAlreadyAdded && !isSelected && (jsx("div", { className: "flex-shrink-0", children: jsx("div", { className: "flex h-6 w-6 items-center justify-center rounded-full bg-blue-400", children: jsx(Check, { className: "h-4 w-4 text-white" }) }) }))] }, mentor.unique_id));
262567
+ })) }), jsx(IblPagination, { currentPage: currentPage, totalPages: totalPages, onPageChange: handlePageChange, disabled: isMentorsFetching || isMentorsLoading })] })] }));
262568
+ }
262569
+
262510
262570
  function CreateProjectModal$1({ isOpen, onClose, tenantKey, username, navigateToMentorInProject, }) {
262511
262571
  const t = useT();
262512
262572
  const dispatch = useDispatch();
@@ -269985,6 +270045,10 @@ const AGENT_SETTINGS_TAB_LABELS = {
269985
270045
  label: 'Featured',
269986
270046
  tooltip: 'Feature this agent to highlight it in listings.',
269987
270047
  },
270048
+ showExploreMentors: {
270049
+ label: 'Show additional agents',
270050
+ tooltip: "Shows the additional agents section on this agent's welcome screen.",
270051
+ },
269988
270052
  showAttachment: {
269989
270053
  label: 'Show Attachment',
269990
270054
  tooltip: 'Lets people attach files to a conversation. Each surface has its own switch: In-app chat covers conversations hosted in the app, Embed widget covers the widget on your own site.',
@@ -270151,6 +270215,10 @@ function buildSettingsTabLabels(t) {
270151
270215
  label: t('settingsTabLabels.fields.featured.label'),
270152
270216
  tooltip: t('settingsTabLabels.fields.featured.tooltip'),
270153
270217
  },
270218
+ showExploreMentors: {
270219
+ label: t('settingsTabLabels.fields.showExploreMentors.label'),
270220
+ tooltip: t('settingsTabLabels.fields.showExploreMentors.tooltip'),
270221
+ },
270154
270222
  showAttachment: {
270155
270223
  label: t('settingsTabLabels.fields.showAttachment.label'),
270156
270224
  tooltip: t('settingsTabLabels.fields.showAttachment.tooltip'),
@@ -270262,7 +270330,7 @@ function resolveSettingsTabLabels(override, t) {
270262
270330
  }
270263
270331
 
270264
270332
  function useEditMentorSettings({ onSuccessfulSave, labels }) {
270265
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
270333
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
270266
270334
  const { tenantKey, mentorId, username, enableRBAC, executeGatedAction } = useAgentSettings();
270267
270335
  const dispatch = useDispatch();
270268
270336
  const { data: categories, isLoading: isLoadingCategories } = useGetMentorCategoriesQuery(
@@ -270301,18 +270369,19 @@ function useEditMentorSettings({ onSuccessfulSave, labels }) {
270301
270369
  mentor_visibility: ((_c = m === null || m === void 0 ? void 0 : m.mentor_visibility) === null || _c === void 0 ? void 0 : _c.toString()) || '',
270302
270370
  allow_anonymous: (m === null || m === void 0 ? void 0 : m.allow_anonymous) ? 'true' : 'false',
270303
270371
  is_featured: (_d = m === null || m === void 0 ? void 0 : m.is_featured) !== null && _d !== void 0 ? _d : false,
270304
- show_attachment: (_e = m === null || m === void 0 ? void 0 : m.show_attachment) !== null && _e !== void 0 ? _e : true,
270305
- show_voice_record: (_f = m === null || m === void 0 ? void 0 : m.show_voice_record) !== null && _f !== void 0 ? _f : true,
270306
- show_voice_call: (_g = m === null || m === void 0 ? void 0 : m.show_voice_call) !== null && _g !== void 0 ? _g : true,
270307
- embed_show_attachment: (_h = m === null || m === void 0 ? void 0 : m.embed_show_attachment) !== null && _h !== void 0 ? _h : true,
270308
- embed_show_voice_record: (_j = m === null || m === void 0 ? void 0 : m.embed_show_voice_record) !== null && _j !== void 0 ? _j : true,
270309
- embed_show_voice_call: (_k = m === null || m === void 0 ? void 0 : m.embed_show_voice_call) !== null && _k !== void 0 ? _k : true,
270310
- forkable: (_l = m === null || m === void 0 ? void 0 : m.forkable) !== null && _l !== void 0 ? _l : false,
270311
- show_reasoning: (_m = m === null || m === void 0 ? void 0 : m.show_reasoning) !== null && _m !== void 0 ? _m : false,
270312
- enable_multi_query_rag: (_o = m === null || m === void 0 ? void 0 : m.enable_multi_query_rag) !== null && _o !== void 0 ? _o : false,
270313
- enable_prompt_caching: (_p = m === null || m === void 0 ? void 0 : m.enable_prompt_caching) !== null && _p !== void 0 ? _p : false,
270314
- disable_chathistory: (_q = m === null || m === void 0 ? void 0 : m.disable_chathistory) !== null && _q !== void 0 ? _q : false,
270315
- use_function_calling_for_rag: (_r = existingCallConfig === null || existingCallConfig === void 0 ? void 0 : existingCallConfig.use_function_calling_for_rag) !== null && _r !== void 0 ? _r : false,
270372
+ show_explore_mentors: (_e = m === null || m === void 0 ? void 0 : m.show_explore_mentors) !== null && _e !== void 0 ? _e : false,
270373
+ show_attachment: (_f = m === null || m === void 0 ? void 0 : m.show_attachment) !== null && _f !== void 0 ? _f : true,
270374
+ show_voice_record: (_g = m === null || m === void 0 ? void 0 : m.show_voice_record) !== null && _g !== void 0 ? _g : true,
270375
+ show_voice_call: (_h = m === null || m === void 0 ? void 0 : m.show_voice_call) !== null && _h !== void 0 ? _h : true,
270376
+ embed_show_attachment: (_j = m === null || m === void 0 ? void 0 : m.embed_show_attachment) !== null && _j !== void 0 ? _j : true,
270377
+ embed_show_voice_record: (_k = m === null || m === void 0 ? void 0 : m.embed_show_voice_record) !== null && _k !== void 0 ? _k : true,
270378
+ embed_show_voice_call: (_l = m === null || m === void 0 ? void 0 : m.embed_show_voice_call) !== null && _l !== void 0 ? _l : true,
270379
+ forkable: (_m = m === null || m === void 0 ? void 0 : m.forkable) !== null && _m !== void 0 ? _m : false,
270380
+ show_reasoning: (_o = m === null || m === void 0 ? void 0 : m.show_reasoning) !== null && _o !== void 0 ? _o : false,
270381
+ enable_multi_query_rag: (_p = m === null || m === void 0 ? void 0 : m.enable_multi_query_rag) !== null && _p !== void 0 ? _p : false,
270382
+ enable_prompt_caching: (_q = m === null || m === void 0 ? void 0 : m.enable_prompt_caching) !== null && _q !== void 0 ? _q : false,
270383
+ disable_chathistory: (_r = m === null || m === void 0 ? void 0 : m.disable_chathistory) !== null && _r !== void 0 ? _r : false,
270384
+ use_function_calling_for_rag: (_s = existingCallConfig === null || existingCallConfig === void 0 ? void 0 : existingCallConfig.use_function_calling_for_rag) !== null && _s !== void 0 ? _s : false,
270316
270385
  },
270317
270386
  onSubmit: async ({ value }) => {
270318
270387
  var _a;
@@ -270338,6 +270407,9 @@ function useEditMentorSettings({ onSuccessfulSave, labels }) {
270338
270407
  if (value.is_featured !== undefined) {
270339
270408
  values.is_featured = value.is_featured;
270340
270409
  }
270410
+ if (value.show_explore_mentors !== undefined) {
270411
+ values.show_explore_mentors = value.show_explore_mentors;
270412
+ }
270341
270413
  if (value.show_attachment !== undefined) {
270342
270414
  values.show_attachment = value.show_attachment;
270343
270415
  }
@@ -270715,7 +270787,7 @@ function CapabilitiesSubTab({ form, labels, mentor, isDisabled, tenantAllowsChat
270715
270787
  // field-permission map, and `WithFormPermissions` HIDES a control
270716
270788
  // whose key is missing on an RBAC tenant. The Voice tab treats the
270717
270789
  // same field the same way.
270718
- jsx(CapabilityMatrixSwitch, { form: form, name: "show_voice_call", label: labels.fields.showVoiceCall.label, isDisabled: isDisabled }), embedWidget: jsx(CapabilityMatrixSwitch, { form: form, name: "embed_show_voice_call", label: labels.fields.embedShowVoiceCall.label, isDisabled: isDisabled }) })] })] }), jsxs("div", { className: "rounded-lg border border-gray-200 bg-gray-50 px-4 py-3", "data-testid": "capabilities-global-settings-banner", children: [jsx("h4", { className: "text-sm font-medium text-gray-900", children: labels.sections.globalSettings }), jsx("p", { className: "mt-1 text-xs text-gray-600", children: labels.notes.globalSettings })] }), jsxs("div", { className: "space-y-4", children: [jsxs("div", { className: "space-y-3", children: [jsx("h4", { className: "text-xs font-semibold tracking-wide text-gray-500 uppercase", children: labels.sections.chatExperience }), jsx(SettingToggleField, { form: form, name: "show_reasoning", label: labels.fields.showReasoning.label, tooltip: labels.fields.showReasoning.tooltip, tooltipAriaLabel: t('tabsSettingsTab.showReasoningTooltipAriaLabel'), isDisabled: isDisabled, alignToMatrix: true }), jsx(SettingToggleField, { form: form, name: "enable_multi_query_rag", label: labels.fields.enhancedDocRetrieval.label, tooltip: labels.fields.enhancedDocRetrieval.tooltip, tooltipAriaLabel: t('tabsSettingsTab.enhancedDocRetrievalTooltipAriaLabel'), isDisabled: isDisabled, permissionName: "enable_multi_query_rag", fieldPermissions: fieldPermissions, enableRBAC: enableRBAC, alignToMatrix: true }), jsx(SettingToggleField, { form: form, name: "use_function_calling_for_rag", label: labels.fields.smartDocRetrieval.label, tooltip: labels.fields.smartDocRetrieval.tooltip, tooltipAriaLabel: t('tabsSettingsTab.smartDocRetrievalTooltipAriaLabel'), isDisabled: isDisabled, testId: "settings-use-function-calling-for-rag-switch", alignToMatrix: true }), jsx(SettingToggleField, { form: form, name: "enable_prompt_caching", label: labels.fields.promptCaching.label, tooltip: labels.fields.promptCaching.tooltip, tooltipAriaLabel: t('tabsSettingsTab.promptCachingTooltipAriaLabel'), isDisabled: isDisabled, permissionName: "enable_prompt_caching", fieldPermissions: fieldPermissions, enableRBAC: enableRBAC, alignToMatrix: true })] }), jsxs("div", { className: "space-y-3", children: [jsx("h4", { className: "text-xs font-semibold tracking-wide text-gray-500 uppercase", children: labels.sections.advanced }), tenantAllowsChatPrivacyControl && (jsx(SettingToggleField, { form: form, name: "disable_chathistory", label: labels.fields.privateMode.label, tooltip: labels.fields.privateMode.tooltip, tooltipAriaLabel: t('tabsSettingsTab.privateModeTooltipAriaLabel'), isDisabled: isDisabled, permissionName: "disable_chathistory", fieldPermissions: fieldPermissions, enableRBAC: enableRBAC, testId: "settings-disable-chathistory-switch", alignToMatrix: true })), jsx(SettingToggleField, { form: form, name: "forkable", label: labels.fields.allowCopies.label, tooltip: labels.fields.allowCopies.tooltip, tooltipAriaLabel: t('tabsSettingsTab.allowCopiesTooltipAriaLabel'), isDisabled: isDisabled, alignToMatrix: true })] })] })] }));
270790
+ jsx(CapabilityMatrixSwitch, { form: form, name: "show_voice_call", label: labels.fields.showVoiceCall.label, isDisabled: isDisabled }), embedWidget: jsx(CapabilityMatrixSwitch, { form: form, name: "embed_show_voice_call", label: labels.fields.embedShowVoiceCall.label, isDisabled: isDisabled }) })] })] }), jsxs("div", { className: "rounded-lg border border-gray-200 bg-gray-50 px-4 py-3", "data-testid": "capabilities-global-settings-banner", children: [jsx("h4", { className: "text-sm font-medium text-gray-900", children: labels.sections.globalSettings }), jsx("p", { className: "mt-1 text-xs text-gray-600", children: labels.notes.globalSettings })] }), jsxs("div", { className: "space-y-4", children: [jsxs("div", { className: "space-y-3", children: [jsx("h4", { className: "text-xs font-semibold tracking-wide text-gray-500 uppercase", children: labels.sections.chatExperience }), jsx(SettingToggleField, { form: form, name: "show_reasoning", label: labels.fields.showReasoning.label, tooltip: labels.fields.showReasoning.tooltip, tooltipAriaLabel: t('tabsSettingsTab.showReasoningTooltipAriaLabel'), isDisabled: isDisabled, alignToMatrix: true }), jsx(SettingToggleField, { form: form, name: "enable_multi_query_rag", label: labels.fields.enhancedDocRetrieval.label, tooltip: labels.fields.enhancedDocRetrieval.tooltip, tooltipAriaLabel: t('tabsSettingsTab.enhancedDocRetrievalTooltipAriaLabel'), isDisabled: isDisabled, permissionName: "enable_multi_query_rag", fieldPermissions: fieldPermissions, enableRBAC: enableRBAC, alignToMatrix: true }), jsx(SettingToggleField, { form: form, name: "use_function_calling_for_rag", label: labels.fields.smartDocRetrieval.label, tooltip: labels.fields.smartDocRetrieval.tooltip, tooltipAriaLabel: t('tabsSettingsTab.smartDocRetrievalTooltipAriaLabel'), isDisabled: isDisabled, testId: "settings-use-function-calling-for-rag-switch", alignToMatrix: true }), jsx(SettingToggleField, { form: form, name: "enable_prompt_caching", label: labels.fields.promptCaching.label, tooltip: labels.fields.promptCaching.tooltip, tooltipAriaLabel: t('tabsSettingsTab.promptCachingTooltipAriaLabel'), isDisabled: isDisabled, permissionName: "enable_prompt_caching", fieldPermissions: fieldPermissions, enableRBAC: enableRBAC, alignToMatrix: true })] }), jsxs("div", { className: "space-y-3", children: [jsx("h4", { className: "text-xs font-semibold tracking-wide text-gray-500 uppercase", children: labels.sections.advanced }), tenantAllowsChatPrivacyControl && (jsx(SettingToggleField, { form: form, name: "disable_chathistory", label: labels.fields.privateMode.label, tooltip: labels.fields.privateMode.tooltip, tooltipAriaLabel: t('tabsSettingsTab.privateModeTooltipAriaLabel'), isDisabled: isDisabled, permissionName: "disable_chathistory", fieldPermissions: fieldPermissions, enableRBAC: enableRBAC, testId: "settings-disable-chathistory-switch", alignToMatrix: true })), jsx(SettingToggleField, { form: form, name: "forkable", label: labels.fields.allowCopies.label, tooltip: labels.fields.allowCopies.tooltip, tooltipAriaLabel: t('tabsSettingsTab.allowCopiesTooltipAriaLabel'), isDisabled: isDisabled, alignToMatrix: true }), jsx(SettingToggleField, { form: form, name: "show_explore_mentors", label: labels.fields.showExploreMentors.label, tooltip: labels.fields.showExploreMentors.tooltip, tooltipAriaLabel: t('tabsSettingsTab.showExploreMentorsTooltipAriaLabel'), isDisabled: isDisabled, permissionName: "show_explore_mentors", fieldPermissions: fieldPermissions, enableRBAC: enableRBAC, testId: "settings-show-explore-mentors-switch", alignToMatrix: true })] })] })] }));
270719
270791
  }
270720
270792
 
270721
270793
  /* istanbul ignore next -- @preserve dynamic import is not testable in unit tests */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iblai/iblai-js",
3
- "version": "2.14.0",
3
+ "version": "2.16.0",
4
4
  "description": "Unified JavaScript SDK for IBL.ai — re-exports data-layer, web-containers, and web-utils under a single package",
5
5
  "type": "module",
6
6
  "engines": {
@@ -76,9 +76,9 @@
76
76
  "axios": "1.13.6",
77
77
  "dotenv": "16.6.1",
78
78
  "winston": "3.19.0",
79
- "@iblai/data-layer": "1.16.0",
80
- "@iblai/mcp": "1.13.1",
81
- "@iblai/web-containers": "1.22.0",
79
+ "@iblai/mcp": "1.14.0",
80
+ "@iblai/data-layer": "1.17.0",
81
+ "@iblai/web-containers": "1.24.0",
82
82
  "@iblai/web-utils": "2.4.8"
83
83
  },
84
84
  "peerDependencies": {