@gitpagedocs/cli 1.1.62 → 1.1.63

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 (59) hide show
  1. package/README.md +193 -193
  2. package/ai/application/ai-command.ts +24 -24
  3. package/ai/application/ai-provider-factory.ts +22 -22
  4. package/ai/application/docs-pattern.ts +68 -68
  5. package/ai/application/run-ai-cli-command.ts +167 -167
  6. package/ai/config.ts +50 -50
  7. package/ai/core/models/ai-cli-config.ts +33 -33
  8. package/ai/core/models/parse-ai-cli-config.ts +78 -78
  9. package/ai/core/ports/illm-provider.ts +32 -32
  10. package/ai/infrastructure/ai-config-file.ts +101 -101
  11. package/ai/infrastructure/file-system-adapter.ts +85 -85
  12. package/ai/infrastructure/llm/tools-llm-provider.ts +54 -54
  13. package/ai/infrastructure/version-docs-writer.ts +143 -143
  14. package/ai/presentation/ai-prompts.ts +239 -239
  15. package/application/ports/cli-runtime-ports.ts +91 -91
  16. package/application/report/config-only-reporter.mjs +64 -64
  17. package/application/use-cases/dispatch-mode.ts +18 -18
  18. package/builders/config-orchestrator.mjs +34 -34
  19. package/builders/project-links.mjs +50 -50
  20. package/builders/root-config-builder.mjs +61 -61
  21. package/builders/route-builders.mjs +136 -136
  22. package/builders/theme-template.mjs +76 -76
  23. package/builders/version-config-builder.mjs +186 -186
  24. package/content/docs-en.mjs +549 -549
  25. package/content/docs-es.mjs +462 -462
  26. package/content/docs-pt.mjs +462 -462
  27. package/contracts/doc-versions.mjs +3 -3
  28. package/data/default-site-config.mjs +321 -321
  29. package/data/i18n-langmenu.mjs +347 -347
  30. package/data/layouts.mjs +436 -436
  31. package/data/path-mappings.mjs +26 -26
  32. package/data/route-metas.mjs +93 -93
  33. package/data/theme-colors.mjs +443 -443
  34. package/data/urls.mjs +12 -12
  35. package/domain/models/cli-options.ts +33 -33
  36. package/home/constants.mjs +4 -4
  37. package/index.mjs +37 -37
  38. package/infrastructure/gitpagedocs-config-file.ts +47 -47
  39. package/infrastructure/home/runtime.mjs +37 -37
  40. package/package.json +3 -3
  41. package/presentation/commands/ai-info.ts +57 -57
  42. package/presentation/commands/config-clear.ts +23 -23
  43. package/presentation/commands/config-info.ts +24 -24
  44. package/presentation/commands/diagnostics.ts +164 -164
  45. package/presentation/commands/docs.ts +37 -37
  46. package/presentation/commands/mcp.ts +20 -20
  47. package/presentation/commands/pages.ts +101 -101
  48. package/presentation/commands/password.ts +62 -62
  49. package/presentation/commands/run-command.ts +70 -70
  50. package/presentation/index.ts +124 -124
  51. package/presentation/options/parser.ts +119 -119
  52. package/presentation/options/resolver.ts +46 -46
  53. package/presentation/ui/clack.ts +91 -91
  54. package/presentation/ui/prompts.ts +146 -146
  55. package/runtime/git-ops.mjs +110 -110
  56. package/runtime/output.mjs +159 -159
  57. package/runtime/workflow.mjs +129 -129
  58. package/start.mjs +12 -12
  59. package/ui/logger.mjs +9 -9
