zerochat 7.3.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 (136) hide show
  1. zerochat-7.3.0/LICENSE +34 -0
  2. zerochat-7.3.0/MANIFEST.in +15 -0
  3. zerochat-7.3.0/PKG-INFO +70 -0
  4. zerochat-7.3.0/README.md +48 -0
  5. zerochat-7.3.0/css/base.css +199 -0
  6. zerochat-7.3.0/css/components/composer.css +1258 -0
  7. zerochat-7.3.0/css/components/debug.css +777 -0
  8. zerochat-7.3.0/css/components/header.css +97 -0
  9. zerochat-7.3.0/css/components/icons.css +39 -0
  10. zerochat-7.3.0/css/components/markdown.css +685 -0
  11. zerochat-7.3.0/css/components/messages.css +473 -0
  12. zerochat-7.3.0/css/components/modals.css +1319 -0
  13. zerochat-7.3.0/css/components/sidebar.css +622 -0
  14. zerochat-7.3.0/css/components/tools.css +1223 -0
  15. zerochat-7.3.0/css/layout.css +171 -0
  16. zerochat-7.3.0/css/print.css +120 -0
  17. zerochat-7.3.0/css/styles.css +18 -0
  18. zerochat-7.3.0/css/theme-overrides.css +555 -0
  19. zerochat-7.3.0/css/tokens.css +165 -0
  20. zerochat-7.3.0/help/architecture.html +247 -0
  21. zerochat-7.3.0/help/composer.html +134 -0
  22. zerochat-7.3.0/help/conversations.html +105 -0
  23. zerochat-7.3.0/help/debug.html +108 -0
  24. zerochat-7.3.0/help/en/architecture.html +247 -0
  25. zerochat-7.3.0/help/en/composer.html +134 -0
  26. zerochat-7.3.0/help/en/conversations.html +104 -0
  27. zerochat-7.3.0/help/en/debug.html +105 -0
  28. zerochat-7.3.0/help/en/gemini-free.html +39 -0
  29. zerochat-7.3.0/help/en/index.html +191 -0
  30. zerochat-7.3.0/help/en/learning.html +71 -0
  31. zerochat-7.3.0/help/en/mcp.html +143 -0
  32. zerochat-7.3.0/help/en/openrouter-free.html +39 -0
  33. zerochat-7.3.0/help/en/profiles.html +173 -0
  34. zerochat-7.3.0/help/en/rag.html +130 -0
  35. zerochat-7.3.0/help/en/reasoning-telemetry.html +108 -0
  36. zerochat-7.3.0/help/en/tools-agent.html +133 -0
  37. zerochat-7.3.0/help/en/webllm.html +355 -0
  38. zerochat-7.3.0/help/gemini-free.html +39 -0
  39. zerochat-7.3.0/help/help.css +604 -0
  40. zerochat-7.3.0/help/help.js +51 -0
  41. zerochat-7.3.0/help/index.html +194 -0
  42. zerochat-7.3.0/help/learning.html +71 -0
  43. zerochat-7.3.0/help/mcp.html +143 -0
  44. zerochat-7.3.0/help/openrouter-free.html +39 -0
  45. zerochat-7.3.0/help/profiles.html +174 -0
  46. zerochat-7.3.0/help/rag.html +130 -0
  47. zerochat-7.3.0/help/reasoning-telemetry.html +111 -0
  48. zerochat-7.3.0/help/tools-agent.html +133 -0
  49. zerochat-7.3.0/help/webllm.html +359 -0
  50. zerochat-7.3.0/js/agent-core.js +1553 -0
  51. zerochat-7.3.0/js/api.js +844 -0
  52. zerochat-7.3.0/js/app.js +2558 -0
  53. zerochat-7.3.0/js/attachments.js +220 -0
  54. zerochat-7.3.0/js/charts.js +338 -0
  55. zerochat-7.3.0/js/chat-engine.js +566 -0
  56. zerochat-7.3.0/js/config-store.js +207 -0
  57. zerochat-7.3.0/js/context-manager.js +584 -0
  58. zerochat-7.3.0/js/conversation-service.js +484 -0
  59. zerochat-7.3.0/js/cookies.js +688 -0
  60. zerochat-7.3.0/js/data-reset-service.js +136 -0
  61. zerochat-7.3.0/js/debug.js +508 -0
  62. zerochat-7.3.0/js/defaults.js +16 -0
  63. zerochat-7.3.0/js/export.js +179 -0
  64. zerochat-7.3.0/js/file-parser.js +2088 -0
  65. zerochat-7.3.0/js/generation-controller.js +417 -0
  66. zerochat-7.3.0/js/i18n.js +1483 -0
  67. zerochat-7.3.0/js/icons.js +156 -0
  68. zerochat-7.3.0/js/ingestionEngine.js +436 -0
  69. zerochat-7.3.0/js/markdown.js +588 -0
  70. zerochat-7.3.0/js/mcp.js +1271 -0
  71. zerochat-7.3.0/js/message-turns.js +62 -0
  72. zerochat-7.3.0/js/profile-backup.js +118 -0
  73. zerochat-7.3.0/js/profile-export-bundle.js +481 -0
  74. zerochat-7.3.0/js/profile-repository.js +213 -0
  75. zerochat-7.3.0/js/providers-webllm.js +486 -0
  76. zerochat-7.3.0/js/providers.js +1560 -0
  77. zerochat-7.3.0/js/rag-index.js +295 -0
  78. zerochat-7.3.0/js/rag-service.js +530 -0
  79. zerochat-7.3.0/js/rag-ui.js +997 -0
  80. zerochat-7.3.0/js/ragStorage.js +676 -0
  81. zerochat-7.3.0/js/sandbox.js +449 -0
  82. zerochat-7.3.0/js/state.js +704 -0
  83. zerochat-7.3.0/js/storage-db.js +144 -0
  84. zerochat-7.3.0/js/tool-cards.js +330 -0
  85. zerochat-7.3.0/js/tool-security.js +653 -0
  86. zerochat-7.3.0/js/tools/README.md +50 -0
  87. zerochat-7.3.0/js/tools/builtin/agent-checkpoint.tool.js +212 -0
  88. zerochat-7.3.0/js/tools/builtin/download-pdf.tool.js +111 -0
  89. zerochat-7.3.0/js/tools/builtin/execute-javascript.tool.js +219 -0
  90. zerochat-7.3.0/js/tools/builtin/fetch-web-page.tool.js +112 -0
  91. zerochat-7.3.0/js/tools/builtin/list-documents.tool.js +117 -0
  92. zerochat-7.3.0/js/tools/builtin/read-knowledge-chunk.tool.js +129 -0
  93. zerochat-7.3.0/js/tools/builtin/read-knowledge-image.tool.js +95 -0
  94. zerochat-7.3.0/js/tools/builtin/render-chart.tool.js +90 -0
  95. zerochat-7.3.0/js/tools/builtin/search-knowledge-base.tool.js +124 -0
  96. zerochat-7.3.0/js/tools/builtin/search-web.tool.js +125 -0
  97. zerochat-7.3.0/js/tools/tool-manifest.js +53 -0
  98. zerochat-7.3.0/js/tools/tool-runtime.js +77 -0
  99. zerochat-7.3.0/js/ui-composer.js +319 -0
  100. zerochat-7.3.0/js/ui-conversation.js +655 -0
  101. zerochat-7.3.0/js/ui-dialogs.js +132 -0
  102. zerochat-7.3.0/js/ui-generation-status.js +119 -0
  103. zerochat-7.3.0/js/ui-inspector.js +804 -0
  104. zerochat-7.3.0/js/ui-mcp.js +604 -0
  105. zerochat-7.3.0/js/ui-profiles.js +824 -0
  106. zerochat-7.3.0/js/ui-reasoning.js +146 -0
  107. zerochat-7.3.0/js/ui-settings.js +825 -0
  108. zerochat-7.3.0/js/ui-shell.js +215 -0
  109. zerochat-7.3.0/js/ui-sidebar.js +429 -0
  110. zerochat-7.3.0/js/ui-telemetry.js +404 -0
  111. zerochat-7.3.0/js/ui-transfer.js +262 -0
  112. zerochat-7.3.0/js/utils.js +216 -0
  113. zerochat-7.3.0/js/vendor/orama.browser.js +11 -0
  114. zerochat-7.3.0/js/web-browser.js +569 -0
  115. zerochat-7.3.0/js/web-search.js +519 -0
  116. zerochat-7.3.0/manifest.webmanifest +20 -0
  117. zerochat-7.3.0/pyproject.toml +35 -0
  118. zerochat-7.3.0/services/dummy_mcp/dummy_mcp_server.py +47 -0
  119. zerochat-7.3.0/services/dummy_mcp/service.json +22 -0
  120. zerochat-7.3.0/services/lsp/installer.json +9 -0
  121. zerochat-7.3.0/services/lsp/service.json +22 -0
  122. zerochat-7.3.0/services/memory/installer.json +9 -0
  123. zerochat-7.3.0/services/memory/service.json +24 -0
  124. zerochat-7.3.0/services/playwright/installer.json +10 -0
  125. zerochat-7.3.0/services/playwright/service.json +39 -0
  126. zerochat-7.3.0/setup.cfg +4 -0
  127. zerochat-7.3.0/setup.py +42 -0
  128. zerochat-7.3.0/sw.js +164 -0
  129. zerochat-7.3.0/zerochat.egg-info/PKG-INFO +70 -0
  130. zerochat-7.3.0/zerochat.egg-info/SOURCES.txt +134 -0
  131. zerochat-7.3.0/zerochat.egg-info/dependency_links.txt +1 -0
  132. zerochat-7.3.0/zerochat.egg-info/entry_points.txt +2 -0
  133. zerochat-7.3.0/zerochat.egg-info/top_level.txt +2 -0
  134. zerochat-7.3.0/zerochat.html +671 -0
  135. zerochat-7.3.0/zerochat.py +2004 -0
  136. zerochat-7.3.0/zerochat_runtime/__init__.py +1 -0
