@eduardo-afonso/codebase-intelligence 2.0.1 → 2.0.2
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 +2 -1
- package/README.pt-BR.md +223 -222
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -137,11 +137,12 @@ const impact = await codebase.impactOfChanges({}, myCustomProvider);
|
|
|
137
137
|
|
|
138
138
|
## CLI Reference
|
|
139
139
|
|
|
140
|
-
Codebase Intelligence comes with a CLI for terminal use
|
|
140
|
+
Codebase Intelligence comes with a CLI for terminal use. The main command is `codebase-intelligence`, but you can also use the shorter alias **`cbi`** (CodeBase Intelligence) if you install the package globally or use it within `package.json` scripts.
|
|
141
141
|
|
|
142
142
|
```bash
|
|
143
143
|
# Analyze the current directory and output a summary
|
|
144
144
|
npx @eduardo-afonso/codebase-intelligence analyze .
|
|
145
|
+
# or, if installed globally: cbi analyze .
|
|
145
146
|
|
|
146
147
|
# Search for a specific symbol
|
|
147
148
|
npx @eduardo-afonso/codebase-intelligence search "UserService" .
|
package/README.pt-BR.md
CHANGED
|
@@ -1,223 +1,224 @@
|
|
|
1
|
-
# Codebase Intelligence
|
|
2
|
-
|
|
3
|
-
**Codebase Intelligence** é uma biblioteca Node.js de nível profissional, projetada para analisar, indexar e compreender bases de código (codebases) de forma programática. Ela escaneia arquivos, constrói grafos de dependência e indexa símbolos (como classes, funções e interfaces) diretamente a partir da AST.
|
|
4
|
-
|
|
5
|
-
## O Problema que Resolve
|
|
6
|
-
|
|
7
|
-
Aplicações modernas são complexas. Quando desenvolvedores (ou agentes de IA) precisam entender como as partes do código se encaixam, a busca textual simples (como `grep`) não é suficiente. Encontrar exatamente onde uma classe é usada, entender o impacto de modificar um arquivo específico, ou rastrear dependências transitivas geralmente exige trabalho manual ou uma IDE pesada.
|
|
8
|
-
|
|
9
|
-
O Codebase Intelligence funciona como um "Grafo de Conhecimento" fundamental para o seu código. Ele fornece insights estruturados sobre sua base de código, servindo como a espinha dorsal perfeita para ferramentas de desenvolvimento assistido por IA, geração de código, pipelines de RAG e sistemas automatizados de revisão de código.
|
|
10
|
-
|
|
11
|
-
## Funcionalidades
|
|
12
|
-
|
|
13
|
-
- **Descoberta de Projeto**: Detecta automaticamente linguagens do projeto, frameworks (React, Next.js, etc.) e gerenciadores de pacotes.
|
|
14
|
-
- **Análise via AST**: Utiliza o `ts-morph` para uma análise robusta e livre de regex de TypeScript/JavaScript, extraindo classes, funções, métodos e variáveis.
|
|
15
|
-
- **Indexação de Símbolos**: Consulte instantaneamente sua base de código por símbolos, seja por nome, tipo ou arquivo.
|
|
16
|
-
- **Grafo de Dependências**: Constrói um grafo direcionado de imports, `extends` e `implements`.
|
|
17
|
-
- **Busca de Código**: Busca léxica e estrutural em arquivos e símbolos.
|
|
18
|
-
- **Análise de Impacto**: Entenda as consequências diretas e indiretas de modificar qualquer arquivo, incluindo arquivos de teste relacionados.
|
|
19
|
-
- **Análise de Impacto de Diferenças (Diff Impact)**: Dado um conjunto de alterações no Git (um branch, arquivos em stage, edições não commitadas), descubra *"o que este conjunto de mudanças afeta?"* — de forma conservadora, na granularidade do arquivo, sem inventar relações.
|
|
20
|
-
- **Context Engine**: Crie payloads de contexto prontos para LLMs, com controle de tokens, usando três estratégias (shallow, signature, deep).
|
|
21
|
-
- **CLI Incluída**: Execute análises e consultas diretamente pelo terminal.
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## Instalação
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
npm i @eduardo-afonso/codebase-intelligence
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
*(Nota: Atualmente em fase de MVP. Certifique-se de que seu projeto tenha o TypeScript configurado para uso adequado).*
|
|
32
|
-
|
|
33
|
-
## Início Rápido
|
|
34
|
-
|
|
35
|
-
Você pode usar a biblioteca de forma programática em seus próprios scripts:
|
|
36
|
-
|
|
37
|
-
```typescript
|
|
38
|
-
import { Codebase } from 'codebase-intelligence';
|
|
39
|
-
|
|
40
|
-
async function run() {
|
|
41
|
-
// 1. Carrega a base de código (escaneia arquivos e detecta informações do projeto)
|
|
42
|
-
const codebase = await Codebase.load('./src');
|
|
43
|
-
|
|
44
|
-
// 2. Analisa a AST e constrói o grafo de dependências
|
|
45
|
-
await codebase.analyze();
|
|
46
|
-
|
|
47
|
-
// 3. Consulta os dados
|
|
48
|
-
console.log('Total de arquivos:', codebase.files().length);
|
|
49
|
-
|
|
50
|
-
// Busca por uma classe ou função específica
|
|
51
|
-
const searchResults = codebase.search('AuthService');
|
|
52
|
-
console.log('Resultados da busca:', searchResults);
|
|
53
|
-
|
|
54
|
-
// Verifica o impacto de uma alteração em um arquivo
|
|
55
|
-
const impact = codebase.impact('src/auth/AuthService.ts');
|
|
56
|
-
console.log('Arquivos que dependem diretamente deste:', impact.direct);
|
|
57
|
-
console.log('Arquivos que dependem indiretamente deste:', impact.indirect);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
run();
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
## Referência da API Pública
|
|
66
|
-
|
|
67
|
-
### `Codebase.load(path: string, options?: CodebaseOptions): Promise<Codebase>`
|
|
68
|
-
Inicializa a instância, escaneando o diretório informado. `options.ignore` aceita um array de padrões glob para excluir arquivos.
|
|
69
|
-
|
|
70
|
-
### `codebase.analyze(): Promise<void>`
|
|
71
|
-
Analisa os arquivos descobertos e popula o Índice de Símbolos e o Grafo de Dependências internos. Deve ser chamado antes de consultar símbolos ou dependências.
|
|
72
|
-
|
|
73
|
-
### `codebase.files(): CodebaseFile[]`
|
|
74
|
-
Retorna todos os arquivos indexados do projeto.
|
|
75
|
-
|
|
76
|
-
### `codebase.symbols(): CodeSymbol[]`
|
|
77
|
-
Retorna todos os símbolos extraídos (classes, funções, interfaces, etc.) do projeto.
|
|
78
|
-
|
|
79
|
-
### `codebase.search(query: string, options?: SearchOptions): SearchResult[]`
|
|
80
|
-
Realiza uma busca léxica/estrutural por arquivos e símbolos que correspondam à consulta.
|
|
81
|
-
|
|
82
|
-
### `codebase.dependencies(file: string): string[]`
|
|
83
|
-
Retorna os arquivos dos quais o arquivo informado depende diretamente (imports).
|
|
84
|
-
|
|
85
|
-
### `codebase.dependents(file: string): string[]`
|
|
86
|
-
Retorna os arquivos que dependem diretamente do arquivo informado.
|
|
87
|
-
|
|
88
|
-
### `codebase.impact(file: string): ImpactResult`
|
|
89
|
-
Retorna `{ direct: string[], indirect: string[], tests: string[] }`, revelando o raio de impacto completo de uma alteração no arquivo informado.
|
|
90
|
-
|
|
91
|
-
### `codebase.impactOfFiles(paths: string[]): ChangeSetImpact`
|
|
92
|
-
Análise de impacto pura e síncrona sem consultar o Git. Trata todos os caminhos relativos fornecidos como `modificados` e resolve as suas dependências através do grafo.
|
|
93
|
-
|
|
94
|
-
```typescript
|
|
95
|
-
// O que é afetado se alterar utils.ts?
|
|
96
|
-
const impact = codebase.impactOfFiles(['src/utils.ts']);
|
|
97
|
-
console.log(impact.direct); // importadores diretos
|
|
98
|
-
console.log(impact.indirect); // dependentes transitivos
|
|
99
|
-
console.log(impact.tests); // arquivos de teste (por convenção)
|
|
100
|
-
console.log(impact.globalChanges); // arquivos globais (afetam tudo)
|
|
101
|
-
console.log(impact.unanalyzable); // arquivos não indexados e porquê
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
### `codebase.impactOfChanges(options?, provider?): Promise<ChangeSetImpact>`
|
|
105
|
-
Consulta um `ChangeSetProvider` (Git por defeito) para determinar quais os arquivos alterados, mapeando-os para um `ChangeSetImpact`.
|
|
106
|
-
|
|
107
|
-
```typescript
|
|
108
|
-
// Alterações introduzidas pela branch atual vs main:
|
|
109
|
-
const impact = await codebase.impactOfChanges({ since: 'main' });
|
|
110
|
-
|
|
111
|
-
// Apenas arquivos em stage:
|
|
112
|
-
const staged = await codebase.impactOfChanges({ staged: true });
|
|
113
|
-
|
|
114
|
-
// Todas as alterações não commitadas (incluindo arquivos untracked):
|
|
115
|
-
const uncommitted = await codebase.impactOfChanges();
|
|
116
|
-
|
|
117
|
-
// Provider personalizado (ex: API de PR do GitHub, mock de teste):
|
|
118
|
-
const impact = await codebase.impactOfChanges({}, meuProvider);
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
**Formato de `ChangeSetImpact`:**
|
|
122
|
-
```typescript
|
|
123
|
-
{
|
|
124
|
-
changed: FileChange[]; // lista bruta do provider
|
|
125
|
-
direct: string[]; // arquivos que importam um arquivo alterado
|
|
126
|
-
indirect: string[]; // dependentes transitivos (excluindo direct)
|
|
127
|
-
tests: string[]; // arquivos de teste por convenção de nomes
|
|
128
|
-
globalChanges: string[]; // ex: package.json, tsconfig.json
|
|
129
|
-
unanalyzable: { path, reason }[]; // arquivos não rastreáveis
|
|
130
|
-
unresolvedDependencies: string[]; // imports impossíveis de resolver
|
|
131
|
-
metadata: { granularity: 'file'; base?: string; head?: string };
|
|
132
|
-
}
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
> ⚠️ **Nota sobre granularidade**: a análise opera na **granularidade de arquivo**. Uma alteração de uma linha marca *todos* os dependentes desse arquivo como potencialmente afetados. O resultado é um limite superior conservador.
|
|
136
|
-
|
|
137
|
-
---
|
|
138
|
-
|
|
139
|
-
## Referência da CLI
|
|
140
|
-
|
|
141
|
-
O Codebase Intelligence vem com uma CLI para uso no terminal
|
|
142
|
-
|
|
143
|
-
```bash
|
|
144
|
-
# Analisa o diretório atual e exibe um resumo
|
|
145
|
-
npx @eduardo-afonso/codebase-intelligence analyze .
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
- **
|
|
208
|
-
- **
|
|
209
|
-
- **
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
1
|
+
# Codebase Intelligence
|
|
2
|
+
|
|
3
|
+
**Codebase Intelligence** é uma biblioteca Node.js de nível profissional, projetada para analisar, indexar e compreender bases de código (codebases) de forma programática. Ela escaneia arquivos, constrói grafos de dependência e indexa símbolos (como classes, funções e interfaces) diretamente a partir da AST.
|
|
4
|
+
|
|
5
|
+
## O Problema que Resolve
|
|
6
|
+
|
|
7
|
+
Aplicações modernas são complexas. Quando desenvolvedores (ou agentes de IA) precisam entender como as partes do código se encaixam, a busca textual simples (como `grep`) não é suficiente. Encontrar exatamente onde uma classe é usada, entender o impacto de modificar um arquivo específico, ou rastrear dependências transitivas geralmente exige trabalho manual ou uma IDE pesada.
|
|
8
|
+
|
|
9
|
+
O Codebase Intelligence funciona como um "Grafo de Conhecimento" fundamental para o seu código. Ele fornece insights estruturados sobre sua base de código, servindo como a espinha dorsal perfeita para ferramentas de desenvolvimento assistido por IA, geração de código, pipelines de RAG e sistemas automatizados de revisão de código.
|
|
10
|
+
|
|
11
|
+
## Funcionalidades
|
|
12
|
+
|
|
13
|
+
- **Descoberta de Projeto**: Detecta automaticamente linguagens do projeto, frameworks (React, Next.js, etc.) e gerenciadores de pacotes.
|
|
14
|
+
- **Análise via AST**: Utiliza o `ts-morph` para uma análise robusta e livre de regex de TypeScript/JavaScript, extraindo classes, funções, métodos e variáveis.
|
|
15
|
+
- **Indexação de Símbolos**: Consulte instantaneamente sua base de código por símbolos, seja por nome, tipo ou arquivo.
|
|
16
|
+
- **Grafo de Dependências**: Constrói um grafo direcionado de imports, `extends` e `implements`.
|
|
17
|
+
- **Busca de Código**: Busca léxica e estrutural em arquivos e símbolos.
|
|
18
|
+
- **Análise de Impacto**: Entenda as consequências diretas e indiretas de modificar qualquer arquivo, incluindo arquivos de teste relacionados.
|
|
19
|
+
- **Análise de Impacto de Diferenças (Diff Impact)**: Dado um conjunto de alterações no Git (um branch, arquivos em stage, edições não commitadas), descubra *"o que este conjunto de mudanças afeta?"* — de forma conservadora, na granularidade do arquivo, sem inventar relações.
|
|
20
|
+
- **Context Engine**: Crie payloads de contexto prontos para LLMs, com controle de tokens, usando três estratégias (shallow, signature, deep).
|
|
21
|
+
- **CLI Incluída**: Execute análises e consultas diretamente pelo terminal.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Instalação
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm i @eduardo-afonso/codebase-intelligence
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
*(Nota: Atualmente em fase de MVP. Certifique-se de que seu projeto tenha o TypeScript configurado para uso adequado).*
|
|
32
|
+
|
|
33
|
+
## Início Rápido
|
|
34
|
+
|
|
35
|
+
Você pode usar a biblioteca de forma programática em seus próprios scripts:
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
import { Codebase } from 'codebase-intelligence';
|
|
39
|
+
|
|
40
|
+
async function run() {
|
|
41
|
+
// 1. Carrega a base de código (escaneia arquivos e detecta informações do projeto)
|
|
42
|
+
const codebase = await Codebase.load('./src');
|
|
43
|
+
|
|
44
|
+
// 2. Analisa a AST e constrói o grafo de dependências
|
|
45
|
+
await codebase.analyze();
|
|
46
|
+
|
|
47
|
+
// 3. Consulta os dados
|
|
48
|
+
console.log('Total de arquivos:', codebase.files().length);
|
|
49
|
+
|
|
50
|
+
// Busca por uma classe ou função específica
|
|
51
|
+
const searchResults = codebase.search('AuthService');
|
|
52
|
+
console.log('Resultados da busca:', searchResults);
|
|
53
|
+
|
|
54
|
+
// Verifica o impacto de uma alteração em um arquivo
|
|
55
|
+
const impact = codebase.impact('src/auth/AuthService.ts');
|
|
56
|
+
console.log('Arquivos que dependem diretamente deste:', impact.direct);
|
|
57
|
+
console.log('Arquivos que dependem indiretamente deste:', impact.indirect);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
run();
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Referência da API Pública
|
|
66
|
+
|
|
67
|
+
### `Codebase.load(path: string, options?: CodebaseOptions): Promise<Codebase>`
|
|
68
|
+
Inicializa a instância, escaneando o diretório informado. `options.ignore` aceita um array de padrões glob para excluir arquivos.
|
|
69
|
+
|
|
70
|
+
### `codebase.analyze(): Promise<void>`
|
|
71
|
+
Analisa os arquivos descobertos e popula o Índice de Símbolos e o Grafo de Dependências internos. Deve ser chamado antes de consultar símbolos ou dependências.
|
|
72
|
+
|
|
73
|
+
### `codebase.files(): CodebaseFile[]`
|
|
74
|
+
Retorna todos os arquivos indexados do projeto.
|
|
75
|
+
|
|
76
|
+
### `codebase.symbols(): CodeSymbol[]`
|
|
77
|
+
Retorna todos os símbolos extraídos (classes, funções, interfaces, etc.) do projeto.
|
|
78
|
+
|
|
79
|
+
### `codebase.search(query: string, options?: SearchOptions): SearchResult[]`
|
|
80
|
+
Realiza uma busca léxica/estrutural por arquivos e símbolos que correspondam à consulta.
|
|
81
|
+
|
|
82
|
+
### `codebase.dependencies(file: string): string[]`
|
|
83
|
+
Retorna os arquivos dos quais o arquivo informado depende diretamente (imports).
|
|
84
|
+
|
|
85
|
+
### `codebase.dependents(file: string): string[]`
|
|
86
|
+
Retorna os arquivos que dependem diretamente do arquivo informado.
|
|
87
|
+
|
|
88
|
+
### `codebase.impact(file: string): ImpactResult`
|
|
89
|
+
Retorna `{ direct: string[], indirect: string[], tests: string[] }`, revelando o raio de impacto completo de uma alteração no arquivo informado.
|
|
90
|
+
|
|
91
|
+
### `codebase.impactOfFiles(paths: string[]): ChangeSetImpact`
|
|
92
|
+
Análise de impacto pura e síncrona sem consultar o Git. Trata todos os caminhos relativos fornecidos como `modificados` e resolve as suas dependências através do grafo.
|
|
93
|
+
|
|
94
|
+
```typescript
|
|
95
|
+
// O que é afetado se alterar utils.ts?
|
|
96
|
+
const impact = codebase.impactOfFiles(['src/utils.ts']);
|
|
97
|
+
console.log(impact.direct); // importadores diretos
|
|
98
|
+
console.log(impact.indirect); // dependentes transitivos
|
|
99
|
+
console.log(impact.tests); // arquivos de teste (por convenção)
|
|
100
|
+
console.log(impact.globalChanges); // arquivos globais (afetam tudo)
|
|
101
|
+
console.log(impact.unanalyzable); // arquivos não indexados e porquê
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### `codebase.impactOfChanges(options?, provider?): Promise<ChangeSetImpact>`
|
|
105
|
+
Consulta um `ChangeSetProvider` (Git por defeito) para determinar quais os arquivos alterados, mapeando-os para um `ChangeSetImpact`.
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
// Alterações introduzidas pela branch atual vs main:
|
|
109
|
+
const impact = await codebase.impactOfChanges({ since: 'main' });
|
|
110
|
+
|
|
111
|
+
// Apenas arquivos em stage:
|
|
112
|
+
const staged = await codebase.impactOfChanges({ staged: true });
|
|
113
|
+
|
|
114
|
+
// Todas as alterações não commitadas (incluindo arquivos untracked):
|
|
115
|
+
const uncommitted = await codebase.impactOfChanges();
|
|
116
|
+
|
|
117
|
+
// Provider personalizado (ex: API de PR do GitHub, mock de teste):
|
|
118
|
+
const impact = await codebase.impactOfChanges({}, meuProvider);
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**Formato de `ChangeSetImpact`:**
|
|
122
|
+
```typescript
|
|
123
|
+
{
|
|
124
|
+
changed: FileChange[]; // lista bruta do provider
|
|
125
|
+
direct: string[]; // arquivos que importam um arquivo alterado
|
|
126
|
+
indirect: string[]; // dependentes transitivos (excluindo direct)
|
|
127
|
+
tests: string[]; // arquivos de teste por convenção de nomes
|
|
128
|
+
globalChanges: string[]; // ex: package.json, tsconfig.json
|
|
129
|
+
unanalyzable: { path, reason }[]; // arquivos não rastreáveis
|
|
130
|
+
unresolvedDependencies: string[]; // imports impossíveis de resolver
|
|
131
|
+
metadata: { granularity: 'file'; base?: string; head?: string };
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
> ⚠️ **Nota sobre granularidade**: a análise opera na **granularidade de arquivo**. Uma alteração de uma linha marca *todos* os dependentes desse arquivo como potencialmente afetados. O resultado é um limite superior conservador.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Referência da CLI
|
|
140
|
+
|
|
141
|
+
O Codebase Intelligence vem com uma CLI para uso no terminal. O comando principal é `codebase-intelligence`, mas você também pode usar o alias mais curto **`cbi`** (CodeBase Intelligence) caso instale o pacote globalmente ou utilize em scripts do `package.json`.
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
# Analisa o diretório atual e exibe um resumo
|
|
145
|
+
npx @eduardo-afonso/codebase-intelligence analyze .
|
|
146
|
+
# ou, se instalado globalmente: cbi analyze .
|
|
147
|
+
|
|
148
|
+
# Busca por um símbolo específico
|
|
149
|
+
npx @eduardo-afonso/codebase-intelligence search "UserService" .
|
|
150
|
+
|
|
151
|
+
# Exibe as dependências de um arquivo
|
|
152
|
+
npx @eduardo-afonso/codebase-intelligence dependencies "src/auth/AuthService.ts" .
|
|
153
|
+
|
|
154
|
+
# Exibe o que depende de um arquivo
|
|
155
|
+
npx @eduardo-afonso/codebase-intelligence dependents "src/auth/AuthService.ts" .
|
|
156
|
+
|
|
157
|
+
# ── Análise de Impacto ──────────────────────────────────────────────────
|
|
158
|
+
|
|
159
|
+
# Modo de arquivo clássico: impacto de um único arquivo
|
|
160
|
+
npx @eduardo-afonso/codebase-intelligence impact src/auth/AuthService.ts .
|
|
161
|
+
|
|
162
|
+
# Modo Diff: o que afetam as mudanças desde a branch main? (comparação merge-base)
|
|
163
|
+
npx @eduardo-afonso/codebase-intelligence impact . --since main
|
|
164
|
+
|
|
165
|
+
# Modo Diff: apenas arquivos em stage
|
|
166
|
+
npx @eduardo-afonso/codebase-intelligence impact . --staged
|
|
167
|
+
|
|
168
|
+
# Modo Diff: todas as alterações não commitadas + arquivos untracked
|
|
169
|
+
npx @eduardo-afonso/codebase-intelligence impact . --uncommitted
|
|
170
|
+
|
|
171
|
+
# Saída em JSON (limpo em stdout, ideal para scripts)
|
|
172
|
+
npx @eduardo-afonso/codebase-intelligence impact . --since main --format json
|
|
173
|
+
|
|
174
|
+
# Imprime apenas caminhos de testes relacionados — útil em CI
|
|
175
|
+
npx @eduardo-afonso/codebase-intelligence impact . --since main --tests-only
|
|
176
|
+
|
|
177
|
+
# ── Context Engine & Chunking ────────────────────────────────────────────
|
|
178
|
+
|
|
179
|
+
# Gera um payload de contexto pronto para LLMs para um arquivo (incluindo dependências)
|
|
180
|
+
npx @eduardo-afonso/codebase-intelligence context "src/auth/AuthService.ts" --strategy signature .
|
|
181
|
+
|
|
182
|
+
# Gera chunks semânticos para a base de código
|
|
183
|
+
npx @eduardo-afonso/codebase-intelligence chunks . --max-tokens 512
|
|
184
|
+
|
|
185
|
+
# Estima o uso de tokens de toda a base de código
|
|
186
|
+
npx @eduardo-afonso/codebase-intelligence tokens .
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Visão Geral da Arquitetura
|
|
192
|
+
|
|
193
|
+
O Codebase Intelligence é projetado em camadas modulares para permitir extensibilidade futura (por exemplo, adicionar parsers de C# ou Python):
|
|
194
|
+
|
|
195
|
+
1. **Camada de Descoberta**: Responsável por encontrar arquivos (`FileScanner`) e detectar propriedades do projeto (`ProjectDetector`).
|
|
196
|
+
2. **Camada de Análise**: Contém os parsers (`TypeScriptParser`) que transformam código bruto em objetos estruturados `CodeSymbol` e `CodeDependency`.
|
|
197
|
+
3. **Camada de Conhecimento**: Indexa os dados para recuperação rápida (`SymbolIndex`, `FileIndex`, `DependencyGraph`).
|
|
198
|
+
|
|
199
|
+
Para detalhes arquiteturais mais profundos, veja [docs/architecture.md](docs/architecture.md).
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Roadmap
|
|
204
|
+
|
|
205
|
+
A versão atual estabelece a análise estrutural determinística de uma base de código, inclui o **Context Engine** para chunking semântico e pipelines de RAG, e agora inclui **Análise de Impacto de Diferenças (Diff Impact)** para as alterações no Git. Versões futuras irão introduzir:
|
|
206
|
+
|
|
207
|
+
- **Adaptadores de IA**: Implementações concretas para conectar LLMs externos (OpenAI, Anthropic, Gemini, Ollama) e Vector Stores (Qdrant, Chroma).
|
|
208
|
+
- **Suporte Multi-linguagem**: Expansão do `ParserRegistry` para suportar Python, Go e C#.
|
|
209
|
+
- **Granularidade a nível de Símbolo**: Reduzindo a análise de impacto ao nível do arquivo para os símbolos especificamente alterados.
|
|
210
|
+
- **Indexação Incremental**: Evita a re-análise completa a cada execução detetando arquivos alterados da cache.
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Contribuindo
|
|
215
|
+
|
|
216
|
+
Contribuições são bem-vindas. Por favor, certifique-se de que você:
|
|
217
|
+
1. Discuta mudanças arquiteturais importantes em uma issue primeiro.
|
|
218
|
+
2. Garanta que todos os testes passem (`npm run test:run`).
|
|
219
|
+
3. Garanta que não haja erros de tipo (`npm run typecheck`).
|
|
220
|
+
4. Evite introduzir dependências desnecessárias. A biblioteca principal busca permanecer leve.
|
|
221
|
+
|
|
222
|
+
## Licença
|
|
223
|
+
|
|
223
224
|
Licença ISC. Veja o arquivo `LICENSE` para mais detalhes.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eduardo-afonso/codebase-intelligence",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.2",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
}
|
|
15
15
|
},
|
|
16
16
|
"bin": {
|
|
17
|
-
"codebase-intelligence": "./dist/cli/index.js"
|
|
17
|
+
"codebase-intelligence": "./dist/cli/index.js",
|
|
18
|
+
"cbi": "./dist/cli/index.js"
|
|
18
19
|
},
|
|
19
20
|
"files": [
|
|
20
21
|
"dist"
|