zerochat 7.3.0__py3-none-any.whl

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 (130) hide show
  1. zerochat-7.3.0.dist-info/METADATA +70 -0
  2. zerochat-7.3.0.dist-info/RECORD +130 -0
  3. zerochat-7.3.0.dist-info/WHEEL +5 -0
  4. zerochat-7.3.0.dist-info/entry_points.txt +2 -0
  5. zerochat-7.3.0.dist-info/licenses/LICENSE +34 -0
  6. zerochat-7.3.0.dist-info/top_level.txt +2 -0
  7. zerochat.py +2004 -0
  8. zerochat_runtime/__init__.py +1 -0
  9. zerochat_runtime/assets/css/base.css +199 -0
  10. zerochat_runtime/assets/css/components/composer.css +1258 -0
  11. zerochat_runtime/assets/css/components/debug.css +777 -0
  12. zerochat_runtime/assets/css/components/header.css +97 -0
  13. zerochat_runtime/assets/css/components/icons.css +39 -0
  14. zerochat_runtime/assets/css/components/markdown.css +685 -0
  15. zerochat_runtime/assets/css/components/messages.css +473 -0
  16. zerochat_runtime/assets/css/components/modals.css +1319 -0
  17. zerochat_runtime/assets/css/components/sidebar.css +622 -0
  18. zerochat_runtime/assets/css/components/tools.css +1223 -0
  19. zerochat_runtime/assets/css/layout.css +171 -0
  20. zerochat_runtime/assets/css/print.css +120 -0
  21. zerochat_runtime/assets/css/styles.css +18 -0
  22. zerochat_runtime/assets/css/theme-overrides.css +555 -0
  23. zerochat_runtime/assets/css/tokens.css +165 -0
  24. zerochat_runtime/assets/help/architecture.html +247 -0
  25. zerochat_runtime/assets/help/composer.html +134 -0
  26. zerochat_runtime/assets/help/conversations.html +105 -0
  27. zerochat_runtime/assets/help/debug.html +108 -0
  28. zerochat_runtime/assets/help/en/architecture.html +247 -0
  29. zerochat_runtime/assets/help/en/composer.html +134 -0
  30. zerochat_runtime/assets/help/en/conversations.html +104 -0
  31. zerochat_runtime/assets/help/en/debug.html +105 -0
  32. zerochat_runtime/assets/help/en/gemini-free.html +39 -0
  33. zerochat_runtime/assets/help/en/index.html +191 -0
  34. zerochat_runtime/assets/help/en/learning.html +71 -0
  35. zerochat_runtime/assets/help/en/mcp.html +143 -0
  36. zerochat_runtime/assets/help/en/openrouter-free.html +39 -0
  37. zerochat_runtime/assets/help/en/profiles.html +173 -0
  38. zerochat_runtime/assets/help/en/rag.html +130 -0
  39. zerochat_runtime/assets/help/en/reasoning-telemetry.html +108 -0
  40. zerochat_runtime/assets/help/en/tools-agent.html +133 -0
  41. zerochat_runtime/assets/help/en/webllm.html +355 -0
  42. zerochat_runtime/assets/help/gemini-free.html +39 -0
  43. zerochat_runtime/assets/help/help.css +604 -0
  44. zerochat_runtime/assets/help/help.js +51 -0
  45. zerochat_runtime/assets/help/index.html +194 -0
  46. zerochat_runtime/assets/help/learning.html +71 -0
  47. zerochat_runtime/assets/help/mcp.html +143 -0
  48. zerochat_runtime/assets/help/openrouter-free.html +39 -0
  49. zerochat_runtime/assets/help/profiles.html +174 -0
  50. zerochat_runtime/assets/help/rag.html +130 -0
  51. zerochat_runtime/assets/help/reasoning-telemetry.html +111 -0
  52. zerochat_runtime/assets/help/tools-agent.html +133 -0
  53. zerochat_runtime/assets/help/webllm.html +359 -0
  54. zerochat_runtime/assets/js/agent-core.js +1553 -0
  55. zerochat_runtime/assets/js/api.js +844 -0
  56. zerochat_runtime/assets/js/app.js +2558 -0
  57. zerochat_runtime/assets/js/attachments.js +220 -0
  58. zerochat_runtime/assets/js/charts.js +338 -0
  59. zerochat_runtime/assets/js/chat-engine.js +566 -0
  60. zerochat_runtime/assets/js/config-store.js +207 -0
  61. zerochat_runtime/assets/js/context-manager.js +584 -0
  62. zerochat_runtime/assets/js/conversation-service.js +484 -0
  63. zerochat_runtime/assets/js/cookies.js +688 -0
  64. zerochat_runtime/assets/js/data-reset-service.js +136 -0
  65. zerochat_runtime/assets/js/debug.js +508 -0
  66. zerochat_runtime/assets/js/defaults.js +16 -0
  67. zerochat_runtime/assets/js/export.js +179 -0
  68. zerochat_runtime/assets/js/file-parser.js +2088 -0
  69. zerochat_runtime/assets/js/generation-controller.js +417 -0
  70. zerochat_runtime/assets/js/i18n.js +1483 -0
  71. zerochat_runtime/assets/js/icons.js +156 -0
  72. zerochat_runtime/assets/js/ingestionEngine.js +436 -0
  73. zerochat_runtime/assets/js/markdown.js +588 -0
  74. zerochat_runtime/assets/js/mcp.js +1271 -0
  75. zerochat_runtime/assets/js/message-turns.js +62 -0
  76. zerochat_runtime/assets/js/profile-backup.js +118 -0
  77. zerochat_runtime/assets/js/profile-export-bundle.js +481 -0
  78. zerochat_runtime/assets/js/profile-repository.js +213 -0
  79. zerochat_runtime/assets/js/providers-webllm.js +486 -0
  80. zerochat_runtime/assets/js/providers.js +1560 -0
  81. zerochat_runtime/assets/js/rag-index.js +295 -0
  82. zerochat_runtime/assets/js/rag-service.js +530 -0
  83. zerochat_runtime/assets/js/rag-ui.js +997 -0
  84. zerochat_runtime/assets/js/ragStorage.js +676 -0
  85. zerochat_runtime/assets/js/sandbox.js +449 -0
  86. zerochat_runtime/assets/js/state.js +704 -0
  87. zerochat_runtime/assets/js/storage-db.js +144 -0
  88. zerochat_runtime/assets/js/tool-cards.js +330 -0
  89. zerochat_runtime/assets/js/tool-security.js +653 -0
  90. zerochat_runtime/assets/js/tools/README.md +50 -0
  91. zerochat_runtime/assets/js/tools/builtin/agent-checkpoint.tool.js +212 -0
  92. zerochat_runtime/assets/js/tools/builtin/download-pdf.tool.js +111 -0
  93. zerochat_runtime/assets/js/tools/builtin/execute-javascript.tool.js +219 -0
  94. zerochat_runtime/assets/js/tools/builtin/fetch-web-page.tool.js +112 -0
  95. zerochat_runtime/assets/js/tools/builtin/list-documents.tool.js +117 -0
  96. zerochat_runtime/assets/js/tools/builtin/read-knowledge-chunk.tool.js +129 -0
  97. zerochat_runtime/assets/js/tools/builtin/read-knowledge-image.tool.js +95 -0
  98. zerochat_runtime/assets/js/tools/builtin/render-chart.tool.js +90 -0
  99. zerochat_runtime/assets/js/tools/builtin/search-knowledge-base.tool.js +124 -0
  100. zerochat_runtime/assets/js/tools/builtin/search-web.tool.js +125 -0
  101. zerochat_runtime/assets/js/tools/tool-manifest.js +53 -0
  102. zerochat_runtime/assets/js/tools/tool-runtime.js +77 -0
  103. zerochat_runtime/assets/js/ui-composer.js +319 -0
  104. zerochat_runtime/assets/js/ui-conversation.js +655 -0
  105. zerochat_runtime/assets/js/ui-dialogs.js +132 -0
  106. zerochat_runtime/assets/js/ui-generation-status.js +119 -0
  107. zerochat_runtime/assets/js/ui-inspector.js +804 -0
  108. zerochat_runtime/assets/js/ui-mcp.js +604 -0
  109. zerochat_runtime/assets/js/ui-profiles.js +824 -0
  110. zerochat_runtime/assets/js/ui-reasoning.js +146 -0
  111. zerochat_runtime/assets/js/ui-settings.js +825 -0
  112. zerochat_runtime/assets/js/ui-shell.js +215 -0
  113. zerochat_runtime/assets/js/ui-sidebar.js +429 -0
  114. zerochat_runtime/assets/js/ui-telemetry.js +404 -0
  115. zerochat_runtime/assets/js/ui-transfer.js +262 -0
  116. zerochat_runtime/assets/js/utils.js +216 -0
  117. zerochat_runtime/assets/js/vendor/orama.browser.js +11 -0
  118. zerochat_runtime/assets/js/web-browser.js +569 -0
  119. zerochat_runtime/assets/js/web-search.js +519 -0
  120. zerochat_runtime/assets/manifest.webmanifest +20 -0
  121. zerochat_runtime/assets/services/dummy_mcp/dummy_mcp_server.py +47 -0
  122. zerochat_runtime/assets/services/dummy_mcp/service.json +22 -0
  123. zerochat_runtime/assets/services/lsp/installer.json +9 -0
  124. zerochat_runtime/assets/services/lsp/service.json +22 -0
  125. zerochat_runtime/assets/services/memory/installer.json +9 -0
  126. zerochat_runtime/assets/services/memory/service.json +24 -0
  127. zerochat_runtime/assets/services/playwright/installer.json +10 -0
  128. zerochat_runtime/assets/services/playwright/service.json +39 -0
  129. zerochat_runtime/assets/sw.js +164 -0
  130. zerochat_runtime/assets/zerochat.html +671 -0
