@gitpagedocs/cli 0.0.8 → 0.0.10

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.
@@ -1,4 +1,89 @@
1
+ import { practicalEs } from "./practical-es.mjs";
2
+ import { operationsEs } from "./operations-es.mjs";
3
+
1
4
  export const docsEs = {
5
+ ...practicalEs,
6
+ ...operationsEs,
7
+ pdf: `# Documentos PDF
8
+
9
+ PDF es un tipo de contenido propio junto con Markdown, HTML, código fuente, vídeo y audio. La vista previa utiliza el visor nativo de PDF del navegador. Las acciones de descarga y apertura en una pestaña nueva se configuran de forma independiente.
10
+
11
+ ## Guía del proyecto en inglés
12
+
13
+ El scaffold incluye la [Guía del proyecto GitPageDocs (PDF, inglés)](https://github.com/Vidigal-code/git-page-docs/blob/main/cli/content/assets/gitpagedocs-project-guide.pdf). Explica el proyecto, paquetes, configuración, iconos, modo foco, narración, CLI, MCP y publicación. El PDF está en inglés; esta referencia está disponible en español, inglés y portugués.
14
+
15
+ La CLI copia los bytes del anexo a \`gitpagedocs/docs/versions/<versión>/en/gitpagedocs-project-guide.pdf\`. Los tres idiomas del ejemplo apuntan a ese archivo en inglés. Para ofrecer traducciones, añade los PDFs traducidos y cambia la ruta de cada idioma.
16
+
17
+ ## Valores predeterminados del sitio
18
+
19
+ Añade este bloque dentro de \`site\` en \`gitpagedocs/config.json\`:
20
+
21
+ \`\`\`json
22
+ {
23
+ "pdf": {
24
+ "enabled": true,
25
+ "previewEnabled": true,
26
+ "downloadEnabled": true,
27
+ "openInNewTabEnabled": true
28
+ }
29
+ }
30
+ \`\`\`
31
+
32
+ \`enabled\` es el interruptor general del contenido PDF. Los demás campos controlan la vista previa, el botón de descarga y el botón de nueva pestaña. Cada campo omitido toma el valor \`true\`, también en configuraciones antiguas.
33
+
34
+ La precedencia de las acciones es \`ruta.pdf.<flag>\` > \`site.pdf.<flag>\` > \`true\`. Un \`true\` explícito en la ruta activa esa acción aunque el valor del sitio sea \`false\`; \`site.pdf.enabled: false\` sigue desactivando todos los PDFs. Si falta la ruta del idioma seleccionado, el PDF no está disponible; no hay cambio automático de idioma.
35
+
36
+ Las acciones PDF usan iconos por defecto. Configura \`site.icons.PdfDownload\` (\`FiDownload\`) y \`site.icons.PdfOpenInNewTab\` (\`FiExternalLink\`) por separado con \`reactIcon\`, \`tag\`, \`size\`, \`colorDark\` y \`colorLight\`. Por ejemplo, \`"PdfDownload": { "reactIcon": false }\` muestra texto en descarga mientras la nueva pestaña conserva su icono. La apariencia no cambia las opciones de activación anteriores.
37
+
38
+ ## Ejemplo de ruta y menú
39
+
40
+ En \`gitpagedocs/docs/versions/0.0.10/config.json\`, conserva las listas de rutas y menús en el nivel principal:
41
+
42
+ \`\`\`json
43
+ {
44
+ "routes-pdf": [{
45
+ "id": 23,
46
+ "title": { "en": "Project guide (English)", "pt": "Guia do projeto (inglês)", "es": "Guía del proyecto (inglés)" },
47
+ "pdf": {
48
+ "pathPdf": {
49
+ "en": "gitpagedocs/docs/versions/0.0.10/en/gitpagedocs-project-guide.pdf",
50
+ "pt": "gitpagedocs/docs/versions/0.0.10/en/gitpagedocs-project-guide.pdf",
51
+ "es": "gitpagedocs/docs/versions/0.0.10/en/gitpagedocs-project-guide.pdf"
52
+ },
53
+ "previewEnabled": true,
54
+ "downloadEnabled": true,
55
+ "openInNewTabEnabled": true
56
+ }
57
+ }],
58
+ "menus-header-pdf": [{
59
+ "id": 23,
60
+ "en": { "title": "Project guide (English)", "path-click": "page:23" },
61
+ "pt": { "title": "Guia do projeto (inglês)", "path-click": "page:23" },
62
+ "es": { "title": "Guía del proyecto (inglés)", "path-click": "page:23" }
63
+ }]
64
+ }
65
+ \`\`\`
66
+
67
+ El mapa \`pdf.pathPdf\` selecciona el archivo del idioma actual. Usa \`page:<id>\` en los destinos del menú PDF. Se admite la misma estructura recursiva de \`submenus\` que en otros menús. El scaffold reserva el ID 23 para el ejemplo PDF y el ID 24 para esta referencia Markdown; utiliza IDs únicos para las páginas adicionales.
68
+
69
+ Las opciones de la ruta se colocan dentro de \`pdf\`. La presentación compartida, \`container\`, \`RouteGuide\` y la autorización permanecen en el nivel de la ruta. \`routeDefaults\` también se aplica a las rutas PDF. Añade \`"pdf": 5\` en \`hierarchyPage\` y \`hierarchyMenu\` para colocar los PDFs después del audio; ajusta los valores según el orden deseado.
70
+
71
+ ## Archivos y publicación
72
+
73
+ Las rutas relativas a la raíz del repositorio que empiezan por \`gitpagedocs/\` se copian a los assets públicos del visor al iniciar o compilar Next.js. La URL respeta el subdirectorio de publicación de GitHub Pages. Incluye el PDF en Git y publícalo junto con la documentación generada. Los archivos fuera de \`gitpagedocs/\` deben estar en \`frontend/public/\` del visor o ser accesibles mediante una URL HTTP(S).
74
+
75
+ Usa la URL del PDF binario, no una página HTML de vista previa del repositorio. Para repositorios remotos, la ruta se resuelve dentro de ese repositorio. La vista previa, la descarga y la apertura en una nueva pestaña obtienen los bytes del archivo, por lo que un servidor externo debe permitir CORS para las tres acciones. El visor valida la firma PDF y crea una URL Blob temporal de tipo \`application/pdf\`. La vista previa y la nueva pestaña utilizan el visor PDF nativo del navegador; la política de incorporación y las cabeceras de tipo/disposición del servidor de origen no controlan esta vista Blob.
76
+
77
+ El botón de nueva pestaña abre el Blob PDF validado en lugar de navegar a la URL raw del repositorio. También funciona con la vista previa desactivada: la carga comienza cuando el lector descarga o abre el documento. Los bytes cargados se reutilizan para el PDF actual. Los fallos de red/CORS, los PDFs inválidos y el bloqueo de nuevas pestañas muestran un error; no hay fallback automático a la URL raw. El soporte PDF nativo y las preferencias de descarga del navegador siguen determinando cómo se muestra el archivo en la nueva pestaña.
78
+
79
+ ## Lectura y diagnóstico
80
+
81
+ - Los controles nativos de PDF, teclado, zoom y navegación dependen del visor del navegador. Algunos navegadores móviles abren o descargan el archivo en vez de incorporarlo.
82
+ - La vista previa no convierte PDF en Markdown. El modo foco, la navegación por secciones, la copia de Markdown y la narración actúan sobre documentos Markdown, no sobre el PDF incorporado.
83
+ - Desactivar la vista previa puede conservar la descarga y la nueva pestaña. Desactivar todas las acciones deja el PDF sin controles interactivos.
84
+ - Ocultar un botón no controla el acceso. Los PDFs alojados públicamente siguen disponibles mediante su URL. Los documentos confidenciales necesitan alojamiento protegido.
85
+ - Si la vista previa está vacía, confirma que la ruta devuelve un PDF y permite acceso mediante CORS; después prueba la nueva pestaña. Permite ventanas emergentes para el sitio si el navegador bloquea esa acción. Los fallos de descarga y apertura se muestran en la página.
86
+ `,
2
87
  index: `# Git Page Docs
3
88
 
4
89
  Git Page Docs es un runtime de documentacion multilenguaje para repositorios que incluyen la carpeta \`gitpagedocs/\`.
@@ -31,45 +116,70 @@ El runtime espera esta estructura:
31
116
  - Abre **Temas y layouts** para creacion de templates.
32
117
  - Abre **Rutas autorizadas** para configurar clave, roles y autenticacion externa.
33
118
  - Abre **FAQ** para troubleshooting.
119
+
120
+ ## Referencias detalladas
121
+
122
+ - **Referencia de la CLI**: instalación, todos los comandos y flags de compatibilidad.
123
+ - **Servidor MCP**: cliente, 20 tools, 7 resources y configuración de proveedores.
124
+ - **Navegación y submenús**: árboles recursivos, URLs y prioridad de breadcrumbs.
125
+ - **Modo foco**: copiar/descargar Markdown y navegar por sección/documento.
126
+ - **Accesibilidad y narración**: voces del navegador, controles e interacción con medios.
127
+ - **Documentos PDF**: vista previa nativa, descarga/nueva pestaña y la guía incluida en inglés.
128
+ - **Recetas de configuración**: un sitio multilingüe completo y un menú con secciones dentro de secciones.
129
+ - **Migración y compatibilidad**: actualizar configuraciones desde la versión 0.0.1 conservando tu contenido.
130
+ - **Solución de problemas**: UTF-8, rutas locales y de Pages, carga de PDF, voces e inicio de MCP.
131
+ - **Contribución y validación**: archivos fuente, generación, contratos públicos y comprobaciones de publicación.
132
+ - **Contenedores HTML**: páginas locales y externas, configuración de rutas/menús y el ejemplo interactivo DOOM.
133
+
134
+ El menú generado mantiene Primeros pasos y la descripción general del proyecto al principio. Guías contiene Configura tu sitio, Lee y explora y Automatiza e integra; cada categoría contiene sus páginas relacionadas. Operación y desarrollo agrupa publicación, mantenimiento y contribución. Git y GitHub contiene los ejemplos del repositorio. Las categorías pueden contener otras categorías sin un límite fijo de niveles.
34
135
  `,
35
136
  gettingStarted: `# Primeros pasos
36
137
 
37
- Esta guia lleva el proyecto desde cero hasta docs corriendo.
138
+ Git Page Docs separa los archivos de documentación del visor. Instala la CLI para crear los archivos; utiliza el visor oficial, GitHub Pages o un checkout del runtime para mostrarlos.
139
+
140
+ ## Requisitos e instalación
141
+
142
+ Utiliza Node.js 20 o posterior. Git es necesario para publicar; GitHub CLI es necesario cuando la CLI configura Pages automáticamente.
38
143
 
39
- ## Requisitos
144
+ \`\`\`bash
145
+ npm install --save-dev @gitpagedocs/cli
146
+ npx gitpagedocs --no-interactive --owner TU_USUARIO --repo TU_REPOSITORIO
147
+ \`\`\`
40
148
 
41
- - Node.js 20+
42
- - npm 10+ (o pnpm)
149
+ Para una ejecución sin instalación local, utiliza \`npx --yes @gitpagedocs/cli --no-interactive --owner TU_USUARIO --repo TU_REPOSITORIO\`. Para instalar globalmente, utiliza \`npm install -g @gitpagedocs/cli\` y después \`gitpagedocs\`. Ejecuta desde la raíz del repositorio.
43
150
 
44
- ## Setup local
151
+ ## Contrato generado
45
152
 
46
- 1. Instala dependencias:
47
- - \`npm install\`
48
- 2. Genera/actualiza artefactos de docs:
49
- - \`npm run gitpagedocs\`
50
- 3. Inicia desarrollo:
51
- - \`npm run dev\`
52
- 4. Build + ejecucion local de produccion:
53
- - \`npm run build\`
54
- - \`npm start\`
153
+ - \`gitpagedocs/config.json\`: opciones del sitio y referencias de versiones.
154
+ - \`gitpagedocs/langs/{en,pt,es}.json\`: textos de la interfaz.
155
+ - \`gitpagedocs/docs/versions/<version>/config.json\`: rutas y menús.
156
+ - \`gitpagedocs/docs/versions/<version>/{en,pt,es}/*.md\`: contenido; los nombres de archivo permanecen en inglés en los tres idiomas.
157
+ - \`gitpagedocs/icon.svg\`: icono del sitio.
158
+ - \`--layoutconfig\` también escribe \`gitpagelayouts/\`; \`--layouts-dir\` cambia esa carpeta.
55
159
 
56
- ## Comportamiento de la CLI
160
+ El generador escribe configuración y contenido; no instala una aplicación Next.js en tu repositorio. Ejecutarlo de nuevo vuelve a escribir los archivos del scaffold: revisa el diff de Git antes de conservar cambios en documentación editada manualmente.
57
161
 
58
- \`npx @gitpagedocs/cli\` (o \`npm run gitpagedocs\`) genera artefactos en la carpeta oficial \`gitpagedocs/\`.
162
+ ## Leer y publicar
59
163
 
60
- - Genera solo markdown/json
61
- - No genera \`index.html\`
62
- - No genera \`index.js\`
63
- - No ejecuta comandos de instalacion
164
+ Haz commit y push de la carpeta generada y abre \`https://vidigal-code.github.io/git-page-docs/TU_USUARIO/TU_REPOSITORIO/\` para un repositorio público. Para publicar tu propio sitio, autentícate con \`gh auth login\` y ejecuta \`npx gitpagedocs pages deploy --owner TU_USUARIO --repo TU_REPOSITORIO\`. Esto genera archivos, hace commit y push; revisa la ejecución de GitHub Actions. Consulta Publicación para subrutas y el contrato del workflow.
64
165
 
65
- ## Modo de busqueda por repositorio
166
+ ## Desarrollar el visor localmente
66
167
 
67
- En local, se controla por variable:
168
+ Los siguientes comandos pertenecen a un checkout de Git Page Docs, no a un repositorio que solo contiene archivos generados:
68
169
 
69
- - \`GITPAGEDOCS_REPOSITORY_SEARCH=true\`
70
- - \`GITPAGEDOCS_REPOSITORY_SEARCH=false\`
170
+ \`\`\`bash
171
+ git clone https://github.com/Vidigal-code/git-page-docs.git
172
+ cd git-page-docs
173
+ corepack enable
174
+ pnpm install --frozen-lockfile
175
+ pnpm dev
176
+ \`\`\`
71
177
 
72
- En build de GitHub Pages (\`GITHUB_ACTIONS=true\`), la busqueda de repositorio siempre esta activa.
178
+ El repositorio fija pnpm en \`packageManager\`. \`pnpm dev\` activa la búsqueda de repositorios; \`pnpm dev:e2e\` utiliza la documentación local. Para producción local, ejecuta \`pnpm build\` y \`pnpm start\`; el script start recompila antes de iniciar. Configura \`PORT=3100\` en el entorno del proceso cuando el puerto 3000 esté ocupado.
179
+
180
+ ## Siguientes pasos
181
+
182
+ Usa Configuración para idiomas, iconos, navegación, foco y narración; Funcionalidades para CLI y MCP; Temas y diseños para tokens visuales; Preguntas frecuentes para diagnóstico.
73
183
  `,
74
184
  projectOverview: `# Vision general del proyecto
75
185
 
@@ -101,51 +211,9 @@ Git Page Docs es un monorepo pnpm + turborepo que convierte la carpeta \`gitpage
101
211
 
102
212
  Referencia completa de opciones CLI, claves de configuracion y funciones del runtime.
103
213
 
104
- ## Comandos CLI
105
-
106
- | Comando | Descripcion |
107
- |---------|-------------|
108
- | \`npx @gitpagedocs/cli\` | Genera config y docs en \`gitpagedocs/\` |
109
- | \`npx @gitpagedocs/cli --layoutconfig\` | Tambien genera layouts/templates locales en \`gitpagelayouts/\` |
110
- | \`npx @gitpagedocs/cli --home\` | Distribucion standalone (\`gitpagedocshome/\`) |
111
- | \`npx @gitpagedocs/cli --push --owner X --repo Y\` | Configura workflow, commit, push |
112
- | \`npx @gitpagedocs/cli --interactive\` / \`-i\` | Modo interactivo con prompts (por defecto en una terminal) |
113
- | \`npx @gitpagedocs/cli --no-interactive\` / \`--yes\` / \`-y\` | Nunca pregunta; usa flags y valores por defecto |
114
- | \`gitpagedocs ai\` | Generador interactivo de documentacion con IA |
115
- | \`gitpagedocs chat [pregunta]\` | Chat de IA con streaming en la terminal (REPL en TTY; respuesta unica con pregunta o stdin) |
116
- | \`gitpagedocs provider [id]\` / \`models [provider]\` | Lista proveedores de IA / modelos del catalogo |
117
- | \`gitpagedocs document[:repo\\|:file\\|:folder]\` | Genera documentacion con IA |
118
- | \`gitpagedocs deploy\` / \`pages [actions\\|deploy]\` | Configura GitHub Pages via Actions + push |
119
- | \`gitpagedocs docs\` | Actualiza las regiones gestionadas de README/CONTRIBUTING/SECURITY |
120
- | \`gitpagedocs password\` | Define la contrasena de acceso a la documentacion (clave publica en \`site.docsAccess\`) |
121
- | \`gitpagedocs config\` / \`config clear\` | Muestra la config resuelta / borra la config guardada y la boveda de claves |
122
- | \`gitpagedocs doctor\` / \`version\` / \`update\` | Diagnostico / version / comprobacion de actualizacion en el registro |
123
- | \`gitpagedocs mcp start\` | Inicia el servidor MCP por stdio |
124
-
125
- Instala globalmente con \`npm install -g @gitpagedocs/cli\` o ejecuta sin instalar con \`npx @gitpagedocs/cli\`.
214
+ ## Línea de comandos
126
215
 
127
- ## Opciones CLI
128
-
129
- | Opcion | Descripcion |
130
- |--------|-------------|
131
- | \`--owner <user>\` | Owner de GitHub |
132
- | \`--repo <repo>\` | Repositorio GitHub |
133
- | \`--path <subpath>\` | Subruta de docs (ej: \`docs\`); sin ella, base path = nombre del repo para CSS/JS en project sites |
134
- | \`--output <dir>\` | Directorio de salida (default: \`gitpagedocs\`) |
135
- | \`--search true|false\` | Habilita/deshabilita busqueda de repositorio (\`--home\`) |
136
- | \`--layoutconfig\` | Genera layouts locales en \`gitpagelayouts/\` |
137
- | \`--layouts-dir <dir>\` | Carpeta de layouts locales (por defecto: \`gitpagelayouts\`) |
138
- | \`--push\` | Crea workflow, commit de artefactos, push |
139
- | \`--pages-actions\` | Solo cambia la fuente de GitHub Pages a GitHub Actions (igual que \`pages actions\`) |
140
- | \`--home\` | Genera \`gitpagedocshome/\` (estatico + .env + Dockerfile) |
141
-
142
- ## Salida generada
143
-
144
- - \`gitpagedocs/config.json\` – config raiz
145
- - \`gitpagedocs/icon.svg\` – icono por defecto
146
- - \`gitpagedocs/docs/versions/<ver>/config.json\` – rutas por version
147
- - \`gitpagedocs/docs/versions/<ver>/{en,pt,es}/*.md\` – docs en markdown
148
- - \`gitpagelayouts/\` – solo con \`--layoutconfig\` (carpeta configurable con \`--layouts-dir\`)
216
+ Consulta **Referencia de la CLI** para comandos, flags, ejemplos y compatibilidad. Consulta **Servidor MCP** para integración con editores.
149
217
 
150
218
  ## Tipos de contenido
151
219
 
@@ -155,6 +223,7 @@ Instala globalmente con \`npm install -g @gitpagedocs/cli\` o ejecuta sin instal
155
223
  | HTML | \`routes-html\` | \`path\` local o \`url\` externa |
156
224
  | Video | \`routes-video\` | \`video.pathVideo\`, \`video.videoType\` |
157
225
  | Audio | \`routes-audio\` | \`audio.pathAudio\`, \`audio.audioType\` |
226
+ | PDF | \`routes-pdf\` | \`pdf.pathPdf\` por idioma; vista previa nativa y descarga |
158
227
 
159
228
  ## Visor de codigo fuente
160
229
 
@@ -222,7 +291,7 @@ Claves principales:
222
291
  - \`ThemeModeDefault\`: modo inicial (\`light\` o \`dark\`)
223
292
  - \`ProjectLink\`: URL de repositorio para acciones de cabecera
224
293
  - \`docsVersion\`: version seleccionada por defecto
225
- - \`ActiveNavigation\`: habilita anterior/siguiente
294
+ - \`ActiveNavigation\`: habilita la navegación rápida y el atajo Ctrl+K
226
295
  - \`FocusMode\`: habilita modo foco/lectura
227
296
  - \`icons\`: iconos de la cabecera. \`icons.defaults\` guarda lo que todos comparten (\`reactIcon\`, \`colorDark\`, \`colorLight\`, \`size\`, \`imgDark\`, \`imgLight\`, \`imgWidth\`, \`imgHeight\`) y cada icono define su \`tag\` y lo que cambia (\`null\` quita un campo). Las claves planas de abajo siguen valiendo y ganan cuando existen ambas formas.
228
297
  - \`IconImageMenuHeaderImgWidth\`, \`IconImageMenuHeaderImgHeight\`: tamano del icono principal
@@ -238,6 +307,55 @@ Claves principales:
238
307
  - \`layoutsConfigPath\`: fallback remoto de layouts
239
308
  - \`rendering\`: URL canonica publicada
240
309
 
310
+ ## Controles de idioma, tema, foco, navegación rápida, PDF y documentos
311
+
312
+ En \`gitpagedocs/config.json\`, estas entradas de \`site.icons\` configuran idioma, tema, foco, navegación Ctrl+K, acciones PDF y navegación al pie de los documentos. Los ocho controles utilizan React Icons por defecto:
313
+
314
+ \`\`\`json
315
+ {
316
+ "site": {
317
+ "icons": {
318
+ "LanguageSelector": {
319
+ "reactIcon": true, "tag": "FiGlobe", "size": "22px",
320
+ "colorDark": "currentColor", "colorLight": "currentColor"
321
+ },
322
+ "ThemeSelector": {
323
+ "reactIcon": true, "tag": "BsSunFill", "size": "22px",
324
+ "colorDark": "currentColor", "colorLight": "currentColor"
325
+ },
326
+ "FocusMode": {
327
+ "reactIcon": true, "tag": "MdFullscreen", "size": "22px",
328
+ "colorDark": "currentColor", "colorLight": "currentColor"
329
+ },
330
+ "QuickNavigation": {
331
+ "reactIcon": true, "tag": "FiSearch", "size": "22px",
332
+ "colorDark": "currentColor", "colorLight": "currentColor"
333
+ },
334
+ "PdfDownload": {
335
+ "reactIcon": true, "tag": "FiDownload", "size": "22px",
336
+ "colorDark": "currentColor", "colorLight": "currentColor"
337
+ },
338
+ "PdfOpenInNewTab": {
339
+ "reactIcon": true, "tag": "FiExternalLink", "size": "22px",
340
+ "colorDark": "currentColor", "colorLight": "currentColor"
341
+ },
342
+ "DocumentPrevious": {
343
+ "reactIcon": true, "tag": "FiChevronLeft", "size": "22px",
344
+ "colorDark": "currentColor", "colorLight": "currentColor"
345
+ },
346
+ "DocumentNext": {
347
+ "reactIcon": true, "tag": "FiChevronRight", "size": "22px",
348
+ "colorDark": "currentColor", "colorLight": "currentColor"
349
+ }
350
+ }
351
+ }
352
+ }
353
+ \`\`\`
354
+
355
+ Cada control es independiente: \`reactIcon: true\` muestra el icono (por defecto); \`false\` muestra texto. Personaliza \`tag\`, \`size\`, \`colorDark\` y \`colorLight\` por control; \`currentColor\` sigue el tema activo. Los controles con iconos conservan sus nombres accesibles, y los selectores conservan sus menús. El atajo Ctrl+K sigue disponible. \`site.FocusMode\` habilita el modo foco; \`site.icons.FocusMode\` solo cambia la apariencia del botón. \`site.icons.PdfDownload\` y \`site.icons.PdfOpenInNewTab\` seleccionan texto o iconos independientemente; las opciones correspondientes de \`site.pdf\` y del \`pdf\` de la ruta controlan la disponibilidad de cada acción.
356
+
357
+ Las configuraciones compactas pueden mover valores comunes a \`site.icons.defaults\`; los campos omitidos heredan esos valores. Define \`reactIcon: false\` en una entrada concreta para sustituir el icono predeterminado por texto.
358
+
241
359
  ## Seccion \`VersionControl\`
242
360
 
243
361
  \`VersionControl.versions\` define:
@@ -269,10 +387,11 @@ Los configs de version soportan multiples tipos:
269
387
  - \`routes-html\`: Rutas de paginas HTML por idioma
270
388
  - \`routes-video\`: Config de video con \`video.videoType\` (youtube, vimeo, mp4, etc.) y \`video.pathVideo\`
271
389
  - \`routes-audio\`: Config de audio con \`audio.audioType\` (youtube, mp3, etc.) y \`audio.pathAudio\`
390
+ - \`routes-pdf\`: PDF con \`pdf.pathPdf\` por idioma; consulta Documentos PDF.
272
391
  - \`authorization\` (md/html/video): guardia de acceso por clave, roles y autenticacion externa
273
- - \`menus-header-md\`, \`menus-header-source-viewer\`, \`menus-header-html\`, \`menus-header-video\`, \`menus-header-audio\`: menus por tipo
274
- - \`hierarchyPage\`: orden de contenedores en la pagina \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4 }\`
275
- - \`hierarchyMenu\`: orden de secciones del menu \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4 }\`
392
+ - \`menus-header-md\`, \`menus-header-source-viewer\`, \`menus-header-html\`, \`menus-header-video\`, \`menus-header-audio\`, \`menus-header-pdf\`: menus por tipo
393
+ - \`hierarchyPage\`: orden de contenedores en la pagina \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4, pdf: 5 }\`
394
+ - \`hierarchyMenu\`: orden de secciones del menu \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4, pdf: 5 }\`
276
395
 
277
396
  Cada ruta puede incluir \`title\`, \`description\` (por idioma), \`titleCss\`, \`titlePosition: "center"\`, \`descriptionPosition: "center"\`, \`titleIsVisible\`, \`descriptionIsVisible\`.
278
397
 
@@ -297,37 +416,84 @@ Opciones por ruta en \`routes-md\`, \`routes-html\` y \`routes-video\`:
297
416
 
298
417
  - \`GITPAGEDOCS_REPOSITORY_SEARCH\`: activa/desactiva busqueda remota en local
299
418
  - \`GITHUB_ACTIONS\`: habilita comportamiento especifico de GitHub Pages
419
+
420
+ ## Comportamiento del sitio y valores predeterminados
421
+
422
+ | Clave | Valor / finalidad |
423
+ | --- | --- |
424
+ | \`ActiveNavigation\` | true; navegación rápida y atajo Ctrl+K |
425
+ | \`FocusMode / focusMode\` | Activación general (true) y controles independientes de copia, descarga, sección y documento; consulta Modo foco |
426
+ | \`pdf\` | Activación general, vista previa, descarga y nueva pestaña; todos true |
427
+ | \`nestedMenusEnabled\` | true; árbol recursivo, o destinos planos con false |
428
+ | \`RouteGuide\` | true; breadcrumbs, con prioridad para valores de versión y ruta Markdown |
429
+ | \`accessibility\` | Activado por defecto; opciones de narración en Accesibilidad |
430
+ | \`HideThemeSelector\` | false; true oculta el selector de tema |
431
+ | \`FooterEnabled\` | true; muestra el pie de página |
432
+ | \`FooterLinkName / FooterLinkUrl\` | Texto y destino del enlace del pie |
433
+ | \`FooterDateMode / FooterDateCustom\` | browser, year o custom; custom utiliza el texto configurado |
434
+ | \`SiteHeaderName / SiteIconPath\` | Marca de cabecera y ruta del icono del sitio |
435
+ | \`audioPlayerEnabled\` | true; controles de audio de fondo |
436
+ | \`audioAutoPlayOnLoad\` | false; autoplay depende de la política del navegador |
437
+ | \`audioLoopEnabled / audioSequentialPlayback\` | false; repetir pista / avanzar pistas nativas |
438
+ | \`audioAllowUserChoice\` | Permite elegir pista cuando la lista tiene varias entradas |
439
+ | \`audioTracks\` | Objetos con url, type y title por idioma |
440
+ | \`audioPopoverHideSource / audioPopoverShowMinutes\` | false / true; origen y duración de pistas nativas |
441
+ | \`audioPopoverSourceCustomLabel\` | Texto opcional del origen por idioma |
442
+ | \`mediaExclusivePlayback\` | true; un audio entre narración, radio, pistas y vídeo |
443
+ | \`AiChatEnabled / AiChatAutoLockSeconds\` | true / 30; muestra chat y bloquea por inactividad (0 desactiva el temporizador) |
444
+ | \`docsAccess\` | enabled y publicKey configuran el acceso a documentación; los archivos públicos siguen siendo públicos |
445
+ | \`RouteguideBrandPositionDefault / RouteguideBrandContainerTopDefault\` | center / false; posición del índice de títulos, separado de breadcrumbs |
446
+ | \`TocScrollMaxHeightDesktop / TocScrollMaxHeightMobile\` | Límites de desplazamiento del índice; longitudes CSS como min(65vh, 400px) |
447
+
448
+ ## Añadir una versión o documento
449
+
450
+ Crea la carpeta de versión con su config y regístrala en \`VersionControl.versions\` con \`id\` y \`path\`. Añade una entrada \`routes-md\` con ID único y rutas por idioma; añade destinos correspondientes en el menú. Usa \`routeDefaults\` para valores compartidos por las rutas; los campos explícitos de la ruta tienen prioridad. Consulta Navegación para submenús y valores de \`RouteGuide\`.
451
+
452
+ Las opciones visuales son configuración pública. Nunca guardes credenciales de proveedor o claves privadas en el JSON del sitio. Los ejemplos de Rutas autorizadas muestran controles del cliente, no protección del servidor para archivos descargables.
453
+
454
+ La entrada \`QuickNavigation\` controla la apariencia de icono/texto del botón Ctrl+K. El atajo de teclado y el panel de búsqueda siguen disponibles.
300
455
  `,
301
- deployment: `# Publicacion
456
+ deployment: `# Publicación
457
+
458
+ Elige el visor oficial para un repositorio público, publica tu propio GitHub Pages o aloja un export estático compilado desde el runtime.
302
459
 
303
- Git Page Docs corre como app Next.js con dos objetivos: servidor local y GitHub Pages.
460
+ ## Visor oficial
304
461
 
305
- ## Publicacion local
462
+ Haz commit de la carpeta \`gitpagedocs/\` generada en tu repositorio público. Abre \`https://vidigal-code.github.io/git-page-docs/OWNER/REPOSITORY/\` y elige versión e idioma. El visor obtiene configuración y contenido del repositorio. Esta URL no convierte un repositorio privado en público.
306
463
 
307
- Usa:
464
+ ## Tu sitio en GitHub Pages
308
465
 
309
- 1. \`npm run build\`
310
- 2. \`npm start\`
466
+ Requisitos: repositorio Git, origin GitHub, permiso de push y GitHub CLI autenticado (\`gh auth login\`) cuando la CLI configura Pages.
311
467
 
312
- Esto inicia runtime Node + Next.js usando \`gitpagedocs/\` local.
468
+ \`\`\`bash
469
+ npx gitpagedocs pages deploy --owner OWNER --repo REPOSITORY
470
+ \`\`\`
313
471
 
314
- ## Publicacion en GitHub Pages
472
+ El flujo confirma el destino, genera docs y \`.github/workflows/gitpagedocs-pages.yml\`, hace commit y push y solicita GitHub Actions como fuente de Pages. Para cambiar solo la fuente, utiliza \`npx gitpagedocs pages actions\`. Para publicar en una subruta, pasa \`--path docs\`.
315
473
 
316
- En build de GitHub Actions:
474
+ Revisa GitHub Actions hasta que termine el despliegue; la URL impresa por la CLI puede aparecer antes de finalizar el build remoto. Los sitios de proyecto normalmente utilizan \`https://OWNER.github.io/REPOSITORY/\`; los sitios de usuario/organización utilizan la raíz del repositorio \`OWNER.github.io\`.
317
475
 
318
- - \`GITHUB_ACTIONS=true\`
319
- - el comportamiento de export estatico se habilita por configuracion
320
- - la pagina inicial de busqueda de repositorios queda activa
476
+ ## Contrato del build
321
477
 
322
- ## Flujo de publish del paquete
478
+ El workflow instala las dependencias del workspace con pnpm fijado, compila el visor y sube el artefacto estático mediante las actions oficiales de Pages. El job de despliegue necesita \`pages: write\`, \`id-token: write\` y el entorno \`github-pages\`.
323
479
 
324
- Para publicar en npm:
480
+ - \`GITHUB_ACTIONS=true\` activa el export estático de Next.js.
481
+ - \`GITHUB_REPOSITORY=OWNER/REPOSITORY\` determina la base del repositorio.
482
+ - \`GITPAGEDOCS_REPOSITORY_SEARCH=true\` activa el build de búsqueda inicial.
483
+ - \`GITPAGEDOCS_BASE_PATH\` sobrescribe explícitamente la base; \`GITPAGEDOCS_PATH\` define la subruta de docs.
484
+ - \`GITPAGEDOCS_DIST_DIR\` separa las salidas de build/dev para dos servidores locales.
325
485
 
326
- - actualiza version en \`package.json\`
327
- - ejecuta \`npm publish --access public\`
328
- - valida autenticacion con \`npm whoami\`
486
+ \`pnpm build\` sin el entorno de Pages produce un build de producción Next.js; por sí solo no verifica un export estático. Conserva \`.nojekyll\` al alojar el export en Pages.
329
487
 
330
- Si \`build:prebuilt\` se omite en Windows, usa CI para generar artefactos prebuilt.
488
+ ## Export independiente
489
+
490
+ En un checkout del runtime con dependencias instaladas, \`node cli/index.mjs --home --output gitpagedocshome --no-interactive\` compila \`frontend/\` y empaqueta una distribución estática. \`--search true\` activa la búsqueda inicial de repositorios. La salida incluye archivos estáticos, README, Dockerfile y ejemplo de entorno; la carpeta de destino se recrea. Un servidor estático sirve los archivos; cambiar una opción de entorno utilizada en el build requiere compilar de nuevo.
491
+
492
+ ## Releases npm para mantenedores
493
+
494
+ El monorepo publica \`@gitpagedocs/tools\`, \`@gitpagedocs/mcp\` y \`@gitpagedocs/cli\`; raíz y frontend son privados. El \`npm-publish.yml\` actual se ejecuta en pushes a \`main\` y omite una versión de CLI ya publicada. Utiliza el secret \`NPM_TOKEN\` del repositorio y publica workspaces en orden de dependencia. Crear solo una release de GitHub no es su disparador.
495
+
496
+ Sincroniza versiones y dependencias internas, regenera docs/baselines, ejecuta typecheck, lint, pruebas, smoke, build y Playwright y revisa antes del push. Confirma las tres versiones en npm y el resultado de Pages. La CLI de configuración ignora \`prebuilt/\`; el workflow de publicación no requiere esa carpeta.
331
497
  `,
332
498
  architecture: `# Arquitectura
333
499
 
@@ -472,6 +638,414 @@ Cada template normalmente incluye:
472
638
  - mantener contraste accesible
473
639
  - mantener escala consistente de espacios y bordes
474
640
  - ofrecer variantes dark y light cuando sea posible
641
+
642
+ ## Elegir y personalizar
643
+
644
+ Elige un tema mediante el selector o configura \`site.ThemeDefault\` con su ID exacto. \`ThemeModeDefault\` define el modo inicial claro/oscuro. \`HideThemeSelector\` oculta el selector; el tema seleccionado sigue aplicado.
645
+
646
+ En tu repositorio, ejecuta la CLI con \`--layoutconfig\`, edita la plantilla generada y conserva el ID coherente con \`layoutsConfig.json\`. El contenido de ruta y \`site.icons\` son independientes del catálogo de temas. Usa \`currentColor\` para iconos que heredan el color de texto o configura colores claros/oscuros con contraste suficiente.
647
+
648
+ Al contribuir en Git Page Docs, la fuente es \`gitpagelayouts/v2/base.json\` junto con \`gitpagelayouts/v2/layouts/<id>.json\`. Ejecuta \`pnpm layouts:sync\` para generar plantillas y documentación. La sincronización puede sobrescribir las ediciones directas de plantillas generadas.
649
+ `,
650
+ mcp: `# Servidor MCP
651
+
652
+ El servidor Model Context Protocol expone 20 tools y 7 resources mediante **stdio**. Se inicia como proceso hijo del cliente MCP. No abre un puerto HTTP ni ejecuta un daemon en segundo plano.
653
+
654
+ ## Instalar y conectar
655
+
656
+ Utiliza Node.js 20+. Instala la CLI en el proyecto con \`npm install --save-dev @gitpagedocs/cli\`; incluye el servidor y el runtime TypeScript. Una instalación global también permite \`gitpagedocs mcp start\`. Para una ejecución puntual, utiliza \`npx --yes @gitpagedocs/cli mcp start\`.
657
+
658
+ En VS Code, crea \`.vscode/mcp.json\` con la siguiente configuración. El directorio de trabajo del proceso es la raíz del proyecto; el comando MCP no tiene flags \`--root\` o \`--cwd\`.
659
+
660
+ \`\`\`json
661
+ {
662
+ "servers": {
663
+ "gitpagedocs": {
664
+ "type": "stdio",
665
+ "command": "node",
666
+ "args": [
667
+ "\${workspaceFolder}/node_modules/@gitpagedocs/cli/index.mjs",
668
+ "mcp",
669
+ "start"
670
+ ],
671
+ "cwd": "\${workspaceFolder}"
672
+ }
673
+ }
674
+ }
675
+ \`\`\`
676
+
677
+ Abre los controles del servidor MCP del cliente, inicia GitPageDocs y lista sus tools/resources. Prueba \`list_files\` con \`{"path":".","recursive":false}\` y lee \`project://readme\`. Estas operaciones no necesitan una clave de proveedor. Un terminal iniciado con \`mcp start\` espera JSON-RPC; el texto común en stdin no es un comando de chat. En un checkout del código, la entrada directa es \`node --import tsx mcp/src/bin.ts\`, no \`index.ts\`.
678
+
679
+ ## Configurar un proveedor
680
+
681
+ Las llamadas al proveedor leen credenciales del entorno del proceso MCP. MCP no carga \`.env\` ni la bóveda cifrada de la CLI automáticamente. Utiliza la función de entrada protegida/secretos del cliente para inyectar variables; nunca guardes claves reales en configuración versionada. Reinicia el proceso MCP después de cambiar su entorno.
682
+
683
+ Selecciona el proveedor con \`configure_ai_provider\` o con \`.gitpagedocs-mcp.json\` en la raíz del proyecto:
684
+
685
+ \`\`\`json
686
+ {
687
+ "provider": "ollama",
688
+ "model": "llama3"
689
+ }
690
+ \`\`\`
691
+
692
+ | Provider | Environment |
693
+ | --- | --- |
694
+ | \`openai\` | \`OPENAI_API_KEY\` |
695
+ | \`anthropic\` | \`ANTHROPIC_API_KEY / CLAUDE_API_KEY\` |
696
+ | \`gemini\` | \`GEMINI_API_KEY / GOOGLE_API_KEY\` |
697
+ | \`openrouter\` | \`OPENROUTER_API_KEY\` |
698
+ | \`ollama\` | \`OLLAMA_BASE_URL\` |
699
+ | \`azure-openai\` | \`AZURE_OPENAI_API_KEY + AZURE_OPENAI_BASE_URL\` |
700
+ | \`mistral\` | \`MISTRAL_API_KEY\` |
701
+ | \`deepseek\` | \`DEEPSEEK_API_KEY\` |
702
+ | \`cohere\` | \`COHERE_API_KEY\` |
703
+ | \`groq\` | \`GROQ_API_KEY\` |
704
+ | \`xai\` | \`XAI_API_KEY\` |
705
+ | \`together\` | \`TOGETHER_API_KEY\` |
706
+ | \`fireworks\` | \`FIREWORKS_API_KEY\` |
707
+ | \`perplexity\` | \`PERPLEXITY_API_KEY\` |
708
+
709
+ Sin una selección válida, el proveedor predeterminado es OpenAI. Ollama no requiere clave de API; el servicio local y el modelo elegido deben estar disponibles. \`OLLAMA_BASE_URL\` es opcional. La URL base de Azure es la URL completa de la operación de chat, incluido deployment y versión de API cuando sean necesarios. La lista de modelos es un catálogo distribuido, no una comprobación en tiempo real.
710
+
711
+ ## Referencia de tools
712
+
713
+ \`?\` indica un argumento opcional. Rutas y contenido son strings; \`recursive\` es booleano. Los identificadores de proveedor proceden del catálogo. Ejecuta las tools mediante la interfaz de herramientas del cliente MCP.
714
+
715
+ | Tool | Argumentos | Comportamiento |
716
+ | --- | --- | --- |
717
+ | \`list_files\` | \`path?, recursive?\` | Lista archivos (por defecto: directorio actual, sin recursión) |
718
+ | \`read_file\` | \`path\` | Lee texto UTF-8 |
719
+ | \`write_file\` | \`path, content\` | Escribe todo el archivo; crea carpetas necesarias |
720
+ | \`search_project\` | \`query, extension?\` | Busca por fragmento sin distinguir mayúsculas |
721
+ | \`list_ai_providers\` | \`—\` | Consulta el catálogo de proveedores |
722
+ | \`list_ai_models\` | \`provider?\` | Consulta el catálogo local de modelos |
723
+ | \`configure_ai_provider\` | \`provider, model?\` | Guarda .gitpagedocs-mcp.json |
724
+ | \`ask_ai\` | \`prompt, provider?, model?, system?\` | Devuelve una respuesta, sin historial de conversación |
725
+ | \`generate_documentation\` | \`path, provider?\` | Documenta un archivo fuente |
726
+ | \`generate_api_docs\` | \`path, provider?\` | Describe la API de un archivo |
727
+ | \`generate_database_docs\` | \`path, provider?\` | Describe modelos de datos de un archivo |
728
+ | \`analyze_source_code\` | \`path, provider?\` | Analiza un archivo fuente |
729
+ | \`generate_readme\` | \`provider?\` | Utiliza el árbol y package.json |
730
+ | \`generate_architecture_docs\` | \`provider?\` | Utiliza el árbol del repositorio |
731
+ | \`analyze_repository\` | \`provider?\` | Analiza el árbol del repositorio |
732
+ | \`analyze_project\` | \`provider?\` | Analiza el árbol y package.json |
733
+ | \`generate_changelog\` | \`provider?\` | Utiliza hasta 80 commits; utiliza el árbol si no están disponibles |
734
+ | \`generate_release_notes\` | \`provider?\` | Utiliza el mismo contexto del changelog |
735
+ | \`validate_docs\` | \`provider?\` | Solicita al proveedor una revisión del Markdown recopilado |
736
+ | \`update_documentation\` | \`path, instructions?, provider?\` | Genera y escribe una región administrada |
737
+
738
+ \`generate_*\`, \`analyze_*\`, \`ask_ai\` y \`validate_docs\` devuelven texto; no lo guardan automáticamente. \`validate_docs\` es una revisión del proveedor, no un verificador determinista de enlaces. Solo \`write_file\`, \`configure_ai_provider\` y \`update_documentation\` escriben archivos. \`update_documentation\` conserva texto fuera de \`<!-- gitpagedocs:start -->\` / \`<!-- gitpagedocs:end -->\`; agrega una región si no existe el par válido. El servidor no muestra confirmación propia; configura los permisos en el cliente MCP.
739
+
740
+ ## Referencia de resources
741
+
742
+ | URI | Contenido |
743
+ | --- | --- |
744
+ | \`project://structure\` | Árbol del repositorio |
745
+ | \`project://docs\` | Documentos Markdown recopilados |
746
+ | \`project://config\` | Configuración resuelta y sourcePath |
747
+ | \`project://repository\` | Contenido de package.json |
748
+ | \`project://readme\` | README.md |
749
+ | \`project://ai/providers\` | Catálogo de proveedores |
750
+ | \`project://ai/models\` | Catálogo de modelos por proveedor |
751
+
752
+ ## Ejemplo de uso
753
+
754
+ 1. Lee \`project://structure\` y \`project://readme\`.
755
+ 2. Ejecuta \`list_ai_providers\` y \`list_ai_models\` para elegir proveedor/modelo.
756
+ 3. Ejecuta \`generate_api_docs\` con \`{"path":"src/index.ts"}\` y revisa el texto devuelto.
757
+ 4. Guarda el texto aprobado con \`write_file\`, o utiliza \`update_documentation\` con \`{"path":"docs/api.md","instructions":"Documenta la API pública en español."}\` para una región administrada.
758
+
759
+ La generación envía el contenido seleccionado del proyecto al proveedor configurado.
760
+
761
+ ## Límites y diagnóstico
762
+
763
+ - Lectura de archivos: hasta 512.000 bytes. Listado: hasta 2.000 entradas; árboles recopilados del proyecto: 400 entradas.
764
+ - Búsqueda: hasta 5.000 entradas, 200 resultados y 240 caracteres por línea encontrada.
765
+ - Recopilación de documentación: primeros 40 archivos Markdown entre hasta 2.000 entradas; se omiten archivos superiores a 40.000 bytes. El contexto del proveedor se limita a 24.000 caracteres.
766
+ - El listado omite carpetas de dependencias/build como \`node_modules\`, \`.git\`, \`.next\`, \`out\`, \`dist\`, \`prebuilt\`, \`.turbo\` y \`coverage\`. No interpreta \`.gitignore\`; archivos como \`.env\` no se excluyen automáticamente. Ejecuta solo en proyectos de confianza y selecciona el contenido que se expondrá.
767
+ - La verificación de rutas es léxica; el proceso no es un sandbox del sistema operativo ni garantiza aislamiento de symlinks/junctions. Leer \`project://config\` puede importar configuración JavaScript/TypeScript.
768
+ - Los fallos de tools incluyen \`isError: true\`. Los resources ausentes devuelven \`Unavailable: ...\`. Revisa stderr en el cliente para errores de inicio; stdout está reservado para JSON-RPC.
769
+ - Si las tools funcionan pero la generación falla, comprueba selección del proveedor, credenciales del entorno, modelo y conectividad.
770
+ `,
771
+ cli: `# Referencia de la CLI
772
+
773
+ ## Comandos CLI
774
+
775
+ | Comando | Descripcion |
776
+ |---------|-------------|
777
+ | \`npx @gitpagedocs/cli\` | Genera config y docs en \`gitpagedocs/\` |
778
+ | \`npx @gitpagedocs/cli --layoutconfig\` | Tambien genera layouts/templates locales en \`gitpagelayouts/\` |
779
+ | \`npx @gitpagedocs/cli --home\` | Distribucion standalone (\`gitpagedocshome/\`) |
780
+ | \`npx @gitpagedocs/cli --push --owner X --repo Y\` | Configura workflow, commit, push |
781
+ | \`npx @gitpagedocs/cli --interactive\` / \`-i\` | Modo interactivo con prompts (por defecto en una terminal) |
782
+ | \`npx @gitpagedocs/cli --no-interactive\` / \`--yes\` / \`-y\` | Nunca pregunta; usa flags y valores por defecto |
783
+ | \`gitpagedocs ai\` | Generador interactivo de documentacion con IA |
784
+ | \`gitpagedocs chat [pregunta]\` | Chat de IA con streaming en la terminal (REPL en TTY; respuesta unica con pregunta o stdin) |
785
+ | \`gitpagedocs provider [id]\` / \`models [provider]\` | Lista proveedores de IA / modelos del catalogo |
786
+ | \`gitpagedocs document[:repo\\|:file\\|:folder]\` | Genera documentacion con IA |
787
+ | \`gitpagedocs deploy\` / \`pages [actions\\|deploy]\` | Configura GitHub Pages via Actions + push |
788
+ | \`gitpagedocs docs\` | Actualiza las regiones gestionadas de README/CONTRIBUTING/SECURITY |
789
+ | \`gitpagedocs password\` | Define la contrasena de acceso a la documentacion (clave publica en \`site.docsAccess\`) |
790
+ | \`gitpagedocs config\` / \`config clear\` | Muestra la config resuelta / borra la config guardada y la boveda de claves |
791
+ | \`gitpagedocs doctor\` / \`version\` / \`update\` | Diagnostico / version / comprobacion de actualizacion en el registro |
792
+ | \`gitpagedocs mcp start\` | Inicia el servidor MCP por stdio |
793
+
794
+ Instala globalmente con \`npm install -g @gitpagedocs/cli\` o ejecuta sin instalar con \`npx @gitpagedocs/cli\`.
795
+
796
+ ## Opciones CLI
797
+
798
+ | Opcion | Descripcion |
799
+ |--------|-------------|
800
+ | \`--owner <user>\` | Owner de GitHub |
801
+ | \`--repo <repo>\` | Repositorio GitHub |
802
+ | \`--path <subpath>\` | Subruta de docs (ej: \`docs\`); sin ella, base path = nombre del repo para CSS/JS en project sites |
803
+ | \`--output <dir>\` | Directorio de salida (default: \`gitpagedocs\`) |
804
+ | \`--search <true-or-false>\` | Habilita/deshabilita busqueda de repositorio (\`--home\`) |
805
+ | \`--layoutconfig\` | Genera layouts locales en \`gitpagelayouts/\` |
806
+ | \`--layouts-dir <dir>\` | Carpeta de layouts locales (por defecto: \`gitpagelayouts\`) |
807
+ | \`--push\` | Crea workflow, commit de artefactos, push |
808
+ | \`--pages-actions\` | Solo cambia la fuente de GitHub Pages a GitHub Actions (igual que \`pages actions\`) |
809
+ | \`--home\` | Genera \`gitpagedocshome/\` (estatico + .env + Dockerfile) |
810
+
811
+ ## Salida generada
812
+
813
+ - \`gitpagedocs/config.json\` – config raiz
814
+ - \`gitpagedocs/icon.svg\` – icono por defecto
815
+ - \`gitpagedocs/docs/versions/<ver>/config.json\` – rutas por version
816
+ - \`gitpagedocs/docs/versions/<ver>/{en,pt,es}/*.md\` – docs en markdown
817
+ - \`gitpagelayouts/\` – solo con \`--layoutconfig\` (carpeta configurable con \`--layouts-dir\`)
818
+
819
+ ## Ejemplos y límites de los comandos
820
+
821
+ \`\`\`bash
822
+ npx gitpagedocs --no-interactive --owner octocat --repo handbook
823
+ npx gitpagedocs --layoutconfig --layouts-dir assets/layouts --no-interactive
824
+ npx gitpagedocs chat "Explica este proyecto" --provider ollama --model llama3
825
+ npx gitpagedocs pages deploy --owner octocat --repo handbook --path docs
826
+ npx gitpagedocs mcp start
827
+ \`\`\`
828
+
829
+ - \`init\` es un alias de generación. \`providers\` equivale a \`provider\`; \`--version\` y \`-v\` equivalen a \`version\`.
830
+ - \`document\`, \`document:repo\`, \`document:file\`, \`document:folder\` y \`--ai\` seleccionan el flujo interactivo de documentación. Elige directorios en sus preguntas; estos alias no implementan una API separada de archivo/carpeta mediante argumento posicional.
831
+ - \`chat\` acepta \`--provider <id>\`, \`--model <id>\` y \`--system <prompt>\`. Con una pregunta o stdin responde una vez; un terminal interactivo sin pregunta inicia una conversación.
832
+ - \`--build\`, \`--serve\` y \`--full\` son flags de compatibilidad: el scaffold habitual sigue siendo solo configuración y no inician un servidor local.
833
+ - \`--home\` compila \`frontend/\` desde un checkout del runtime y escribe el export estático con archivos auxiliares. La carpeta de salida se recrea cuando no es \`.\`; conserva la documentación fuente fuera de ella. Instalar solo la CLI no proporciona \`frontend/\`.
834
+ - \`pages actions\` solo configura la fuente de Pages; \`pages deploy\` y \`--push\` generan, hacen commit y push. Una URL impresa no significa que el build remoto haya terminado: revisa GitHub Actions.
835
+ - \`update\` consulta npm e imprime un comando de instalación; no actualiza la CLI silenciosamente.
836
+
837
+ ## Configuración y credenciales
838
+
839
+ Las opciones visuales están en \`gitpagedocs/config.json\`. El generador interactivo/chat guarda \`.gitpagedocsconfig\` y su bóveda cifrada \`.gitpagedocsvault\` en la carpeta de configuración del usuario: \`%APPDATA%/gitpagedocs\` en Windows, \`~/Library/Application Support/gitpagedocs\` en macOS y la carpeta XDG en Linux. \`config clear\` elimina esa configuración y la bóveda. MCP utiliza \`.gitpagedocs-mcp.json\` en la raíz del proyecto y el entorno del proceso; consulta la página MCP.
840
+
841
+ \`gitpagedocs docs\` actualiza solo regiones delimitadas por marcadores en README.md, CONTRIBUTING.md y SECURITY.md, conservando el texto alrededor. \`password\` configura el par de claves de acceso a la documentación; los controles de presentación del cliente no vuelven confidenciales los archivos de un repositorio público.
842
+ `,
843
+ navigation: `# Navegación y submenús
844
+
845
+ Las rutas definen el contenido; los menús definen cómo encontrarlo. Configúralos en \`gitpagedocs/docs/versions/<version>/config.json\`. Las opciones visuales globales están en \`gitpagedocs/config.json\`.
846
+
847
+ \`\`\`json
848
+ {
849
+ "site": {
850
+ "nestedMenusEnabled": true,
851
+ "RouteGuide": true
852
+ }
853
+ }
854
+ \`\`\`
855
+
856
+ ## Crear el árbol de menús
857
+
858
+ Cada entrada de \`menus-header-md\` tiene \`id\` y objetos \`pt\`, \`en\`, \`es\` con \`title\` y \`path-click\` opcional. Añade \`submenus\` con nuevas entradas para anidar el árbol. El objeto de un idioma también acepta \`submenus\` localizados con título/ruta. Utiliza una forma de manera consistente para no listar el mismo hijo dos veces.
859
+
860
+ Los grupos sin \`path-click\` organizan sus hijos. Para un destino Markdown, utiliza su ruta localizada real de \`routes-md[].path\`. El alias \`page:<id>\` lo registran rutas source-viewer, vídeo, audio y PDF; no lo uses en una página que solo contiene Markdown. El ejemplo utiliza la versión \`0.0.8\`: sustituye ese segmento por la versión editada y crea los tres archivos chapter.
861
+
862
+ \`\`\`json
863
+ {
864
+ "routeDefaults": {
865
+ "RouteGuide": false
866
+ },
867
+ "routes-md": [
868
+ {
869
+ "id": 101,
870
+ "RouteGuide": true,
871
+ "path": {
872
+ "pt": "gitpagedocs/docs/versions/0.0.8/pt/chapter.md",
873
+ "en": "gitpagedocs/docs/versions/0.0.8/en/chapter.md",
874
+ "es": "gitpagedocs/docs/versions/0.0.8/es/chapter.md"
875
+ }
876
+ }
877
+ ],
878
+ "menus-header-md": [
879
+ {
880
+ "id": 900,
881
+ "pt": {
882
+ "title": "Guia"
883
+ },
884
+ "en": {
885
+ "title": "Guide"
886
+ },
887
+ "es": {
888
+ "title": "Guía"
889
+ },
890
+ "submenus": [
891
+ {
892
+ "id": 901,
893
+ "pt": {
894
+ "title": "Capítulos"
895
+ },
896
+ "en": {
897
+ "title": "Chapters"
898
+ },
899
+ "es": {
900
+ "title": "Capítulos"
901
+ },
902
+ "submenus": [
903
+ {
904
+ "id": 101,
905
+ "pt": {
906
+ "title": "Primeiro capítulo",
907
+ "path-click": "gitpagedocs/docs/versions/0.0.8/pt/chapter.md"
908
+ },
909
+ "en": {
910
+ "title": "First chapter",
911
+ "path-click": "gitpagedocs/docs/versions/0.0.8/en/chapter.md"
912
+ },
913
+ "es": {
914
+ "title": "Primer capítulo",
915
+ "path-click": "gitpagedocs/docs/versions/0.0.8/es/chapter.md"
916
+ }
917
+ }
918
+ ]
919
+ }
920
+ ]
921
+ }
922
+ ]
923
+ }
924
+ \`\`\`
925
+
926
+ ## Comportamiento del anidamiento
927
+
928
+ \`site.nestedMenusEnabled: true\` muestra menús recursivos expandibles. Puedes añadir \`submenus\` en cualquier nodo: no existe un límite fijo de profundidad en la aplicación. La configuración debe ser finita y adecuada para la memoria del navegador y la usabilidad. Con \`false\`, los destinos aparecen en una lista plana; las páginas anidadas no se eliminan.
929
+
930
+ El árbol sirve para navegación lateral, etiquetas de búsqueda, expansión de padres y rutas de navegación. Mantén IDs estables y sin ambigüedad; los destinos protegidos siguen las reglas de autorización de su página. La misma estructura se aplica a \`menus-header-source-viewer\`, \`menus-header-html\`, \`menus-header-video\`, \`menus-header-audio\` y \`menus-header-pdf\`. \`hierarchyMenu\` ordena las secciones por tipo; \`hierarchyPage\` ordena los contenedores que comparten el ID de página.
931
+
932
+ ## Ruta de navegación: RouteGuide
933
+
934
+ \`RouteGuide\` controla los breadcrumbs. La prioridad es \`routes-md[].RouteGuide\` de la página, después \`routeDefaults.RouteGuide\` de la versión, después \`site.RouteGuide\`, con \`true\` como valor final por defecto. El ejemplo desactiva la ruta de navegación para la versión y la activa en el capítulo 101. Los archivos existentes de la versión \`0.0.8\` aceptan los mismos campos.
935
+
936
+ \`RouteguideBrand\` y \`RouteguideBrandPosition\` son opciones separadas del índice de títulos del documento; no controlan los breadcrumbs.
937
+
938
+ ## URLs y anterior/siguiente
939
+
940
+ Las URLs versionadas utilizan \`/v/<version>/\`; \`?lang=pt\` elige el idioma y \`?id=101\` elige la página. \`?name=chapter\` selecciona el slug del documento. Mantén \`VersionControl.versions[].path\` apuntando al config de la versión correspondiente. \`site.ActiveNavigation\` activa la navegación rápida y su atajo Ctrl+K. Los controles anterior/siguiente del pie siguen los destinos disponibles en el menú; la navegación entre documentos en modo foco tiene su propia opción. Consulta Modo foco para controles de sección y documento.
941
+
942
+ Los botones anterior/siguiente del pie usan \`site.icons.DocumentPrevious\` (\`FiChevronLeft\`) y \`site.icons.DocumentNext\` (\`FiChevronRight\`) por defecto. Define \`reactIcon: false\` en cualquier entrada para mostrar su texto traducido; cada entrada también acepta \`tag\`, \`size\`, \`colorDark\` y \`colorLight\`. La apariencia no cambia la navegación: el pie aparece cuando hay más de un destino disponible en el menú, y la dirección no disponible permanece desactivada en los extremos.
943
+
944
+ Prueba un menú nuevo desde la barra lateral, por URL directa y en cada idioma habilitado; confirma que el destino existe y está permitido para el lector actual.
945
+ `,
946
+ focusMode: `# Modo foco
947
+
948
+ El modo foco abre el documento Markdown actual en un diálogo de lectura. Actívalo con \`site.FocusMode\`; el control solo está disponible para una página Markdown real. \`site.icons.FocusMode\` cambia la apariencia de icono/texto y no activa ni desactiva la función.
949
+
950
+ ## Configurar los controles
951
+
952
+ Combina este fragmento con \`gitpagedocs/config.json\`:
953
+
954
+ \`\`\`json
955
+ {
956
+ "site": {
957
+ "FocusMode": true,
958
+ "focusMode": {
959
+ "copyEnabled": true,
960
+ "downloadEnabled": true,
961
+ "sectionNavigationEnabled": true,
962
+ "documentNavigationEnabled": true
963
+ }
964
+ }
965
+ }
966
+ \`\`\`
967
+
968
+ Cada opción tiene valor predeterminado \`true\`; \`false\` oculta la acción o el grupo de navegación correspondiente. Con \`sectionNavigationEnabled: false\`, el modo foco muestra el documento completo sin paginación por secciones. Las configuraciones existentes sin el nuevo objeto \`focusMode\` mantienen los controles activados.
969
+
970
+ ## Secciones y documentos
971
+
972
+ - La navegación por secciones tiene cuatro botones: primera sección, sección anterior, sección siguiente y última sección del documento actual.
973
+ - La navegación por documentos tiene cuatro botones: primer documento, documento anterior, documento siguiente y último documento en el orden del menú, incluidos los submenús.
974
+ - \`sectionNavigationEnabled\` controla los cuatro botones de sección; \`documentNavigationEnabled\` controla los cuatro botones de documento. Las direcciones no disponibles quedan desactivadas en los extremos.
975
+ - Se omiten documentos sin traducción en el idioma activo, destinos que no son Markdown y páginas sin permiso.
976
+ - Cambiar de documento mantiene abierto el diálogo y vuelve a la primera sección. Los contadores de sección/documento muestran la posición actual.
977
+ - \`site.ActiveNavigation\` controla la navegación rápida; no desactiva la navegación de documentos en modo foco.
978
+
979
+ ## Copiar y descargar
980
+
981
+ Copiar y descargar utilizan el **Markdown original completo en el idioma seleccionado**, incluidas las secciones que no están visibles. No exportan el HTML renderizado ni solo la sección actual.
982
+
983
+ La descarga conserva el nombre base Markdown del \`path\` localizado de la ruta; si no está disponible, el nombre del archivo es \`document.md\`. El portapapeles sigue las reglas de permisos y contexto seguro del navegador. Si la copia falla, utiliza la descarga y consulta el error mostrado.
984
+
985
+ ## Teclado y lectura
986
+
987
+ El diálogo tiene nombre accesible, gestión de foco del teclado y control de cierre. Usa Tab para recorrer controles y Escape para cerrar. Los controles de solo icono conservan nombres traducidos accesibles. Cerrar el diálogo vuelve a la documentación.
988
+
989
+ La narración se configura por separado en Accesibilidad. Cambiar de documento o idioma cancela la narración anterior para que no siga leyendo contenido antiguo.
990
+ `,
991
+ accessibility: `# Accesibilidad y narración
992
+
993
+ Los controles de accesibilidad incluyen narración nativa del navegador para el documento Markdown actual. La narración utiliza Web Speech API (\`speechSynthesis\`); no necesita clave de API ni un servicio externo de voz de GitPageDocs.
994
+
995
+ ## Configuración
996
+
997
+ Combina estas opciones con \`gitpagedocs/config.json\`:
998
+
999
+ \`\`\`json
1000
+ {
1001
+ "site": {
1002
+ "accessibility": {
1003
+ "enabled": true,
1004
+ "narration": {
1005
+ "enabled": true,
1006
+ "defaultRate": 1,
1007
+ "defaultVolume": 1
1008
+ }
1009
+ },
1010
+ "mediaExclusivePlayback": true
1011
+ }
1012
+ }
1013
+ \`\`\`
1014
+
1015
+ - \`site.accessibility.enabled\`: activa la interfaz de accesibilidad.
1016
+ - \`site.accessibility.narration.enabled\`: activa la narración del documento.
1017
+ - \`defaultRate\`: velocidad inicial de \`0.5\` a \`2\`, en pasos de \`0.25\`; el valor predeterminado es \`1\`.
1018
+ - \`defaultVolume\`: volumen inicial de \`0\` (silencio) a \`1\` (máximo), en pasos de \`0.1\`; el valor predeterminado es \`1\`.
1019
+ - Todos los controles de activación tienen valor predeterminado \`true\`; las opciones ausentes usan los valores distribuidos.
1020
+
1021
+ ## Leer un documento en voz alta
1022
+
1023
+ 1. Abre una página Markdown y los controles de accesibilidad/narración.
1024
+ 2. Elige voz e idioma entre los que ofrece el navegador; ajusta velocidad y volumen.
1025
+ 3. Inicia la lectura. Pausa temporalmente, reanuda la voz pausada o detén la sesión.
1026
+ 4. Para cambiar opciones de lectura de manera previsible, detén, ajusta los controles e inicia de nuevo.
1027
+
1028
+ La narración empieza solo después de tu acción; no hay reproducción automática. La selección automática de voz sigue el idioma del documento; elegir una voz explícitamente utiliza el idioma de esa voz. La narración no traduce el documento.
1029
+
1030
+ La voz utiliza texto legible extraído del Markdown renderizado. Se excluyen scripts, estilos, contenido SVG y elementos ocultos para tecnologías de asistencia. Los documentos largos se leen completos en bloques sucesivos. Cambiar de documento o idioma, desactivar la narración o salir de la página cancela la voz anterior.
1031
+
1032
+ La vista habitual y el modo foco comparten preferencias de voz, velocidad y volumen mientras la página permanece montada. Las preferencias no se guardan entre recargas. Los valores no numéricos de velocidad o volumen usan \`1\`; los valores numéricos fuera de los rangos admitidos se limitan al extremo más cercano.
1033
+
1034
+ ## Un audio a la vez
1035
+
1036
+ Con \`site.mediaExclusivePlayback: true\` (por defecto), iniciar o reanudar la narración pausa radio, pistas de audio y vídeos de ruta. Iniciar esos medios detiene la narración. Los vídeos silenciados quedan fuera de la regla. Utiliza \`false\` cuando la reproducción simultánea sea intencional.
1037
+
1038
+ La configuración se comparte con la reproducción de medios existente; no hay una segunda flag de exclusividad para narración. La página sigue siendo legible con la narración desactivada.
1039
+
1040
+ ## Disponibilidad del navegador y las voces
1041
+
1042
+ El soporte de voz y las voces dependen del navegador, sistema operativo y voces instaladas o proporcionadas remotamente. La lista puede llegar después de cargar la página. Distintos navegadores y dispositivos pueden ofrecer idiomas diferentes.
1043
+
1044
+ La falta de soporte y los errores de reproducción se muestran en la interfaz. Comprueba que haya una voz utilizable, que el audio del sistema esté activo y que exista una interacción del usuario con la página. Una lista vacía de voces no indica que el documento no se haya cargado.
1045
+
1046
+ No supongas que todas las voces funcionan sin conexión: pueden ser locales o remotas. Esta función habla texto; no graba el micrófono. La narración complementa la navegación por teclado y los lectores de pantalla, sin sustituirlos.
1047
+
1048
+ Consulta la [referencia de Web Speech API](https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis) para el comportamiento del navegador.
475
1049
  `,
476
1050
  faq: `# FAQ
477
1051
 
@@ -502,5 +1076,25 @@ Verifica:
502
1076
  ## Por que GitHub Pages puede comportarse distinto a local?
503
1077
 
504
1078
  Porque el build de GitHub Pages habilita la pagina inicial de busqueda y comportamiento especifico de exportacion.
1079
+
1080
+ ## ¿Por qué el icono sigue mostrando texto?
1081
+
1082
+ Define \`site.icons.<Control>.reactIcon\` como booleano \`true\`, con el nombre exacto exportado por React Icons en \`tag\`. LanguageSelector, ThemeSelector, FocusMode, QuickNavigation, PdfDownload, PdfOpenInNewTab, DocumentPrevious y DocumentNext usan iconos por defecto; cambia cualquier entrada a \`false\` para mostrar texto. Los campos planos \`Icon*ReactIcones\` tienen prioridad si existen ambos formatos. Comprueba si la propia función está desactivada mediante \`HideThemeSelector\`, \`FocusMode\` o las acciones PDF.
1083
+
1084
+ ## ¿Por qué los hijos del menú o breadcrumbs son diferentes?
1085
+
1086
+ \`nestedMenusEnabled: false\` aplana los destinos intencionalmente. Revisa \`submenus\`, objetos de idioma y \`path-click\`; confirma que las páginas existan y sean accesibles. Los breadcrumbs utilizan \`RouteGuide\`, con prioridad ruta > versión > sitio. \`RouteguideBrand\` controla el índice de títulos.
1087
+
1088
+ ## ¿Por qué la narración está muda o se interrumpe?
1089
+
1090
+ Comprueba soporte del navegador, voz disponible, idioma, volumen y salida de audio. Las voces pueden cargar después o requerir un servicio remoto. Con \`mediaExclusivePlayback: true\`, otra fuente de audio/vídeo detiene la narración por diseño. Cambiar de documento cancela la voz anterior. Consulta Accesibilidad.
1091
+
1092
+ ## ¿Por qué MCP espera o falla una tool?
1093
+
1094
+ \`mcp start\` espera un cliente MCP por stdio; no es un chat de terminal. Comprueba cwd y utiliza la entrada de CLI publicada o \`mcp/src/bin.ts\`. Las tools de archivos/catálogo no necesitan proveedor; la generación requiere credenciales en el entorno del proceso MCP. La bóveda de CLI y \`.env\` no se cargan automáticamente; revisa \`isError\` y stderr del cliente.
1095
+
1096
+ ## ¿Por qué regenerar cambió mis páginas?
1097
+
1098
+ El scaffold vuelve a escribir rutas, configs y documentación generada. Revisa Git y conserva el contenido específico en sus fuentes. En este repositorio, edita \`cli/content/docs-{en,pt,es}.mjs\` y los metadatos de rutas antes de regenerar; no uses las copias generadas como única fuente.
505
1099
  `,
506
1100
  };