@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.
- package/README.md +193 -193
- package/ai/application/ai-command.ts +24 -24
- package/ai/application/ai-provider-factory.ts +22 -22
- package/ai/application/docs-pattern.ts +68 -68
- package/ai/application/run-ai-cli-command.ts +167 -167
- package/ai/config.ts +50 -50
- package/ai/core/models/ai-cli-config.ts +33 -33
- package/ai/core/models/parse-ai-cli-config.ts +78 -78
- package/ai/core/ports/illm-provider.ts +32 -32
- package/ai/infrastructure/ai-config-file.ts +101 -101
- package/ai/infrastructure/file-system-adapter.ts +85 -85
- package/ai/infrastructure/llm/tools-llm-provider.ts +54 -54
- package/ai/infrastructure/version-docs-writer.ts +143 -143
- package/ai/presentation/ai-prompts.ts +239 -239
- package/application/ports/cli-runtime-ports.ts +91 -91
- package/application/report/config-only-reporter.mjs +64 -64
- package/application/use-cases/dispatch-mode.ts +18 -18
- package/builders/config-orchestrator.mjs +34 -34
- package/builders/project-links.mjs +50 -50
- package/builders/root-config-builder.mjs +61 -61
- package/builders/route-builders.mjs +136 -136
- package/builders/theme-template.mjs +76 -76
- package/builders/version-config-builder.mjs +186 -186
- package/content/docs-en.mjs +549 -549
- package/content/docs-es.mjs +462 -462
- package/content/docs-pt.mjs +462 -462
- package/contracts/doc-versions.mjs +3 -3
- package/data/default-site-config.mjs +321 -321
- package/data/i18n-langmenu.mjs +347 -347
- package/data/layouts.mjs +436 -436
- package/data/path-mappings.mjs +26 -26
- package/data/route-metas.mjs +93 -93
- package/data/theme-colors.mjs +443 -443
- package/data/urls.mjs +12 -12
- package/domain/models/cli-options.ts +33 -33
- package/home/constants.mjs +4 -4
- package/index.mjs +37 -37
- package/infrastructure/gitpagedocs-config-file.ts +47 -47
- package/infrastructure/home/runtime.mjs +37 -37
- package/package.json +3 -3
- package/presentation/commands/ai-info.ts +57 -57
- package/presentation/commands/config-clear.ts +23 -23
- package/presentation/commands/config-info.ts +24 -24
- package/presentation/commands/diagnostics.ts +164 -164
- package/presentation/commands/docs.ts +37 -37
- package/presentation/commands/mcp.ts +20 -20
- package/presentation/commands/pages.ts +101 -101
- package/presentation/commands/password.ts +62 -62
- package/presentation/commands/run-command.ts +70 -70
- package/presentation/index.ts +124 -124
- package/presentation/options/parser.ts +119 -119
- package/presentation/options/resolver.ts +46 -46
- package/presentation/ui/clack.ts +91 -91
- package/presentation/ui/prompts.ts +146 -146
- package/runtime/git-ops.mjs +110 -110
- package/runtime/output.mjs +159 -159
- package/runtime/workflow.mjs +129 -129
- package/start.mjs +12 -12
- package/ui/logger.mjs +9 -9
package/content/docs-es.mjs
CHANGED
|
@@ -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
|
+
};
|