zerochat-7.3.0/LICENSE ADDED
@@ -0,0 +1,34 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 ZeroChat Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
23
+ ---
24
+
25
+ ### Third-Party Software / Componentes de Terceros
26
+
27
+ ZeroChat integra y hace uso de Orama para búsqueda de texto completo e indexación RAG local en el navegador:
28
+
29
+ - **Orama** (`@orama/orama`): https://github.com/oramasearch/orama
30
+ Copyright (c) 2023 OramaSearch Inc.
31
+ Distribuido bajo licencia Apache, Versión 2.0 (Apache License 2.0).
32
+ Una copia de la licencia se encuentra disponible en `licenses/ORAMA-LICENSE.md`
33
+ y en http://www.apache.org/licenses/LICENSE-2.0.
34
+ Para más detalles sobre componentes de terceros, consulta `THIRD_PARTY_NOTICES.md`.
@@ -0,0 +1,15 @@
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
@@ -0,0 +1,70 @@
1
+ Metadata-Version: 2.4
2
+ Name: zerochat
3
+ Version: 7.3.0
4
+ Summary: Private local web client for AI models, tools and MCP services
5
+ Author: Alberto Balday
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://albalday.github.io/zerochat/
8
+ Project-URL: Repository, https://github.com/albalday/zerochat
9
+ Project-URL: Issues, https://github.com/albalday/zerochat/issues
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Environment :: Web Environment
12
+ Classifier: Operating System :: OS Independent
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3 :: Only
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Requires-Python: >=3.10
19
+ Description-Content-Type: text/markdown
20
+ License-File: LICENSE
21
+ Dynamic: license-file
22
+
23
+ # ZeroChat
24
+
25
+ ZeroChat es un cliente web universal para interactuar con modelos de inteligencia artificial y agentes de forma privada, rápida y sin intermediarios.
26
+
27
+ Funciona de forma estática en el navegador (servido por GitHub Pages o directamente desde local en un único archivo HTML), almacenando tus conversaciones, configuraciones y datos de forma segura en tu propio dispositivo (IndexedDB).
28
+
29
+ ## Características principales
30
+
31
+ - **Multi-proveedor y modelos locales**: compatible con APIs estándar (OpenAI, Anthropic Claude, Google Gemini, OpenRouter) y motores locales (Ollama, LM Studio, vLLM, WebLLM con WebGPU directo en el navegador).
32
+ - **Herramientas y MCP (Model Context Protocol)**: soporte para agentes, herramientas de búsqueda/cálculo y servidores MCP locales coordinados mediante `zerochat.py`.
33
+ - **Conocimiento local (RAG)**: carga de documentos y recuperación contextual procesada íntegramente en el navegador.
34
+ - **Privacidad absoluta**: tus claves API y datos viajan directamente de tu navegador al proveedor seleccionado, sin servidores puente de terceros.
35
+ - **Sin necesidad de empaquetado**: distribuible de forma universal y ligera.
36
+
37
+ ## Inicio rápido
38
+
39
+ - **Uso web directo**: abre [zerochat.html en GitHub Pages](https://albalday.github.io/zerochat/zerochat.html).
40
+ - **Servidor local con herramientas MCP**:
41
+ ```bash
42
+ python3 zerochat.py
43
+ ```
44
+ Inicia el asistente local, crea su entorno virtual de forma desatendida y abre la interfaz web en tu navegador.
45
+ - **Instalación con PyPI**:
46
+ ```bash
47
+ pipx install zerochat
48
+ zerochat
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.
51
+
52
+ Las publicaciones se realizan desde el repositorio oficial mediante GitHub Actions y PyPI Trusted Publishing.
53
+
54
+ ## Documentación y Ayuda
55
+
56
+ Para consultar guías paso a paso, configuración de modelos, perfiles y agentes:
57
+
58
+ - 📖 **[Centro de Ayuda de ZeroChat (Español)](https://albalday.github.io/zerochat/help/index.html)**
59
+ - 📖 **[ZeroChat Documentation & Help (English)](https://albalday.github.io/zerochat/help/en/index.html)**
60
+
61
+ ## Desarrollo
62
+
63
+ Para ejecutar las pruebas del proyecto:
64
+
65
+ ```bash
66
+ npm install
67
+ npm test
68
+ ```
69
+
70
+ Consulta [`AGENTS.md`](./AGENTS.md) para conocer las normas de desarrollo y arquitectura, y [`tests/README.md`](./tests/README.md) para la suite de pruebas.
@@ -0,0 +1,48 @@
1
+ # ZeroChat
2
+
3
+ ZeroChat es un cliente web universal para interactuar con modelos de inteligencia artificial y agentes de forma privada, rápida y sin intermediarios.
4
+
5
+ Funciona de forma estática en el navegador (servido por GitHub Pages o directamente desde local en un único archivo HTML), almacenando tus conversaciones, configuraciones y datos de forma segura en tu propio dispositivo (IndexedDB).
6
+
7
+ ## Características principales
8
+
9
+ - **Multi-proveedor y modelos locales**: compatible con APIs estándar (OpenAI, Anthropic Claude, Google Gemini, OpenRouter) y motores locales (Ollama, LM Studio, vLLM, WebLLM con WebGPU directo en el navegador).
10
+ - **Herramientas y MCP (Model Context Protocol)**: soporte para agentes, herramientas de búsqueda/cálculo y servidores MCP locales coordinados mediante `zerochat.py`.
11
+ - **Conocimiento local (RAG)**: carga de documentos y recuperación contextual procesada íntegramente en el navegador.
12
+ - **Privacidad absoluta**: tus claves API y datos viajan directamente de tu navegador al proveedor seleccionado, sin servidores puente de terceros.
13
+ - **Sin necesidad de empaquetado**: distribuible de forma universal y ligera.
14
+
15
+ ## Inicio rápido
16
+
17
+ - **Uso web directo**: abre [zerochat.html en GitHub Pages](https://albalday.github.io/zerochat/zerochat.html).
18
+ - **Servidor local con herramientas MCP**:
19
+ ```bash
20
+ python3 zerochat.py
21
+ ```
22
+ Inicia el asistente local, crea su entorno virtual de forma desatendida y abre la interfaz web en tu navegador.
23
+ - **Instalación con PyPI**:
24
+ ```bash
25
+ pipx install zerochat
26
+ zerochat
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.
29
+
30
+ Las publicaciones se realizan desde el repositorio oficial mediante GitHub Actions y PyPI Trusted Publishing.
31
+
32
+ ## Documentación y Ayuda
33
+
34
+ Para consultar guías paso a paso, configuración de modelos, perfiles y agentes:
35
+
36
+ - 📖 **[Centro de Ayuda de ZeroChat (Español)](https://albalday.github.io/zerochat/help/index.html)**
37
+ - 📖 **[ZeroChat Documentation & Help (English)](https://albalday.github.io/zerochat/help/en/index.html)**
38
+
39
+ ## Desarrollo
40
+
41
+ Para ejecutar las pruebas del proyecto:
42
+
43
+ ```bash
44
+ npm install
45
+ npm test
46
+ ```
47
+
48
+ Consulta [`AGENTS.md`](./AGENTS.md) para conocer las normas de desarrollo y arquitectura, y [`tests/README.md`](./tests/README.md) para la suite de pruebas.
@@ -0,0 +1,199 @@
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
+ }