iatoolkit 0.66.4__tar.gz → 0.66.8__tar.gz

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.
Files changed (125) hide show
  1. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/PKG-INFO +1 -1
  2. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/pyproject.toml +1 -1
  3. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/iatoolkit.py +1 -1
  4. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/repositories/database_manager.py +2 -2
  5. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/services/i18n_service.py +2 -2
  6. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/services/language_service.py +22 -20
  7. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/services/profile_service.py +2 -2
  8. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/static/styles/chat_iatoolkit.css +37 -47
  9. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/templates/chat.html +11 -4
  10. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit.egg-info/PKG-INFO +1 -1
  11. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/readme.md +0 -0
  12. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/requirements.txt +0 -0
  13. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/setup.cfg +0 -0
  14. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/__init__.py +0 -0
  15. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/base_company.py +0 -0
  16. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/cli_commands.py +0 -0
  17. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/common/__init__.py +0 -0
  18. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/common/exceptions.py +0 -0
  19. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/common/routes.py +0 -0
  20. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/common/session_manager.py +0 -0
  21. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/common/util.py +0 -0
  22. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/company_registry.py +0 -0
  23. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/infra/__init__.py +0 -0
  24. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/infra/call_service.py +0 -0
  25. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/infra/connectors/__init__.py +0 -0
  26. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/infra/connectors/file_connector.py +0 -0
  27. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/infra/connectors/file_connector_factory.py +0 -0
  28. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/infra/connectors/google_cloud_storage_connector.py +0 -0
  29. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/infra/connectors/google_drive_connector.py +0 -0
  30. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/infra/connectors/local_file_connector.py +0 -0
  31. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/infra/connectors/s3_connector.py +0 -0
  32. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/infra/gemini_adapter.py +0 -0
  33. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/infra/google_chat_app.py +0 -0
  34. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/infra/llm_client.py +0 -0
  35. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/infra/llm_proxy.py +0 -0
  36. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/infra/llm_response.py +0 -0
  37. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/infra/mail_app.py +0 -0
  38. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/infra/openai_adapter.py +0 -0
  39. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/infra/redis_session_manager.py +0 -0
  40. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/locales/en.yaml +0 -0
  41. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/locales/es.yaml +0 -0
  42. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/repositories/__init__.py +0 -0
  43. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/repositories/document_repo.py +0 -0
  44. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/repositories/llm_query_repo.py +0 -0
  45. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/repositories/models.py +0 -0
  46. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/repositories/profile_repo.py +0 -0
  47. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/repositories/tasks_repo.py +0 -0
  48. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/repositories/vs_repo.py +0 -0
  49. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/services/__init__.py +0 -0
  50. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/services/auth_service.py +0 -0
  51. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/services/benchmark_service.py +0 -0
  52. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/services/branding_service.py +0 -0
  53. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/services/dispatcher_service.py +0 -0
  54. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/services/document_service.py +0 -0
  55. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/services/excel_service.py +0 -0
  56. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/services/file_processor_service.py +0 -0
  57. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/services/help_content_service.py +0 -0
  58. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/services/history_service.py +0 -0
  59. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/services/jwt_service.py +0 -0
  60. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/services/load_documents_service.py +0 -0
  61. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/services/mail_service.py +0 -0
  62. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/services/onboarding_service.py +0 -0
  63. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/services/prompt_manager_service.py +0 -0
  64. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/services/query_service.py +0 -0
  65. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/services/search_service.py +0 -0
  66. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/services/sql_service.py +0 -0
  67. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/services/tasks_service.py +0 -0
  68. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/services/user_feedback_service.py +0 -0
  69. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/services/user_session_context_service.py +0 -0
  70. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/static/images/fernando.jpeg +0 -0
  71. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/static/js/chat_feedback_button.js +0 -0
  72. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/static/js/chat_filepond.js +0 -0
  73. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/static/js/chat_help_content.js +0 -0
  74. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/static/js/chat_history_button.js +0 -0
  75. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/static/js/chat_logout_button.js +0 -0
  76. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/static/js/chat_main.js +0 -0
  77. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/static/js/chat_onboarding_button.js +0 -0
  78. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/static/js/chat_prompt_manager.js +0 -0
  79. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/static/js/chat_reload_button.js +0 -0
  80. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/static/styles/chat_modal.css +0 -0
  81. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/static/styles/chat_public.css +0 -0
  82. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/static/styles/landing_page.css +0 -0
  83. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/static/styles/llm_output.css +0 -0
  84. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/static/styles/onboarding.css +0 -0
  85. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/system_prompts/format_styles.prompt +0 -0
  86. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/system_prompts/query_main.prompt +0 -0
  87. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/system_prompts/sql_rules.prompt +0 -0
  88. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/templates/_company_header.html +0 -0
  89. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/templates/_login_widget.html +0 -0
  90. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/templates/about.html +0 -0
  91. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/templates/base.html +0 -0
  92. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/templates/change_password.html +0 -0
  93. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/templates/chat_modals.html +0 -0
  94. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/templates/error.html +0 -0
  95. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/templates/forgot_password.html +0 -0
  96. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/templates/index.html +0 -0
  97. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/templates/login_simulation.html +0 -0
  98. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/templates/onboarding_shell.html +0 -0
  99. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/templates/signup.html +0 -0
  100. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/views/__init__.py +0 -0
  101. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/views/base_login_view.py +0 -0
  102. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/views/change_password_view.py +0 -0
  103. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/views/external_login_view.py +0 -0
  104. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/views/file_store_api_view.py +0 -0
  105. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/views/forgot_password_view.py +0 -0
  106. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/views/help_content_api_view.py +0 -0
  107. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/views/history_api_view.py +0 -0
  108. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/views/home_view.py +0 -0
  109. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/views/index_view.py +0 -0
  110. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/views/init_context_api_view.py +0 -0
  111. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/views/llmquery_api_view.py +0 -0
  112. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/views/login_simulation_view.py +0 -0
  113. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/views/login_view.py +0 -0
  114. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/views/logout_api_view.py +0 -0
  115. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/views/profile_api_view.py +0 -0
  116. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/views/prompt_api_view.py +0 -0
  117. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/views/signup_view.py +0 -0
  118. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/views/tasks_api_view.py +0 -0
  119. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/views/tasks_review_api_view.py +0 -0
  120. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/views/user_feedback_api_view.py +0 -0
  121. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit/views/verify_user_view.py +0 -0
  122. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit.egg-info/SOURCES.txt +0 -0
  123. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit.egg-info/dependency_links.txt +0 -0
  124. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit.egg-info/requires.txt +0 -0
  125. {iatoolkit-0.66.4 → iatoolkit-0.66.8}/src/iatoolkit.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iatoolkit
