@gitpagedocs/cli 1.1.44

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