@@ -0,0 +1,247 @@
1
+ <!DOCTYPE html>
2
+ <html lang="es">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Arquitectura y Portabilidad · Ayuda de ZeroChat</title>
7
+ <meta name="description" content="Detalles de la arquitectura técnica de ZeroChat: aplicación web estática servida por HTTPS, backend local unificado en zerochat.py, almacenamiento local en IndexedDB y privacidad.">
8
+ <link rel="stylesheet" href="help.css">
9
+ </head>
10
+ <body>
11
+ <div class="container">
12
+ <header>
13
+ <div class="header-top">
14
+ <a href="index.html" class="logo-badge">
15
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 17l6-6-6-6M12 19h8"/></svg>
16
+ ZeroChat Docs
17
+ </a>
18
+ <div class="header-actions">
19
+ <a href="en/architecture.html" class="top-nav-link">English 🌐</a>
20
+ <a href="index.html" class="top-nav-link">← Volver al Índice</a>
21
+ </div>
22
+ </div>
23
+ <h1>Arquitectura y Portabilidad</h1>
24
+ <p class="subtitle">Descubre cómo funciona ZeroChat como aplicación web autónoma, independiente de servidor y 100% portable.</p>
25
+ </header>
26
+
27
+ <div class="card">
28
+ <h2>1. Arquitectura Web Estática y Backend Unificado</h2>
29
+ <p>
30
+ ZeroChat está diseñado bajo una premisa fundamental: <strong>máxima simplicidad, velocidad y control sin dependencias pesadas</strong>.
31
+ </p>
32
+ <p>
33
+ La aplicación web se sirve de forma directa y estática por HTTPS desde GitHub Pages como <code>zerochat.html</code>, cargando sus módulos <code>css/</code> y <code>js/</code> sin proceso de empaquetado. El Service Worker permite reutilizar recursos disponibles sin sustituir la conexión cuando sea necesaria.
34
+ </p>
35
+ <p>
36
+ Toda la interacción con el sistema local (ejecución de comandos, lectura y edición de archivos) se canaliza a través de un único ejecutable en Python: <code>zerochat.py</code>, que gestiona su propio entorno virtual en <code>./zerochat</code> y autentica las sesiones mediante tokens diarios de seguridad.
37
+ </p>
38
+ <div class="alert alert-success">
39
+ <strong>Ventaja clave:</strong> Sin compiladores ni herramientas complejas de empaquetado. La aplicación web se sirve estáticamente y el backend local se ejecuta en cualquier equipo con un simple comando de terminal.
40
+ </div>
41
+ </div>
42
+
43
+ <div class="card" id="modos-arranque">
44
+ <h2>2. Modos de arranque: zerochat.html (Web) vs. zerochat.py (Backend local)</h2>
45
+ <p>
46
+ ZeroChat está concebido para ofrecer dos experiencias complementarias según el contexto de uso: una <strong>aplicación web universal y autónoma</strong> (ideal para movilidad y uso diario sin instalación) y una <strong>estación de trabajo local</strong> (para desarrollo y control directo del sistema operativo).
47
+ </p>
48
+
49
+ <h3>A. La versión Web pura (<code>zerochat.html</code>)</h3>
50
+ <p>
51
+ Disponible directamente en la web (GitHub Pages) o abriendo el archivo localmente. Es una aplicación completa y autosuficiente que <strong>no requiere Python, terminal, servidores auxiliares ni instalación</strong>.
52
+ </p>
53
+ <ul>
54
+ <li>
55
+ <strong>Experiencia web universal:</strong>
56
+ Diseñada como Progressive Web App (PWA) instalable desde navegadores modernos, con panel lateral táctil y composer autoexpansible. No requiere Python, root ni herramientas de terminal.
57
+ </li>
58
+ <li>
59
+ <strong>Conectividad multimodelo completa:</strong>
60
+ Conexión directa desde el navegador con OpenAI, Anthropic Claude, Google Gemini y OpenRouter, así como servidores locales en red con CORS (Ollama, LM Studio).
61
+ </li>
62
+ <li>
63
+ <strong>Inferencia local privada en navegador (WebLLM / WebGPU):</strong>
64
+ Descarga y ejecuta modelos de lenguaje open-source en la GPU del propio dispositivo sin enviar datos al exterior.
65
+ </li>
66
+ <li>
67
+ <strong>Motor RAG documental integrado:</strong>
68
+ Indexación y búsqueda vectorial/léxica de PDFs y documentos con Orama, ejecutada en Web Workers y persistida en IndexedDB.
69
+ </li>
70
+ <li>
71
+ <strong>Modo Agente con herramientas de navegador:</strong>
72
+ Ejecución de código JavaScript en sandbox seguro de navegador, generación de gráficas interactivas SVG, búsqueda en la web y lectura de páginas públicas.
73
+ </li>
74
+ <li>
75
+ <strong>Soberanía absoluta de datos:</strong>
76
+ Historiales, ramas, adjuntos y configuraciones residen exclusivamente en el IndexedDB local de tu navegador.
77
+ </li>
78
+ </ul>
79
+
80
+ <h3>B. Qué añade el Backend local (<code>zerochat.py</code>)</h3>
81
+ <p>
82
+ Diseñado para puestos de escritorio (Linux, macOS, Windows) donde el agente de IA necesita actuar como asistente de desarrollo sobre el sistema operativo. También se ha probado en Android mediante Termux:
83
+ </p>
84
+ <ul>
85
+ <li>
86
+ <strong>Acceso al sistema de archivos local:</strong>
87
+ Exploración de directorios, lectura de código fuente e inserción o edición atómica de archivos en el disco duro (<code>read_file</code>, <code>edit_file</code>, <code>list_directory</code>).
88
+ </li>
89
+ <li>
90
+ <strong>Ejecución de comandos del sistema:</strong>
91
+ Lanzamiento de compilaciones, pruebas y comandos shell en la terminal local del equipo (<code>execute_command</code>).
92
+ </li>
93
+ <li>
94
+ <strong>Servidores MCP externos:</strong>
95
+ Integración con el ecosistema Model Context Protocol (automatización de navegador con Playwright, servidores LSP de análisis estático, persistencia relacional SQLite).
96
+ </li>
97
+ <li>
98
+ <strong>Gestión automatizada de entorno:</strong>
99
+ Auto-gestión de venv en <code>./zerochat</code>, autenticación por token efímero diario y logging en tiempo real con marcas de tiempo y diagnóstico de errores.
100
+ </li>
101
+ </ul>
102
+
103
+ <h3>Tabla comparativa de capacidades</h3>
104
+ <div class="table-responsive">
105
+ <table>
106
+ <thead>
107
+ <tr>
108
+ <th>Capacidad / Característica</th>
109
+ <th style="text-align: center;"><code>zerochat.html</code> (Web / PWA)</th>
110
+ <th style="text-align: center;"><code>zerochat.py</code> (Backend local)</th>
111
+ </tr>
112
+ </thead>
113
+ <tbody>
114
+ <tr>
115
+ <td>Conexión con proveedores de IA comerciales (OpenAI, Claude, Gemini, etc.)</td>
116
+ <td style="text-align: center;">✅ Sí</td>
117
+ <td style="text-align: center;">✅ Sí</td>
118
+ </tr>
119
+ <tr>
120
+ <td>Inferencia 100% local en navegador con WebLLM y WebGPU</td>
121
+ <td style="text-align: center;">✅ Sí</td>
122
+ <td style="text-align: center;">✅ Sí</td>
123
+ </tr>
124
+ <tr>
125
+ <td>Base de conocimiento RAG documental (Orama en navegador)</td>
126
+ <td style="text-align: center;">✅ Sí</td>
127
+ <td style="text-align: center;">✅ Sí</td>
128
+ </tr>
129
+ <tr>
130
+ <td>Modo Agente con sandbox JS, búsqueda web y gráficas SVG</td>
131
+ <td style="text-align: center;">✅ Sí</td>
132
+ <td style="text-align: center;">✅ Sí</td>
133
+ </tr>
134
+ <tr>
135
+ <td>Persistencia privada en IndexedDB y exportación/importación</td>
136
+ <td style="text-align: center;">✅ Sí</td>
137
+ <td style="text-align: center;">✅ Sí</td>
138
+ </tr>
139
+ <tr>
140
+ <td>Uso directo en móviles (Android / iOS) sin terminal ni Python</td>
141
+ <td style="text-align: center;">✅ Nativo (PWA)</td>
142
+ <td style="text-align: center;">⚠️ Requiere Python (Termux o escritorio)</td>
143
+ </tr>
144
+ <tr>
145
+ <td>Lectura, edición y navegación de archivos en el disco local</td>
146
+ <td style="text-align: center;">❌ No disponible</td>
147
+ <td style="text-align: center;">✅ Sí (herramientas locales)</td>
148
+ </tr>
149
+ <tr>
150
+ <td>Ejecución de comandos de terminal y shell en el host</td>
151
+ <td style="text-align: center;">❌ No disponible</td>
152
+ <td style="text-align: center;">✅ Sí (bash/shell)</td>
153
+ </tr>
154
+ <tr>
155
+ <td>Servidores MCP externos (Playwright, memoria, LSP)</td>
156
+ <td style="text-align: center;">❌ No disponible</td>
157
+ <td style="text-align: center;">✅ Sí (gestor MCP integrado)</td>
158
+ </tr>
159
+ </tbody>
160
+ </table>
161
+ </div>
162
+ </div>
163
+
164
+ <div class="card">
165
+ <h2>3. Entrega Web Estática y Conexión con el Backend Local</h2>
166
+ <p>ZeroChat se sirve de manera estática y universal a través de la web:</p>
167
+ <ul>
168
+ <li>
169
+ <strong>Servicio Web Universal (HTTPS):</strong> Servido directamente desde GitHub Pages (<code>https://albalday.github.io/zerochat/zerochat.html</code>). Toda la ejecución de interfaz, renderizado y llamadas a APIs de inferencia ocurre en el navegador con acceso a APIs modernas de persistencia como <code>navigator.storage.persist()</code> y almacenamiento seguro en IndexedDB.
170
+ </li>
171
+ <li>
172
+ <strong>Backend Local Unificado (<code>zerochat.py</code>):</strong> Al ejecutar <code>python3 zerochat.py</code>, el servidor local arranca en <code>127.0.0.1:6388</code>, abre automáticamente el navegador apuntando a la aplicación web y transfiere el token de sesión diario de forma segura en el fragmento de la URL. En Termux, detecta el entorno y usa <code>termux-open-url</code> para abrir el navegador Android; en los demás escritorios Linux usa el gestor de aplicaciones predeterminado. El comando de arranque es el mismo en ambos casos. La aplicación consume ese fragmento una sola vez, lo elimina de la barra de direcciones y conserva la sesión local en una cookie de duración limitada; así las recargas y nuevas pestañas no exponen ni vuelven a propagar el token.
173
+ </li>
174
+ </ul>
175
+ <div class="alert alert-info">
176
+ <strong>Desarrollo y pruebas locales automáticas:</strong> Al ejecutar <code>python3 zerochat.py</code> directamente dentro del repositorio clonado, el script detecta automáticamente el entorno de desarrollo y sirve la interfaz local en <code>http://127.0.0.1:6388/zerochat.html</code> sin necesidad de servidores auxiliares ni parámetros.
177
+ <br><br>
178
+ <strong>Cómo lanzar las pruebas:</strong>
179
+ <ul style="margin-top: 0.5rem; margin-bottom: 0;">
180
+ <li><code>python3 zerochat.py</code>: Arranca el backend y abre automáticamente la interfaz local de desarrollo en el navegador.</li>
181
+ <li><code>python3 zerochat.py --test</code>: Ejecuta la autocomprobación interna rápida de herramientas del sistema (lectura, listado y comandos).</li>
182
+ <li><code>npm test</code>: Ejecuta la suite completa automatizada (unitarias, integración, arquitectura, infraestructura y navegador con Playwright).</li>
183
+ <li><code>npm run test:browser</code>: Ejecuta exclusivamente las pruebas de interfaz visual y navegador.</li>
184
+ </ul>
185
+ </div>
186
+ </div>
187
+
188
+ <div class="card">
189
+ <h2>4. Almacenamiento Local y Privacidad de Datos</h2>
190
+ <p>
191
+ La arquitectura de datos de ZeroChat sigue el principio de <strong>soberanía del usuario</strong>. La aplicación nunca envía historiales de conversación, credenciales ni documentos a ningún servidor centralizado de telemetría.
192
+ </p>
193
+ <h3>Capas de almacenamiento en el cliente:</h3>
194
+ <ul>
195
+ <li>
196
+ <strong>IndexedDB (ZeroChatDB):</strong> Base de datos estructurada en el navegador donde se guardan las sesiones de chat, los mensajes, metadatos, configuraciones de perfiles de usuario y las ramas del motor RAG.
197
+ </li>
198
+ <li>
199
+ <strong>Almacenamiento aislado de adjuntos:</strong> Las imágenes Base64 y los documentos pesados se aíslan en almacenes específicos de IndexedDB para que el árbol de mensajes permanezca rápido, ligero y fluido.
200
+ </li>
201
+ <li>
202
+ <strong>Cache Storage API:</strong> Utilizada por el motor WebLLM para almacenar de forma persistente los pesos y parámetros de modelos locales de lenguaje descargados.
203
+ </li>
204
+ <li>
205
+ <strong>LocalStorage / Cookies de sesión (ChatStorage):</strong> Gestiona estados efímeros y preferencias de interfaz (como el tema oscuro o claro activo).
206
+ </li>
207
+ </ul>
208
+ </div>
209
+
210
+ <div class="card">
211
+ <h2>5. El Estado Canónico (ChatState)</h2>
212
+ <p>
213
+ Para evitar fugas de memoria o desincronizaciones entre componentes, ZeroChat utiliza un almacén de estado único y centralizado denominado <code>ChatState</code>.
214
+ </p>
215
+ <p>
216
+ Todo cambio en el ciclo de vida de la aplicación (cambio de sesión, inserción de un mensaje por streaming, progreso de inferencia o invocación de herramientas) se realiza mediante mutadores atómicos de dominio (como <code>appendMessage</code>, <code>replaceMessages</code> o <code>saveSessionMetadata</code>). De este modo, la interfaz se actualiza de manera reactiva y consistente en todo momento.
217
+ </p>
218
+ </div>
219
+
220
+ <div class="card">
221
+ <h2>6. Reglas compartidas de conversación</h2>
222
+ <p>Las respuestas nuevas y restauradas comparten componentes visuales de bloques y copia. El streaming conserva su cursor durante la generación. Los errores de conexión utilizan una vista común que escapa el mensaje recibido y la URL antes de incorporarlos al HTML.</p>
223
+ <p>La configuración activa se obtiene de <code>ChatConfig</code>. Las interfaces de perfiles y catálogo consultan al proveedor WebLLM para conocer los modelos completados, sin interpretar por separado sus metadatos almacenados.</p>
224
+ <p>El estado, el motor y las vistas reutilizan las reglas de <code>message-turns.js</code> para identificar turnos y reconocer mensajes iniciales de fecha. La eliminación de turnos comparte un algoritmo de saneamiento; <code>ChatState</code> conserva el bloqueo durante la generación y la actualización atómica del historial.</p>
225
+ </div>
226
+
227
+ <nav class="page-navigation" aria-label="Navegación de ayuda">
228
+ <div class="nav-button disabled">
229
+ <span class="nav-direction">Primera página</span>
230
+ <span class="nav-title">—</span>
231
+ </div>
232
+ <a href="index.html" class="nav-button index">
233
+ <span class="nav-direction">Índice</span>
234
+ <span class="nav-title">Ver todos los temas</span>
235
+ </a>
236
+ <a href="profiles.html" class="nav-button next">
237
+ <span class="nav-direction">Siguiente →</span>
238
+ <span class="nav-title">Perfiles y Proveedores</span>
239
+ </a>
240
+ </nav>
241
+
242
+ <footer>
243
+ <p>ZeroChat · Cliente Web Universal de IA · Manual de Usuario</p>
244
+ </footer>
245
+ </div>
246
+ </body>
247
+ </html>
@@ -0,0 +1,134 @@
1
+ <!DOCTYPE html>
2
+ <html lang="es">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Composer, Atajos y Archivos Adjuntos · Ayuda de ZeroChat</title>
7
+ <meta name="description" content="Guía del cuadro de entrada de ZeroChat: autoexpansión de texto, atajos de teclado y adjuntos multimedia como imágenes para visión, PDFs, código y CSV.">
8
+ <link rel="stylesheet" href="help.css">
9
+ </head>
10
+ <body>
11
+ <div class="container">
12
+ <header>
13
+ <div class="header-top">
14
+ <a href="index.html" class="logo-badge">
15
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 17l6-6-6-6M12 19h8"/></svg>
16
+ ZeroChat Docs
17
+ </a>
18
+ <div class="header-actions">
19
+ <a href="en/composer.html" class="top-nav-link">English 🌐</a>
20
+ <a href="index.html" class="top-nav-link">← Volver al Índice</a>
21
+ </div>
22
+ </div>
23
+ <h1>Composer, Atajos y Archivos Adjuntos</h1>
24
+ <p class="subtitle">Aprende a redactar mensajes con comodidad, utilizar atajos rápidos y enviar archivos multimedia o código al modelo.</p>
25
+ </header>
26
+
27
+ <div class="card">
28
+ <h2>1. El Composer Flotante Inteligente</h2>
29
+ <p>
30
+ El área de entrada o <strong>Composer</strong> de ZeroChat está diseñada para ofrecer una experiencia moderna, limpia y fluida, inspirada en las mejores interfaces de chat de IA.
31
+ </p>
32
+ <ul>
33
+ <li><strong>Auto-expansión suave:</strong> El campo de texto crece dinámicamente conforme escribes párrafos largos (utilizando la directiva moderna <code>field-sizing: content</code> con soporte de fallback automático), sin desbordar la ventana ni tapar los mensajes previos.</li>
34
+ <li><strong>Barra inferior integrada:</strong> Reúne adjuntos, razonamiento, RAG y telemetría de contexto. Las herramientas y MCP se configuran desde Ajustes.</li>
35
+ <li><strong>Entrada móvil:</strong> El campo muestra una indicación breve para que el texto de fondo no ocupe varias líneas en pantallas estrechas.</li>
36
+ <li><strong>Botón de detención (Stop):</strong> Durante la generación en tiempo real (streaming SSE), el botón de envío se convierte en un botón de parada instantánea para cancelar la respuesta en cualquier momento.</li>
37
+ </ul>
38
+ </div>
39
+
40
+ <div class="card">
41
+ <h2>2. Atajos de Teclado Esenciales</h2>
42
+ <div class="table-responsive">
43
+ <table>
44
+ <thead>
45
+ <tr>
46
+ <th>Atajo</th>
47
+ <th>Contexto</th>
48
+ <th>Acción realizada</th>
49
+ </tr>
50
+ </thead>
51
+ <tbody>
52
+ <tr>
53
+ <td><code>Enter</code></td>
54
+ <td>En el cuadro de texto</td>
55
+ <td>Enviar el mensaje actual al modelo.</td>
56
+ </tr>
57
+ <tr>
58
+ <td><code>Shift + Enter</code></td>
59
+ <td>En el cuadro de texto</td>
60
+ <td>Insertar un salto de línea sin enviar.</td>
61
+ </tr>
62
+ <tr>
63
+ <td><code>Escape</code></td>
64
+ <td>En cualquier modal o menú</td>
65
+ <td>Cerrar el diálogo emergente o desplegable activo.</td>
66
+ </tr>
67
+ <tr>
68
+ <td><code>Flechas ↑ / ↓</code></td>
69
+ <td>En el selector de perfiles</td>
70
+ <td>Navegar entre los perfiles disponibles de la lista.</td>
71
+ </tr>
72
+ <tr>
73
+ <td><code>Ctrl / Cmd + V</code></td>
74
+ <td>En la ventana del chat</td>
75
+ <td>Pegar imágenes o texto directamente desde el portapapeles.</td>
76
+ </tr>
77
+ </tbody>
78
+ </table>
79
+ </div>
80
+ </div>
81
+
82
+ <div class="card">
83
+ <h2>3. Adjuntar Archivos y Documentos</h2>
84
+ <p>
85
+ ZeroChat cuenta con un potente motor cliente de procesamiento de archivos (<code>file-parser.js</code>). Puedes añadir archivos pulsando el icono del clip o simplemente <strong>arrastrándolos y soltándolos</strong> (Drag & Drop) sobre el área del chat.
86
+ </p>
87
+ <h3>Formatos compatibles:</h3>
88
+ <ul>
89
+ <li><strong>Imágenes (PNG, JPEG, WebP, GIF):</strong> Si el modelo activo soporta capacidades multimodales de visión (como GPT-4o, Claude 3.5/3.7 Sonnet o Gemini Flash/Pro), la imagen se procesa y se envía al modelo para que pueda analizarla, describirla o extraer información de ella.</li>
90
+ <li><strong>Documentos PDF:</strong> El texto del PDF se extrae localmente en el navegador y se adjunta de forma estructurada al mensaje con su nombre y recuento de páginas.</li>
91
+ <li><strong>Código Fuente y Scripts:</strong> Archivos <code>.js</code>, <code>.ts</code>, <code>.py</code>, <code>.html</code>, <code>.css</code>, <code>.json</code>, <code>.sql</code>, <code>.c</code>, <code>.cpp</code>, <code>.rs</code>, <code>.go</code>, <code>.sh</code> y más. Se preparan como bloques de código con marcado de sintaxis.</li>
92
+ <li><strong>Tablas y Datos:</strong> Archivos <code>.csv</code> y <code>.tsv</code> que el modelo puede parsear e interpretar para análisis de datos o generación de gráficos.</li>
93
+ <li><strong>Documentos de Texto:</strong> <code>.md</code> (Markdown), <code>.txt</code>, <code>.xml</code>, <code>.yaml</code>.</li>
94
+ </ul>
95
+ <div class="alert alert-info">
96
+ <strong>Previsualización y eliminación:</strong> Antes de pulsar enviar, verás miniaturas interactivas de cada archivo adjunto con su nombre y tamaño. Puedes eliminar cualquiera de ellos pulsando su botón "X".
97
+ </div>
98
+ </div>
99
+
100
+ <div class="card">
101
+ <h2>4. Renderizado Enriquecido de Mensajes</h2>
102
+ <p>
103
+ Las respuestas del asistente se procesan con un motor Markdown completo de alto rendimiento que incluye:
104
+ </p>
105
+ <ul>
106
+ <li>Resaltado de sintaxis en bloques de código con botón de copia rápida al portapapeles.</li>
107
+ <li>Tablas formateadas con alineación de columnas.</li>
108
+ <li>Fórmulas matemáticas en formato LaTeX (KaTeX) inline y en bloque.</li>
109
+ <li>Bloques colapsables de razonamiento (Thinking) con contador de tiempo de reflexión.</li>
110
+ <li>Tarjetas interactivas de herramientas (Tool Cards) para ejecuciones del agente.</li>
111
+ </ul>
112
+ </div>
113
+
114
+ <nav class="page-navigation" aria-label="Navegación de ayuda">
115
+ <a href="conversations.html" class="nav-button prev">
116
+ <span class="nav-direction">← Anterior</span>
117
+ <span class="nav-title">Conversaciones y Ramas</span>
118
+ </a>
119
+ <a href="index.html" class="nav-button index">
120
+ <span class="nav-direction">Índice</span>
121
+ <span class="nav-title">Ver todos los temas</span>
122
+ </a>
123
+ <a href="reasoning-telemetry.html" class="nav-button next">
124
+ <span class="nav-direction">Siguiente →</span>
125
+ <span class="nav-title">Razonamiento y Telemetría</span>
126
+ </a>
127
+ </nav>
128
+
129
+ <footer>
130
+ <p>ZeroChat · Cliente Web Universal de IA · Manual de Usuario</p>
131
+ </footer>
132
+ </div>
133
+ </body>
134
+ </html>
@@ -0,0 +1,105 @@
1
+ <!DOCTYPE html>
2
+ <html lang="es">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Conversaciones, Historial y Ramas · Ayuda de ZeroChat</title>
7
+ <meta name="description" content="Manual para organizar chats en ZeroChat: barra lateral cronológica, búsqueda de conversaciones, ramificación (branching) y exportación/importación segura.">
8
+ <link rel="stylesheet" href="help.css">
9
+ </head>
10
+ <body>
11
+ <div class="container">
12
+ <header>
13
+ <div class="header-top">
14
+ <a href="index.html" class="logo-badge">
15
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 17l6-6-6-6M12 19h8"/></svg>
16
+ ZeroChat Docs
17
+ </a>
18
+ <div class="header-actions">
19
+ <a href="en/conversations.html" class="top-nav-link">English 🌐</a>
20
+ <a href="index.html" class="top-nav-link">← Volver al Índice</a>
21
+ </div>
22
+ </div>
23
+ <h1>Conversaciones, Historial y Ramas</h1>
24
+ <p class="subtitle">Aprende a gestionar tus sesiones de chat, explorar caminos alternativos con branching y respaldar tus datos.</p>
25
+ </header>
26
+
27
+ <div class="card">
28
+ <h2>1. La Barra Lateral de Conversaciones</h2>
29
+ <p>
30
+ En la parte izquierda de la pantalla encontrarás la <strong>Barra Lateral</strong> (accesible en dispositivos móviles mediante el icono de menú superior).
31
+ </p>
32
+ <p>Características principales de la barra lateral:</p>
33
+ <ul>
34
+ <li><strong>Nueva conversación:</strong> Botón directo para iniciar un chat limpio conservando el perfil seleccionado.</li>
35
+ <li><strong>Agrupación cronológica inteligente:</strong> Las conversaciones se ordenan automáticamente en secciones temporales legibles: <em>Hoy</em>, <em>Ayer</em>, <em>Últimos 7 días</em>, <em>Este mes</em> y <em>Anteriores</em>.</li>
36
+ <li><strong>Búsqueda en tiempo real:</strong> Escribe en el cuadro de búsqueda para filtrar al instante cualquier conversación por su título.</li>
37
+ <li><strong>Acciones rápidas por sesión:</strong> Al pasar el ratón por cada chat, dispones de botones para exportar esa conversación individual o borrarla.</li>
38
+ </ul>
39
+ </div>
40
+
41
+ <div class="card">
42
+ <h2>2. Ramificación de Conversaciones (Branching)</h2>
43
+ <p>
44
+ El <strong>Branching</strong> o ramificación es una de las funcionalidades más potentes de ZeroChat para explorar ideas sin perder el contexto original.
45
+ </p>
46
+ <h3>¿Cómo funciona?</h3>
47
+ <ol>
48
+ <li>Bajo cualquier respuesta del asistente verás el botón de ramificación con el icono de bifurcación (<em>Branch</em>).</li>
49
+ <li>Al pulsar sobre él, ZeroChat crea una <strong>nueva conversación independiente</strong> que contiene el historial exacto hasta ese punto seleccionado.</li>
50
+ <li>Los turnos posteriores de la conversación original se descartan en la nueva rama, permitiéndote formular una pregunta distinta, cambiar de modelo o probar una hipótesis alternativa.</li>
51
+ <li>La conversación origen permanece intacta y ambas ramas pueden consultarse y continuarse en cualquier momento desde la barra lateral.</li>
52
+ </ol>
53
+ <div class="alert alert-info">
54
+ <strong>Caso de uso típico:</strong> Imagina que el asistente te da dos posibles soluciones a un problema. Puedes ramificar en esa respuesta para seguir desarrollando la "Opción A" en una conversación y la "Opción B" en otra diferente.
55
+ </div>
56
+ </div>
57
+
58
+ <div class="card">
59
+ <h2>3. Exportación de Conversaciones</h2>
60
+ <p>
61
+ ZeroChat te permite exportar tus conversaciones en múltiples formatos estándar para compartirlas, archivarlas o usarlas en informes:
62
+ </p>
63
+ <ul>
64
+ <li><strong>JSON Completo de Sesión:</strong> Incluye los mensajes de usuario y asistente, metadatos, perfil utilizado, uso de tokens y llamadas a herramientas. Este archivo sirve además como copia de seguridad exacta que puedes importar de vuelta.</li>
65
+ <li><strong>Markdown (.md):</strong> Formato de texto estructurado listo para publicar en GitHub, Obsidian, Notion o tu editor favorito, preservando encabezados, bloques de código, tablas y fórmulas matemáticas.</li>
66
+ <li><strong>Texto Plano (.txt):</strong> Transcripción limpia y ligera de la conversación para lectura rápida.</li>
67
+ <li><strong>PDF:</strong> Vista preparada para imprimir o guardar como PDF.</li>
68
+ </ul>
69
+ </div>
70
+
71
+ <div class="card">
72
+ <h2>4. Importación y Copia de Seguridad</h2>
73
+ <p>
74
+ En el pie de la barra lateral dispones del botón <strong>"Importar conversación"</strong>. Permite seleccionar cualquier archivo <code>.json</code> exportado previamente por ZeroChat.
75
+ </p>
76
+ <p>
77
+ Al importar, la conversación se valida de forma estricta, se sanitiza para prevenir inyecciones maliciosas y se almacena en tu base de datos IndexedDB local, apareciendo al instante en la lista de chats.
78
+ </p>
79
+ <p>Solo se importan copias JSON de ZeroChat y la importación no está disponible mientras se genera una respuesta.</p>
80
+ <div class="alert alert-warning">
81
+ <strong>Borrado masivo seguro:</strong> El botón con icono de papelera en el pie de la barra lateral permite eliminar todas las conversaciones de golpe. Antes de proceder, ZeroChat solicitará tu confirmación explícita para evitar pérdidas accidentales.
82
+ </div>
83
+ </div>
84
+
85
+ <nav class="page-navigation" aria-label="Navegación de ayuda">
86
+ <a href="debug.html" class="nav-button prev">
87
+ <span class="nav-direction">← Anterior</span>
88
+ <span class="nav-title">Depuración e Interceptor</span>
89
+ </a>
90
+ <a href="index.html" class="nav-button index">
91
+ <span class="nav-direction">Índice</span>
92
+ <span class="nav-title">Ver todos los temas</span>
93
+ </a>
94
+ <a href="composer.html" class="nav-button next">
95
+ <span class="nav-direction">Siguiente →</span>
96
+ <span class="nav-title">Composer y Multimedia</span>
97
+ </a>
98
+ </nav>
99
+
100
+ <footer>
101
+ <p>ZeroChat · Cliente Web Universal de IA · Manual de Usuario</p>
102
+ </footer>
103
+ </div>
104
+ </body>
105
+ </html>
@@ -0,0 +1,108 @@
1
+ <!DOCTYPE html>
2
+ <html lang="es">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Depuración, Logs e Interceptor de Mensajes · Ayuda de ZeroChat</title>
7
+ <meta name="description" content="Guía del panel de depuración, visor Raw e interceptor de peticiones de ZeroChat.">
8
+ <link rel="stylesheet" href="help.css">
9
+ </head>
10
+ <body>
11
+ <div class="container">
12
+ <header>
13
+ <div class="header-top">
14
+ <a href="index.html" class="logo-badge">
15
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 17l6-6-6-6M12 19h8"/></svg>
16
+ ZeroChat Docs
17
+ </a>
18
+ <div class="header-actions">
19
+ <a href="en/debug.html" class="top-nav-link">English 🌐</a>
20
+ <a href="index.html" class="top-nav-link">← Volver al Índice</a>
21
+ </div>
22
+ </div>
23
+ <h1>Depuración, Logs e Interceptor</h1>
24
+ <p class="subtitle">Inspecciona las entrañas de la inferencia, supervisa el tráfico de red y modifica peticiones en vuelo con el interceptor interactivo.</p>
25
+ </header>
26
+
27
+ <div class="card">
28
+ <h2>1. El Panel Lateral de Depuración (Debug Panel)</h2>
29
+ <p>
30
+ ZeroChat incluye un panel lateral derecho especializado para desarrolladores, auditores de seguridad y usuarios curiosos. Se abre pulsando el icono de terminal en la esquina superior derecha del encabezado.
31
+ </p>
32
+ <p>
33
+ Este panel muestra en tiempo real una consola con formato monoespaciado donde se registran cronológicamente todos los eventos internos de la aplicación.
34
+ </p>
35
+ <h3>Pestañas de Filtrado de Eventos:</h3>
36
+ <ul>
37
+ <li><strong>Todo (All):</strong> Vista unificada con todos los mensajes del sistema, red y herramientas.</li>
38
+ <li><strong>Razonamiento (Thinking):</strong> Filtra exclusivamente los fragmentos de pensamiento interno generados por el modelo.</li>
39
+ <li><strong>Herramientas (Tool):</strong> Muestra las llamadas a funciones emitidas por el agente y los valores devueltos tras la ejecución.</li>
40
+ <li><strong>Red (Network):</strong> Peticiones HTTP, cabeceras, códigos de respuesta de los servidores de inferencia y tiempos de conexión.</li>
41
+ <li><strong>Raw:</strong> Muestra las entradas y salidas sin procesar de la comunicación del proveedor.</li>
42
+ </ul>
43
+ </div>
44
+
45
+ <div class="card">
46
+ <h2>2. Utilidades de la Consola de Logs</h2>
47
+ <p>En la cabecera del panel de depuración dispones de acciones rápidas:</p>
48
+ <ul>
49
+ <li><strong>Copiar logs:</strong> Vuelca todo el historial de eventos en el portapapeles en formato texto con marcas de tiempo para adjuntarlo a un reporte de incidencias o bug.</li>
50
+ <li><strong>Limpiar consola:</strong> Vacía el registro en pantalla para comenzar una nueva sesión de depuración limpia.</li>
51
+ <li><strong>Auto-scroll:</strong> Alterna entre seguir automáticamente la salida conforme se emite o pausar el desplazamiento para examinar un fragmento anterior con comodidad.</li>
52
+ </ul>
53
+ </div>
54
+
55
+ <div class="card">
56
+ <h2>3. Modo Interceptor de Mensajes (Debug Messages)</h2>
57
+ <p>
58
+ Una de las herramientas más singulares de ZeroChat para experimentación y pruebas de seguridad es el <strong>Interceptor de Mensajes</strong>. Se activa mediante el interruptor <em>"Debug messages"</em> en la barra de controles del panel de depuración.
59
+ </p>
60
+ <h3>¿Cómo funciona el interceptor?</h3>
61
+ <ol>
62
+ <li>Al escribir un mensaje en el chat y pulsar Enviar, la petición <strong>no viaja inmediatamente a la red</strong>.</li>
63
+ <li>Se abre una ventana modal de inspección interactiva mostrando el <strong>payload JSON exacto</strong> que se iba a transmitir al proveedor (mensajes del historial, sistema de prompts, herramientas registradas, temperatura, etc.).</li>
64
+ <li>Puedes inspeccionar los campos, editar manualmente cualquier parámetro o inyectar roles de prueba directamente en el editor.</li>
65
+ <li>La cabecera reúne las acciones de envío y el botón X para cancelar:
66
+ <ul>
67
+ <li><strong>Continuar / Enviar:</strong> Transmite la petición (con las modificaciones que hayas realizado) al servidor.</li>
68
+ <li><strong>Enviar y parar debug:</strong> Transmite la petición y desactiva el interceptor para los siguientes envíos.</li>
69
+ <li><strong>X:</strong> Aborta el envío de forma limpia sin generar tráfico ni consumir tokens.</li>
70
+ </ul>
71
+ </li>
72
+ </ol>
73
+ <div class="alert alert-info">
74
+ <strong>Ideal para desarrolladores:</strong> Esta función permite simular respuestas intermedias, evaluar la resistencia del modelo ante jailbreaks o prompts modificados y comprobar cómo empaqueta ZeroChat las herramientas en la llamada HTTP.
75
+ </div>
76
+ </div>
77
+
78
+ <div class="card">
79
+ <h2>4. Vista Raw</h2>
80
+ <p>
81
+ La pestaña <em>Raw</em> está disponible directamente en el panel; no requiere activación adicional. Las entradas se limitan para que el panel siga siendo utilizable.
82
+ </p>
83
+ <p>
84
+ Úsala para comprobar solicitudes, respuestas de streaming y llamadas a herramientas al diagnosticar un proveedor.
85
+ </p>
86
+ </div>
87
+
88
+ <nav class="page-navigation" aria-label="Navegación de ayuda">
89
+ <a href="mcp.html" class="nav-button prev">
90
+ <span class="nav-direction">← Anterior</span>
91
+ <span class="nav-title">Protocolo MCP</span>
92
+ </a>
93
+ <a href="index.html" class="nav-button index">
94
+ <span class="nav-direction">Índice</span>
95
+ <span class="nav-title">Ver todos los temas</span>
96
+ </a>
97
+ <a href="conversations.html" class="nav-button next">
98
+ <span class="nav-direction">Siguiente →</span>
99
+ <span class="nav-title">Conversaciones y Ramas</span>
100
+ </a>
101
+ </nav>
102
+
103
+ <footer>
104
+ <p>ZeroChat · Cliente Web Universal de IA · Manual de Usuario</p>
105
+ </footer>
106
+ </div>
107
+ </body>
108
+ </html>