@gitpagedocs/cli 1.1.62 → 1.1.64
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-pt.mjs
CHANGED
|
@@ -1,462 +1,462 @@
|
|
|
1
|
-
export const docsPt = {
|
|
2
|
-
index: `# Git Page Docs
|
|
3
|
-
|
|
4
|
-
Git Page Docs e um runtime de documentacao multi-idioma para repositorios que possuem a pasta \`gitpagedocs/\`.
|
|
5
|
-
|
|
6
|
-
## O que este projeto entrega
|
|
7
|
-
|
|
8
|
-
- Renderizacao markdown em varios idiomas (\`en\`, \`pt\`, \`es\`)
|
|
9
|
-
- Roteamento por versao (\`/v/:versao\`)
|
|
10
|
-
- Sistema de temas por templates JSON
|
|
11
|
-
- Execucao local e em GitHub Pages
|
|
12
|
-
- Busca de repositorio + renderizacao remota opcional
|
|
13
|
-
|
|
14
|
-
## Contrato de pastas
|
|
15
|
-
|
|
16
|
-
O runtime espera esta estrutura:
|
|
17
|
-
|
|
18
|
-
- \`gitpagedocs/config.json\`
|
|
19
|
-
- \`gitpagedocs/docs/<lang>/*.md\`
|
|
20
|
-
- \`gitpagedocs/docs/versions/<versao>/config.json\`
|
|
21
|
-
- \`gitpagedocs/docs/versions/<versao>/<lang>/*.md\`
|
|
22
|
-
- \`gitpagelayouts/layoutsConfig.json\`
|
|
23
|
-
- \`gitpagelayouts/templates/*.json\`
|
|
24
|
-
|
|
25
|
-
## Navegacao rapida
|
|
26
|
-
|
|
27
|
-
- Abra **Primeiros passos** para setup local.
|
|
28
|
-
- Abra **Configuracao** para detalhes completos do \`config.json\`.
|
|
29
|
-
- Abra **Publicacao** para comportamento local/producao/GitHub Pages.
|
|
30
|
-
- Abra **Arquitetura** para mapa de codigo e fluxo de dados.
|
|
31
|
-
- Abra **Temas e layouts** para autoria de templates.
|
|
32
|
-
- Abra **Rotas autorizadas** para configurar chave, papeis e autenticacao externa.
|
|
33
|
-
- Abra **FAQ** para troubleshooting.
|
|
34
|
-
`,
|
|
35
|
-
gettingStarted: `# Primeiros passos
|
|
36
|
-
|
|
37
|
-
Este guia leva o projeto do zero ate docs rodando.
|
|
38
|
-
|
|
39
|
-
## Pre-requisitos
|
|
40
|
-
|
|
41
|
-
- Node.js 20+
|
|
42
|
-
- npm 10+ (ou pnpm)
|
|
43
|
-
|
|
44
|
-
## Setup local
|
|
45
|
-
|
|
46
|
-
1. Instale dependencias:
|
|
47
|
-
- \`npm install\`
|
|
48
|
-
2. Gere/atualize os artefatos de docs:
|
|
49
|
-
- \`npm run gitpagedocs\`
|
|
50
|
-
3. Inicie o desenvolvimento:
|
|
51
|
-
- \`npm run dev\`
|
|
52
|
-
4. Build e execucao local de producao:
|
|
53
|
-
- \`npm run build\`
|
|
54
|
-
- \`npm start\`
|
|
55
|
-
|
|
56
|
-
## Comportamento da CLI
|
|
57
|
-
|
|
58
|
-
\`npx @gitpagedocs/cli\` (ou \`npm run gitpagedocs\`) gera os artefatos na pasta oficial \`gitpagedocs/\`.
|
|
59
|
-
|
|
60
|
-
- Gera somente markdown/json
|
|
61
|
-
- Nao gera \`index.html\`
|
|
62
|
-
- Nao gera \`index.js\`
|
|
63
|
-
- Nao executa comandos de instalacao
|
|
64
|
-
|
|
65
|
-
## Modo de busca por repositorio
|
|
66
|
-
|
|
67
|
-
No ambiente local, o controle e por variavel:
|
|
68
|
-
|
|
69
|
-
- \`GITPAGEDOCS_REPOSITORY_SEARCH=true\`
|
|
70
|
-
- \`GITPAGEDOCS_REPOSITORY_SEARCH=false\`
|
|
71
|
-
|
|
72
|
-
Em build de GitHub Pages (\`GITHUB_ACTIONS=true\`), a busca de repositorio fica sempre ativa.
|
|
73
|
-
`,
|
|
74
|
-
projectOverview: `# Visao geral do projeto
|
|
75
|
-
|
|
76
|
-
Git Page Docs e um monorepo pnpm + turborepo que transforma a pasta \`gitpagedocs/\` de um repositorio em um site de documentacao multilinguagem e versionado — com assistente de IA integrado e um servidor MCP (Model Context Protocol).
|
|
77
|
-
|
|
78
|
-
## Pacotes do monorepo
|
|
79
|
-
|
|
80
|
-
- **frontend/** — visualizador Next.js 15 (App Router, React 19), exportado estaticamente para o GitHub Pages.
|
|
81
|
-
- **cli/** — o pacote npm publicado \`@gitpagedocs/cli\` (\`npm install -g @gitpagedocs/cli\`): gera a estrutura de docs, documenta com IA, configura o Pages e roda o servidor MCP.
|
|
82
|
-
- **tools/** — \`@gitpagedocs/tools\`, o nucleo de logica compartilhado: sistema de IA com 14 provedores, cofre de credenciais criptografado, loader de config, caches e logger.
|
|
83
|
-
- **mcp/** — \`@gitpagedocs/mcp\`, servidor Model Context Protocol (20 ferramentas + 7 recursos).
|
|
84
|
-
- **gitpagedocs/** — o contrato do usuario: \`config.json\`, docs versionados e layouts.
|
|
85
|
-
|
|
86
|
-
## Stack
|
|
87
|
-
|
|
88
|
-
- Next.js 15 (App Router) + React 19 + TypeScript; exportacao estatica para GitHub Pages
|
|
89
|
-
- gray-matter + marked para Markdown; react-icons
|
|
90
|
-
- pnpm workspaces + turborepo; Vitest + Playwright; ESLint
|
|
91
|
-
|
|
92
|
-
## Destaques
|
|
93
|
-
|
|
94
|
-
- Multilinguagem (\`en\`, \`pt\`, \`es\`) e rotas por versao (\`/v/:version\`)
|
|
95
|
-
- Sistema de IA com 14 provedores (OpenAI, Anthropic, Gemini, Ollama, Mistral, DeepSeek, Cohere, Groq, xAI e mais) com streaming
|
|
96
|
-
- Chaves de IA **criptografadas em repouso** (AES-256-GCM) atras de uma senha local — nunca em texto puro
|
|
97
|
-
- **Drawer de chat de IA** nos docs + um **console \`/ai\`** dedicado
|
|
98
|
-
- Sistema de 36 temas; execucao local e no GitHub Pages
|
|
99
|
-
`,
|
|
100
|
-
functionalities: `# Funcionalidades
|
|
101
|
-
|
|
102
|
-
Referencia completa de opcoes da CLI, chaves de configuracao e recursos do runtime.
|
|
103
|
-
|
|
104
|
-
## Comandos da CLI
|
|
105
|
-
|
|
106
|
-
| Comando | Descricao |
|
|
107
|
-
|---------|------------|
|
|
108
|
-
| \`npx @gitpagedocs/cli\` | Gera config e docs em \`gitpagedocs/\` |
|
|
109
|
-
| \`npx @gitpagedocs/cli --layoutconfig\` | Tambem gera layouts/templates locais em \`gitpagelayouts/\` |
|
|
110
|
-
| \`npx @gitpagedocs/cli --home\` | Distribuicao standalone (\`gitpagedocshome/\`) |
|
|
111
|
-
| \`npx @gitpagedocs/cli --push --owner X --repo Y\` | Configura workflow, commit, push |
|
|
112
|
-
| \`npx @gitpagedocs/cli --interactive\` / \`-i\` | Modo interativo com prompts (padrao em um terminal) |
|
|
113
|
-
| \`npx @gitpagedocs/cli --no-interactive\` / \`-y\` | Nunca pergunta; usa flags e padroes |
|
|
114
|
-
|
|
115
|
-
## Opcoes da CLI
|
|
116
|
-
|
|
117
|
-
| Opcao | Descricao |
|
|
118
|
-
|-------|-----------|
|
|
119
|
-
| \`--owner <user>\` | Owner do GitHub |
|
|
120
|
-
| \`--repo <repo>\` | Repositorio GitHub |
|
|
121
|
-
| \`--path <subpath>\` | Subcaminho dos docs (ex: \`docs\`); sem ele, base path = nome do repo para CSS/JS em project sites |
|
|
122
|
-
| \`--output <dir>\` | Diretorio de saida (padrao: \`gitpagedocs\`) |
|
|
123
|
-
| \`--search true|false\` | Habilita/desabilita busca de repositorio (\`--home\`) |
|
|
124
|
-
| \`--layoutconfig\` | Gera layouts locais em \`gitpagelayouts/\` |
|
|
125
|
-
| \`--layouts-dir <dir>\` | Pasta dos layouts locais (padrao: \`gitpagelayouts\`) |
|
|
126
|
-
| \`--push\` | Cria workflow, commit de artefatos, push |
|
|
127
|
-
| \`--home\` | Gera \`gitpagedocshome/\` (estatico + .env + Dockerfile) |
|
|
128
|
-
|
|
129
|
-
## Saida gerada
|
|
130
|
-
|
|
131
|
-
- \`gitpagedocs/config.json\` – config raiz
|
|
132
|
-
- \`gitpagedocs/icon.svg\` – icone padrao
|
|
133
|
-
- \`gitpagedocs/docs/versions/<ver>/config.json\` – rotas por versao
|
|
134
|
-
- \`gitpagedocs/docs/versions/<ver>/{en,pt,es}/*.md\` – docs em markdown
|
|
135
|
-
- \`gitpagelayouts/\` – apenas com \`--layoutconfig\` (pasta configuravel com \`--layouts-dir\`)
|
|
136
|
-
|
|
137
|
-
## Tipos de conteudo
|
|
138
|
-
|
|
139
|
-
| Tipo | Chave config | Descricao |
|
|
140
|
-
|------|--------------|-----------|
|
|
141
|
-
| Markdown | \`routes-md\` | Arquivos .md com \`path\` por idioma |
|
|
142
|
-
| HTML | \`routes-html\` | \`path\` local ou \`url\` externa |
|
|
143
|
-
| Video | \`routes-video\` | \`video.pathVideo\`, \`video.videoType\` |
|
|
144
|
-
| Audio | \`routes-audio\` | \`audio.pathAudio\`, \`audio.audioType\` |
|
|
145
|
-
|
|
146
|
-
## Visualizador de codigo fonte
|
|
147
|
-
|
|
148
|
-
O config da versao pode renderizar um container **Codigo fonte** via \`routes-source-viewer\` e \`menus-header-source-viewer\`. O viewer le a arvore do repositorio no GitHub em tempo de execucao e aplica o tema atual da documentacao.
|
|
149
|
-
|
|
150
|
-
- Arvore do repositorio a partir de \`source-viewer-path\`; a branch padrao e \`main\`
|
|
151
|
-
- Navegacao por pastas e filtro de arquivos
|
|
152
|
-
- Listagem de diretorios no estilo GitHub
|
|
153
|
-
- Renderizacao de codigo com numeros de linha
|
|
154
|
-
- Alternancia preview/codigo para Markdown, incluindo \`README.md\`
|
|
155
|
-
- Pastas recolhiveis na lateral
|
|
156
|
-
|
|
157
|
-
## Chaves de config (site)
|
|
158
|
-
|
|
159
|
-
- \`name\`, \`defaultLanguage\`, \`supportedLanguages\`
|
|
160
|
-
- \`docsVersion\`, \`rendering\`, \`ThemeDefault\`, \`ThemeModeDefault\`
|
|
161
|
-
- \`ProjectLink\`, \`layoutsConfigPathOficial\`, \`layoutsConfigPath\`
|
|
162
|
-
|
|
163
|
-
## Variaveis de ambiente
|
|
164
|
-
|
|
165
|
-
- \`GITPAGEDOCS_REPOSITORY_SEARCH\` – busca de repositorio (local)
|
|
166
|
-
- \`GITHUB_ACTIONS\` – modo build GitHub Pages
|
|
167
|
-
`,
|
|
168
|
-
configuration: `# Configuracao
|
|
169
|
-
|
|
170
|
-
A configuracao de runtime fica em \`gitpagedocs/config.json\`.
|
|
171
|
-
|
|
172
|
-
## Secao \`site\`
|
|
173
|
-
|
|
174
|
-
Principais chaves:
|
|
175
|
-
|
|
176
|
-
- \`name\`: titulo do projeto no UI
|
|
177
|
-
- \`defaultLanguage\`: idioma padrao
|
|
178
|
-
- \`supportedLanguages\`: lista de idiomas disponiveis
|
|
179
|
-
- \`HideThemeSelector\`: esconde/mostra seletor de tema
|
|
180
|
-
- \`ThemeDefault\`: id do tema inicial
|
|
181
|
-
- \`ThemeModeDefault\`: modo inicial (\`light\` ou \`dark\`)
|
|
182
|
-
- \`ProjectLink\`: URL de repositorio para acoes no cabecalho
|
|
183
|
-
- \`docsVersion\`: versao inicial selecionada
|
|
184
|
-
- \`ActiveNavigation\`: habilita comportamento de anterior/proximo
|
|
185
|
-
- \`FocusMode\`: habilita modo foco/leitura
|
|
186
|
-
- \`IconImageMenuHeaderImgWidth\`, \`IconImageMenuHeaderImgHeight\`: tamanho do icone principal
|
|
187
|
-
- \`IconImageMenuHeaderLightImg\`, \`IconImageMenuHeaderDarkImg\`: icone principal (light/dark)
|
|
188
|
-
- \`IconProjectLinkImgWidth\`, \`IconProjectLinkImgHeight\`: tamanho do icone link do projeto
|
|
189
|
-
- \`IconProjectLinkLightImg\`, \`IconProjectLinkDarkImg\`: icone link do projeto
|
|
190
|
-
- \`IconVersionLinksImgWidth\`, \`IconVersionLinksImgHeight\`: tamanho do icone links de versao
|
|
191
|
-
- \`IconVersionLinksLightImg\`, \`IconVersionLinksDarkImg\`: icone links de versao
|
|
192
|
-
- \`IconInfoHeaderMenuImgWidth\`, \`IconInfoHeaderMenuImgHeight\`: tamanho do icone info
|
|
193
|
-
- \`IconInfoHeaderMenuLightImg\`, \`IconInfoHeaderMenuDarkImg\`: icone info
|
|
194
|
-
- \`IconPreviewProjectLinkImgWidth\`, \`IconPreviewProjectLinkImgHeight\`: tamanho do icone preview
|
|
195
|
-
- \`IconPreviewProjectLinkLightImg\`, \`IconPreviewProjectLinkDarkImg\`: icone preview
|
|
196
|
-
- \`layoutsConfigPath\`: fallback remoto para layouts
|
|
197
|
-
- \`rendering\`: URL canonica publicada
|
|
198
|
-
|
|
199
|
-
## Secao \`VersionControl\`
|
|
200
|
-
|
|
201
|
-
\`VersionControl.versions\` define:
|
|
202
|
-
|
|
203
|
-
- \`id\`: identificador da versao
|
|
204
|
-
- \`path\`: caminho do config da versao
|
|
205
|
-
- links opcionais (\`ProjectLink\`, \`branch\`, \`release\`, \`commit\`)
|
|
206
|
-
- metadados opcionais do source viewer (\`source-viewer\`, \`source-viewer-path\`)
|
|
207
|
-
|
|
208
|
-
## Navegacao e rotas
|
|
209
|
-
|
|
210
|
-
- \`routes\`: caminhos markdown por idioma (legado)
|
|
211
|
-
- \`menus-header\`: menu hierarquico
|
|
212
|
-
- \`translations\`: labels de UI para not-found e navegacao
|
|
213
|
-
|
|
214
|
-
## Autorizacao (config de versao)
|
|
215
|
-
|
|
216
|
-
- \`auth\`: configuracoes globais de autorizacao para a versao
|
|
217
|
-
- \`auth.accessKeys\`: mapa de chaves usado por \`authorization.accessKeyId\`
|
|
218
|
-
- \`auth.rolesStorageKey\`: chave de localStorage para bootstrap de papeis
|
|
219
|
-
- \`auth.providers\`: adaptadores de provedor (\`authjs\`, \`clerk\`, \`firebase\`, \`jwt\`)
|
|
220
|
-
|
|
221
|
-
## Tipos de conteudo (config de versao)
|
|
222
|
-
|
|
223
|
-
Configs de versao suportam multiplos tipos:
|
|
224
|
-
|
|
225
|
-
- \`routes-md\`: Rotas markdown com \`title\`, \`description\` (centralizados via \`titlePosition\`, \`descriptionPosition\`)
|
|
226
|
-
- \`routes-source-viewer\`: Containers de codigo fonte com \`source-viewer: true\` e \`source-viewer-path\`
|
|
227
|
-
- \`routes-html\`: Caminhos de paginas HTML por idioma
|
|
228
|
-
- \`routes-video\`: Config de video com \`video.videoType\` (youtube, vimeo, mp4, etc.) e \`video.pathVideo\`
|
|
229
|
-
- \`routes-audio\`: Config de audio com \`audio.audioType\` (youtube, mp3, etc.) e \`audio.pathAudio\`
|
|
230
|
-
- \`authorization\` (md/html/video): guarda de acesso por chave, papeis e autenticacao externa
|
|
231
|
-
- \`menus-header-md\`, \`menus-header-source-viewer\`, \`menus-header-html\`, \`menus-header-video\`, \`menus-header-audio\`: menus por tipo
|
|
232
|
-
- \`hierarchyPage\`: ordem dos containers na pagina \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4 }\`
|
|
233
|
-
- \`hierarchyMenu\`: ordem das secoes do menu \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4 }\`
|
|
234
|
-
|
|
235
|
-
Cada rota pode incluir \`title\`, \`description\` (por idioma), \`titleCss\`, \`titlePosition: "center"\`, \`descriptionPosition: "center"\`, \`titleIsVisible\`, \`descriptionIsVisible\`.
|
|
236
|
-
|
|
237
|
-
## Variaveis por rota (blockLink, container, url, browseAll)
|
|
238
|
-
|
|
239
|
-
Opcoes por rota em \`routes-md\`, \`routes-html\` e \`routes-video\`:
|
|
240
|
-
|
|
241
|
-
- **\`blockLink\`** (padrao: true) – Para HTML: se true, links abrem em nova aba (\`target="_blank"\`); se false, no proprio contexto.
|
|
242
|
-
- **\`container\`** – \`"full"\` = altura automatica; numero (ex: \`500\`) = altura fixa em px com overflow auto. Aplica-se a md, html e video.
|
|
243
|
-
- **\`url\`** – Apenas em \`routes-html\`: \`Record<LanguageCode, string>\` com URLs externas. Quando definido, o iframe usa \`src={url}\` em vez de HTML local via \`srcDoc\`. Rotas com \`url\` nao geram arquivos HTML locais.
|
|
244
|
-
- **\`browseAll\`** (padrao: false) – Se true, o container mostra botoes Anterior/Proximo para navegar entre todos os itens daquele tipo.
|
|
245
|
-
|
|
246
|
-
## Tipos de conteudo: path vs url (HTML)
|
|
247
|
-
|
|
248
|
-
- **Markdown (\`routes-md\`)**: usa \`path\` apontando para arquivos \`.md\` locais.
|
|
249
|
-
- **HTML (\`routes-html\`)**: usa \`path\` para arquivos HTML locais (sem extensao .html no config) ou \`url\` para URLs externas. Com \`url\`, o iframe carrega a pagina externa; nenhum arquivo local e gerado.
|
|
250
|
-
- **Video (\`routes-video\`)**: usa \`video.pathVideo\` e \`video.videoType\` (youtube, vimeo, mp4, etc.).
|
|
251
|
-
|
|
252
|
-
## Variaveis de ambiente
|
|
253
|
-
|
|
254
|
-
- \`GITPAGEDOCS_REPOSITORY_SEARCH\`: ativa/desativa busca remota localmente
|
|
255
|
-
- \`GITHUB_ACTIONS\`: ativa comportamento especifico de GitHub Pages
|
|
256
|
-
`,
|
|
257
|
-
deployment: `# Publicacao
|
|
258
|
-
|
|
259
|
-
Git Page Docs roda como app Next.js com dois alvos: servidor local e GitHub Pages.
|
|
260
|
-
|
|
261
|
-
## Publicacao local
|
|
262
|
-
|
|
263
|
-
Use:
|
|
264
|
-
|
|
265
|
-
1. \`npm run build\`
|
|
266
|
-
2. \`npm start\`
|
|
267
|
-
|
|
268
|
-
Isso sobe runtime Node + Next.js usando a pasta local \`gitpagedocs/\`.
|
|
269
|
-
|
|
270
|
-
## Publicacao em GitHub Pages
|
|
271
|
-
|
|
272
|
-
Em build de GitHub Actions:
|
|
273
|
-
|
|
274
|
-
- \`GITHUB_ACTIONS=true\`
|
|
275
|
-
- comportamento de export estatico e habilitado pela configuracao
|
|
276
|
-
- pagina inicial de busca de repositorio fica ativa
|
|
277
|
-
|
|
278
|
-
## Fluxo de publish do pacote
|
|
279
|
-
|
|
280
|
-
Para publicar no npm:
|
|
281
|
-
|
|
282
|
-
- atualize versao no \`package.json\`
|
|
283
|
-
- execute \`npm publish --access public\`
|
|
284
|
-
- valide autenticacao com \`npm whoami\`
|
|
285
|
-
|
|
286
|
-
Se \`build:prebuilt\` for pulado no Windows, use CI para gerar artefatos prebuilt.
|
|
287
|
-
`,
|
|
288
|
-
architecture: `# Arquitetura
|
|
289
|
-
|
|
290
|
-
O projeto e organizado por fronteiras de feature e responsabilidades do runtime.
|
|
291
|
-
|
|
292
|
-
## Pacotes
|
|
293
|
-
|
|
294
|
-
- **frontend/** — visualizador Next.js (Feature-Sliced: app / widgets / features / entities / shared); export estatico.
|
|
295
|
-
- **cli/** — o bin publicado \`gitpagedocs\` (hexagonal) + \`cli/ai/\` (CLI de documentacao com IA).
|
|
296
|
-
- **tools/** — \`@gitpagedocs/tools\`: ai/ security/ crypto/ cache/ config/ logger/ errors/ filesystem/ documentation/ ports/.
|
|
297
|
-
- **mcp/** — \`@gitpagedocs/mcp\`: ferramentas + recursos MCP que delegam ao tools/.
|
|
298
|
-
|
|
299
|
-
## Modulos principais (frontend)
|
|
300
|
-
|
|
301
|
-
- \`frontend/src/app/[[...repo]]/page.tsx\` — parser de rota, generateStaticParams, selecao de shell.
|
|
302
|
-
- \`frontend/src/entities/docs/api/load-docs-data.ts\` — config local/remota, versao, parse markdown, layouts + temas.
|
|
303
|
-
- \`frontend/src/widgets/docs-shell/docs-shell.tsx\` — UI, estado idioma/versao/tema, sync de URL, montagem do chat de IA.
|
|
304
|
-
|
|
305
|
-
## Seguranca: credenciais de IA criptografadas
|
|
306
|
-
|
|
307
|
-
O console \`/ai\` e o chat drawer exigem uma senha local que deriva (PBKDF2) uma chave AES-256-GCM; as chaves ficam criptografadas no \`localStorage\` e so sao descriptografadas durante a sessao (\`@gitpagedocs/tools/security\`).
|
|
308
|
-
|
|
309
|
-
## Fluxo de dados
|
|
310
|
-
|
|
311
|
-
1. A rota chega (\`/owner/repo/v/x.y.z\` ou equivalente local)
|
|
312
|
-
2. O config e resolvido (local ou remoto)
|
|
313
|
-
3. Config de versao sobrescreve rotas/menus base
|
|
314
|
-
4. Markdown e carregado e convertido para HTML
|
|
315
|
-
5. Template de layout e resolvido e aplicado em CSS vars
|
|
316
|
-
6. Shell renderiza conteudo e controles
|
|
317
|
-
|
|
318
|
-
## Pontos de resiliencia
|
|
319
|
-
|
|
320
|
-
- fallback de carga para layouts/templates
|
|
321
|
-
- carregamento de markdown por idioma com fallback de erro
|
|
322
|
-
- sincronizacao de linguagem/versao/tema via localStorage
|
|
323
|
-
`,
|
|
324
|
-
githubIssuesProjects: `# GitHub Issues e Projects
|
|
325
|
-
|
|
326
|
-
Aprenda a usar GitHub Issues e Projects para gerenciar seu trabalho.
|
|
327
|
-
|
|
328
|
-
## Conceitos
|
|
329
|
-
|
|
330
|
-
- Issues para rastrear tarefas e bugs
|
|
331
|
-
- Projects para visualizar e organizar o trabalho
|
|
332
|
-
- Workflows recomendados para equipes
|
|
333
|
-
`,
|
|
334
|
-
gitIntroduction: `# Introducao ao Git
|
|
335
|
-
|
|
336
|
-
Conceitos basicos de Git para iniciantes.
|
|
337
|
-
|
|
338
|
-
## Comandos essenciais
|
|
339
|
-
|
|
340
|
-
- \`git init\` - iniciar repositorio
|
|
341
|
-
- \`git add\` - preparar alteracoes
|
|
342
|
-
- \`git commit\` - registrar commit
|
|
343
|
-
- \`git push\` - enviar para remoto
|
|
344
|
-
`,
|
|
345
|
-
authorizedRoutes: `# Rotas autorizadas
|
|
346
|
-
|
|
347
|
-
Proteja rotas por chave de acesso, papeis obrigatorios e provedores externos.
|
|
348
|
-
|
|
349
|
-
## Local do config de versao
|
|
350
|
-
|
|
351
|
-
Configure em:
|
|
352
|
-
|
|
353
|
-
- \`gitpagedocs/docs/versions/<versao>/config.json\`
|
|
354
|
-
|
|
355
|
-
## Secao global auth
|
|
356
|
-
|
|
357
|
-
Use \`auth\` no topo do config de versao:
|
|
358
|
-
|
|
359
|
-
- \`accessKeys\`: mapa de ids de chave para segredo esperado
|
|
360
|
-
- \`rolesStorageKey\`: chave de localStorage para bootstrap de papeis
|
|
361
|
-
- \`providers\`: lista de provedores externos (\`authjs\`, \`clerk\`, \`firebase\`, \`jwt\`)
|
|
362
|
-
|
|
363
|
-
## Autorizacao por rota
|
|
364
|
-
|
|
365
|
-
Dentro de cada rota (\`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 - Chave de acesso
|
|
375
|
-
|
|
376
|
-
Defina \`authorization.accessKeyId\` e a chave correspondente em \`auth.accessKeys\`.
|
|
377
|
-
|
|
378
|
-
### Fase B - Papeis
|
|
379
|
-
|
|
380
|
-
Defina \`authorization.requiredRoles\` com um ou mais papeis.
|
|
381
|
-
|
|
382
|
-
Os papeis podem vir de:
|
|
383
|
-
|
|
384
|
-
- query param \`?authRoles=admin,maintainer\`
|
|
385
|
-
- localStorage (\`rolesStorageKey\`)
|
|
386
|
-
- claims de provedores externos
|
|
387
|
-
|
|
388
|
-
### Fase C - Provedores externos
|
|
389
|
-
|
|
390
|
-
Defina \`authorization.requireExternalAuth=true\` e opcionalmente \`allowedProviders\`.
|
|
391
|
-
|
|
392
|
-
Adaptadores suportados:
|
|
393
|
-
|
|
394
|
-
- Auth.js (\`type: "authjs"\`)
|
|
395
|
-
- Clerk (\`type: "clerk"\`)
|
|
396
|
-
- Firebase Auth (\`type: "firebase"\`)
|
|
397
|
-
- JWT custom (\`type: "jwt"\`)
|
|
398
|
-
`,
|
|
399
|
-
themes: `# Temas e layouts
|
|
400
|
-
|
|
401
|
-
Temas sao templates JSON mapeados por \`layoutsConfig.json\`.
|
|
402
|
-
|
|
403
|
-
## Arquivos
|
|
404
|
-
|
|
405
|
-
- \`gitpagelayouts/layoutsConfig.json\`
|
|
406
|
-
- \`gitpagelayouts/layoutsFallbackConfig.json\`
|
|
407
|
-
- \`gitpagelayouts/templates/*.json\`
|
|
408
|
-
|
|
409
|
-
## Modelo de template
|
|
410
|
-
|
|
411
|
-
Cada template normalmente contem:
|
|
412
|
-
|
|
413
|
-
- \`id\`, \`name\`, \`author\`, \`version\`
|
|
414
|
-
- \`mode\` e metadados de par dark/light
|
|
415
|
-
- \`colors\`
|
|
416
|
-
- \`typography\`
|
|
417
|
-
- tokens de \`components\`
|
|
418
|
-
- \`animations\`
|
|
419
|
-
|
|
420
|
-
## Comportamento em runtime
|
|
421
|
-
|
|
422
|
-
- tema ativo vem de config/usuario
|
|
423
|
-
- toggle light/dark resolve o tema pareado por referencia
|
|
424
|
-
- variaveis CSS sao geradas dos tokens do template
|
|
425
|
-
|
|
426
|
-
## Boas praticas
|
|
427
|
-
|
|
428
|
-
- mantenha contraste acessivel
|
|
429
|
-
- padronize escala de espaco e borda
|
|
430
|
-
- ofereca variantes dark e light quando possivel
|
|
431
|
-
`,
|
|
432
|
-
faq: `# FAQ
|
|
433
|
-
|
|
434
|
-
## Por que repositorios remotos nao abrem localmente?
|
|
435
|
-
|
|
436
|
-
Verifique:
|
|
437
|
-
|
|
438
|
-
- \`GITPAGEDOCS_REPOSITORY_SEARCH=true\` no \`.env\`
|
|
439
|
-
- repositorio alvo contem \`gitpagedocs/config.json\`
|
|
440
|
-
- paths markdown do repositorio batem com seu config de rotas
|
|
441
|
-
|
|
442
|
-
## Por que rota de versao mostra conteudo errado?
|
|
443
|
-
|
|
444
|
-
Verifique:
|
|
445
|
-
|
|
446
|
-
- \`VersionControl.versions[*].path\` em \`gitpagedocs/config.json\`
|
|
447
|
-
- config da versao possui \`routes\` e \`menus-header\` validos
|
|
448
|
-
- markdown existe para cada idioma
|
|
449
|
-
|
|
450
|
-
## Por que tema nao aplica corretamente?
|
|
451
|
-
|
|
452
|
-
Verifique:
|
|
453
|
-
|
|
454
|
-
- \`layoutsConfig.json\` referencia templates validos
|
|
455
|
-
- ids de template sao unicos
|
|
456
|
-
- tema selecionado existe no mapa de temas carregados
|
|
457
|
-
|
|
458
|
-
## Por que GitHub Pages pode se comportar diferente do local?
|
|
459
|
-
|
|
460
|
-
Porque o build de GitHub Pages habilita pagina inicial de busca e comportamento especifico de exportacao.
|
|
461
|
-
`,
|
|
462
|
-
};
|
|
1
|
+
export const docsPt = {
|
|
2
|
+
index: `# Git Page Docs
|
|
3
|
+
|
|
4
|
+
Git Page Docs e um runtime de documentacao multi-idioma para repositorios que possuem a pasta \`gitpagedocs/\`.
|
|
5
|
+
|
|
6
|
+
## O que este projeto entrega
|
|
7
|
+
|
|
8
|
+
- Renderizacao markdown em varios idiomas (\`en\`, \`pt\`, \`es\`)
|
|
9
|
+
- Roteamento por versao (\`/v/:versao\`)
|
|
10
|
+
- Sistema de temas por templates JSON
|
|
11
|
+
- Execucao local e em GitHub Pages
|
|
12
|
+
- Busca de repositorio + renderizacao remota opcional
|
|
13
|
+
|
|
14
|
+
## Contrato de pastas
|
|
15
|
+
|
|
16
|
+
O runtime espera esta estrutura:
|
|
17
|
+
|
|
18
|
+
- \`gitpagedocs/config.json\`
|
|
19
|
+
- \`gitpagedocs/docs/<lang>/*.md\`
|
|
20
|
+
- \`gitpagedocs/docs/versions/<versao>/config.json\`
|
|
21
|
+
- \`gitpagedocs/docs/versions/<versao>/<lang>/*.md\`
|
|
22
|
+
- \`gitpagelayouts/layoutsConfig.json\`
|
|
23
|
+
- \`gitpagelayouts/templates/*.json\`
|
|
24
|
+
|
|
25
|
+
## Navegacao rapida
|
|
26
|
+
|
|
27
|
+
- Abra **Primeiros passos** para setup local.
|
|
28
|
+
- Abra **Configuracao** para detalhes completos do \`config.json\`.
|
|
29
|
+
- Abra **Publicacao** para comportamento local/producao/GitHub Pages.
|
|
30
|
+
- Abra **Arquitetura** para mapa de codigo e fluxo de dados.
|
|
31
|
+
- Abra **Temas e layouts** para autoria de templates.
|
|
32
|
+
- Abra **Rotas autorizadas** para configurar chave, papeis e autenticacao externa.
|
|
33
|
+
- Abra **FAQ** para troubleshooting.
|
|
34
|
+
`,
|
|
35
|
+
gettingStarted: `# Primeiros passos
|
|
36
|
+
|
|
37
|
+
Este guia leva o projeto do zero ate docs rodando.
|
|
38
|
+
|
|
39
|
+
## Pre-requisitos
|
|
40
|
+
|
|
41
|
+
- Node.js 20+
|
|
42
|
+
- npm 10+ (ou pnpm)
|
|
43
|
+
|
|
44
|
+
## Setup local
|
|
45
|
+
|
|
46
|
+
1. Instale dependencias:
|
|
47
|
+
- \`npm install\`
|
|
48
|
+
2. Gere/atualize os artefatos de docs:
|
|
49
|
+
- \`npm run gitpagedocs\`
|
|
50
|
+
3. Inicie o desenvolvimento:
|
|
51
|
+
- \`npm run dev\`
|
|
52
|
+
4. Build e execucao local de producao:
|
|
53
|
+
- \`npm run build\`
|
|
54
|
+
- \`npm start\`
|
|
55
|
+
|
|
56
|
+
## Comportamento da CLI
|
|
57
|
+
|
|
58
|
+
\`npx @gitpagedocs/cli\` (ou \`npm run gitpagedocs\`) gera os artefatos na pasta oficial \`gitpagedocs/\`.
|
|
59
|
+
|
|
60
|
+
- Gera somente markdown/json
|
|
61
|
+
- Nao gera \`index.html\`
|
|
62
|
+
- Nao gera \`index.js\`
|
|
63
|
+
- Nao executa comandos de instalacao
|
|
64
|
+
|
|
65
|
+
## Modo de busca por repositorio
|
|
66
|
+
|
|
67
|
+
No ambiente local, o controle e por variavel:
|
|
68
|
+
|
|
69
|
+
- \`GITPAGEDOCS_REPOSITORY_SEARCH=true\`
|
|
70
|
+
- \`GITPAGEDOCS_REPOSITORY_SEARCH=false\`
|
|
71
|
+
|
|
72
|
+
Em build de GitHub Pages (\`GITHUB_ACTIONS=true\`), a busca de repositorio fica sempre ativa.
|
|
73
|
+
`,
|
|
74
|
+
projectOverview: `# Visao geral do projeto
|
|
75
|
+
|
|
76
|
+
Git Page Docs e um monorepo pnpm + turborepo que transforma a pasta \`gitpagedocs/\` de um repositorio em um site de documentacao multilinguagem e versionado — com assistente de IA integrado e um servidor MCP (Model Context Protocol).
|
|
77
|
+
|
|
78
|
+
## Pacotes do monorepo
|
|
79
|
+
|
|
80
|
+
- **frontend/** — visualizador Next.js 15 (App Router, React 19), exportado estaticamente para o GitHub Pages.
|
|
81
|
+
- **cli/** — o pacote npm publicado \`@gitpagedocs/cli\` (\`npm install -g @gitpagedocs/cli\`): gera a estrutura de docs, documenta com IA, configura o Pages e roda o servidor MCP.
|
|
82
|
+
- **tools/** — \`@gitpagedocs/tools\`, o nucleo de logica compartilhado: sistema de IA com 14 provedores, cofre de credenciais criptografado, loader de config, caches e logger.
|
|
83
|
+
- **mcp/** — \`@gitpagedocs/mcp\`, servidor Model Context Protocol (20 ferramentas + 7 recursos).
|
|
84
|
+
- **gitpagedocs/** — o contrato do usuario: \`config.json\`, docs versionados e layouts.
|
|
85
|
+
|
|
86
|
+
## Stack
|
|
87
|
+
|
|
88
|
+
- Next.js 15 (App Router) + React 19 + TypeScript; exportacao estatica para GitHub Pages
|
|
89
|
+
- gray-matter + marked para Markdown; react-icons
|
|
90
|
+
- pnpm workspaces + turborepo; Vitest + Playwright; ESLint
|
|
91
|
+
|
|
92
|
+
## Destaques
|
|
93
|
+
|
|
94
|
+
- Multilinguagem (\`en\`, \`pt\`, \`es\`) e rotas por versao (\`/v/:version\`)
|
|
95
|
+
- Sistema de IA com 14 provedores (OpenAI, Anthropic, Gemini, Ollama, Mistral, DeepSeek, Cohere, Groq, xAI e mais) com streaming
|
|
96
|
+
- Chaves de IA **criptografadas em repouso** (AES-256-GCM) atras de uma senha local — nunca em texto puro
|
|
97
|
+
- **Drawer de chat de IA** nos docs + um **console \`/ai\`** dedicado
|
|
98
|
+
- Sistema de 36 temas; execucao local e no GitHub Pages
|
|
99
|
+
`,
|
|
100
|
+
functionalities: `# Funcionalidades
|
|
101
|
+
|
|
102
|
+
Referencia completa de opcoes da CLI, chaves de configuracao e recursos do runtime.
|
|
103
|
+
|
|
104
|
+
## Comandos da CLI
|
|
105
|
+
|
|
106
|
+
| Comando | Descricao |
|
|
107
|
+
|---------|------------|
|
|
108
|
+
| \`npx @gitpagedocs/cli\` | Gera config e docs em \`gitpagedocs/\` |
|
|
109
|
+
| \`npx @gitpagedocs/cli --layoutconfig\` | Tambem gera layouts/templates locais em \`gitpagelayouts/\` |
|
|
110
|
+
| \`npx @gitpagedocs/cli --home\` | Distribuicao standalone (\`gitpagedocshome/\`) |
|
|
111
|
+
| \`npx @gitpagedocs/cli --push --owner X --repo Y\` | Configura workflow, commit, push |
|
|
112
|
+
| \`npx @gitpagedocs/cli --interactive\` / \`-i\` | Modo interativo com prompts (padrao em um terminal) |
|
|
113
|
+
| \`npx @gitpagedocs/cli --no-interactive\` / \`-y\` | Nunca pergunta; usa flags e padroes |
|
|
114
|
+
|
|
115
|
+
## Opcoes da CLI
|
|
116
|
+
|
|
117
|
+
| Opcao | Descricao |
|
|
118
|
+
|-------|-----------|
|
|
119
|
+
| \`--owner <user>\` | Owner do GitHub |
|
|
120
|
+
| \`--repo <repo>\` | Repositorio GitHub |
|
|
121
|
+
| \`--path <subpath>\` | Subcaminho dos docs (ex: \`docs\`); sem ele, base path = nome do repo para CSS/JS em project sites |
|
|
122
|
+
| \`--output <dir>\` | Diretorio de saida (padrao: \`gitpagedocs\`) |
|
|
123
|
+
| \`--search true|false\` | Habilita/desabilita busca de repositorio (\`--home\`) |
|
|
124
|
+
| \`--layoutconfig\` | Gera layouts locais em \`gitpagelayouts/\` |
|
|
125
|
+
| \`--layouts-dir <dir>\` | Pasta dos layouts locais (padrao: \`gitpagelayouts\`) |
|
|
126
|
+
| \`--push\` | Cria workflow, commit de artefatos, push |
|
|
127
|
+
| \`--home\` | Gera \`gitpagedocshome/\` (estatico + .env + Dockerfile) |
|
|
128
|
+
|
|
129
|
+
## Saida gerada
|
|
130
|
+
|
|
131
|
+
- \`gitpagedocs/config.json\` – config raiz
|
|
132
|
+
- \`gitpagedocs/icon.svg\` – icone padrao
|
|
133
|
+
- \`gitpagedocs/docs/versions/<ver>/config.json\` – rotas por versao
|
|
134
|
+
- \`gitpagedocs/docs/versions/<ver>/{en,pt,es}/*.md\` – docs em markdown
|
|
135
|
+
- \`gitpagelayouts/\` – apenas com \`--layoutconfig\` (pasta configuravel com \`--layouts-dir\`)
|
|
136
|
+
|
|
137
|
+
## Tipos de conteudo
|
|
138
|
+
|
|
139
|
+
| Tipo | Chave config | Descricao |
|
|
140
|
+
|------|--------------|-----------|
|
|
141
|
+
| Markdown | \`routes-md\` | Arquivos .md com \`path\` por idioma |
|
|
142
|
+
| HTML | \`routes-html\` | \`path\` local ou \`url\` externa |
|
|
143
|
+
| Video | \`routes-video\` | \`video.pathVideo\`, \`video.videoType\` |
|
|
144
|
+
| Audio | \`routes-audio\` | \`audio.pathAudio\`, \`audio.audioType\` |
|
|
145
|
+
|
|
146
|
+
## Visualizador de codigo fonte
|
|
147
|
+
|
|
148
|
+
O config da versao pode renderizar um container **Codigo fonte** via \`routes-source-viewer\` e \`menus-header-source-viewer\`. O viewer le a arvore do repositorio no GitHub em tempo de execucao e aplica o tema atual da documentacao.
|
|
149
|
+
|
|
150
|
+
- Arvore do repositorio a partir de \`source-viewer-path\`; a branch padrao e \`main\`
|
|
151
|
+
- Navegacao por pastas e filtro de arquivos
|
|
152
|
+
- Listagem de diretorios no estilo GitHub
|
|
153
|
+
- Renderizacao de codigo com numeros de linha
|
|
154
|
+
- Alternancia preview/codigo para Markdown, incluindo \`README.md\`
|
|
155
|
+
- Pastas recolhiveis na lateral
|
|
156
|
+
|
|
157
|
+
## Chaves de config (site)
|
|
158
|
+
|
|
159
|
+
- \`name\`, \`defaultLanguage\`, \`supportedLanguages\`
|
|
160
|
+
- \`docsVersion\`, \`rendering\`, \`ThemeDefault\`, \`ThemeModeDefault\`
|
|
161
|
+
- \`ProjectLink\`, \`layoutsConfigPathOficial\`, \`layoutsConfigPath\`
|
|
162
|
+
|
|
163
|
+
## Variaveis de ambiente
|
|
164
|
+
|
|
165
|
+
- \`GITPAGEDOCS_REPOSITORY_SEARCH\` – busca de repositorio (local)
|
|
166
|
+
- \`GITHUB_ACTIONS\` – modo build GitHub Pages
|
|
167
|
+
`,
|
|
168
|
+
configuration: `# Configuracao
|
|
169
|
+
|
|
170
|
+
A configuracao de runtime fica em \`gitpagedocs/config.json\`.
|
|
171
|
+
|
|
172
|
+
## Secao \`site\`
|
|
173
|
+
|
|
174
|
+
Principais chaves:
|
|
175
|
+
|
|
176
|
+
- \`name\`: titulo do projeto no UI
|
|
177
|
+
- \`defaultLanguage\`: idioma padrao
|
|
178
|
+
- \`supportedLanguages\`: lista de idiomas disponiveis
|
|
179
|
+
- \`HideThemeSelector\`: esconde/mostra seletor de tema
|
|
180
|
+
- \`ThemeDefault\`: id do tema inicial
|
|
181
|
+
- \`ThemeModeDefault\`: modo inicial (\`light\` ou \`dark\`)
|
|
182
|
+
- \`ProjectLink\`: URL de repositorio para acoes no cabecalho
|
|
183
|
+
- \`docsVersion\`: versao inicial selecionada
|
|
184
|
+
- \`ActiveNavigation\`: habilita comportamento de anterior/proximo
|
|
185
|
+
- \`FocusMode\`: habilita modo foco/leitura
|
|
186
|
+
- \`IconImageMenuHeaderImgWidth\`, \`IconImageMenuHeaderImgHeight\`: tamanho do icone principal
|
|
187
|
+
- \`IconImageMenuHeaderLightImg\`, \`IconImageMenuHeaderDarkImg\`: icone principal (light/dark)
|
|
188
|
+
- \`IconProjectLinkImgWidth\`, \`IconProjectLinkImgHeight\`: tamanho do icone link do projeto
|
|
189
|
+
- \`IconProjectLinkLightImg\`, \`IconProjectLinkDarkImg\`: icone link do projeto
|
|
190
|
+
- \`IconVersionLinksImgWidth\`, \`IconVersionLinksImgHeight\`: tamanho do icone links de versao
|
|
191
|
+
- \`IconVersionLinksLightImg\`, \`IconVersionLinksDarkImg\`: icone links de versao
|
|
192
|
+
- \`IconInfoHeaderMenuImgWidth\`, \`IconInfoHeaderMenuImgHeight\`: tamanho do icone info
|
|
193
|
+
- \`IconInfoHeaderMenuLightImg\`, \`IconInfoHeaderMenuDarkImg\`: icone info
|
|
194
|
+
- \`IconPreviewProjectLinkImgWidth\`, \`IconPreviewProjectLinkImgHeight\`: tamanho do icone preview
|
|
195
|
+
- \`IconPreviewProjectLinkLightImg\`, \`IconPreviewProjectLinkDarkImg\`: icone preview
|
|
196
|
+
- \`layoutsConfigPath\`: fallback remoto para layouts
|
|
197
|
+
- \`rendering\`: URL canonica publicada
|
|
198
|
+
|
|
199
|
+
## Secao \`VersionControl\`
|
|
200
|
+
|
|
201
|
+
\`VersionControl.versions\` define:
|
|
202
|
+
|
|
203
|
+
- \`id\`: identificador da versao
|
|
204
|
+
- \`path\`: caminho do config da versao
|
|
205
|
+
- links opcionais (\`ProjectLink\`, \`branch\`, \`release\`, \`commit\`)
|
|
206
|
+
- metadados opcionais do source viewer (\`source-viewer\`, \`source-viewer-path\`)
|
|
207
|
+
|
|
208
|
+
## Navegacao e rotas
|
|
209
|
+
|
|
210
|
+
- \`routes\`: caminhos markdown por idioma (legado)
|
|
211
|
+
- \`menus-header\`: menu hierarquico
|
|
212
|
+
- \`translations\`: labels de UI para not-found e navegacao
|
|
213
|
+
|
|
214
|
+
## Autorizacao (config de versao)
|
|
215
|
+
|
|
216
|
+
- \`auth\`: configuracoes globais de autorizacao para a versao
|
|
217
|
+
- \`auth.accessKeys\`: mapa de chaves usado por \`authorization.accessKeyId\`
|
|
218
|
+
- \`auth.rolesStorageKey\`: chave de localStorage para bootstrap de papeis
|
|
219
|
+
- \`auth.providers\`: adaptadores de provedor (\`authjs\`, \`clerk\`, \`firebase\`, \`jwt\`)
|
|
220
|
+
|
|
221
|
+
## Tipos de conteudo (config de versao)
|
|
222
|
+
|
|
223
|
+
Configs de versao suportam multiplos tipos:
|
|
224
|
+
|
|
225
|
+
- \`routes-md\`: Rotas markdown com \`title\`, \`description\` (centralizados via \`titlePosition\`, \`descriptionPosition\`)
|
|
226
|
+
- \`routes-source-viewer\`: Containers de codigo fonte com \`source-viewer: true\` e \`source-viewer-path\`
|
|
227
|
+
- \`routes-html\`: Caminhos de paginas HTML por idioma
|
|
228
|
+
- \`routes-video\`: Config de video com \`video.videoType\` (youtube, vimeo, mp4, etc.) e \`video.pathVideo\`
|
|
229
|
+
- \`routes-audio\`: Config de audio com \`audio.audioType\` (youtube, mp3, etc.) e \`audio.pathAudio\`
|
|
230
|
+
- \`authorization\` (md/html/video): guarda de acesso por chave, papeis e autenticacao externa
|
|
231
|
+
- \`menus-header-md\`, \`menus-header-source-viewer\`, \`menus-header-html\`, \`menus-header-video\`, \`menus-header-audio\`: menus por tipo
|
|
232
|
+
- \`hierarchyPage\`: ordem dos containers na pagina \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4 }\`
|
|
233
|
+
- \`hierarchyMenu\`: ordem das secoes do menu \`{ md: 0, "source-viewer": 1, html: 2, video: 3, audio: 4 }\`
|
|
234
|
+
|
|
235
|
+
Cada rota pode incluir \`title\`, \`description\` (por idioma), \`titleCss\`, \`titlePosition: "center"\`, \`descriptionPosition: "center"\`, \`titleIsVisible\`, \`descriptionIsVisible\`.
|
|
236
|
+
|
|
237
|
+
## Variaveis por rota (blockLink, container, url, browseAll)
|
|
238
|
+
|
|
239
|
+
Opcoes por rota em \`routes-md\`, \`routes-html\` e \`routes-video\`:
|
|
240
|
+
|
|
241
|
+
- **\`blockLink\`** (padrao: true) – Para HTML: se true, links abrem em nova aba (\`target="_blank"\`); se false, no proprio contexto.
|
|
242
|
+
- **\`container\`** – \`"full"\` = altura automatica; numero (ex: \`500\`) = altura fixa em px com overflow auto. Aplica-se a md, html e video.
|
|
243
|
+
- **\`url\`** – Apenas em \`routes-html\`: \`Record<LanguageCode, string>\` com URLs externas. Quando definido, o iframe usa \`src={url}\` em vez de HTML local via \`srcDoc\`. Rotas com \`url\` nao geram arquivos HTML locais.
|
|
244
|
+
- **\`browseAll\`** (padrao: false) – Se true, o container mostra botoes Anterior/Proximo para navegar entre todos os itens daquele tipo.
|
|
245
|
+
|
|
246
|
+
## Tipos de conteudo: path vs url (HTML)
|
|
247
|
+
|
|
248
|
+
- **Markdown (\`routes-md\`)**: usa \`path\` apontando para arquivos \`.md\` locais.
|
|
249
|
+
- **HTML (\`routes-html\`)**: usa \`path\` para arquivos HTML locais (sem extensao .html no config) ou \`url\` para URLs externas. Com \`url\`, o iframe carrega a pagina externa; nenhum arquivo local e gerado.
|
|
250
|
+
- **Video (\`routes-video\`)**: usa \`video.pathVideo\` e \`video.videoType\` (youtube, vimeo, mp4, etc.).
|
|
251
|
+
|
|
252
|
+
## Variaveis de ambiente
|
|
253
|
+
|
|
254
|
+
- \`GITPAGEDOCS_REPOSITORY_SEARCH\`: ativa/desativa busca remota localmente
|
|
255
|
+
- \`GITHUB_ACTIONS\`: ativa comportamento especifico de GitHub Pages
|
|
256
|
+
`,
|
|
257
|
+
deployment: `# Publicacao
|
|
258
|
+
|
|
259
|
+
Git Page Docs roda como app Next.js com dois alvos: servidor local e GitHub Pages.
|
|
260
|
+
|
|
261
|
+
## Publicacao local
|
|
262
|
+
|
|
263
|
+
Use:
|
|
264
|
+
|
|
265
|
+
1. \`npm run build\`
|
|
266
|
+
2. \`npm start\`
|
|
267
|
+
|
|
268
|
+
Isso sobe runtime Node + Next.js usando a pasta local \`gitpagedocs/\`.
|
|
269
|
+
|
|
270
|
+
## Publicacao em GitHub Pages
|
|
271
|
+
|
|
272
|
+
Em build de GitHub Actions:
|
|
273
|
+
|
|
274
|
+
- \`GITHUB_ACTIONS=true\`
|
|
275
|
+
- comportamento de export estatico e habilitado pela configuracao
|
|
276
|
+
- pagina inicial de busca de repositorio fica ativa
|
|
277
|
+
|
|
278
|
+
## Fluxo de publish do pacote
|
|
279
|
+
|
|
280
|
+
Para publicar no npm:
|
|
281
|
+
|
|
282
|
+
- atualize versao no \`package.json\`
|
|
283
|
+
- execute \`npm publish --access public\`
|
|
284
|
+
- valide autenticacao com \`npm whoami\`
|
|
285
|
+
|
|
286
|
+
Se \`build:prebuilt\` for pulado no Windows, use CI para gerar artefatos prebuilt.
|
|
287
|
+
`,
|
|
288
|
+
architecture: `# Arquitetura
|
|
289
|
+
|
|
290
|
+
O projeto e organizado por fronteiras de feature e responsabilidades do runtime.
|
|
291
|
+
|
|
292
|
+
## Pacotes
|
|
293
|
+
|
|
294
|
+
- **frontend/** — visualizador Next.js (Feature-Sliced: app / widgets / features / entities / shared); export estatico.
|
|
295
|
+
- **cli/** — o bin publicado \`gitpagedocs\` (hexagonal) + \`cli/ai/\` (CLI de documentacao com IA).
|
|
296
|
+
- **tools/** — \`@gitpagedocs/tools\`: ai/ security/ crypto/ cache/ config/ logger/ errors/ filesystem/ documentation/ ports/.
|
|
297
|
+
- **mcp/** — \`@gitpagedocs/mcp\`: ferramentas + recursos MCP que delegam ao tools/.
|
|
298
|
+
|
|
299
|
+
## Modulos principais (frontend)
|
|
300
|
+
|
|
301
|
+
- \`frontend/src/app/[[...repo]]/page.tsx\` — parser de rota, generateStaticParams, selecao de shell.
|
|
302
|
+
- \`frontend/src/entities/docs/api/load-docs-data.ts\` — config local/remota, versao, parse markdown, layouts + temas.
|
|
303
|
+
- \`frontend/src/widgets/docs-shell/docs-shell.tsx\` — UI, estado idioma/versao/tema, sync de URL, montagem do chat de IA.
|
|
304
|
+
|
|
305
|
+
## Seguranca: credenciais de IA criptografadas
|
|
306
|
+
|
|
307
|
+
O console \`/ai\` e o chat drawer exigem uma senha local que deriva (PBKDF2) uma chave AES-256-GCM; as chaves ficam criptografadas no \`localStorage\` e so sao descriptografadas durante a sessao (\`@gitpagedocs/tools/security\`).
|
|
308
|
+
|
|
309
|
+
## Fluxo de dados
|
|
310
|
+
|
|
311
|
+
1. A rota chega (\`/owner/repo/v/x.y.z\` ou equivalente local)
|
|
312
|
+
2. O config e resolvido (local ou remoto)
|
|
313
|
+
3. Config de versao sobrescreve rotas/menus base
|
|
314
|
+
4. Markdown e carregado e convertido para HTML
|
|
315
|
+
5. Template de layout e resolvido e aplicado em CSS vars
|
|
316
|
+
6. Shell renderiza conteudo e controles
|
|
317
|
+
|
|
318
|
+
## Pontos de resiliencia
|
|
319
|
+
|
|
320
|
+
- fallback de carga para layouts/templates
|
|
321
|
+
- carregamento de markdown por idioma com fallback de erro
|
|
322
|
+
- sincronizacao de linguagem/versao/tema via localStorage
|
|
323
|
+
`,
|
|
324
|
+
githubIssuesProjects: `# GitHub Issues e Projects
|
|
325
|
+
|
|
326
|
+
Aprenda a usar GitHub Issues e Projects para gerenciar seu trabalho.
|
|
327
|
+
|
|
328
|
+
## Conceitos
|
|
329
|
+
|
|
330
|
+
- Issues para rastrear tarefas e bugs
|
|
331
|
+
- Projects para visualizar e organizar o trabalho
|
|
332
|
+
- Workflows recomendados para equipes
|
|
333
|
+
`,
|
|
334
|
+
gitIntroduction: `# Introducao ao Git
|
|
335
|
+
|
|
336
|
+
Conceitos basicos de Git para iniciantes.
|
|
337
|
+
|
|
338
|
+
## Comandos essenciais
|
|
339
|
+
|
|
340
|
+
- \`git init\` - iniciar repositorio
|
|
341
|
+
- \`git add\` - preparar alteracoes
|
|
342
|
+
- \`git commit\` - registrar commit
|
|
343
|
+
- \`git push\` - enviar para remoto
|
|
344
|
+
`,
|
|
345
|
+
authorizedRoutes: `# Rotas autorizadas
|
|
346
|
+
|
|
347
|
+
Proteja rotas por chave de acesso, papeis obrigatorios e provedores externos.
|
|
348
|
+
|
|
349
|
+
## Local do config de versao
|
|
350
|
+
|
|
351
|
+
Configure em:
|
|
352
|
+
|
|
353
|
+
- \`gitpagedocs/docs/versions/<versao>/config.json\`
|
|
354
|
+
|
|
355
|
+
## Secao global auth
|
|
356
|
+
|
|
357
|
+
Use \`auth\` no topo do config de versao:
|
|
358
|
+
|
|
359
|
+
- \`accessKeys\`: mapa de ids de chave para segredo esperado
|
|
360
|
+
- \`rolesStorageKey\`: chave de localStorage para bootstrap de papeis
|
|
361
|
+
- \`providers\`: lista de provedores externos (\`authjs\`, \`clerk\`, \`firebase\`, \`jwt\`)
|
|
362
|
+
|
|
363
|
+
## Autorizacao por rota
|
|
364
|
+
|
|
365
|
+
Dentro de cada rota (\`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 - Chave de acesso
|
|
375
|
+
|
|
376
|
+
Defina \`authorization.accessKeyId\` e a chave correspondente em \`auth.accessKeys\`.
|
|
377
|
+
|
|
378
|
+
### Fase B - Papeis
|
|
379
|
+
|
|
380
|
+
Defina \`authorization.requiredRoles\` com um ou mais papeis.
|
|
381
|
+
|
|
382
|
+
Os papeis podem vir de:
|
|
383
|
+
|
|
384
|
+
- query param \`?authRoles=admin,maintainer\`
|
|
385
|
+
- localStorage (\`rolesStorageKey\`)
|
|
386
|
+
- claims de provedores externos
|
|
387
|
+
|
|
388
|
+
### Fase C - Provedores externos
|
|
389
|
+
|
|
390
|
+
Defina \`authorization.requireExternalAuth=true\` e opcionalmente \`allowedProviders\`.
|
|
391
|
+
|
|
392
|
+
Adaptadores suportados:
|
|
393
|
+
|
|
394
|
+
- Auth.js (\`type: "authjs"\`)
|
|
395
|
+
- Clerk (\`type: "clerk"\`)
|
|
396
|
+
- Firebase Auth (\`type: "firebase"\`)
|
|
397
|
+
- JWT custom (\`type: "jwt"\`)
|
|
398
|
+
`,
|
|
399
|
+
themes: `# Temas e layouts
|
|
400
|
+
|
|
401
|
+
Temas sao templates JSON mapeados por \`layoutsConfig.json\`.
|
|
402
|
+
|
|
403
|
+
## Arquivos
|
|
404
|
+
|
|
405
|
+
- \`gitpagelayouts/layoutsConfig.json\`
|
|
406
|
+
- \`gitpagelayouts/layoutsFallbackConfig.json\`
|
|
407
|
+
- \`gitpagelayouts/templates/*.json\`
|
|
408
|
+
|
|
409
|
+
## Modelo de template
|
|
410
|
+
|
|
411
|
+
Cada template normalmente contem:
|
|
412
|
+
|
|
413
|
+
- \`id\`, \`name\`, \`author\`, \`version\`
|
|
414
|
+
- \`mode\` e metadados de par dark/light
|
|
415
|
+
- \`colors\`
|
|
416
|
+
- \`typography\`
|
|
417
|
+
- tokens de \`components\`
|
|
418
|
+
- \`animations\`
|
|
419
|
+
|
|
420
|
+
## Comportamento em runtime
|
|
421
|
+
|
|
422
|
+
- tema ativo vem de config/usuario
|
|
423
|
+
- toggle light/dark resolve o tema pareado por referencia
|
|
424
|
+
- variaveis CSS sao geradas dos tokens do template
|
|
425
|
+
|
|
426
|
+
## Boas praticas
|
|
427
|
+
|
|
428
|
+
- mantenha contraste acessivel
|
|
429
|
+
- padronize escala de espaco e borda
|
|
430
|
+
- ofereca variantes dark e light quando possivel
|
|
431
|
+
`,
|
|
432
|
+
faq: `# FAQ
|
|
433
|
+
|
|
434
|
+
## Por que repositorios remotos nao abrem localmente?
|
|
435
|
+
|
|
436
|
+
Verifique:
|
|
437
|
+
|
|
438
|
+
- \`GITPAGEDOCS_REPOSITORY_SEARCH=true\` no \`.env\`
|
|
439
|
+
- repositorio alvo contem \`gitpagedocs/config.json\`
|
|
440
|
+
- paths markdown do repositorio batem com seu config de rotas
|
|
441
|
+
|
|
442
|
+
## Por que rota de versao mostra conteudo errado?
|
|
443
|
+
|
|
444
|
+
Verifique:
|
|
445
|
+
|
|
446
|
+
- \`VersionControl.versions[*].path\` em \`gitpagedocs/config.json\`
|
|
447
|
+
- config da versao possui \`routes\` e \`menus-header\` validos
|
|
448
|
+
- markdown existe para cada idioma
|
|
449
|
+
|
|
450
|
+
## Por que tema nao aplica corretamente?
|
|
451
|
+
|
|
452
|
+
Verifique:
|
|
453
|
+
|
|
454
|
+
- \`layoutsConfig.json\` referencia templates validos
|
|
455
|
+
- ids de template sao unicos
|
|
456
|
+
- tema selecionado existe no mapa de temas carregados
|
|
457
|
+
|
|
458
|
+
## Por que GitHub Pages pode se comportar diferente do local?
|
|
459
|
+
|
|
460
|
+
Porque o build de GitHub Pages habilita pagina inicial de busca e comportamento especifico de exportacao.
|
|
461
|
+
`,
|
|
462
|
+
};
|