@iblai/iblai-js 2.6.0 → 2.7.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.
@@ -98741,7 +98741,22 @@ var clawSandboxSandboxConfig$3 = {
98741
98741
  saving: "Saving...",
98742
98742
  save: "Save",
98743
98743
  instanceUpdated: "Instance updated",
98744
- failedToUpdateInstance: "Failed to update instance"
98744
+ failedToUpdateInstance: "Failed to update instance",
98745
+ sandboxKindDescription: "Choose how this agent runs code. Only one sandbox type can be enabled at a time.",
98746
+ kindComputationalRuntime: "Computing Runtime",
98747
+ kindComputationalRuntimeShort: "Give this agent a lightweight JavaScript calculator for quick computations — the low-cost option.",
98748
+ kindComputationalRuntimeDetail: "Runs small JavaScript snippets in-process with strict memory and time limits. Great for math, dates and data wrangling at minimal cost. No shell, no Python, no network, no files that outlive the turn — choose the Virtual Machine Shell if you need those.",
98749
+ kindVirtualMachine: "Virtual Machine Shell",
98750
+ kindVirtualMachineShort: "Give this agent a full Linux virtual machine: it can write files and run real shell commands in an isolated sandbox.",
98751
+ kindVirtualMachineDetail: "Gives the agent a full Linux Virtual Machine. A private VM is created only when the agent runs a command and is destroyed when the chat ends; files it saves in /workspace carry over between turns. No network access unless you grant an egress profile. Use for data analysis, code that must actually run, or file generation (PDF, XLSX…). This adds additional costs per usage. Use Computing Runtime if you only need simple computations.",
98752
+ kindClaw: "Claw",
98753
+ kindClawShort: "Power this agent with a dedicated Claw worker — a persistent agent host with its own skills and plugins, billed by usage.",
98754
+ kindClawDetail: "Chat is handled by an OpenClaw-protocol worker instead of the built-in agent. Workers keep long-lived state, install skills and plugins, and report measured token usage that is billed against your credits in near-real-time. Requires a provisioned Claw instance for your tenant; built-in agent features (RAG tools, the VM and JS runtimes) don't apply while Claw is active.",
98755
+ kindInfoAriaLabel: "More info about {kind}",
98756
+ kindToggleAriaLabel: "{kind} {state}",
98757
+ sandboxKindUpdated: "Sandbox type updated",
98758
+ failedToUpdateSandboxKind: "Failed to update sandbox type",
98759
+ sandboxKindTitle: "Sandbox Type"
98745
98760
  };
