zerochat 7.3.0__tar.gz → 7.4.0__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 (138) hide show
  1. {zerochat-7.3.0/zerochat.egg-info → zerochat-7.4.0}/PKG-INFO +3 -3
  2. {zerochat-7.3.0 → zerochat-7.4.0}/README.md +2 -2
  3. {zerochat-7.3.0 → zerochat-7.4.0}/pyproject.toml +1 -2
  4. {zerochat-7.3.0 → zerochat-7.4.0/zerochat.egg-info}/PKG-INFO +3 -3
  5. zerochat-7.4.0/zerochat.egg-info/SOURCES.txt +9 -0
  6. zerochat-7.4.0/zerochat.egg-info/top_level.txt +1 -0
  7. {zerochat-7.3.0 → zerochat-7.4.0}/zerochat.py +16 -44
  8. zerochat-7.3.0/MANIFEST.in +0 -15
  9. zerochat-7.3.0/css/base.css +0 -199
  10. zerochat-7.3.0/css/components/composer.css +0 -1258
  11. zerochat-7.3.0/css/components/debug.css +0 -777
  12. zerochat-7.3.0/css/components/header.css +0 -97
  13. zerochat-7.3.0/css/components/icons.css +0 -39
  14. zerochat-7.3.0/css/components/markdown.css +0 -685
  15. zerochat-7.3.0/css/components/messages.css +0 -473
  16. zerochat-7.3.0/css/components/modals.css +0 -1319
  17. zerochat-7.3.0/css/components/sidebar.css +0 -622
  18. zerochat-7.3.0/css/components/tools.css +0 -1223
  19. zerochat-7.3.0/css/layout.css +0 -171
  20. zerochat-7.3.0/css/print.css +0 -120
  21. zerochat-7.3.0/css/styles.css +0 -18
  22. zerochat-7.3.0/css/theme-overrides.css +0 -555
  23. zerochat-7.3.0/css/tokens.css +0 -165
  24. zerochat-7.3.0/help/architecture.html +0 -247
  25. zerochat-7.3.0/help/composer.html +0 -134
  26. zerochat-7.3.0/help/conversations.html +0 -105
  27. zerochat-7.3.0/help/debug.html +0 -108
  28. zerochat-7.3.0/help/en/architecture.html +0 -247
  29. zerochat-7.3.0/help/en/composer.html +0 -134
  30. zerochat-7.3.0/help/en/conversations.html +0 -104
  31. zerochat-7.3.0/help/en/debug.html +0 -105
  32. zerochat-7.3.0/help/en/gemini-free.html +0 -39
  33. zerochat-7.3.0/help/en/index.html +0 -191
  34. zerochat-7.3.0/help/en/learning.html +0 -71
  35. zerochat-7.3.0/help/en/mcp.html +0 -143
  36. zerochat-7.3.0/help/en/openrouter-free.html +0 -39
  37. zerochat-7.3.0/help/en/profiles.html +0 -173
  38. zerochat-7.3.0/help/en/rag.html +0 -130
  39. zerochat-7.3.0/help/en/reasoning-telemetry.html +0 -108
  40. zerochat-7.3.0/help/en/tools-agent.html +0 -133
  41. zerochat-7.3.0/help/en/webllm.html +0 -355
  42. zerochat-7.3.0/help/gemini-free.html +0 -39
  43. zerochat-7.3.0/help/help.css +0 -604
  44. zerochat-7.3.0/help/help.js +0 -51
  45. zerochat-7.3.0/help/index.html +0 -194
  46. zerochat-7.3.0/help/learning.html +0 -71
  47. zerochat-7.3.0/help/mcp.html +0 -143
  48. zerochat-7.3.0/help/openrouter-free.html +0 -39
  49. zerochat-7.3.0/help/profiles.html +0 -174
  50. zerochat-7.3.0/help/rag.html +0 -130
  51. zerochat-7.3.0/help/reasoning-telemetry.html +0 -111
  52. zerochat-7.3.0/help/tools-agent.html +0 -133
  53. zerochat-7.3.0/help/webllm.html +0 -359
  54. zerochat-7.3.0/js/agent-core.js +0 -1553
  55. zerochat-7.3.0/js/api.js +0 -844
  56. zerochat-7.3.0/js/app.js +0 -2558
  57. zerochat-7.3.0/js/attachments.js +0 -220
  58. zerochat-7.3.0/js/charts.js +0 -338
  59. zerochat-7.3.0/js/chat-engine.js +0 -566
  60. zerochat-7.3.0/js/config-store.js +0 -207
  61. zerochat-7.3.0/js/context-manager.js +0 -584
  62. zerochat-7.3.0/js/conversation-service.js +0 -484
  63. zerochat-7.3.0/js/cookies.js +0 -688
  64. zerochat-7.3.0/js/data-reset-service.js +0 -136
  65. zerochat-7.3.0/js/debug.js +0 -508
  66. zerochat-7.3.0/js/defaults.js +0 -16
  67. zerochat-7.3.0/js/export.js +0 -179
  68. zerochat-7.3.0/js/file-parser.js +0 -2088
  69. zerochat-7.3.0/js/generation-controller.js +0 -417
  70. zerochat-7.3.0/js/i18n.js +0 -1483
  71. zerochat-7.3.0/js/icons.js +0 -156
  72. zerochat-7.3.0/js/ingestionEngine.js +0 -436
  73. zerochat-7.3.0/js/markdown.js +0 -588
  74. zerochat-7.3.0/js/mcp.js +0 -1271
  75. zerochat-7.3.0/js/message-turns.js +0 -62
  76. zerochat-7.3.0/js/profile-backup.js +0 -118
  77. zerochat-7.3.0/js/profile-export-bundle.js +0 -481
  78. zerochat-7.3.0/js/profile-repository.js +0 -213
  79. zerochat-7.3.0/js/providers-webllm.js +0 -486
  80. zerochat-7.3.0/js/providers.js +0 -1560
  81. zerochat-7.3.0/js/rag-index.js +0 -295
  82. zerochat-7.3.0/js/rag-service.js +0 -530
  83. zerochat-7.3.0/js/rag-ui.js +0 -997
  84. zerochat-7.3.0/js/ragStorage.js +0 -676
  85. zerochat-7.3.0/js/sandbox.js +0 -449
  86. zerochat-7.3.0/js/state.js +0 -704
  87. zerochat-7.3.0/js/storage-db.js +0 -144
  88. zerochat-7.3.0/js/tool-cards.js +0 -330
  89. zerochat-7.3.0/js/tool-security.js +0 -653
  90. zerochat-7.3.0/js/tools/README.md +0 -50
  91. zerochat-7.3.0/js/tools/builtin/agent-checkpoint.tool.js +0 -212
  92. zerochat-7.3.0/js/tools/builtin/download-pdf.tool.js +0 -111
  93. zerochat-7.3.0/js/tools/builtin/execute-javascript.tool.js +0 -219
  94. zerochat-7.3.0/js/tools/builtin/fetch-web-page.tool.js +0 -112
  95. zerochat-7.3.0/js/tools/builtin/list-documents.tool.js +0 -117
  96. zerochat-7.3.0/js/tools/builtin/read-knowledge-chunk.tool.js +0 -129
  97. zerochat-7.3.0/js/tools/builtin/read-knowledge-image.tool.js +0 -95
  98. zerochat-7.3.0/js/tools/builtin/render-chart.tool.js +0 -90
  99. zerochat-7.3.0/js/tools/builtin/search-knowledge-base.tool.js +0 -124
  100. zerochat-7.3.0/js/tools/builtin/search-web.tool.js +0 -125
  101. zerochat-7.3.0/js/tools/tool-manifest.js +0 -53
  102. zerochat-7.3.0/js/tools/tool-runtime.js +0 -77
  103. zerochat-7.3.0/js/ui-composer.js +0 -319
  104. zerochat-7.3.0/js/ui-conversation.js +0 -655
  105. zerochat-7.3.0/js/ui-dialogs.js +0 -132
  106. zerochat-7.3.0/js/ui-generation-status.js +0 -119
  107. zerochat-7.3.0/js/ui-inspector.js +0 -804
  108. zerochat-7.3.0/js/ui-mcp.js +0 -604
  109. zerochat-7.3.0/js/ui-profiles.js +0 -824
  110. zerochat-7.3.0/js/ui-reasoning.js +0 -146
  111. zerochat-7.3.0/js/ui-settings.js +0 -825
  112. zerochat-7.3.0/js/ui-shell.js +0 -215
  113. zerochat-7.3.0/js/ui-sidebar.js +0 -429
  114. zerochat-7.3.0/js/ui-telemetry.js +0 -404
  115. zerochat-7.3.0/js/ui-transfer.js +0 -262
  116. zerochat-7.3.0/js/utils.js +0 -216
  117. zerochat-7.3.0/js/vendor/orama.browser.js +0 -11
  118. zerochat-7.3.0/js/web-browser.js +0 -569
  119. zerochat-7.3.0/js/web-search.js +0 -519
  120. zerochat-7.3.0/manifest.webmanifest +0 -20
  121. zerochat-7.3.0/services/dummy_mcp/dummy_mcp_server.py +0 -47
  122. zerochat-7.3.0/services/dummy_mcp/service.json +0 -22
  123. zerochat-7.3.0/services/lsp/installer.json +0 -9
  124. zerochat-7.3.0/services/lsp/service.json +0 -22
  125. zerochat-7.3.0/services/memory/installer.json +0 -9
  126. zerochat-7.3.0/services/memory/service.json +0 -24
  127. zerochat-7.3.0/services/playwright/installer.json +0 -10
  128. zerochat-7.3.0/services/playwright/service.json +0 -39
  129. zerochat-7.3.0/setup.py +0 -42
  130. zerochat-7.3.0/sw.js +0 -164
  131. zerochat-7.3.0/zerochat.egg-info/SOURCES.txt +0 -134
  132. zerochat-7.3.0/zerochat.egg-info/top_level.txt +0 -2
  133. zerochat-7.3.0/zerochat.html +0 -671
  134. zerochat-7.3.0/zerochat_runtime/__init__.py +0 -1
  135. {zerochat-7.3.0 → zerochat-7.4.0}/LICENSE +0 -0
  136. {zerochat-7.3.0 → zerochat-7.4.0}/setup.cfg +0 -0
  137. {zerochat-7.3.0 → zerochat-7.4.0}/zerochat.egg-info/dependency_links.txt +0 -0
  138. {zerochat-7.3.0 → zerochat-7.4.0}/zerochat.egg-info/entry_points.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: zerochat