@@ -1,462 +1,462 @@
1
- export const docsEs = {
2
- index: `# Git Page Docs
3
-
4
- Git Page Docs es un runtime de documentacion multilenguaje para repositorios que incluyen la carpeta \`gitpagedocs/\`.
5
-
6
- ## Que entrega este proyecto
7
-
8
- - Renderizado markdown multilenguaje (\`en\`, \`pt\`, \`es\`)
9
- - Ruteo por version (\`/v/:version\`)
10
- - Sistema de temas con templates JSON
11
- - Ejecucion local y en GitHub Pages
12
- - Busqueda de repositorio + render remoto opcional
13
-
14
- ## Contrato de carpetas
15
-
16
- El runtime espera esta estructura:
17
-
18
- - \`gitpagedocs/config.json\`
19
- - \`gitpagedocs/docs/<lang>/*.md\`
20
- - \`gitpagedocs/docs/versions/<version>/config.json\`
21
- - \`gitpagedocs/docs/versions/<version>/<lang>/*.md\`
22
- - \`gitpagelayouts/layoutsConfig.json\`
23
- - \`gitpagelayouts/templates/*.json\`
24
-
25
- ## Navegacion rapida
26
-
27
- - Abre **Primeros pasos** para setup local.
28
- - Abre **Configuracion** para detalle completo de \`config.json\`.
29
- - Abre **Publicacion** para comportamiento local/produccion/GitHub Pages.
30
- - Abre **Arquitectura** para mapa de codigo y flujo de datos.
31
- - Abre **Temas y layouts** para creacion de templates.
32
- - Abre **Rutas autorizadas** para configurar clave, roles y autenticacion externa.
33
- - Abre **FAQ** para troubleshooting.
34
- `,
35
- gettingStarted: `# Primeros pasos
36
-
37
- Esta guia lleva el proyecto desde cero hasta docs corriendo.
38
-
39
- ## Requisitos
40
-
41
- - Node.js 20+
42
- - npm 10+ (o pnpm)
43
-
44
- ## Setup local
45
-
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\`
55
-
56
- ## Comportamiento de la CLI
57
-
58
- \`npx @gitpagedocs/cli\` (o \`npm run gitpagedocs\`) genera artefactos en la carpeta oficial \`gitpagedocs/\`.
59
-
60
- - Genera solo markdown/json
61
- - No genera \`index.html\`
62
- - No genera \`index.js\`
63
- - No ejecuta comandos de instalacion
64
-
65
- ## Modo de busqueda por repositorio
66
-
67
- En local, se controla por variable:
68
-
69
- - \`GITPAGEDOCS_REPOSITORY_SEARCH=true\`
70
- - \`GITPAGEDOCS_REPOSITORY_SEARCH=false\`
71
-
72
- En build de GitHub Pages (\`GITHUB_ACTIONS=true\`), la busqueda de repositorio siempre esta activa.
73
- `,
74
- projectOverview: `# Vision general del proyecto
75
-
76
- Git Page Docs es un monorepo pnpm + turborepo que convierte la carpeta \`gitpagedocs/\` de un repositorio en un sitio de documentacion multilingue y versionado — con un asistente de IA integrado y un servidor MCP (Model Context Protocol).
77
-
78
- ## Paquetes del monorepo
79
-
80
- - **frontend/** — visor Next.js 15 (App Router, React 19), exportado estaticamente para GitHub Pages.
81
- - **cli/** — el paquete npm publicado \`@gitpagedocs/cli\` (\`npm install -g @gitpagedocs/cli\`): genera la estructura de docs, documenta con IA, configura Pages y ejecuta el servidor MCP.
82
- - **tools/** — \`@gitpagedocs/tools\`, el nucleo de logica compartido: sistema de IA con 14 proveedores, boveda de credenciales cifrada, cargador de config, caches y logger.
83
- - **mcp/** — \`@gitpagedocs/mcp\`, servidor Model Context Protocol (20 herramientas + 7 recursos).
84
- - **gitpagedocs/** — el contrato del usuario: \`config.json\`, docs versionados y layouts.
85
-
86
- ## Stack
87
-
88
- - Next.js 15 (App Router) + React 19 + TypeScript; exportacion estatica para GitHub Pages
89
- - gray-matter + marked para Markdown; react-icons
90
- - pnpm workspaces + turborepo; Vitest + Playwright; ESLint
91
-
92
- ## Destacados
93
-
94
- - Multilingue (\`en\`, \`pt\`, \`es\`) y rutas por version (\`/v/:version\`)
95
- - Sistema de IA con 14 proveedores (OpenAI, Anthropic, Gemini, Ollama, Mistral, DeepSeek, Cohere, Groq, xAI y mas) con streaming
96
- - Claves de IA **cifradas en reposo** (AES-256-GCM) detras de una contrasena local — nunca en texto plano
97
- - **Panel de chat de IA** en los docs + una **consola \`/ai\`** dedicada
98
- - Sistema de 36 temas; ejecucion local y en GitHub Pages
99
- `,
100
- functionalities: `# Funcionalidades
101
-
102
- Referencia completa de opciones CLI, claves de configuracion y funciones del runtime.
103
-
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\` / \`-y\` | Nunca pregunta; usa flags y valores por defecto |
114
-
115
- ## Opciones CLI
116
-
117
- | Opcion | Descripcion |
118
- |--------|-------------|
119
- | \`--owner <user>\` | Owner de GitHub |
120
- | \`--repo <repo>\` | Repositorio GitHub |
121
- | \`--path <subpath>\` | Subruta de docs (ej: \`docs\`); sin ella, base path = nombre del repo para CSS/JS en project sites |
122
- | \`--output <dir>\` | Directorio de salida (default: \`gitpagedocs\`) |
123
- | \`--search true|false\` | Habilita/deshabilita busqueda de repositorio (\`--home\`) |
124
- | \`--layoutconfig\` | Genera layouts locales en \`gitpagelayouts/\` |
125
- | \`--layouts-dir <dir>\` | Carpeta de layouts locales (por defecto: \`gitpagelayouts\`) |
126
- | \`--push\` | Crea workflow, commit de artefactos, push |
127
- | \`--home\` | Genera \`gitpagedocshome/\` (estatico + .env + Dockerfile) |
128
-
129
- ## Salida generada
130
-
131
- - \`gitpagedocs/config.json\` – config raiz
132
- - \`gitpagedocs/icon.svg\` – icono por defecto
133
- - \`gitpagedocs/docs/versions/<ver>/config.json\` – rutas por version
134
- - \`gitpagedocs/docs/versions/<ver>/{en,pt,es}/*.md\` – docs en markdown
135
- - \`gitpagelayouts/\` – solo con \`--layoutconfig\` (carpeta configurable con \`--layouts-dir\`)
136
-
137
- ## Tipos de contenido
138
-
139
- | Tipo | Clave config | Descripcion |
140
- |------|--------------|-------------|
141
- | Markdown | \`routes-md\` | Archivos .md con \`path\` por idioma |
142
- | HTML | \`routes-html\` | \`path\` local o \`url\` externa |
143
- | Video | \`routes-video\` | \`video.pathVideo\`, \`video.videoType\` |
144
- | Audio | \`routes-audio\` | \`audio.pathAudio\`, \`audio.audioType\` |
145
-
146
- ## Visor de codigo fuente
147
-
148
- El config de version puede renderizar un contenedor **Codigo fuente** via \`routes-source-viewer\` y \`menus-header-source-viewer\`. El viewer lee el arbol del repositorio en GitHub en tiempo de ejecucion y aplica el tema actual de la documentacion.
149
-
150
- - Arbol del repositorio desde \`source-viewer-path\`; la branch por defecto es \`main\`
151
- - Navegacion por carpetas y filtro de archivos
152
- - Listado de directorios estilo GitHub
153
- - Renderizado de codigo con numeros de linea
154
- - Alternancia vista previa/codigo para Markdown, incluido \`README.md\`
155
- - Carpetas colapsables en la barra lateral
156
-
157
- ## Claves de config (site)
158
-
159
- - \`name\`, \`defaultLanguage\`, \`supportedLanguages\`
160
- - \`docsVersion\`, \`rendering\`, \`ThemeDefault\`, \`ThemeModeDefault\`
161
- - \`ProjectLink\`, \`layoutsConfigPathOficial\`, \`layoutsConfigPath\`
162
-
163
- ## Variables de entorno
164
-
165
- - \`GITPAGEDOCS_REPOSITORY_SEARCH\` – busqueda de repositorio (local)
166
- - \`GITHUB_ACTIONS\` – modo build GitHub Pages
167
- `,
168
- configuration: `# Configuracion
169
-
170
- La configuracion de runtime esta en \`gitpagedocs/config.json\`.
171
-
172
- ## Seccion \`site\`
173
-
174
- Claves principales:
175
-
176
- - \`name\`: titulo del proyecto en UI
177
- - \`defaultLanguage\`: idioma por defecto
178
- - \`supportedLanguages\`: lista de idiomas disponibles
179
- - \`HideThemeSelector\`: ocultar/mostrar selector de tema
180
- - \`ThemeDefault\`: id del tema inicial
181
- - \`ThemeModeDefault\`: modo inicial (\`light\` o \`dark\`)
182
- - \`ProjectLink\`: URL de repositorio para acciones de cabecera
183
- - \`docsVersion\`: version seleccionada por defecto
184
- - \`ActiveNavigation\`: habilita anterior/siguiente
185
- - \`FocusMode\`: habilita modo foco/lectura
186
- - \`IconImageMenuHeaderImgWidth\`, \`IconImageMenuHeaderImgHeight\`: tamano del icono principal
187
- - \`IconImageMenuHeaderLightImg\`, \`IconImageMenuHeaderDarkImg\`: icono principal (light/dark)
188
- - \`IconProjectLinkImgWidth\`, \`IconProjectLinkImgHeight\`: tamano del icono enlace del proyecto
189
- - \`IconProjectLinkLightImg\`, \`IconProjectLinkDarkImg\`: icono enlace del proyecto
190
- - \`IconVersionLinksImgWidth\`, \`IconVersionLinksImgHeight\`: tamano del icono enlaces de version
191
- - \`IconVersionLinksLightImg\`, \`IconVersionLinksDarkImg\`: icono enlaces de version
192
- - \`IconInfoHeaderMenuImgWidth\`, \`IconInfoHeaderMenuImgHeight\`: tamano del icono info
193
- - \`IconInfoHeaderMenuLightImg\`, \`IconInfoHeaderMenuDarkImg\`: icono info
194
- - \`IconPreviewProjectLinkImgWidth\`, \`IconPreviewProjectLinkImgHeight\`: tamano del icono preview
195
- - \`IconPreviewProjectLinkLightImg\`, \`IconPreviewProjectLinkDarkImg\`: icono preview
196
- - \`layoutsConfigPath\`: fallback remoto de layouts
197
- - \`rendering\`: URL canonica publicada
198
-
199
- ## Seccion \`VersionControl\`
200
-
201
- \`VersionControl.versions\` define:
202
-
203
- - \`id\`: identificador de version
204
- - \`path\`: ruta de config de version
205
- - links opcionales (\`ProjectLink\`, \`branch\`, \`release\`, \`commit\`)
206
- - metadatos opcionales del source viewer (\`source-viewer\`, \`source-viewer-path\`)
207
-
208
- ## Navegacion y rutas
209
-
210
- - \`routes\`: rutas markdown por idioma (legado)
211
- - \`menus-header\`: menu jerarquico
212
- - \`translations\`: etiquetas UI para not-found y navegacion
213
-
214
- ## Autorizacion (config de version)
215
-
216
- - \`auth\`: configuraciones globales de autorizacion para esa version
217
- - \`auth.accessKeys\`: mapa de claves usado por \`authorization.accessKeyId\`
218
- - \`auth.rolesStorageKey\`: clave de localStorage para bootstrap de roles
219
- - \`auth.providers\`: adaptadores de proveedor (\`authjs\`, \`clerk\`, \`firebase\`, \`jwt\`)
220
-
221
- ## Tipos de contenido (config de version)
222
-
223
- Los configs de version soportan multiples tipos:
224
-
225
- - \`routes-md\`: Rutas markdown con \`title\`, \`description\` (centrados via \`titlePosition\`, \`descriptionPosition\`)
226
- - \`routes-source-viewer\`: Contenedores de codigo fuente con \`source-viewer: true\` y \`source-viewer-path\`
227
- - \`routes-html\`: Rutas de paginas HTML por idioma
228
- - \`routes-video\`: Config de video con \`video.videoType\` (youtube, vimeo, mp4, etc.) y \`video.pathVideo\`
229
- - \`routes-audio\`: Config de audio con \`audio.audioType\` (youtube, mp3, etc.) y \`audio.pathAudio\`
230
- - \`authorization\` (md/html/video): guardia de acceso por clave, roles y autenticacion externa
231
- - \`menus-header-md\`, \`menus-header-source-viewer\`, \`menus-header-html\`, \`menus-header-video\`, \`menus-header-audio\`: menus por tipo
232
- - \`hierarchyPage\`: orden de contenedores en la pagina \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4 }\`
233
- - \`hierarchyMenu\`: orden de secciones del menu \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4 }\`
234
-
235
- Cada ruta puede incluir \`title\`, \`description\` (por idioma), \`titleCss\`, \`titlePosition: "center"\`, \`descriptionPosition: "center"\`, \`titleIsVisible\`, \`descriptionIsVisible\`.
236
-
237
- ## Variables por ruta (blockLink, container, url, browseAll)
238
-
239
- Opciones por ruta en \`routes-md\`, \`routes-html\` y \`routes-video\`:
240
-
241
- - **\`blockLink\`** (defecto: true) – Para HTML: si true, los enlaces abren en nueva pestaña (\`target="_blank"\`); si false, en el mismo contexto.
242
- - **\`container\`** – \`"full"\` = altura automatica; numero (ej: \`500\`) = altura fija en px con overflow auto. Se aplica a md, html y video.
243
- - **\`url\`** – Solo en \`routes-html\`: \`Record<LanguageCode, string>\` con URLs externas. Al definirse, el iframe usa \`src={url}\` en vez de HTML local via \`srcDoc\`. Las rutas con \`url\` no generan archivos HTML locales.
244
- - **\`browseAll\`** (defecto: false) – Si true, el contenedor muestra botones Anterior/Siguiente para navegar entre todos los items de ese tipo.
245
-
246
- ## Tipos de contenido: path vs url (HTML)
247
-
248
- - **Markdown (\`routes-md\`)**: usa \`path\` apuntando a archivos \`.md\` locales.
249
- - **HTML (\`routes-html\`)**: usa \`path\` para archivos HTML locales (sin extension .html en config) o \`url\` para URLs externas. Con \`url\`, el iframe carga la pagina externa; no se genera archivo local.
250
- - **Video (\`routes-video\`)**: usa \`video.pathVideo\` y \`video.videoType\` (youtube, vimeo, mp4, etc.).
251
-
252
- ## Variables de entorno
253
-
254
- - \`GITPAGEDOCS_REPOSITORY_SEARCH\`: activa/desactiva busqueda remota en local
255
- - \`GITHUB_ACTIONS\`: habilita comportamiento especifico de GitHub Pages
256
- `,
257
- deployment: `# Publicacion
258
-
259
- Git Page Docs corre como app Next.js con dos objetivos: servidor local y GitHub Pages.
260
-
261
- ## Publicacion local
262
-
263
- Usa:
264
-
265
- 1. \`npm run build\`
266
- 2. \`npm start\`
267
-
268
- Esto inicia runtime Node + Next.js usando \`gitpagedocs/\` local.
269
-
270
- ## Publicacion en GitHub Pages
271
-
272
- En build de GitHub Actions:
273
-
274
- - \`GITHUB_ACTIONS=true\`
275
- - el comportamiento de export estatico se habilita por configuracion
276
- - la pagina inicial de busqueda de repositorios queda activa
277
-
278
- ## Flujo de publish del paquete
279
-
280
- Para publicar en npm:
281
-
282
- - actualiza version en \`package.json\`
283
- - ejecuta \`npm publish --access public\`
284
- - valida autenticacion con \`npm whoami\`
285
-
286
- Si \`build:prebuilt\` se omite en Windows, usa CI para generar artefactos prebuilt.
287
- `,
288
- architecture: `# Arquitectura
289
-
290
- El proyecto esta organizado por fronteras de feature y responsabilidades de runtime.
291
-
292
- ## Paquetes
293
-
294
- - **frontend/** — visor Next.js (Feature-Sliced: app / widgets / features / entities / shared); export estatico.
295
- - **cli/** — el bin publicado \`gitpagedocs\` (hexagonal) + \`cli/ai/\` (CLI de documentacion con IA).
296
- - **tools/** — \`@gitpagedocs/tools\`: ai/ security/ crypto/ cache/ config/ logger/ errors/ filesystem/ documentation/ ports/.
297
- - **mcp/** — \`@gitpagedocs/mcp\`: herramientas + recursos MCP que delegan a tools/.
298
-
299
- ## Modulos principales (frontend)
300
-
301
- - \`frontend/src/app/[[...repo]]/page.tsx\` — parser de rutas, generateStaticParams, seleccion de shell.
302
- - \`frontend/src/entities/docs/api/load-docs-data.ts\` — config local/remota, version, parse markdown, layouts + temas.
303
- - \`frontend/src/widgets/docs-shell/docs-shell.tsx\` — UI, estado idioma/version/tema, sync de URL, montaje del chat de IA.
304
-
305
- ## Seguridad: credenciales de IA cifradas
306
-
307
- La consola \`/ai\` y el panel de chat exigen una contrasena local que deriva (PBKDF2) una clave AES-256-GCM; las claves quedan cifradas en \`localStorage\` y solo se descifran durante la sesion (\`@gitpagedocs/tools/security\`).
308
-
309
- ## Flujo de datos
310
-
311
- 1. Llega la ruta (\`/owner/repo/v/x.y.z\` o equivalente local)
312
- 2. Se resuelve config (local o remoto)
313
- 3. Config de version sobreescribe rutas/menus base
314
- 4. Markdown se carga y convierte a HTML
315
- 5. Template de layout se resuelve y aplica en CSS vars
316
- 6. Shell renderiza contenido y controles
317
-
318
- ## Puntos de resiliencia
319
-
320
- - fallback de carga para layouts/templates
321
- - carga de markdown por idioma con fallback de error
322
- - sincronizacion de idioma/version/tema via localStorage
323
- `,
324
- githubIssuesProjects: `# GitHub Issues y Projects
325
-
326
- Aprende a usar GitHub Issues y Projects para gestionar tu trabajo.
327
-
328
- ## Conceptos
329
-
330
- - Issues para rastrear tareas y bugs
331
- - Projects para visualizar y organizar el trabajo
332
- - Flujos recomendados para equipos
333
- `,
334
- gitIntroduction: `# Introduccion a Git
335
-
336
- Conceptos basicos de Git para principiantes.
337
-
338
- ## Comandos esenciales
339
-
340
- - \`git init\` - iniciar repositorio
341
- - \`git add\` - preparar cambios
342
- - \`git commit\` - registrar commit
343
- - \`git push\` - enviar a remoto
344
- `,
345
- authorizedRoutes: `# Rutas autorizadas
346
-
347
- Protege rutas por clave de acceso, roles requeridos y proveedores externos.
348
-
349
- ## Ubicacion del config de version
350
-
351
- Configura en:
352
-
353
- - \`gitpagedocs/docs/versions/<version>/config.json\`
354
-
355
- ## Seccion global auth
356
-
357
- Usa \`auth\` en la raiz del config de version:
358
-
359
- - \`accessKeys\`: mapa de ids de clave al secreto esperado
360
- - \`rolesStorageKey\`: clave de localStorage para bootstrap de roles
361
- - \`providers\`: lista de proveedores externos (\`authjs\`, \`clerk\`, \`firebase\`, \`jwt\`)
362
-
363
- ## Autorizacion por ruta
364
-
365
- Dentro de cada ruta (\`routes-md\`, \`routes-html\`, \`routes-video\`):
366
-
367
- - \`authorization.accessKeyId\`
368
- - \`authorization.requiredRoles\`
369
- - \`authorization.requireExternalAuth\`
370
- - \`authorization.allowedProviders\`
371
-
372
- ## Fases
373
-
374
- ### Fase A - Clave de acceso
375
-
376
- Define \`authorization.accessKeyId\` y la clave correspondiente en \`auth.accessKeys\`.
377
-
378
- ### Fase B - Roles
379
-
380
- Define \`authorization.requiredRoles\` con uno o mas roles.
381
-
382
- Los roles pueden venir de:
383
-
384
- - query param \`?authRoles=admin,maintainer\`
385
- - localStorage (\`rolesStorageKey\`)
386
- - claims de proveedores externos
387
-
388
- ### Fase C - Proveedores externos
389
-
390
- Define \`authorization.requireExternalAuth=true\` y opcionalmente \`allowedProviders\`.
391
-
392
- Adaptadores soportados:
393
-
394
- - Auth.js (\`type: "authjs"\`)
395
- - Clerk (\`type: "clerk"\`)
396
- - Firebase Auth (\`type: "firebase"\`)
397
- - JWT custom (\`type: "jwt"\`)
398
- `,
399
- themes: `# Temas y layouts
400
-
401
- Los temas son templates JSON mapeados por \`layoutsConfig.json\`.
402
-
403
- ## Archivos
404
-
405
- - \`gitpagelayouts/layoutsConfig.json\`
406
- - \`gitpagelayouts/layoutsFallbackConfig.json\`
407
- - \`gitpagelayouts/templates/*.json\`
408
-
409
- ## Modelo de template
410
-
411
- Cada template normalmente incluye:
412
-
413
- - \`id\`, \`name\`, \`author\`, \`version\`
414
- - \`mode\` y metadatos de par dark/light
415
- - \`colors\`
416
- - \`typography\`
417
- - tokens de \`components\`
418
- - \`animations\`
419
-
420
- ## Comportamiento en runtime
421
-
422
- - tema activo viene de config/seleccion de usuario
423
- - toggle light/dark resuelve tema pareado por referencia
424
- - variables CSS se generan desde tokens del template
425
-
426
- ## Buenas practicas
427
-
428
- - mantener contraste accesible
429
- - mantener escala consistente de espacios y bordes
430
- - ofrecer variantes dark y light cuando sea posible
431
- `,
432
- faq: `# FAQ
433
-
434
- ## Por que repositorios remotos no abren en local?
435
-
436
- Verifica:
437
-
438
- - \`GITPAGEDOCS_REPOSITORY_SEARCH=true\` en \`.env\`
439
- - repositorio objetivo contiene \`gitpagedocs/config.json\`
440
- - paths markdown del repositorio coinciden con su config de rutas
441
-
442
- ## Por que una ruta de version muestra contenido incorrecto?
443
-
444
- Verifica:
445
-
446
- - \`VersionControl.versions[*].path\` en \`gitpagedocs/config.json\`
447
- - config de version tiene \`routes\` y \`menus-header\` validos
448
- - markdown existe para cada idioma
449
-
450
- ## Por que tema no se aplica correctamente?
451
-
452
- Verifica:
453
-
454
- - \`layoutsConfig.json\` referencia templates validos
455
- - ids de template son unicos
456
- - tema seleccionado existe en el mapa de temas cargados
457
-
458
- ## Por que GitHub Pages puede comportarse distinto a local?
459
-
460
- Porque el build de GitHub Pages habilita la pagina inicial de busqueda y comportamiento especifico de exportacion.
461
- `,
462
- };
1
+ export const docsEs = {
2
+ index: `# Git Page Docs
3
+
4
+ Git Page Docs es un runtime de documentacion multilenguaje para repositorios que incluyen la carpeta \`gitpagedocs/\`.
5
+
6
+ ## Que entrega este proyecto
7
+
8
+ - Renderizado markdown multilenguaje (\`en\`, \`pt\`, \`es\`)
9
+ - Ruteo por version (\`/v/:version\`)
10
+ - Sistema de temas con templates JSON
11
+ - Ejecucion local y en GitHub Pages
12
+ - Busqueda de repositorio + render remoto opcional
13
+
14
+ ## Contrato de carpetas
15
+
16
+ El runtime espera esta estructura:
17
+
18
+ - \`gitpagedocs/config.json\`
19
+ - \`gitpagedocs/docs/<lang>/*.md\`
20
+ - \`gitpagedocs/docs/versions/<version>/config.json\`
21
+ - \`gitpagedocs/docs/versions/<version>/<lang>/*.md\`
22
+ - \`gitpagelayouts/layoutsConfig.json\`
23
+ - \`gitpagelayouts/templates/*.json\`
24
+
25
+ ## Navegacion rapida
26
+
27
+ - Abre **Primeros pasos** para setup local.
28
+ - Abre **Configuracion** para detalle completo de \`config.json\`.
29
+ - Abre **Publicacion** para comportamiento local/produccion/GitHub Pages.
30
+ - Abre **Arquitectura** para mapa de codigo y flujo de datos.
31
+ - Abre **Temas y layouts** para creacion de templates.
32
+ - Abre **Rutas autorizadas** para configurar clave, roles y autenticacion externa.
33
+ - Abre **FAQ** para troubleshooting.
34
+ `,
35
+ gettingStarted: `# Primeros pasos
36
+
37
+ Esta guia lleva el proyecto desde cero hasta docs corriendo.
38
+
39
+ ## Requisitos
40
+
41
+ - Node.js 20+
42
+ - npm 10+ (o pnpm)
43
+
44
+ ## Setup local
45
+
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\`
55
+
56
+ ## Comportamiento de la CLI
57
+
58
+ \`npx @gitpagedocs/cli\` (o \`npm run gitpagedocs\`) genera artefactos en la carpeta oficial \`gitpagedocs/\`.
59
+
60
+ - Genera solo markdown/json
61
+ - No genera \`index.html\`
62
+ - No genera \`index.js\`
63
+ - No ejecuta comandos de instalacion
64
+
65
+ ## Modo de busqueda por repositorio
66
+
67
+ En local, se controla por variable:
68
+
69
+ - \`GITPAGEDOCS_REPOSITORY_SEARCH=true\`
70
+ - \`GITPAGEDOCS_REPOSITORY_SEARCH=false\`
71
+
72
+ En build de GitHub Pages (\`GITHUB_ACTIONS=true\`), la busqueda de repositorio siempre esta activa.
73
+ `,
74
+ projectOverview: `# Vision general del proyecto
75
+
76
+ Git Page Docs es un monorepo pnpm + turborepo que convierte la carpeta \`gitpagedocs/\` de un repositorio en un sitio de documentacion multilingue y versionado — con un asistente de IA integrado y un servidor MCP (Model Context Protocol).
77
+
78
+ ## Paquetes del monorepo
79
+
80
+ - **frontend/** — visor Next.js 15 (App Router, React 19), exportado estaticamente para GitHub Pages.
81
+ - **cli/** — el paquete npm publicado \`@gitpagedocs/cli\` (\`npm install -g @gitpagedocs/cli\`): genera la estructura de docs, documenta con IA, configura Pages y ejecuta el servidor MCP.
82
+ - **tools/** — \`@gitpagedocs/tools\`, el nucleo de logica compartido: sistema de IA con 14 proveedores, boveda de credenciales cifrada, cargador de config, caches y logger.
83
+ - **mcp/** — \`@gitpagedocs/mcp\`, servidor Model Context Protocol (20 herramientas + 7 recursos).
84
+ - **gitpagedocs/** — el contrato del usuario: \`config.json\`, docs versionados y layouts.
85
+
86
+ ## Stack
87
+
88
+ - Next.js 15 (App Router) + React 19 + TypeScript; exportacion estatica para GitHub Pages
89
+ - gray-matter + marked para Markdown; react-icons
90
+ - pnpm workspaces + turborepo; Vitest + Playwright; ESLint
91
+
92
+ ## Destacados
93
+
94
+ - Multilingue (\`en\`, \`pt\`, \`es\`) y rutas por version (\`/v/:version\`)
95
+ - Sistema de IA con 14 proveedores (OpenAI, Anthropic, Gemini, Ollama, Mistral, DeepSeek, Cohere, Groq, xAI y mas) con streaming
96
+ - Claves de IA **cifradas en reposo** (AES-256-GCM) detras de una contrasena local — nunca en texto plano
97
+ - **Panel de chat de IA** en los docs + una **consola \`/ai\`** dedicada
98
+ - Sistema de 36 temas; ejecucion local y en GitHub Pages
99
+ `,
100
+ functionalities: `# Funcionalidades
101
+
102
+ Referencia completa de opciones CLI, claves de configuracion y funciones del runtime.
103
+
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\` / \`-y\` | Nunca pregunta; usa flags y valores por defecto |
114
+
115
+ ## Opciones CLI
116
+
117
+ | Opcion | Descripcion |
118
+ |--------|-------------|
119
+ | \`--owner <user>\` | Owner de GitHub |
120
+ | \`--repo <repo>\` | Repositorio GitHub |
121
+ | \`--path <subpath>\` | Subruta de docs (ej: \`docs\`); sin ella, base path = nombre del repo para CSS/JS en project sites |
122
+ | \`--output <dir>\` | Directorio de salida (default: \`gitpagedocs\`) |
123
+ | \`--search true|false\` | Habilita/deshabilita busqueda de repositorio (\`--home\`) |
124
+ | \`--layoutconfig\` | Genera layouts locales en \`gitpagelayouts/\` |
125
+ | \`--layouts-dir <dir>\` | Carpeta de layouts locales (por defecto: \`gitpagelayouts\`) |
126
+ | \`--push\` | Crea workflow, commit de artefactos, push |
127
+ | \`--home\` | Genera \`gitpagedocshome/\` (estatico + .env + Dockerfile) |
128
+
129
+ ## Salida generada
130
+
131
+ - \`gitpagedocs/config.json\` – config raiz
132
+ - \`gitpagedocs/icon.svg\` – icono por defecto
133
+ - \`gitpagedocs/docs/versions/<ver>/config.json\` – rutas por version
134
+ - \`gitpagedocs/docs/versions/<ver>/{en,pt,es}/*.md\` – docs en markdown
135
+ - \`gitpagelayouts/\` – solo con \`--layoutconfig\` (carpeta configurable con \`--layouts-dir\`)
136
+
137
+ ## Tipos de contenido
138
+
139
+ | Tipo | Clave config | Descripcion |
140
+ |------|--------------|-------------|
141
+ | Markdown | \`routes-md\` | Archivos .md con \`path\` por idioma |
142
+ | HTML | \`routes-html\` | \`path\` local o \`url\` externa |
143
+ | Video | \`routes-video\` | \`video.pathVideo\`, \`video.videoType\` |
144
+ | Audio | \`routes-audio\` | \`audio.pathAudio\`, \`audio.audioType\` |
145
+
146
+ ## Visor de codigo fuente
147
+
148
+ El config de version puede renderizar un contenedor **Codigo fuente** via \`routes-source-viewer\` y \`menus-header-source-viewer\`. El viewer lee el arbol del repositorio en GitHub en tiempo de ejecucion y aplica el tema actual de la documentacion.
149
+
150
+ - Arbol del repositorio desde \`source-viewer-path\`; la branch por defecto es \`main\`
151
+ - Navegacion por carpetas y filtro de archivos
152
+ - Listado de directorios estilo GitHub
153
+ - Renderizado de codigo con numeros de linea
154
+ - Alternancia vista previa/codigo para Markdown, incluido \`README.md\`
155
+ - Carpetas colapsables en la barra lateral
156
+
157
+ ## Claves de config (site)
158
+
159
+ - \`name\`, \`defaultLanguage\`, \`supportedLanguages\`
160
+ - \`docsVersion\`, \`rendering\`, \`ThemeDefault\`, \`ThemeModeDefault\`
161
+ - \`ProjectLink\`, \`layoutsConfigPathOficial\`, \`layoutsConfigPath\`
162
+
163
+ ## Variables de entorno
164
+
165
+ - \`GITPAGEDOCS_REPOSITORY_SEARCH\` – busqueda de repositorio (local)
166
+ - \`GITHUB_ACTIONS\` – modo build GitHub Pages
167
+ `,
168
+ configuration: `# Configuracion
169
+
170
+ La configuracion de runtime esta en \`gitpagedocs/config.json\`.
171
+
172
+ ## Seccion \`site\`
173
+
174
+ Claves principales:
175
+
176
+ - \`name\`: titulo del proyecto en UI
177
+ - \`defaultLanguage\`: idioma por defecto
178
+ - \`supportedLanguages\`: lista de idiomas disponibles
179
+ - \`HideThemeSelector\`: ocultar/mostrar selector de tema
180
+ - \`ThemeDefault\`: id del tema inicial
181
+ - \`ThemeModeDefault\`: modo inicial (\`light\` o \`dark\`)
182
+ - \`ProjectLink\`: URL de repositorio para acciones de cabecera
183
+ - \`docsVersion\`: version seleccionada por defecto
184
+ - \`ActiveNavigation\`: habilita anterior/siguiente
185
+ - \`FocusMode\`: habilita modo foco/lectura
186
+ - \`IconImageMenuHeaderImgWidth\`, \`IconImageMenuHeaderImgHeight\`: tamano del icono principal
187
+ - \`IconImageMenuHeaderLightImg\`, \`IconImageMenuHeaderDarkImg\`: icono principal (light/dark)
188
+ - \`IconProjectLinkImgWidth\`, \`IconProjectLinkImgHeight\`: tamano del icono enlace del proyecto
189
+ - \`IconProjectLinkLightImg\`, \`IconProjectLinkDarkImg\`: icono enlace del proyecto
190
+ - \`IconVersionLinksImgWidth\`, \`IconVersionLinksImgHeight\`: tamano del icono enlaces de version
191
+ - \`IconVersionLinksLightImg\`, \`IconVersionLinksDarkImg\`: icono enlaces de version
192
+ - \`IconInfoHeaderMenuImgWidth\`, \`IconInfoHeaderMenuImgHeight\`: tamano del icono info
193
+ - \`IconInfoHeaderMenuLightImg\`, \`IconInfoHeaderMenuDarkImg\`: icono info
194
+ - \`IconPreviewProjectLinkImgWidth\`, \`IconPreviewProjectLinkImgHeight\`: tamano del icono preview
195
+ - \`IconPreviewProjectLinkLightImg\`, \`IconPreviewProjectLinkDarkImg\`: icono preview
196
+ - \`layoutsConfigPath\`: fallback remoto de layouts
197
+ - \`rendering\`: URL canonica publicada
198
+
199
+ ## Seccion \`VersionControl\`
200
+
201
+ \`VersionControl.versions\` define:
202
+
203
+ - \`id\`: identificador de version
204
+ - \`path\`: ruta de config de version
205
+ - links opcionales (\`ProjectLink\`, \`branch\`, \`release\`, \`commit\`)
206
+ - metadatos opcionales del source viewer (\`source-viewer\`, \`source-viewer-path\`)
207
+
208
+ ## Navegacion y rutas
209
+
210
+ - \`routes\`: rutas markdown por idioma (legado)
211
+ - \`menus-header\`: menu jerarquico
212
+ - \`translations\`: etiquetas UI para not-found y navegacion
213
+
214
+ ## Autorizacion (config de version)
215
+
216
+ - \`auth\`: configuraciones globales de autorizacion para esa version
217
+ - \`auth.accessKeys\`: mapa de claves usado por \`authorization.accessKeyId\`
218
+ - \`auth.rolesStorageKey\`: clave de localStorage para bootstrap de roles
219
+ - \`auth.providers\`: adaptadores de proveedor (\`authjs\`, \`clerk\`, \`firebase\`, \`jwt\`)
220
+
221
+ ## Tipos de contenido (config de version)
222
+
223
+ Los configs de version soportan multiples tipos:
224
+
225
+ - \`routes-md\`: Rutas markdown con \`title\`, \`description\` (centrados via \`titlePosition\`, \`descriptionPosition\`)
226
+ - \`routes-source-viewer\`: Contenedores de codigo fuente con \`source-viewer: true\` y \`source-viewer-path\`
227
+ - \`routes-html\`: Rutas de paginas HTML por idioma
228
+ - \`routes-video\`: Config de video con \`video.videoType\` (youtube, vimeo, mp4, etc.) y \`video.pathVideo\`
229
+ - \`routes-audio\`: Config de audio con \`audio.audioType\` (youtube, mp3, etc.) y \`audio.pathAudio\`
230
+ - \`authorization\` (md/html/video): guardia de acceso por clave, roles y autenticacion externa
231
+ - \`menus-header-md\`, \`menus-header-source-viewer\`, \`menus-header-html\`, \`menus-header-video\`, \`menus-header-audio\`: menus por tipo
232
+ - \`hierarchyPage\`: orden de contenedores en la pagina \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4 }\`
233
+ - \`hierarchyMenu\`: orden de secciones del menu \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4 }\`
234
+
235
+ Cada ruta puede incluir \`title\`, \`description\` (por idioma), \`titleCss\`, \`titlePosition: "center"\`, \`descriptionPosition: "center"\`, \`titleIsVisible\`, \`descriptionIsVisible\`.
236
+
237
+ ## Variables por ruta (blockLink, container, url, browseAll)
238
+
239
+ Opciones por ruta en \`routes-md\`, \`routes-html\` y \`routes-video\`:
240
+
241
+ - **\`blockLink\`** (defecto: true) – Para HTML: si true, los enlaces abren en nueva pestaña (\`target="_blank"\`); si false, en el mismo contexto.
242
+ - **\`container\`** – \`"full"\` = altura automatica; numero (ej: \`500\`) = altura fija en px con overflow auto. Se aplica a md, html y video.
243
+ - **\`url\`** – Solo en \`routes-html\`: \`Record<LanguageCode, string>\` con URLs externas. Al definirse, el iframe usa \`src={url}\` en vez de HTML local via \`srcDoc\`. Las rutas con \`url\` no generan archivos HTML locales.
244
+ - **\`browseAll\`** (defecto: false) – Si true, el contenedor muestra botones Anterior/Siguiente para navegar entre todos los items de ese tipo.
245
+
246
+ ## Tipos de contenido: path vs url (HTML)
247
+
248
+ - **Markdown (\`routes-md\`)**: usa \`path\` apuntando a archivos \`.md\` locales.
249
+ - **HTML (\`routes-html\`)**: usa \`path\` para archivos HTML locales (sin extension .html en config) o \`url\` para URLs externas. Con \`url\`, el iframe carga la pagina externa; no se genera archivo local.
250
+ - **Video (\`routes-video\`)**: usa \`video.pathVideo\` y \`video.videoType\` (youtube, vimeo, mp4, etc.).
251
+
252
+ ## Variables de entorno
253
+
254
+ - \`GITPAGEDOCS_REPOSITORY_SEARCH\`: activa/desactiva busqueda remota en local
255
+ - \`GITHUB_ACTIONS\`: habilita comportamiento especifico de GitHub Pages
256
+ `,
257
+ deployment: `# Publicacion
258
+
259
+ Git Page Docs corre como app Next.js con dos objetivos: servidor local y GitHub Pages.
260
+
261
+ ## Publicacion local
262
+
263
+ Usa:
264
+
265
+ 1. \`npm run build\`
266
+ 2. \`npm start\`
267
+
268
+ Esto inicia runtime Node + Next.js usando \`gitpagedocs/\` local.
269
+
270
+ ## Publicacion en GitHub Pages
271
+
272
+ En build de GitHub Actions:
273
+
274
+ - \`GITHUB_ACTIONS=true\`
275
+ - el comportamiento de export estatico se habilita por configuracion
276
+ - la pagina inicial de busqueda de repositorios queda activa
277
+
278
+ ## Flujo de publish del paquete
279
+
280
+ Para publicar en npm:
281
+
282
+ - actualiza version en \`package.json\`
283
+ - ejecuta \`npm publish --access public\`
284
+ - valida autenticacion con \`npm whoami\`
285
+
286
+ Si \`build:prebuilt\` se omite en Windows, usa CI para generar artefactos prebuilt.
287
+ `,
288
+ architecture: `# Arquitectura
289
+
290
+ El proyecto esta organizado por fronteras de feature y responsabilidades de runtime.
291
+
292
+ ## Paquetes
293
+
294
+ - **frontend/** — visor Next.js (Feature-Sliced: app / widgets / features / entities / shared); export estatico.
295
+ - **cli/** — el bin publicado \`gitpagedocs\` (hexagonal) + \`cli/ai/\` (CLI de documentacion con IA).
296
+ - **tools/** — \`@gitpagedocs/tools\`: ai/ security/ crypto/ cache/ config/ logger/ errors/ filesystem/ documentation/ ports/.
297
+ - **mcp/** — \`@gitpagedocs/mcp\`: herramientas + recursos MCP que delegan a tools/.
298
+
299
+ ## Modulos principales (frontend)
300
+
301
+ - \`frontend/src/app/[[...repo]]/page.tsx\` — parser de rutas, generateStaticParams, seleccion de shell.
302
+ - \`frontend/src/entities/docs/api/load-docs-data.ts\` — config local/remota, version, parse markdown, layouts + temas.
303
+ - \`frontend/src/widgets/docs-shell/docs-shell.tsx\` — UI, estado idioma/version/tema, sync de URL, montaje del chat de IA.
304
+
305
+ ## Seguridad: credenciales de IA cifradas
306
+
307
+ La consola \`/ai\` y el panel de chat exigen una contrasena local que deriva (PBKDF2) una clave AES-256-GCM; las claves quedan cifradas en \`localStorage\` y solo se descifran durante la sesion (\`@gitpagedocs/tools/security\`).
308
+
309
+ ## Flujo de datos
310
+
311
+ 1. Llega la ruta (\`/owner/repo/v/x.y.z\` o equivalente local)
312
+ 2. Se resuelve config (local o remoto)
313
+ 3. Config de version sobreescribe rutas/menus base
314
+ 4. Markdown se carga y convierte a HTML
315
+ 5. Template de layout se resuelve y aplica en CSS vars
316
+ 6. Shell renderiza contenido y controles
317
+
318
+ ## Puntos de resiliencia
319
+
320
+ - fallback de carga para layouts/templates
321
+ - carga de markdown por idioma con fallback de error
322
+ - sincronizacion de idioma/version/tema via localStorage
323
+ `,
324
+ githubIssuesProjects: `# GitHub Issues y Projects
325
+
326
+ Aprende a usar GitHub Issues y Projects para gestionar tu trabajo.
327
+
328
+ ## Conceptos
329
+
330
+ - Issues para rastrear tareas y bugs
331
+ - Projects para visualizar y organizar el trabajo
332
+ - Flujos recomendados para equipos
333
+ `,
334
+ gitIntroduction: `# Introduccion a Git
335
+
336
+ Conceptos basicos de Git para principiantes.
337
+
338
+ ## Comandos esenciales
339
+
340
+ - \`git init\` - iniciar repositorio
341
+ - \`git add\` - preparar cambios
342
+ - \`git commit\` - registrar commit
343
+ - \`git push\` - enviar a remoto
344
+ `,
345
+ authorizedRoutes: `# Rutas autorizadas
346
+
347
+ Protege rutas por clave de acceso, roles requeridos y proveedores externos.
348
+
349
+ ## Ubicacion del config de version
350
+
351
+ Configura en:
352
+
353
+ - \`gitpagedocs/docs/versions/<version>/config.json\`
354
+
355
+ ## Seccion global auth
356
+
357
+ Usa \`auth\` en la raiz del config de version:
358
+
359
+ - \`accessKeys\`: mapa de ids de clave al secreto esperado
360
+ - \`rolesStorageKey\`: clave de localStorage para bootstrap de roles
361
+ - \`providers\`: lista de proveedores externos (\`authjs\`, \`clerk\`, \`firebase\`, \`jwt\`)
362
+
363
+ ## Autorizacion por ruta
364
+
365
+ Dentro de cada ruta (\`routes-md\`, \`routes-html\`, \`routes-video\`):
366
+
367
+ - \`authorization.accessKeyId\`
368
+ - \`authorization.requiredRoles\`
369
+ - \`authorization.requireExternalAuth\`
370
+ - \`authorization.allowedProviders\`
371
+
372
+ ## Fases
373
+
374
+ ### Fase A - Clave de acceso
375
+
376
+ Define \`authorization.accessKeyId\` y la clave correspondiente en \`auth.accessKeys\`.
377
+
378
+ ### Fase B - Roles
379
+
380
+ Define \`authorization.requiredRoles\` con uno o mas roles.
381
+
382
+ Los roles pueden venir de:
383
+
384
+ - query param \`?authRoles=admin,maintainer\`
385
+ - localStorage (\`rolesStorageKey\`)
386
+ - claims de proveedores externos
387
+
388
+ ### Fase C - Proveedores externos
389
+
390
+ Define \`authorization.requireExternalAuth=true\` y opcionalmente \`allowedProviders\`.
391
+
392
+ Adaptadores soportados:
393
+
394
+ - Auth.js (\`type: "authjs"\`)
395
+ - Clerk (\`type: "clerk"\`)
396
+ - Firebase Auth (\`type: "firebase"\`)
397
+ - JWT custom (\`type: "jwt"\`)
398
+ `,
399
+ themes: `# Temas y layouts
400
+
401
+ Los temas son templates JSON mapeados por \`layoutsConfig.json\`.
402
+
403
+ ## Archivos
404
+
405
+ - \`gitpagelayouts/layoutsConfig.json\`
406
+ - \`gitpagelayouts/layoutsFallbackConfig.json\`
407
+ - \`gitpagelayouts/templates/*.json\`
408
+
409
+ ## Modelo de template
410
+
411
+ Cada template normalmente incluye:
412
+
413
+ - \`id\`, \`name\`, \`author\`, \`version\`
414
+ - \`mode\` y metadatos de par dark/light
415
+ - \`colors\`
416
+ - \`typography\`
417
+ - tokens de \`components\`
418
+ - \`animations\`
419
+
420
+ ## Comportamiento en runtime
421
+
422
+ - tema activo viene de config/seleccion de usuario
423
+ - toggle light/dark resuelve tema pareado por referencia
424
+ - variables CSS se generan desde tokens del template
425
+
426
+ ## Buenas practicas
427
+
428
+ - mantener contraste accesible
429
+ - mantener escala consistente de espacios y bordes
430
+ - ofrecer variantes dark y light cuando sea posible
431
+ `,
432
+ faq: `# FAQ
433
+
434
+ ## Por que repositorios remotos no abren en local?
435
+
436
+ Verifica:
437
+
438
+ - \`GITPAGEDOCS_REPOSITORY_SEARCH=true\` en \`.env\`
439
+ - repositorio objetivo contiene \`gitpagedocs/config.json\`
440
+ - paths markdown del repositorio coinciden con su config de rutas
441
+
442
+ ## Por que una ruta de version muestra contenido incorrecto?
443
+
444
+ Verifica:
445
+
446
+ - \`VersionControl.versions[*].path\` en \`gitpagedocs/config.json\`
447
+ - config de version tiene \`routes\` y \`menus-header\` validos
448
+ - markdown existe para cada idioma
449
+
450
+ ## Por que tema no se aplica correctamente?
451
+
452
+ Verifica:
453
+
454
+ - \`layoutsConfig.json\` referencia templates validos
455
+ - ids de template son unicos
456
+ - tema seleccionado existe en el mapa de temas cargados
457
+
458
+ ## Por que GitHub Pages puede comportarse distinto a local?
459
+
460
+ Porque el build de GitHub Pages habilita la pagina inicial de busqueda y comportamiento especifico de exportacion.
461
+ `,
462
+ };