98746
98761
  var common$4 = {
98747
98762
  close: "Close",
@@ -100655,12 +100670,14 @@ var profileOrganization$3 = {
100655
100670
  defaultName: "Default",
100656
100671
  support: "Support",
100657
100672
  supportEmailPlaceholder: "Enter organization support address",
100658
- supportPhone: "Support Phone",
100673
+ supportPhone: "Call / Text",
100659
100674
  supportPhonePlaceholder: "Enter organization support phone number",
100660
100675
  notSet: "Not set",
100661
100676
  helpCenter: "Help Center",
100662
100677
  toggleHelpCenterVisibility: "Toggle Help Center visibility",
100663
100678
  helpCenterUrlPlaceholder: "Enter help center URL",
100679
+ documentation: "Documentation",
100680
+ documentationPlaceholder: "Enter organization documentation URL",
100664
100681
  lightLogo: "Light Logo",
100665
100682
  removeImage: "Remove image",
100666
100683
  upload: "+ Upload",
@@ -100673,6 +100690,7 @@ var profileOrganization$3 = {
100673
100690
  supportUpdated: "Support updated successfully",
100674
100691
  updateFailed: "Failed to update",
100675
100692
  supportPhoneUpdated: "Support phone updated successfully",
100693
+ documentationUpdated: "Documentation updated successfully",
100676
100694
  helpCenterUpdated: "Help Center updated successfully",
100677
100695
  helpCenterEnabled: "Help Center enabled",
100678
100696
  helpCenterDisabled: "Help Center disabled"
@@ -105861,7 +105879,22 @@ var clawSandboxSandboxConfig$2 = {
105861
105879
  saving: "Enregistrement en cours...",
105862
105880
  save: "Enregistrer",
105863
105881
  instanceUpdated: "Instance mise à jour",
105864
- failedToUpdateInstance: "Échec de la mise à jour de l'instance"
105882
+ failedToUpdateInstance: "Échec de la mise à jour de l'instance",
105883
+ sandboxKindDescription: "Choisissez comment cet agent exécute du code. Un seul type de sandbox peut être activé à la fois.",
105884
+ kindComputationalRuntime: "Environnement de calcul",
105885
+ kindComputationalRuntimeShort: "Donnez à cet agent une calculatrice JavaScript légère pour des calculs rapides — l'option la plus économique.",
105886
+ kindComputationalRuntimeDetail: "Exécute de petits extraits JavaScript dans le processus avec des limites strictes de mémoire et de temps. Idéal pour les mathématiques, les dates et la manipulation de données à coût minimal. Pas de shell, pas de Python, pas de réseau, pas de fichiers qui survivent au tour — choisissez la machine virtuelle si vous en avez besoin.",
105887
+ kindVirtualMachine: "Shell de machine virtuelle",
105888
+ kindVirtualMachineShort: "Donnez à cet agent une machine virtuelle Linux complète : il peut écrire des fichiers et exécuter de vraies commandes shell dans un sandbox isolé.",
105889
+ kindVirtualMachineDetail: "Donne à l'agent une machine virtuelle Linux complète. Une VM privée est créée uniquement lorsque l'agent exécute une commande et détruite à la fin du chat ; les fichiers enregistrés dans /workspace sont conservés entre les tours. Aucun accès réseau sauf si vous accordez un profil de sortie. À utiliser pour l'analyse de données, du code qui doit réellement s'exécuter ou la génération de fichiers (PDF, XLSX…). Cela ajoute des coûts supplémentaires à l'usage. Utilisez l'environnement de calcul si vous n'avez besoin que de calculs simples.",
105890
+ kindClaw: "Claw",
105891
+ kindClawShort: "Propulsez cet agent avec un worker Claw dédié — un hôte d'agent persistant avec ses propres skills et plugins, facturé à l'usage.",
105892
+ kindClawDetail: "Le chat est géré par un worker au protocole OpenClaw au lieu de l'agent intégré. Les workers conservent un état de longue durée, installent des skills et des plugins, et rapportent une consommation de tokens mesurée, facturée sur vos crédits quasiment en temps réel. Nécessite une instance Claw provisionnée pour votre tenant ; les fonctionnalités de l'agent intégré (outils RAG, la VM et les environnements JS) ne s'appliquent pas lorsque Claw est actif.",
105893
+ kindInfoAriaLabel: "Plus d'informations sur {kind}",
105894
+ kindToggleAriaLabel: "{kind} {state}",
105895
+ sandboxKindUpdated: "Type de sandbox mis à jour",
105896
+ failedToUpdateSandboxKind: "Échec de la mise à jour du type de sandbox",
105897
+ sandboxKindTitle: "Type de sandbox"
105865
105898
  };
105866
105899
  var common$3 = {
105867
105900
  close: "Fermer",
@@ -107775,12 +107808,14 @@ var profileOrganization$2 = {
107775
107808
  defaultName: "Par défaut",
107776
107809
  support: "Assistance",
107777
107810
  supportEmailPlaceholder: "Entrez l'adresse d'assistance de l'organisation",
107778
- supportPhone: "Téléphone d'assistance",
107811
+ supportPhone: "Appel / SMS",
107779
107812
  supportPhonePlaceholder: "Entrez le numéro de téléphone d'assistance de l'organisation",
107780
107813
  notSet: "Non défini",
107781
107814
  helpCenter: "Centre d'aide",
107782
107815
  toggleHelpCenterVisibility: "Activer/désactiver la visibilité du centre d'aide",
107783
107816
  helpCenterUrlPlaceholder: "Entrez l'URL du centre d'aide",
107817
+ documentation: "Documentation",
107818
+ documentationPlaceholder: "Entrez l'URL de la documentation de l'organisation",
107784
107819
  lightLogo: "Logo clair",
107785
107820
  removeImage: "Supprimer l'image",
107786
107821
  upload: "+ Télécharger",
@@ -107793,6 +107828,7 @@ var profileOrganization$2 = {
107793
107828
  supportUpdated: "Assistance mise à jour avec succès",
107794
107829
  updateFailed: "Échec de la mise à jour",
107795
107830
  supportPhoneUpdated: "Téléphone d'assistance mis à jour avec succès",
107831
+ documentationUpdated: "Documentation mise à jour avec succès",
107796
107832
  helpCenterUpdated: "Centre d'aide mis à jour avec succès",
107797
107833
  helpCenterEnabled: "Centre d'aide activé",
107798
107834
  helpCenterDisabled: "Centre d'aide désactivé"
@@ -112815,7 +112851,22 @@ var clawSandboxSandboxConfig$1 = {
112815
112851
  saving: "Guardando...",
112816
112852
  save: "Guardar",
112817
112853
  instanceUpdated: "Instancia actualizada",
112818
- failedToUpdateInstance: "Error al actualizar la instancia"
112854
+ failedToUpdateInstance: "Error al actualizar la instancia",
112855
+ sandboxKindDescription: "Elige cómo ejecuta código este agente. Solo se puede habilitar un tipo de sandbox a la vez.",
112856
+ kindComputationalRuntime: "Entorno de cómputo",
112857
+ kindComputationalRuntimeShort: "Dale a este agente una calculadora JavaScript ligera para cálculos rápidos: la opción de menor costo.",
112858
+ kindComputationalRuntimeDetail: "Ejecuta pequeños fragmentos de JavaScript en el proceso con límites estrictos de memoria y tiempo. Ideal para matemáticas, fechas y transformación de datos a un costo mínimo. Sin shell, sin Python, sin red y sin archivos que persistan entre turnos; elige la máquina virtual si los necesitas.",
112859
+ kindVirtualMachine: "Shell de máquina virtual",
112860
+ kindVirtualMachineShort: "Dale a este agente una máquina virtual Linux completa: puede escribir archivos y ejecutar comandos de shell reales en un sandbox aislado.",
112861
+ kindVirtualMachineDetail: "Le da al agente una máquina virtual Linux completa. Se crea una VM privada solo cuando el agente ejecuta un comando y se destruye al terminar el chat; los archivos guardados en /workspace se conservan entre turnos. Sin acceso a la red a menos que concedas un perfil de egreso. Úsala para análisis de datos, código que debe ejecutarse realmente o generación de archivos (PDF, XLSX…). Esto añade costos adicionales por uso. Usa el entorno de cómputo si solo necesitas cálculos simples.",
112862
+ kindClaw: "Claw",
112863
+ kindClawShort: "Impulsa este agente con un worker Claw dedicado: un host de agente persistente con sus propias skills y plugins, facturado por uso.",
112864
+ kindClawDetail: "El chat lo gestiona un worker con protocolo OpenClaw en lugar del agente integrado. Los workers mantienen estado de larga duración, instalan skills y plugins, y reportan el uso de tokens medido, que se factura contra tus créditos casi en tiempo real. Requiere una instancia de Claw aprovisionada para tu tenant; las funciones del agente integrado (herramientas RAG, la VM y los entornos JS) no aplican mientras Claw está activo.",
112865
+ kindInfoAriaLabel: "Más información sobre {kind}",
112866
+ kindToggleAriaLabel: "{kind} {state}",
112867
+ sandboxKindUpdated: "Tipo de sandbox actualizado",
112868
+ failedToUpdateSandboxKind: "No se pudo actualizar el tipo de sandbox",
112869
+ sandboxKindTitle: "Tipo de sandbox"
112819
112870
  };
112820
112871
  var common$2 = {
112821
112872
  close: "Cerrar",
@@ -114729,12 +114780,14 @@ var profileOrganization$1 = {
114729
114780
  defaultName: "Predeterminado",
114730
114781
  support: "Soporte",
114731
114782
  supportEmailPlaceholder: "Ingrese la dirección de soporte de la organización",
114732
- supportPhone: "Teléfono de soporte",
114783
+ supportPhone: "Llamar / Mensaje",
114733
114784
  supportPhonePlaceholder: "Ingrese el número de teléfono de soporte de la organización",
114734
114785
  notSet: "No establecido",
114735
114786
  helpCenter: "Centro de ayuda",
114736
114787
  toggleHelpCenterVisibility: "Alternar visibilidad del centro de ayuda",
114737
114788
  helpCenterUrlPlaceholder: "Ingrese la URL del centro de ayuda",
114789
+ documentation: "Documentación",
114790
+ documentationPlaceholder: "Ingrese la URL de la documentación de la organización",
114738
114791
  lightLogo: "Logo claro",
114739
114792
  removeImage: "Eliminar imagen",
114740
114793
  upload: "+ Subir",
@@ -114747,6 +114800,7 @@ var profileOrganization$1 = {
114747
114800
  supportUpdated: "Soporte actualizado correctamente",
114748
114801
  updateFailed: "Error al actualizar",
114749
114802
  supportPhoneUpdated: "Teléfono de soporte actualizado correctamente",
114803
+ documentationUpdated: "Documentación actualizada correctamente",
114750
114804
  helpCenterUpdated: "Centro de ayuda actualizado correctamente",
114751
114805
  helpCenterEnabled: "Centro de ayuda habilitado",
114752
114806
  helpCenterDisabled: "Centro de ayuda deshabilitado"
@@ -119769,7 +119823,22 @@ var clawSandboxSandboxConfig = {
119769
119823
  saving: "保存中...",
119770
119824
  save: "保存",
119771
119825
  instanceUpdated: "实例已更新",
119772
- failedToUpdateInstance: "更新实例失败"
119826
+ failedToUpdateInstance: "更新实例失败",
119827
+ sandboxKindDescription: "选择该智能体运行代码的方式。一次只能启用一种沙箱类型。",
119828
+ kindComputationalRuntime: "计算运行时",
119829
+ kindComputationalRuntimeShort: "为该智能体提供轻量级 JavaScript 计算器,用于快速计算——低成本选项。",
119830
+ kindComputationalRuntimeDetail: "在进程内运行小段 JavaScript 代码,并有严格的内存和时间限制。适合以极低成本进行数学、日期和数据处理。没有 shell、没有 Python、没有网络,文件也不会跨轮次保留——如需这些功能请选择虚拟机。",
119831
+ kindVirtualMachine: "虚拟机 Shell",
119832
+ kindVirtualMachineShort: "为该智能体提供完整的 Linux 虚拟机:它可以在隔离沙箱中写入文件并执行真实的 shell 命令。",
119833
+ kindVirtualMachineDetail: "为智能体提供完整的 Linux 虚拟机。仅当智能体执行命令时才会创建专属虚拟机,并在聊天结束时销毁;保存在 /workspace 中的文件会在轮次之间保留。除非授予出站网络配置,否则无网络访问。适用于数据分析、必须真正运行的代码或文件生成(PDF、XLSX 等)。这会按使用量产生额外费用。若只需简单计算,请使用计算运行时。",
119834
+ kindClaw: "Claw",
119835
+ kindClawShort: "使用专用 Claw worker 驱动该智能体——一个拥有自己的技能和插件的持久化智能体主机,按用量计费。",
119836
+ kindClawDetail: "聊天由 OpenClaw 协议的 worker 处理,而不是内置智能体。Worker 保留长期状态、安装技能和插件,并上报实测的 token 用量,几乎实时地从您的额度中扣费。需要为您的租户预配 Claw 实例;Claw 激活期间,内置智能体功能(RAG 工具、虚拟机和 JS 运行时)不适用。",
119837
+ kindInfoAriaLabel: "关于{kind}的更多信息",
119838
+ kindToggleAriaLabel: "{kind}{state}",
119839
+ sandboxKindUpdated: "沙箱类型已更新",
119840
+ failedToUpdateSandboxKind: "更新沙箱类型失败",
119841
+ sandboxKindTitle: "沙箱类型"
119773
119842
  };
119774
119843
  var common$1 = {
119775
119844
  close: "关闭",
@@ -121683,12 +121752,14 @@ var profileOrganization = {
121683
121752
  defaultName: "默认",
121684
121753
  support: "支持",
121685
121754
  supportEmailPlaceholder: "输入组织支持地址",
121686
- supportPhone: "支持电话",
121755
+ supportPhone: "电话 / 短信",
121687
121756
  supportPhonePlaceholder: "输入组织支持电话号码",
121688
121757
  notSet: "未设置",
121689
121758
  helpCenter: "帮助中心",
121690
121759
  toggleHelpCenterVisibility: "切换帮助中心可见性",
121691
121760
  helpCenterUrlPlaceholder: "输入帮助中心 URL",
121761
+ documentation: "文档",
121762
+ documentationPlaceholder: "输入组织文档网址",
121692
121763
  lightLogo: "浅色徽标",
121693
121764
  removeImage: "删除图片",
121694
121765
  upload: "+ 上传",
@@ -121701,6 +121772,7 @@ var profileOrganization = {
121701
121772
  supportUpdated: "支持信息更新成功",
121702
121773
  updateFailed: "更新失败",
121703
121774
  supportPhoneUpdated: "支持电话更新成功",
121775
+ documentationUpdated: "文档更新成功",
121704
121776
  helpCenterUpdated: "帮助中心更新成功",
121705
121777
  helpCenterEnabled: "帮助中心已启用",
121706
121778
  helpCenterDisabled: "帮助中心已禁用"
@@ -228957,22 +229029,25 @@ function AdvancedTab({ platformKey, username, currentSPA, authURL, currentPlatfo
228957
229029
  'enable_profile_screen_on_start_page',
228958
229030
  'enable_get_started_screen_on_start_page',
228959
229031
  ];
229032
+ // Settings that are edited in the Organization tab, so they are not duplicated here
229033
+ const organizationTabSlugs = ['show_help', 'support_url', 'help_center_url', 'documentation_url'];
228960
229034
  // String settings rendered as a free-text input; every other string setting is
228961
229035
  // either handled by a dedicated component or exposed through its own options list
228962
229036
  const stringSettingSlugs = [
228963
229037
  'overall_default_mentor',
228964
- 'help_center_url',
228965
229038
  'monetization_base_path',
228966
229039
  'skills_welcome_tagline',
228967
229040
  ];
228968
229041
  const getConfigurableMetadatas = () => {
228969
229042
  // Include boolean, select and whitelisted string settings, but exclude start
228970
- // screen settings which are handled by the StartScreenContent component
229043
+ // screen settings which are handled by the StartScreenContent component and
229044
+ // settings owned by the Organization tab
228971
229045
  const configurableMetadatas = getAllMetadatas().filter((metadata) => (typeof metadata.defaultValue === 'boolean' ||
228972
229046
  hasSelectableOptions(metadata) ||
228973
229047
  (typeof metadata.defaultValue === 'string' &&
228974
229048
  stringSettingSlugs.includes(metadata.slug))) &&
228975
- !startScreenSlugs.includes(metadata.slug));
229049
+ !startScreenSlugs.includes(metadata.slug) &&
229050
+ !organizationTabSlugs.includes(metadata.slug));
228976
229051
  // Show all configurable settings when no SPA is specified
228977
229052
  if (!currentSPA)
228978
229053
  return configurableMetadatas;
@@ -263453,6 +263528,9 @@ function OrganizationTab({ platformKey, setOrganizationLogoFromOutside, tenant,
263453
263528
  const [isEditingSupportPhone, setIsEditingSupportPhone] = useState(false);
263454
263529
  const [tempSupportPhone, setTempSupportPhone] = useState('');
263455
263530
  const [showSupportPhone, setShowSupportPhone] = useState(true);
263531
+ const [documentationUrl, setDocumentationUrl] = useState('');
263532
+ const [isEditingDocumentationUrl, setIsEditingDocumentationUrl] = useState(false);
263533
+ const [tempDocumentationUrl, setTempDocumentationUrl] = useState('');
263456
263534
  const [helpCenterUrl, setHelpCenterUrl] = useState('');
263457
263535
  const [isEditingHelpCenterUrl, setIsEditingHelpCenterUrl] = useState(false);
263458
263536
  const [tempHelpCenterUrl, setTempHelpCenterUrl] = useState('');
@@ -263461,7 +263539,8 @@ function OrganizationTab({ platformKey, setOrganizationLogoFromOutside, tenant,
263461
263539
  const [organizationDarkLogo, setOrganizationDarkLogo] = useState(`${LOGO_ENDPOINTS.dark_logo(platformKey)}?v=${Date.now()}`);
263462
263540
  const lightLogoInputRef = useRef(null);
263463
263541
  const darkLogoInputRef = useRef(null);
263464
- const DEFAULT_HELP_CENTER_URL = 'https://docs.ibl.ai';
263542
+ const DEFAULT_HELP_CENTER_URL = 'https://ibl.ai/support';
263543
+ const DEFAULT_DOCUMENTATION_URL = 'https://ibl.ai/docs';
263465
263544
  useEffect(() => {
263466
263545
  if (tenant) {
263467
263546
  setOrganizationName((isAlphaNumeric32((tenant === null || tenant === void 0 ? void 0 : tenant.platform_name) || '') ? '' : tenant === null || tenant === void 0 ? void 0 : tenant.platform_name) || '');
@@ -263479,7 +263558,10 @@ function OrganizationTab({ platformKey, setOrganizationLogoFromOutside, tenant,
263479
263558
  setSupportPhone((metadata === null || metadata === void 0 ? void 0 : metadata.support_phone) || defaultSupportPhone);
263480
263559
  setTempSupportPhone((metadata === null || metadata === void 0 ? void 0 : metadata.support_phone) || defaultSupportPhone);
263481
263560
  setShowSupportPhone(enableSupportPhone !== null && enableSupportPhone !== void 0 ? enableSupportPhone : (metadata === null || metadata === void 0 ? void 0 : metadata.enable_support_phone) !== false);
263482
- const strippedHelpCenterUrl = stripProtocol((metadata === null || metadata === void 0 ? void 0 : metadata.help_center_url) || DEFAULT_HELP_CENTER_URL);
263561
+ const strippedDocumentationUrl = stripProtocol((metadata === null || metadata === void 0 ? void 0 : metadata.documentation_url) || DEFAULT_DOCUMENTATION_URL);
263562
+ setDocumentationUrl(strippedDocumentationUrl);
263563
+ setTempDocumentationUrl(strippedDocumentationUrl);
263564
+ const strippedHelpCenterUrl = stripProtocol((metadata === null || metadata === void 0 ? void 0 : metadata.support_url) || (metadata === null || metadata === void 0 ? void 0 : metadata.help_center_url) || DEFAULT_HELP_CENTER_URL);
263483
263565
  setHelpCenterUrl(strippedHelpCenterUrl);
263484
263566
  setTempHelpCenterUrl(strippedHelpCenterUrl);
263485
263567
  setShowHelp((metadata === null || metadata === void 0 ? void 0 : metadata.show_help) !== false);
@@ -263594,13 +263676,29 @@ function OrganizationTab({ platformKey, setOrganizationLogoFromOutside, tenant,
263594
263676
  setTempSupportPhone(supportPhone);
263595
263677
  setIsEditingSupportPhone(false);
263596
263678
  };
263679
+ const handleEditDocumentationUrl = () => {
263680
+ setTempDocumentationUrl(documentationUrl);
263681
+ setIsEditingDocumentationUrl(true);
263682
+ };
263683
+ const handleSaveDocumentationUrl = async () => {
263684
+ const strippedDocumentationUrl = stripProtocol(tempDocumentationUrl);
263685
+ updateOrganizationMetadata('documentation_url', tempDocumentationUrl, () => {
263686
+ toast.success(t('profileOrganization.documentationUpdated'));
263687
+ setDocumentationUrl(strippedDocumentationUrl);
263688
+ setIsEditingDocumentationUrl(false);
263689
+ });
263690
+ };
263691
+ const handleCancelDocumentationUrl = () => {
263692
+ setTempDocumentationUrl(documentationUrl);
263693
+ setIsEditingDocumentationUrl(false);
263694
+ };
263597
263695
  const handleEditHelpCenterUrl = () => {
263598
263696
  setTempHelpCenterUrl(helpCenterUrl);
263599
263697
  setIsEditingHelpCenterUrl(true);
263600
263698
  };
263601
263699
  const handleSaveHelpCenterUrl = async () => {
263602
263700
  const strippedHelpCenterUrl = stripProtocol(tempHelpCenterUrl);
263603
- updateOrganizationMetadata('help_center_url', tempHelpCenterUrl, () => {
263701
+ updateOrganizationMetadata('support_url', tempHelpCenterUrl, () => {
263604
263702
  toast.success(t('profileOrganization.helpCenterUpdated'));
263605
263703
  setHelpCenterUrl(strippedHelpCenterUrl);
263606
263704
  setIsEditingHelpCenterUrl(false);
@@ -263622,7 +263720,7 @@ function OrganizationTab({ platformKey, setOrganizationLogoFromOutside, tenant,
263622
263720
  ? t('profileOrganization.saving')
263623
263721
  : t('profileOrganization.save')] }), jsxs(Button$1, { onClick: handleCancelOrg, variant: "outline", size: "sm", className: "h-9 bg-transparent", children: [jsx(X$2, { className: "w-4 h-4 mr-1" }), t('profileOrganization.cancel')] })] })) : (jsxs("div", { className: "flex items-center gap-2 mt-1", children: [jsx("span", { className: "text-sm text-gray-600 font-semibold", children: organizationName || t('profileOrganization.defaultName') }), jsx(Button$1, { onClick: handleEditOrg, variant: "ghost", size: "sm", className: "h-8 w-8 p-0 text-muted-foreground hover:text-foreground", children: jsx(SquarePen, { className: "w-3 h-3" }) })] }))] }), jsxs("div", { className: "mb-6", children: [jsx(Label$1, { htmlFor: "orgName", className: "text-gray-500 dark:text-gray-400 text-base", children: t('profileOrganization.support') }), isEditingSupportEmail ? (jsxs("div", { className: "flex items-center gap-2 mt-1", children: [jsx(Input, { id: "supportEmail", value: tempSupportEmail, onChange: (e) => setTempSupportEmail(e.target.value), className: "max-w-md text-sm text-gray-600 font-semibold", placeholder: t('profileOrganization.supportEmailPlaceholder'), autoFocus: true }), jsxs(Button$1, { onClick: handleSaveSupportEmail, size: "sm", disabled: !tempSupportEmail.trim() || isUpdatingTenantMetadata, className: "h-9 bg-gradient-to-r from-[#2563EB] to-[#93C5FD] hover:opacity-90 text-white", children: [jsx(Check, { className: "w-4 h-4 mr-1" }), t('profileOrganization.save')] }), jsxs(Button$1, { onClick: handleCancelSupportEmail, variant: "outline", size: "sm", className: "h-9 bg-transparent", children: [jsx(X$2, { className: "w-4 h-4 mr-1" }), t('profileOrganization.cancel')] })] })) : (jsxs("div", { className: "flex items-center gap-2 mt-1", children: [jsx("span", { className: "text-sm text-gray-600 font-semibold", children: supportEmail }), jsx(Button$1, { onClick: handleEditSupportEmail, variant: "ghost", size: "sm", className: "h-8 w-8 p-0 text-muted-foreground hover:text-foreground", children: jsx(SquarePen, { className: "w-3 h-3" }) })] }))] }), showSupportPhone && (jsxs("div", { className: "mb-6", children: [jsx(Label$1, { htmlFor: "supportPhone", className: "text-gray-500 dark:text-gray-400 text-base", children: t('profileOrganization.supportPhone') }), isEditingSupportPhone ? (jsxs("div", { className: "flex items-center gap-2 mt-1", children: [jsx(Input, { id: "supportPhone", value: tempSupportPhone, onChange: (e) => setTempSupportPhone(e.target.value), className: "max-w-md text-sm text-gray-600 font-semibold", placeholder: t('profileOrganization.supportPhonePlaceholder'), autoFocus: true }), jsxs(Button$1, { onClick: handleSaveSupportPhone, size: "sm", disabled: !tempSupportPhone.trim() || isUpdatingTenantMetadata, className: "h-9 bg-gradient-to-r from-[#2563EB] to-[#93C5FD] hover:opacity-90 text-white", children: [jsx(Check, { className: "w-4 h-4 mr-1" }), t('profileOrganization.save')] }), jsxs(Button$1, { onClick: handleCancelSupportPhone, variant: "outline", size: "sm", className: "h-9 bg-transparent", children: [jsx(X$2, { className: "w-4 h-4 mr-1" }), t('profileOrganization.cancel')] })] })) : (jsxs("div", { className: "flex items-center gap-2 mt-1", children: [jsx("span", { className: "text-sm text-gray-600 font-semibold", children: supportPhone || t('profileOrganization.notSet') }), jsx(Button$1, { onClick: handleEditSupportPhone, variant: "ghost", size: "sm", className: "h-8 w-8 p-0 text-muted-foreground hover:text-foreground", children: jsx(SquarePen, { className: "w-3 h-3" }) })] }))] })), jsxs("div", { className: "mb-6", children: [jsxs("div", { className: "flex items-center gap-3", children: [jsx(Label$1, { htmlFor: "helpCenterUrl", className: "text-gray-500 dark:text-gray-400 text-base", children: t('profileOrganization.helpCenter') }), jsx(Switch, { checked: showHelp, onCheckedChange: handleToggleShowHelp, disabled: isUpdatingTenantMetadata, "aria-label": t('profileOrganization.toggleHelpCenterVisibility'), className: "cursor-pointer data-[state=checked]:bg-blue-500 disabled:cursor-not-allowed disabled:opacity-50" })] }), isEditingHelpCenterUrl ? (jsxs("div", { className: "flex items-center gap-2 mt-1", children: [jsx(Input, { id: "helpCenterUrl", value: tempHelpCenterUrl, onChange: (e) => setTempHelpCenterUrl(e.target.value), className: "max-w-md text-sm font-semibold", placeholder: t('profileOrganization.helpCenterUrlPlaceholder'), autoFocus: true }), jsxs(Button$1, { onClick: handleSaveHelpCenterUrl, size: "sm",
263624
263722
  //disabled={!tempCustomFaqUrl.trim()}
263625
- className: "h-9 bg-gradient-to-r from-[#2563EB] to-[#93C5FD] hover:opacity-90 text-white", children: [jsx(Check, { className: "w-4 h-4 mr-1" }), t('profileOrganization.save')] }), jsxs(Button$1, { onClick: handleCancelHelpCenterUrl, variant: "outline", size: "sm", className: "h-9 bg-transparent", children: [jsx(X$2, { className: "w-4 h-4 mr-1" }), t('profileOrganization.cancel')] })] })) : (jsxs("div", { className: "flex items-center gap-2 mt-1", children: [jsx("span", { className: "text-sm text-gray-600 font-semibold", children: helpCenterUrl }), jsx(Button$1, { onClick: handleEditHelpCenterUrl, variant: "ghost", size: "sm", className: "h-8 w-8 p-0 text-muted-foreground hover:text-foreground", children: jsx(SquarePen, { className: "w-3 h-3" }) })] }))] }), jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-4 mb-6", children: [jsxs("div", { className: "space-y-2", children: [jsx(Label$1, { htmlFor: "orgName", className: "text-gray-500 dark:text-gray-400 text-base", children: t('profileOrganization.lightLogo') }), jsxs("div", { className: "flex h-[200px] w-full sm:w-[200px] flex-col items-center justify-center rounded-lg border-2 border-dashed border-gray-200 mt-3 hover:bg-gray-50 cursor-pointer", onClick: (event) => {
263723
+ className: "h-9 bg-gradient-to-r from-[#2563EB] to-[#93C5FD] hover:opacity-90 text-white", children: [jsx(Check, { className: "w-4 h-4 mr-1" }), t('profileOrganization.save')] }), jsxs(Button$1, { onClick: handleCancelHelpCenterUrl, variant: "outline", size: "sm", className: "h-9 bg-transparent", children: [jsx(X$2, { className: "w-4 h-4 mr-1" }), t('profileOrganization.cancel')] })] })) : (jsxs("div", { className: "flex items-center gap-2 mt-1", children: [jsx("span", { className: "text-sm text-gray-600 font-semibold", children: helpCenterUrl }), jsx(Button$1, { onClick: handleEditHelpCenterUrl, variant: "ghost", size: "sm", className: "h-8 w-8 p-0 text-muted-foreground hover:text-foreground", children: jsx(SquarePen, { className: "w-3 h-3" }) })] }))] }), jsxs("div", { className: "mb-6", children: [jsx(Label$1, { htmlFor: "documentationUrl", className: "text-gray-500 dark:text-gray-400 text-base", children: t('profileOrganization.documentation') }), isEditingDocumentationUrl ? (jsxs("div", { className: "flex items-center gap-2 mt-1", children: [jsx(Input, { id: "documentationUrl", value: tempDocumentationUrl, onChange: (e) => setTempDocumentationUrl(e.target.value), className: "max-w-md text-sm font-semibold", placeholder: t('profileOrganization.documentationPlaceholder'), autoFocus: true }), jsxs(Button$1, { onClick: handleSaveDocumentationUrl, size: "sm", disabled: isUpdatingTenantMetadata, className: "h-9 bg-gradient-to-r from-[#2563EB] to-[#93C5FD] hover:opacity-90 text-white", children: [jsx(Check, { className: "w-4 h-4 mr-1" }), t('profileOrganization.save')] }), jsxs(Button$1, { onClick: handleCancelDocumentationUrl, variant: "outline", size: "sm", className: "h-9 bg-transparent", children: [jsx(X$2, { className: "w-4 h-4 mr-1" }), t('profileOrganization.cancel')] })] })) : (jsxs("div", { className: "flex items-center gap-2 mt-1", children: [jsx("span", { className: "text-sm text-gray-600 font-semibold", children: documentationUrl }), jsx(Button$1, { onClick: handleEditDocumentationUrl, variant: "ghost", size: "sm", className: "h-8 w-8 p-0 text-muted-foreground hover:text-foreground", children: jsx(SquarePen, { className: "w-3 h-3" }) })] }))] }), jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-4 mb-6", children: [jsxs("div", { className: "space-y-2", children: [jsx(Label$1, { htmlFor: "orgName", className: "text-gray-500 dark:text-gray-400 text-base", children: t('profileOrganization.lightLogo') }), jsxs("div", { className: "flex h-[200px] w-full sm:w-[200px] flex-col items-center justify-center rounded-lg border-2 border-dashed border-gray-200 mt-3 hover:bg-gray-50 cursor-pointer", onClick: (event) => {
263626
263724
  event.stopPropagation();
263627
263725
  if (lightLogoInputRef.current) {
263628
263726
  lightLogoInputRef.current.click();
@@ -265123,7 +265221,7 @@ isModalOpen, onModalOpenChange, defaultActiveTab, onAccountDeleted, enableMemory
265123
265221
  return `https://${url}`;
265124
265222
  };
265125
265223
  const getHelpUrl = () => {
265126
- return addProtocolToUrl((metadata === null || metadata === void 0 ? void 0 : metadata.help_center_url) || helpCenterUrl);
265224
+ return addProtocolToUrl((metadata === null || metadata === void 0 ? void 0 : metadata.support_url) || (metadata === null || metadata === void 0 ? void 0 : metadata.help_center_url) || helpCenterUrl);
265127
265225
  };
265128
265226
  const getShowHelp = () => {
265129
265227
  return (metadata === null || metadata === void 0 ? void 0 : metadata.show_help) !== false;
@@ -183,4 +183,35 @@ export declare function setupSandboxInstance(page: Page, instance: {
183
183
  * then delete it from the table.
184
184
  */
185
185
  export declare function teardownSandboxInstance(page: Page, instanceName: string): Promise<void>;
186
+ /** The three sandbox kinds selectable on the Sandbox tab. Mutually exclusive —
187
+ * enabling one turns off whichever kind was enabled before. */
188
+ export type SandboxKind = 'computational-runtime' | 'virtual-machine' | 'claw';
189
+ /**
190
+ * Verify the sandbox kind selector shows all three kind switches
191
+ * (Computing Runtime, Virtual Machine Shell, Claw).
192
+ */
193
+ export declare function verifySandboxKindsVisible(page: Page): Promise<void>;
194
+ /** Read whether a sandbox kind switch is currently on. Waits for the switch to
195
+ * render first so a not-yet-mounted selector never reads as "off". */
196
+ export declare function isSandboxKindEnabled(page: Page, kind: SandboxKind): Promise<boolean>;
197
+ /**
198
+ * Toggle a sandbox kind switch. The kinds are mutually exclusive: enabling one
199
+ * turns off whichever kind was enabled before in the same request; disabling
200
+ * the active kind leaves none enabled. Deterministic completion signals: the
201
+ * switch's own aria-checked state flipping to the target value, then the save
202
+ * toast.
203
+ */
204
+ export declare function toggleSandboxKind(page: Page, kind: SandboxKind): Promise<void>;
205
+ /**
206
+ * Verify the Claw instance section renders below the kind selector — either
207
+ * state qualifies: the not-connected instance table (its search box) or the
208
+ * connected-instance card. Only shown while the Claw kind is enabled.
209
+ */
210
+ export declare function verifyClawSectionVisible(page: Page): Promise<void>;
211
+ /**
212
+ * Verify the Claw instance section is absent — the state while Claw is not the
213
+ * selected kind. Anchors on the kind selector first so "section missing" can
214
+ * never be confused with "tab not rendered yet".
215
+ */
216
+ export declare function verifyClawSectionHidden(page: Page): Promise<void>;
186
217
  export {};
@@ -18,8 +18,8 @@ export type { ReportDownloadOptions } from './report-download';
18
18
  export { isMemoryTabVisible, switchToMemoryTab, verifyMemoryTabSettings, verifyMemoryTabMemoriesList, openAddMemoryDialog, toggleMemorySwitch, addMemory, deleteFirstMemory, deleteMemoryByContent, archiveFirstMemory, archiveMemoryByContent, getMemoryCount, verifyMemoryExists, verifyMemoryNotExists, } from './memory-test-helpers';
19
19
  export { MEMORY_ADMIN_LABELS, memoryAdminGlobalSection, memoryAdminAgentSection, memoryAdminUserRow, memoryAdminAgentRow, memoryRowByContent, isTenantMemoryTabVisible, switchToTenantMemoryTab, switchToMemoryAdminSubTab, searchMemoryAdminUsers, openUserMemoriesPopup, closeUserMemoriesPopup, addUserGlobalMemory, editUserGlobalMemory, deleteUserGlobalMemory, toggleUserMemoryAdminSetting, filterAgentMemories, clearAgentMemoriesFilter, openAgentMemoriesPopup, closeAgentMemoriesPopup, addAgentMemoryFromPopup, } from './memory-admin-helpers';
20
20
  export type { MemoryAdminSubTab, MemoryAdminSetting } from './memory-admin-helpers';
21
- export { isSandboxTabVisible, switchToSandboxTab, verifyInstanceTableVisible, getInstanceRowCount, verifyInstanceTableEmpty, searchInstances, clearInstanceSearch, openInstanceActionsMenu, openNewInstanceDialog, createInstance, cancelNewInstanceDialog, openEditInstanceDialog, editInstance, deleteInstance, cancelDeleteInstance, connectToInstance, disconnectInstance, cancelDisconnectInstance, runInstanceChecks, runConnectedInstanceChecks, getInstanceHealthLabel, getInstanceStatusLabel, verifyConnectDisabledForUnhealthy, verifyConnectedInstanceCard, toggleAutoPush, pushConfiguration, openLLMProviderPicker, selectLLMModel, getCurrentModel, verifyAgentConfigPromptsVisible, openAgentPromptEditModal, editAgentPrompt, setupSandboxInstance, teardownSandboxInstance, } from './claw-sandbox-helpers';
22
- export type { AgentPromptField } from './claw-sandbox-helpers';
21
+ export { isSandboxTabVisible, switchToSandboxTab, verifyInstanceTableVisible, getInstanceRowCount, verifyInstanceTableEmpty, searchInstances, clearInstanceSearch, openInstanceActionsMenu, openNewInstanceDialog, createInstance, cancelNewInstanceDialog, openEditInstanceDialog, editInstance, deleteInstance, cancelDeleteInstance, connectToInstance, disconnectInstance, cancelDisconnectInstance, runInstanceChecks, runConnectedInstanceChecks, getInstanceHealthLabel, getInstanceStatusLabel, verifyConnectDisabledForUnhealthy, verifyConnectedInstanceCard, toggleAutoPush, pushConfiguration, openLLMProviderPicker, selectLLMModel, getCurrentModel, verifyAgentConfigPromptsVisible, openAgentPromptEditModal, editAgentPrompt, setupSandboxInstance, teardownSandboxInstance, verifySandboxKindsVisible, isSandboxKindEnabled, toggleSandboxKind, verifyClawSectionVisible, verifyClawSectionHidden, } from './claw-sandbox-helpers';
22
+ export type { AgentPromptField, SandboxKind } from './claw-sandbox-helpers';
23
23
  export { switchToSkillsTab, verifySkillsTabVisible, switchToAgentSkillsSubTab, switchToAvailableSkillsSubTab, goToSkillsListPage, verifySkillsEmptyState, verifyAgentSkillsEmptyState, getSkillRowCount, verifySkillVisible, addSkillToAgent, verifySkillAdded, removeSkillFromAgent, isSkillEnabled, enableSkill, disableSkill, toggleSkill, setCatalogSkillEnabled, openNewSkillDialog, createSkill, openSkillActionsMenu, openEditSkillDialog, editSkill, deleteSkill, cancelDeleteSkill, switchToSkillResourcesSubTab, addTextResource, uploadAssetResource, editTextResource, deleteResource, openSlashSkillPicker, selectSlashSkill, } from './agent-skills-helpers';
24
24
  export type { SkillFormValues, TextResourceValues } from './agent-skills-helpers';
25
25
  export { navigateToAuditLog, verifyAuditLogTableVisible, getAuditLogRowCount, verifyAuditLogEntryStructure, verifyAuditLogEmptyState, verifyAuditLogPermissionError, verifyAuditLogGenericError, verifyAuditLogLoading, waitForAuditLogDataLoaded, filterByAction, filterByActor, getAvailableActors, filterByDateRange, clearDateRangeFilter, getPaginationInfo, goToNextPage, goToPreviousPage, goToFirstPage, goToLastPage, goToPage, verifyCurrentPage, isOnLastPage, isOnFirstPage, navigateToAuditLogAndWaitForData, filterByActionAndVerify, filterByActorAndVerify, } from './audit-log-helpers';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iblai/iblai-js",
3
- "version": "2.6.0",
3
+ "version": "2.7.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": {
@@ -77,9 +77,9 @@
77
77
  "dotenv": "16.6.1",
78
78
  "winston": "3.19.0",
79
79
  "@iblai/data-layer": "1.13.0",
80
- "@iblai/mcp": "1.11.0",
81
- "@iblai/web-containers": "1.18.10",
82
- "@iblai/web-utils": "2.2.0"
80
+ "@iblai/mcp": "1.12.0",
81
+ "@iblai/web-containers": "1.19.0",
82
+ "@iblai/web-utils": "2.2.1"
83
83
  },
84
84
  "peerDependencies": {
85
85
  "@iblai/iblai-api": "4.166.0-ai",