3
- Version: 7.3.0
3
+ Version: 7.4.0
4
4
  Summary: Private local web client for AI models, tools and MCP services
5
5
  Author: Alberto Balday
6
6
  License-Expression: MIT
@@ -44,10 +44,10 @@ Funciona de forma estática en el navegador (servido por GitHub Pages o directam
44
44
  Inicia el asistente local, crea su entorno virtual de forma desatendida y abre la interfaz web en tu navegador.
45
45
  - **Instalación con PyPI**:
46
46
  ```bash
47
- pipx install zerochat
47
+ pip install zerochat
48
48
  zerochat
49
49
  ```
50
- La distribución incluye una copia local de la interfaz. Las versiones `major.minor` indican compatibilidad del backend; los parches corresponden a la interfaz web.
50
+ Es la vía recomendada para instalar el servidor local desde PyPI. La interfaz se carga desde GitHub Pages, igual que al descargar y ejecutar `zerochat.py` directamente.
51
51
 
52
52
  Las publicaciones se realizan desde el repositorio oficial mediante GitHub Actions y PyPI Trusted Publishing.
53
53
 
@@ -22,10 +22,10 @@ Funciona de forma estática en el navegador (servido por GitHub Pages o directam
22
22
  Inicia el asistente local, crea su entorno virtual de forma desatendida y abre la interfaz web en tu navegador.
23
23
  - **Instalación con PyPI**:
24
24
  ```bash
25
- pipx install zerochat
25
+ pip install zerochat
26
26
  zerochat
27
27
  ```
28
- La distribución incluye una copia local de la interfaz. Las versiones `major.minor` indican compatibilidad del backend; los parches corresponden a la interfaz web.
28
+ Es la vía recomendada para instalar el servidor local desde PyPI. La interfaz se carga desde GitHub Pages, igual que al descargar y ejecutar `zerochat.py` directamente.
29
29
 
30
30
  Las publicaciones se realizan desde el repositorio oficial mediante GitHub Actions y PyPI Trusted Publishing.
31
31
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "zerochat"
7
- version = "7.3.0"
7
+ version = "7.4.0"
8
8
  description = "Private local web client for AI models, tools and MCP services"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -32,4 +32,3 @@ zerochat = "zerochat:main"
32
32
 
33
33
  [tool.setuptools]
34
34
  py-modules = ["zerochat"]
35
- packages = ["zerochat_runtime"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: zerochat
3
- Version: 7.3.0
3
+ Version: 7.4.0
4
4
  Summary: Private local web client for AI models, tools and MCP services
5
5
  Author: Alberto Balday
6
6
  License-Expression: MIT
@@ -44,10 +44,10 @@ Funciona de forma estática en el navegador (servido por GitHub Pages o directam
44
44
  Inicia el asistente local, crea su entorno virtual de forma desatendida y abre la interfaz web en tu navegador.
45
45
  - **Instalación con PyPI**:
46
46
  ```bash
47
- pipx install zerochat
47
+ pip install zerochat
48
48
  zerochat
49
49
  ```
50
- La distribución incluye una copia local de la interfaz. Las versiones `major.minor` indican compatibilidad del backend; los parches corresponden a la interfaz web.
50
+ Es la vía recomendada para instalar el servidor local desde PyPI. La interfaz se carga desde GitHub Pages, igual que al descargar y ejecutar `zerochat.py` directamente.
51
51
 
52
52
  Las publicaciones se realizan desde el repositorio oficial mediante GitHub Actions y PyPI Trusted Publishing.
53
53
 
@@ -0,0 +1,9 @@
1
+ LICENSE
2
+ README.md
3
+ pyproject.toml
4
+ zerochat.py
5
+ zerochat.egg-info/PKG-INFO
6
+ zerochat.egg-info/SOURCES.txt
7
+ zerochat.egg-info/dependency_links.txt
8
+ zerochat.egg-info/entry_points.txt
9
+ zerochat.egg-info/top_level.txt
@@ -0,0 +1 @@
1
+ zerochat
@@ -16,7 +16,6 @@ import atexit
16
16
  import datetime
17
17
  import hmac
18
18
  import importlib.metadata
19
- import importlib.resources
20
19
  import json
21
20
  import os
22
21
  import platform
@@ -229,18 +228,6 @@ def console_log(message: str, *, flush: bool = True):
229
228
  else:
230
229
  print(message, flush=flush)
231
230
 
232
- def get_packaged_assets_root() -> Path | None:
233
- """Devuelve los recursos incluidos en la distribución PyPI, si existen."""
234
- try:
235
- root = importlib.resources.files("zerochat_runtime").joinpath("assets")
236
- path = Path(str(root))
237
- if (path / "zerochat.html").is_file():
238
- return path
239
- except (ModuleNotFoundError, TypeError):
240
- pass
241
- return None
242
-
243
-
244
231
  def get_dev_root() -> Path | None:
245
232
  """
246
233
  Detecta si zerochat.py se está ejecutando en el directorio de desarrollo del repositorio.
@@ -255,12 +242,18 @@ def get_dev_root() -> Path | None:
255
242
 
256
243
 
257
244
  def get_static_root() -> Path | None:
258
- """Prioriza el árbol de desarrollo y usa los recursos empaquetados fuera de él."""
259
- return get_dev_root() or get_packaged_assets_root()
245
+ """La interfaz local solo se sirve al ejecutar el repositorio de desarrollo."""
246
+ return get_dev_root()
260
247
 
261
248
 
262
- def is_packaged_runtime() -> bool:
263
- return get_dev_root() is None and get_packaged_assets_root() is not None
249
+ def is_installed_runtime() -> bool:
250
+ """Identifica el ejecutable instalado desde PyPI, sin confundirlo con el repositorio."""
251
+ if get_dev_root() is not None:
252
+ return False
253
+ try:
254
+ return importlib.metadata.version("zerochat") == BACKEND_PACKAGE_VERSION
255
+ except importlib.metadata.PackageNotFoundError:
256
+ return False
264
257
 
265
258
 
266
259
  def get_venv_dir() -> Path:
@@ -323,7 +316,7 @@ def ensure_virtual_environment():
323
316
  Comprueba si existe el entorno virtual en ./zerochat. Si no existe, lo crea.
324
317
  Si el proceso actual no se está ejecutando bajo dicho entorno, se re-ejecuta.
325
318
  """
326
- if is_packaged_runtime():
319
+ if is_installed_runtime():
327
320
  return
328
321
 
329
322
  venv_dir = get_venv_dir()
@@ -364,7 +357,7 @@ def parse_version(ver: str) -> tuple[int, ...]:
364
357
 
365
358
  def check_version():
366
359
  """Comprueba si hay una nueva versión de zerochat.py en el repositorio remoto (solo en modo producción/standalone)."""
367
- if get_dev_root() is not None or is_packaged_runtime():
360
+ if get_dev_root() is not None or is_installed_runtime():
368
361
  return
369
362
  try:
370
363
  req = urllib.request.Request(REMOTE_VERSION_URL, headers={"User-Agent": f"ZeroChat/{VERSION}"})
@@ -805,28 +798,7 @@ class McpServiceManager:
805
798
  self.services = self._load_services()
806
799
  self.preferences = self._load_preferences()
807
800
 
808
- def _copy_packaged_service_templates(self):
809
- """Inicializa descriptores MCP editables sin copiar dependencias instaladas."""
810
- assets_root = get_packaged_assets_root()
811
- if not assets_root:
812
- return
813
- templates_root = assets_root / "services"
814
- if not templates_root.is_dir():
815
- return
816
- for source in templates_root.rglob("*"):
817
- if not source.is_file():
818
- continue
819
- relative = source.relative_to(templates_root)
820
- if any(part in {"node_modules", ".playwright-mcp"} or part.startswith(".") for part in relative.parts):
821
- continue
822
- target = self.services_root / relative
823
- if target.exists():
824
- continue
825
- target.parent.mkdir(parents=True, exist_ok=True)
826
- shutil.copy2(source, target)
827
-
828
801
  def _ensure_default_services(self):
829
- self._copy_packaged_service_templates()
830
802
  dummy_dir = self.services_root / "dummy_mcp"
831
803
  dummy_dir.mkdir(parents=True, exist_ok=True)
832
804
  service_json_file = dummy_dir / "service.json"
@@ -1350,7 +1322,7 @@ class ZeroChatServerHandler(BaseHTTPRequestHandler):
1350
1322
  console_log(f"[{now}] <-- {status_text} {detail}{err_suffix} ({duration_ms:.1f}ms)", flush=True)
1351
1323
 
1352
1324
  def serve_static_file(self, rel_path: str) -> bool:
1353
- """Sirve los recursos web del repositorio o de la distribución instalada."""
1325
+ """Sirve recursos estáticos solo desde el repositorio de desarrollo."""
1354
1326
  static_root = get_static_root()
1355
1327
  if not static_root:
1356
1328
  return False
@@ -1910,7 +1882,7 @@ def main():
1910
1882
  dev_root = get_dev_root()
1911
1883
  static_root = get_static_root()
1912
1884
  is_dev = dev_root is not None
1913
- is_packaged = is_packaged_runtime()
1885
+ is_installed = is_installed_runtime()
1914
1886
 
1915
1887
  # 3. Comprobar versión remota en segundo plano (solo fuera del entorno de desarrollo local)
1916
1888
  if not is_dev:
@@ -1942,8 +1914,8 @@ def main():
1942
1914
  print(f" Entorno virtual : {get_venv_dir()}")
1943
1915
  if is_dev:
1944
1916
  print(f" Modo de ejecución : Desarrollo local ({dev_root})")
1945
- elif is_packaged:
1946
- print(" Modo de ejecución : Paquete PyPI (interfaz local)")
1917
+ elif is_installed:
1918
+ print(" Modo de ejecución : Paquete PyPI (GitHub Pages)")
1947
1919
  else:
1948
1920
  print(f" Modo de ejecución : Producción (Web universal)")
1949
1921
  print(f" Servidor HTTP/SSE : http://{ACTIVE_HOST}:{ACTIVE_PORT}")
@@ -1,15 +0,0 @@
1
- include LICENSE
2
- include README.md
3
- include zerochat.html
4
- include manifest.webmanifest
5
- include sw.js
6
- recursive-include js *
7
- recursive-include css *
8
- recursive-include help *
9
- recursive-include services *.json *.py
10
- prune services/*/node_modules
11
- prune services/*/.playwright-mcp
12
- exclude services/*/.installed.json
13
- exclude services/*/package.json
14
- exclude services/*/package-lock.json
15
- exclude services/*/*.jsonl
@@ -1,199 +0,0 @@
1
- /* ==========================================================================
2
- ZeroChat Base Styles - Reseteo, Normalización, Animaciones y Accesibilidad
3
- ========================================================================== */
4
- * {
5
- box-sizing: border-box;
6
- margin: 0;
7
- padding: 0;
8
- }
9
-
10
- img {
11
- max-width: 100%;
12
- height: auto;
13
- }
14
-
15
- html, body {
16
- height: 100%;
17
- height: 100dvh;
18
- height: var(--app-height, 100dvh);
19
- min-height: -webkit-fill-available;
20
- font-family: var(--font-sans);
21
- background-color: var(--bg-app);
22
- color: var(--text-main);
23
- line-height: 1.5;
24
- -webkit-font-smoothing: antialiased;
25
- -moz-osx-font-smoothing: grayscale;
26
- }
27
-
28
- body {
29
- display: flex;
30
- flex-direction: row;
31
- height: 100%;
32
- height: 100dvh;
33
- height: var(--app-height, 100dvh);
34
- width: 100%;
35
- width: 100vw;
36
- overflow: hidden;
37
- position: relative;
38
- }
39
-
40
- /* ==========================================================================
41
- Accesibilidad de Foco (WCAG 2.1 AA)
42
- ========================================================================== */
43
- :focus-visible {
44
- outline: 2px solid var(--primary);
45
- outline-offset: 2px;
46
- }
47
-
48
- button:focus-visible,
49
- a:focus-visible,
50
- summary:focus-visible {
51
- outline: 2px solid var(--primary);
52
- outline-offset: 2px;
53
- }
54
-
55
- input:focus,
56
- input:focus-visible,
57
- textarea:focus,
58
- textarea:focus-visible,
59
- select:focus,
60
- select:focus-visible {
61
- outline: none;
62
- }
63
-
64
- .chat-textarea,
65
- .chat-textarea:focus,
66
- .chat-textarea:focus-visible {
67
- outline: none !important;
68
- box-shadow: none !important;
69
- border: none !important;
70
- }
71
-
72
- /* ==========================================================================
73
- Barras de Desplazamiento (Scrollbars) Sutiles
74
- ========================================================================== */
75
- ::-webkit-scrollbar {
76
- width: 6px;
77
- height: 6px;
78
- }
79
-
80
- ::-webkit-scrollbar-track {
81
- background: transparent;
82
- }
83
-
84
- ::-webkit-scrollbar-thumb {
85
- background: var(--scrollbar-thumb);
86
- border-radius: var(--radius-full);
87
- }
88
-
89
- ::-webkit-scrollbar-thumb:hover {
90
- background: var(--scrollbar-thumb-hover);
91
- }
92
-
93
- /* ==========================================================================
94
- Animaciones del Sistema
95
- ========================================================================== */
96
- @keyframes spin {
97
- from { transform: rotate(0deg); }
98
- to { transform: rotate(360deg); }
99
- }
100
-
101
- /* slideUpFadeIn: solo se aplica a mensajes nuevos via .is-new-message (nunca al historial) */
102
- @keyframes slideUpFadeIn {
103
- from { opacity: 0; translate: 0 6px; }
104
- to { opacity: 1; translate: 0 0; }
105
- }
106
-
107
- /* typingBounce: para el indicador de escritura del asistente */
108
- @keyframes typingBounce {
109
- 0%, 80%, 100% { transform: scale(1); opacity: 0.4; }
110
- 40% { transform: scale(1.3); opacity: 1; }
111
- }
112
-
113
- /* pulseStop: mantener para btn-stop-stream */
114
-
115
-
116
- /* La interfaz responde inmediatamente: no se aplican animaciones ni transiciones. */
117
- *,
118
- *::before,
119
- *::after {
120
- animation: none !important;
121
- transition: none !important;
122
- }
123
-
124
- /* ==========================================================================
125
- Utilidades de Accesibilidad (WCAG 2.1 AA)
126
- ========================================================================== */
127
- .sr-only {
128
- position: absolute;
129
- width: 1px;
130
- height: 1px;
131
- padding: 0;
132
- margin: -1px;
133
- overflow: hidden;
134
- clip: rect(0, 0, 0, 0);
135
- white-space: nowrap;
136
- border-width: 0;
137
- }
138
-
139
- /* ==========================================================================
140
- Fundación UI y Consolidación de Clases Base
141
- ========================================================================== */
142
- .btn-primary,
143
- .btn-secondary,
144
- .btn-close,
145
- .btn-attach,
146
- .btn-send,
147
- .btn-stop-stream,
148
- .btn-reasoning,
149
- .btn-query-server,
150
- .btn-profile-action,
151
- .btn-mcp-action,
152
- .btn-debug-action,
153
- .btn-danger-outline,
154
- .modal-btn-action,
155
- .modal-btn-close,
156
- .export-card-btn {
157
- font-family: inherit;
158
- cursor: pointer;
159
- }
160
-
161
- .btn-primary,
162
- .btn-secondary,
163
- .btn-close,
164
- .btn-query-server,
165
- .btn-profile-action,
166
- .btn-mcp-action,
167
- .btn-danger-outline {
168
- display: inline-flex;
169
- align-items: center;
170
- justify-content: center;
171
- border-radius: var(--radius-md);
172
- font-weight: 500;
173
- transition: all 0.15s ease;
174
- }
175
-
176
- .chat-chart-card,
177
- .inspector-intro-card,
178
- .setting-toggle-card,
179
- .connection-active-card,
180
- .rag-branch-details-card,
181
- .rag-active-tip-card,
182
- .mcp-status-card,
183
- .mcp-config-card,
184
- .mcp-instructions-card,
185
- .mcp-tool-card {
186
- background-color: var(--bg-surface);
187
- border: 1px solid var(--border-color);
188
- border-radius: var(--radius-md);
189
- }
190
-
191
- .chat-chart-card,
192
- .inspector-intro-card,
193
- .mcp-status-card,
194
- .mcp-config-card,
195
- .mcp-instructions-card {
196
- border-radius: var(--radius-lg);
197
- padding: 1rem;
198
- box-shadow: var(--shadow-sm);
199
- }