3
- Version: 0.66.4
3
+ Version: 0.66.8
4
4
  Summary: IAToolkit
5
5
  Author: Fernando Libedinsky
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "iatoolkit"
7
- version = "0.66.4"
7
+ version = "0.66.8"
8
8
  requires-python = ">=3.12"
9
9
  description = "IAToolkit"
10
10
  readme = "readme.md"
@@ -19,7 +19,7 @@ from werkzeug.middleware.proxy_fix import ProxyFix
19
19
  from injector import Binder, Injector, singleton
20
20
  from importlib.metadata import version as _pkg_version, PackageNotFoundError
21
21
 
22
- IATOOLKIT_VERSION = "0.66.4"
22
+ IATOOLKIT_VERSION = "0.66.8"
23
23
 
24
24
  # global variable for the unique instance of IAToolkit
25
25
  _iatoolkit_instance: Optional['IAToolkit'] = None
@@ -27,8 +27,8 @@ class DatabaseManager:
27
27
  self._engine = create_engine(
28
28
  database_url,
29
29
  echo=False,
30
- pool_size=2, # per worker
31
- max_overflow=3,
30
+ pool_size=10, # per worker
31
+ max_overflow=20,
32
32
  pool_timeout=30,
33
33
  pool_recycle=1800,
34
34
  pool_pre_ping=True,
@@ -1,11 +1,11 @@
1
1
  # iatoolkit/services/i18n_service.py
2
2
  import os
3
3
  import logging
4
- from injector import inject
4
+ from injector import inject, singleton
5
5
  from iatoolkit.common.util import Utility
6
6
  from iatoolkit.services.language_service import LanguageService
7
7
 
8
-
8
+ @singleton
9
9
  class I18nService:
10
10
  """
11
11
  Servicio centralizado para manejar la internacionalización (i18n).
@@ -1,12 +1,12 @@
1
1
  # iatoolkit/services/language_service.py
2
2
 
3
3
  import logging
4
- from injector import inject
4
+ from injector import inject, singleton
5
5
  from flask import g, request
6
6
  from iatoolkit.repositories.profile_repo import ProfileRepo
7
7
  from iatoolkit.common.session_manager import SessionManager
8
8
 
9
-
9
+ @singleton
10
10
  class LanguageService:
11
11
  """
12
12
  Determines the correct language for the current request
@@ -14,6 +14,8 @@ class LanguageService:
14
14
  and caches it in the Flask 'g' object for the request's lifecycle.
15
15
  """
16
16
 
17
+ FALLBACK_LANGUAGE = 'es'
18
+
17
19
  @inject
18
20
  def __init__(self, profile_repo: ProfileRepo):
19
21
  self.profile_repo = profile_repo
@@ -49,29 +51,29 @@ class LanguageService:
49
51
  if 'lang' in g:
50
52
  return g.lang
51
53
 
52
- from iatoolkit.services.i18n_service import I18nService
53
- lang = I18nService.FALLBACK_LANGUAGE
54
-
55
54
  try:
55
+ # Priority 1: User's preferred language
56
+ user_identifier = SessionManager.get('user_identifier')
57
+ if user_identifier:
58
+ user = self.profile_repo.get_user_by_email(user_identifier)
59
+ if user and user.preferred_language:
60
+ logging.debug(f"Language determined by user preference: {user.preferred_language}")
61
+ g.lang = user.preferred_language
62
+ return g.lang
63
+
64
+ # Priority 2: Company's default language
56
65
  company_short_name = self._get_company_short_name()
57
66
  if company_short_name:
58
- # Prioridad 1: Preferencia del Usuario
59
- user_identifier = SessionManager.get('user_identifier')
60
- if user_identifier:
61
- # Usamos el repositorio para obtener el objeto User
62
- user = self.profile_repo.get_user_by_email(
63
- user_identifier) # Asumiendo que el email es el identificador
64
- if user and user.preferred_language:
65
- g.lang = user.preferred_language
66
- return g.lang
67
-
68
- # Prioridad 2: Idioma por defecto de la Compañía (si no se encontró preferencia de usuario)
69
67
  company = self.profile_repo.get_company_by_short_name(company_short_name)
70
68
  if company and company.default_language:
71
- lang = company.default_language
69
+ logging.debug(f"Language determined by company default: {company.default_language}")
70
+ g.lang = company.default_language
71
+ return g.lang
72
72
  except Exception as e:
73
- logging.debug(f"Could not determine language, falling back to default. Reason: {e}")
73
+ logging.info(f"Could not determine language, falling back to default. Reason: {e}")
74
74
  pass
75
75
 
76
- g.lang = lang
77
- return lang
76
+ # Priority 3: System-wide fallback
77
+ logging.info(f"Language determined by system fallback: {self.FALLBACK_LANGUAGE}")
78
+ g.lang = self.FALLBACK_LANGUAGE
79
+ return g.lang
@@ -151,7 +151,7 @@ class ProfileService:
151
151
  except Exception as e:
152
152
  # Log the error and return a generic failure message.
153
153
  logging.error(f"Failed to update language for {user_identifier}: {e}")
154
- return {'success': False, 'error_message': self.i18n_service.t('errors.general.unexpected_error')}
154
+ return {'success': False, 'error_message': self.i18n_service.t('errors.general.unexpected_error', error=str(e))}
155
155
 
156
156
 
157
157
  def get_profile_by_identifier(self, company_short_name: str, user_identifier: str) -> dict:
@@ -230,7 +230,7 @@ class ProfileService:
230
230
 
231
231
  return {"message": self.i18n_service.t('flash_messages.signup_success')}
232
232
  except Exception as e:
233
- return {"error": self.i18n_service.t('errors.general.unexpected_error')}
233
+ return {"error": self.i18n_service.t('errors.general.unexpected_error', error=str(e))}
234
234
 
235
235
  def update_user(self, email: str, **kwargs) -> User:
236
236
  return self.profile_repo.update_user(email, **kwargs)
@@ -23,12 +23,6 @@ li {
23
23
  padding-left: 0.25rem; /* Pequeño espacio extra entre la viñeta y el texto */
24
24
  }
25
25
 
26
- /* Estilo para la viñeta (el punto) de cada elemento de la lista */
27
- li::marker {
28
- color: var(--brand-primary-color); /* La viñeta usa el color principal de la marca */
29
- font-size: 1.1em; /* Ligeramente más grande para que sea más visible */
30
- }
31
-
32
26
  .text-muted {
33
27
  color: #64748b;
34
28
  }
@@ -65,21 +59,6 @@ li::marker {
65
59
  padding-bottom: 0.2rem;
66
60
  }
67
61
 
68
- /* Esta parte para el prompt-assistant sigue siendo correcta */
69
- main.chat-layout-container.prompt-assistant-open {
70
- height: auto;
71
- overflow: visible;
72
- }
73
-
74
-
75
- /* CSS para el chat principal */
76
- /* esta clase defines los atributos de cada bloque */
77
- .chat-block {
78
- padding: 1rem;
79
- border: 1px solid #dee2e6;
80
- border-radius: 0.375rem; /* Borde redondeado estándar de Bootstrap */
81
- box-shadow: 0 2px 8px rgba(0,0,0,0.06); /* Sombra suave y unificada */
82
- }
83
62
 
84
63
  /* sección del encabezado en el chat principal */
85
64
  .company-section {
@@ -97,6 +76,15 @@ main.chat-layout-container.prompt-assistant-open {
97
76
  background-color: #fff; /* Fondo blanco para el contenedor del chat */
98
77
  }
99
78
 
79
+ /* CSS para el chat principal */
80
+ /* esta clase defines los atributos de cada bloque */
81
+ .chat-block {
82
+ padding: 1rem;
83
+ border: 1px solid #dee2e6;
84
+ border-radius: 0.375rem; /* Borde redondeado estándar de Bootstrap */
85
+ box-shadow: 0 2px 8px rgba(0,0,0,0.06); /* Sombra suave y unificada */
86
+ }
87
+
100
88
  /* El textarea "invisible" en el centro */
101
89
  .chat-textarea {
102
90
  flex-grow: 1;
@@ -108,12 +96,6 @@ main.chat-layout-container.prompt-assistant-open {
108
96
  min-height: 38px;
109
97
  }
110
98
 
111
-
112
- /* La caja principal que envuelve toda el área de entrada */
113
- .input-area {
114
- background-color: var(--brand-prompt-assistant-bg, #f8f9fa);
115
- }
116
-
117
99
  /* La barra "cápsula" que envuelve el texto y los iconos */
118
100
  .chat-input-bar {
119
101
  background-color: #ffffff;
@@ -128,6 +110,11 @@ main.chat-layout-container.prompt-assistant-open {
128
110
  border-color: #86b7fe;
129
111
  box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
130
112
  }
113
+ /* La caja principal que envuelve toda el área de entrada */
114
+ .input-area {
115
+ background-color: var(--brand-prompt-assistant-bg, #f8f9fa);
116
+ }
117
+
131
118
 
132
119
  #question {
133
120
  width: 100%;
@@ -144,12 +131,6 @@ main.chat-layout-container.prompt-assistant-open {
144
131
  box-shadow: 0 0 0 0.2rem rgba(0,123,255,.25);
145
132
  }
146
133
 
147
- .answer-section, .error-section {
148
- max-width: 100%;
149
- word-wrap: break-word;
150
- margin-bottom: 10px;
151
- }
152
-
153
134
  /* Estilo del mensaje ingresado por el usuario */
154
135
  #chat-container .message {
155
136
  max-width: 75%;
@@ -169,6 +150,13 @@ main.chat-layout-container.prompt-assistant-open {
169
150
  background-color: #f7f7f8;
170
151
  }
171
152
 
153
+ .answer-section, .error-section {
154
+ max-width: 100%;
155
+ word-wrap: break-word;
156
+ margin-bottom: 10px;
157
+ }
158
+
159
+
172
160
  .answer-section {
173
161
  align-self: flex-start;
174
162
  max-width: 75%;
@@ -315,7 +303,7 @@ main.chat-layout-container.prompt-assistant-open {
315
303
  color: #343a40;
316
304
  }
317
305
 
318
- /* 6. Anulación específica para el botón de ENVIAR usando su ID (Máxima Prioridad) */
306
+ /* Anulación específica para el botón de ENVIAR usando su ID (Máxima Prioridad) */
319
307
  #send-button i {
320
308
  font-size: 1.7rem; /* Ligeramente más grande */
321
309
  }
@@ -395,30 +383,30 @@ main.chat-layout-container.prompt-assistant-open {
395
383
  border-bottom: none;
396
384
  }
397
385
 
386
+ /* estilos para el selector de prompts */
398
387
  .prompt-select-button {
399
- /* Estado por defecto: Estilo "outline" sutil */
400
- background-color: var(--brand-primary-color);
401
- color: var(--brand-text-on-primary);
402
- border: 1px solid var(--brand-primary-color); /* Borde fino con el color primario */
403
-
404
- /* Estilos de botón estándar */
405
- border-radius: 0.25rem;
388
+ color: #202123;
389
+ border: 2px solid var(--brand-primary-color);
390
+ border-radius: 0.25rem; /* Estilos de botón estándar */
406
391
  padding: 0.5rem 1rem;
407
392
  cursor: pointer;
408
393
  text-align: center;
409
- font-weight: 500; /* Un poco más de peso para el texto */
394
+ font-weight: 500;
410
395
 
411
396
  /* Transición suave para el cambio en hover */
412
397
  transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out;
413
398
  }
414
399
 
415
400
  .prompt-select-button:hover {
416
- /* Estado hover: Se rellena para dar feedback claro */
417
- background-color: transparent;
418
- color: var(--brand-primary-color);
419
- }
401
+ background-color: var(--brand-primary-color);
402
+ color: var(--brand-text-on-primary);
420
403
 
404
+ /* Marca el borde con un glow limpio */
405
+ border-color: var(--brand-primary-color);
406
+ box-shadow: 0 0 0 3px rgba( var(--brand-primary-rgb), 0.25 );
407
+ }
421
408
 
409
+ /* estilo de la x que limpia el prompt seleccionado */
422
410
  #clear-selection-button {
423
411
  position: absolute;
424
412
  top: 50%;
@@ -431,7 +419,9 @@ main.chat-layout-container.prompt-assistant-open {
431
419
  }
432
420
 
433
421
  #clear-selection-button:hover {
434
- color: #212529;
422
+ color: #ffffff;
423
+ background-color: #6c757d;
424
+ border-radius: 0.25rem;
435
425
  }
436
426
 
437
427
  #send-button i {
@@ -90,8 +90,8 @@
90
90
  </div>
91
91
 
92
92
  <div id="chat-container"
93
- class="chat-block mt-2 flex-grow-1"
94
- style="overflow-y: auto;">
93
+ class="chat-block mt-2 flex-grow-1" style="overflow-y: auto;">
94
+
95
95
  <!-- Mensaje de bienvenida -->
96
96
  <div class="answer-section">
97
97
  {{ t('ui.chat.welcome_message') }}
@@ -113,7 +113,10 @@
113
113
  <div class="{{ prompt_col_class }}">
114
114
  <div class="position-relative h-100">
115
115
  <div class="input-group dropup h-100">
116
- <button type="button" id="prompt-select-button" class="btn prompt-select-button border dropdown-toggle w-100 text-start" data-bs-toggle="dropdown" aria-expanded="false">
116
+ <button type="button" id="prompt-select-button"
117
+ class="btn prompt-select-button border dropdown-toggle w-100 text-start"
118
+ data-bs-toggle="dropdown"
119
+ aria-expanded="false">
117
120
  {{ t('ui.chat.prompts_available') }} ....
118
121
  </button>
119
122
  <ul class="dropdown-menu dropdown-menu-soft w-100">
@@ -137,7 +140,11 @@
137
140
  {% endif %}
138
141
  </ul>
139
142
  </div>
140
- <button type="button" id="clear-selection-button" class="btn clear-specific-data-button" style="display: none;"><i class="bi bi-x-circle-fill"></i></button>
143
+ <button type="button"
144
+ id="clear-selection-button"
145
+ class="btn clear-specific-data-button position-absolute end-0 me-1" style="display: none;">
146
+ <i class="bi bi-x-circle-fill"></i>
147
+ </button>
141
148
  </div>
142
149
  <input type="hidden" id="prompt-select-value" name="prompt_select_value">
143
150
  <input type="hidden" id="prompt-select-description" name="prompt-select-description">
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iatoolkit
3
- Version: 0.66.4
3
+ Version: 0.66.8
4
4
  Summary: IAToolkit
5
5
  Author: Fernando Libedinsky
6
6
  License-Expression: MIT
File without changes
File without changes
File without changes