@justmpm/ai-tool 0.3.1 → 0.4.0
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 +136 -79
- package/dist/{chunk-4HXWM7PK.js → chunk-33DHCY2H.js} +1416 -31
- package/dist/cli.js +42 -8
- package/dist/index.d.ts +249 -2
- package/dist/index.js +49 -3
- package/dist/{server-YV4BWISA.js → server-62WVGNJD.js} +246 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -1,29 +1,27 @@
|
|
|
1
1
|
# ai-tool
|
|
2
2
|
|
|
3
|
-
Ferramenta de
|
|
3
|
+
Ferramenta de analise de dependencias e impacto para projetos TypeScript/JavaScript.
|
|
4
4
|
|
|
5
|
-
Usa [Skott](https://github.com/antoine-coulon/skott) + [Knip](https://knip.dev)
|
|
5
|
+
Usa [Skott](https://github.com/antoine-coulon/skott) + [Knip](https://knip.dev) + [ts-morph](https://ts-morph.com) internamente.
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## Instalacao
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
10
|
# Via npx (sem instalar)
|
|
11
|
-
npx ai-tool map
|
|
12
|
-
npx ai-tool dead
|
|
13
|
-
npx ai-tool impact Button
|
|
11
|
+
npx @justmpm/ai-tool map
|
|
14
12
|
|
|
15
13
|
# Ou instalar globalmente
|
|
16
|
-
npm install -g ai-tool
|
|
14
|
+
npm install -g @justmpm/ai-tool
|
|
17
15
|
|
|
18
16
|
# Ou como devDependency
|
|
19
|
-
npm install -D ai-tool
|
|
17
|
+
npm install -D @justmpm/ai-tool
|
|
20
18
|
```
|
|
21
19
|
|
|
22
20
|
## Comandos
|
|
23
21
|
|
|
24
22
|
### `map` - Mapa do Projeto
|
|
25
23
|
|
|
26
|
-
Gera um mapa completo do projeto com
|
|
24
|
+
Gera um mapa completo do projeto com categorizacao de arquivos.
|
|
27
25
|
|
|
28
26
|
```bash
|
|
29
27
|
ai-tool map
|
|
@@ -32,13 +30,13 @@ ai-tool map --format=json
|
|
|
32
30
|
|
|
33
31
|
**Output:**
|
|
34
32
|
- Total de arquivos e pastas
|
|
35
|
-
-
|
|
33
|
+
- Categorizacao automatica (component, hook, service, util, etc.)
|
|
36
34
|
- Estrutura de pastas
|
|
37
|
-
-
|
|
35
|
+
- Dependencias circulares detectadas
|
|
38
36
|
|
|
39
|
-
### `dead` -
|
|
37
|
+
### `dead` - Codigo Morto
|
|
40
38
|
|
|
41
|
-
Detecta arquivos, exports e
|
|
39
|
+
Detecta arquivos, exports e dependencias nao utilizados.
|
|
42
40
|
|
|
43
41
|
```bash
|
|
44
42
|
ai-tool dead
|
|
@@ -47,13 +45,13 @@ ai-tool dead --fix # Remove automaticamente
|
|
|
47
45
|
```
|
|
48
46
|
|
|
49
47
|
**Detecta:**
|
|
50
|
-
- Arquivos
|
|
51
|
-
- Exports
|
|
52
|
-
-
|
|
48
|
+
- Arquivos orfaos (ninguem importa)
|
|
49
|
+
- Exports nao utilizados
|
|
50
|
+
- Dependencias npm nao usadas
|
|
53
51
|
|
|
54
|
-
### `impact` -
|
|
52
|
+
### `impact` - Analise de Impacto
|
|
55
53
|
|
|
56
|
-
Analisa o impacto de modificar um arquivo
|
|
54
|
+
Analisa o impacto de modificar um arquivo especifico.
|
|
57
55
|
|
|
58
56
|
```bash
|
|
59
57
|
ai-tool impact Button
|
|
@@ -62,100 +60,159 @@ ai-tool impact useAuth --format=json
|
|
|
62
60
|
```
|
|
63
61
|
|
|
64
62
|
**Output:**
|
|
65
|
-
- **Upstream**: Quem importa este arquivo (afetados por
|
|
66
|
-
- **Downstream**: O que este arquivo importa (
|
|
67
|
-
- **Riscos**: Arquivo
|
|
68
|
-
- **
|
|
63
|
+
- **Upstream**: Quem importa este arquivo (afetados por mudancas)
|
|
64
|
+
- **Downstream**: O que este arquivo importa (dependencias)
|
|
65
|
+
- **Riscos**: Arquivo critico, dependencias circulares, etc.
|
|
66
|
+
- **Sugestoes**: Recomendacoes para modificacao segura
|
|
69
67
|
|
|
70
|
-
|
|
68
|
+
### `suggest` - Sugestao de Leitura
|
|
69
|
+
|
|
70
|
+
Sugere arquivos para ler ANTES de modificar um arquivo.
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
ai-tool suggest Button
|
|
74
|
+
ai-tool suggest src/hooks/useAuth.ts --limit=5
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**Prioridades:**
|
|
78
|
+
- **Critical**: Tipos/interfaces usados pelo arquivo
|
|
79
|
+
- **High**: Dependencias diretas (imports)
|
|
80
|
+
- **Medium**: Upstream (quem usa o arquivo)
|
|
81
|
+
- **Low**: Testes relacionados
|
|
82
|
+
|
|
83
|
+
### `context` - Contexto do Arquivo
|
|
84
|
+
|
|
85
|
+
Extrai assinaturas de funcoes e tipos SEM a implementacao.
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
ai-tool context Button
|
|
89
|
+
ai-tool context src/hooks/useAuth.ts --format=json
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
**Extrai:**
|
|
93
|
+
- Imports com specifiers
|
|
94
|
+
- Exports do arquivo
|
|
95
|
+
- Funcoes com parametros e tipos de retorno
|
|
96
|
+
- Interfaces, types e enums com definicoes
|
|
97
|
+
|
|
98
|
+
Ideal para entender rapidamente a API publica de um arquivo.
|
|
99
|
+
|
|
100
|
+
## Servidor MCP
|
|
101
|
+
|
|
102
|
+
Integra com Claude Desktop e outras ferramentas MCP.
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
ai-tool --mcp
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Tools expostas:**
|
|
109
|
+
- `aitool_project_map` - Mapa do projeto
|
|
110
|
+
- `aitool_dead_code` - Codigo morto
|
|
111
|
+
- `aitool_impact_analysis` - Analise de impacto
|
|
112
|
+
- `aitool_suggest_reads` - Sugestao de leitura
|
|
113
|
+
- `aitool_file_context` - Contexto do arquivo
|
|
114
|
+
|
|
115
|
+
### Configuracao Claude Code
|
|
116
|
+
|
|
117
|
+
Adicione ao `.mcp.json` do projeto ou ao arquivo global `~/.claude/settings.json`:
|
|
118
|
+
|
|
119
|
+
```json
|
|
120
|
+
{
|
|
121
|
+
"mcpServers": {
|
|
122
|
+
"analyze": {
|
|
123
|
+
"command": "npx",
|
|
124
|
+
"args": ["-y", "@justmpm/ai-tool", "--mcp"]
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Configuracao Claude Desktop
|
|
131
|
+
|
|
132
|
+
Adicione ao `claude_desktop_config.json`:
|
|
133
|
+
|
|
134
|
+
**Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
|
|
135
|
+
**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
136
|
+
|
|
137
|
+
```json
|
|
138
|
+
{
|
|
139
|
+
"mcpServers": {
|
|
140
|
+
"analyze": {
|
|
141
|
+
"command": "npx",
|
|
142
|
+
"args": ["-y", "@justmpm/ai-tool", "--mcp"]
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Uso Programatico
|
|
71
149
|
|
|
72
150
|
```typescript
|
|
73
|
-
import { map, dead, impact } from "ai-tool";
|
|
151
|
+
import { map, dead, impact, suggest, context } from "@justmpm/ai-tool";
|
|
74
152
|
|
|
75
153
|
// Mapa do projeto
|
|
76
154
|
const projectMap = await map({ format: "json" });
|
|
77
155
|
|
|
78
|
-
//
|
|
156
|
+
// Codigo morto
|
|
79
157
|
const deadCode = await dead({ format: "json" });
|
|
80
158
|
|
|
81
|
-
//
|
|
82
|
-
const analysis = await impact("
|
|
83
|
-
|
|
84
|
-
|
|
159
|
+
// Analise de impacto
|
|
160
|
+
const analysis = await impact("Button", { format: "json" });
|
|
161
|
+
|
|
162
|
+
// Sugestao de leitura
|
|
163
|
+
const suggestions = await suggest("Button", { limit: 5 });
|
|
164
|
+
|
|
165
|
+
// Contexto do arquivo
|
|
166
|
+
const fileContext = await context("Button", { format: "json" });
|
|
85
167
|
```
|
|
86
168
|
|
|
87
|
-
##
|
|
169
|
+
## Opcoes
|
|
88
170
|
|
|
89
|
-
|
|
|
171
|
+
| Opcao | Descricao | Default |
|
|
90
172
|
|-------|-----------|---------|
|
|
91
|
-
| `--format=text\|json` | Formato de
|
|
92
|
-
| `--cwd=<path>` |
|
|
93
|
-
| `--
|
|
173
|
+
| `--format=text\|json` | Formato de saida | `text` |
|
|
174
|
+
| `--cwd=<path>` | Diretorio do projeto | `process.cwd()` |
|
|
175
|
+
| `--no-cache` | Ignora cache | `false` |
|
|
176
|
+
| `--fix` | Remove codigo morto (so `dead`) | `false` |
|
|
177
|
+
| `--limit=<n>` | Limite de sugestoes (so `suggest`) | `10` |
|
|
178
|
+
| `--mcp` | Inicia servidor MCP | - |
|
|
94
179
|
|
|
95
180
|
## Categorias de Arquivos
|
|
96
181
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
| Categoria | Descrição |
|
|
182
|
+
| Categoria | Descricao |
|
|
100
183
|
|-----------|-----------|
|
|
101
|
-
| `page` |
|
|
184
|
+
| `page` | Paginas (Next.js, etc.) |
|
|
102
185
|
| `layout` | Layouts |
|
|
103
186
|
| `route` | Rotas de API |
|
|
104
187
|
| `component` | Componentes React/Vue |
|
|
105
188
|
| `hook` | React Hooks |
|
|
106
|
-
| `service` |
|
|
107
|
-
| `store` | Estado global
|
|
108
|
-
| `util` |
|
|
189
|
+
| `service` | Servicos/API |
|
|
190
|
+
| `store` | Estado global |
|
|
191
|
+
| `util` | Utilitarios |
|
|
109
192
|
| `type` | Tipos TypeScript |
|
|
110
|
-
| `config` |
|
|
193
|
+
| `config` | Configuracoes |
|
|
111
194
|
| `test` | Testes |
|
|
112
195
|
| `other` | Outros |
|
|
113
196
|
|
|
114
|
-
##
|
|
197
|
+
## Cache
|
|
115
198
|
|
|
116
|
-
|
|
199
|
+
Resultados sao salvos em `.analyze/` para acelerar execucoes futuras.
|
|
117
200
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
import { tool } from "@opencode-ai/plugin";
|
|
122
|
-
import { execSync } from "child_process";
|
|
123
|
-
|
|
124
|
-
export default tool({
|
|
125
|
-
description: `Analisa dependências e impacto do projeto.
|
|
126
|
-
|
|
127
|
-
COMANDOS:
|
|
128
|
-
- map: Mapa do projeto
|
|
129
|
-
- dead: Código morto
|
|
130
|
-
- impact <arquivo>: Análise de impacto`,
|
|
131
|
-
|
|
132
|
-
args: {
|
|
133
|
-
command: tool.schema.enum(["map", "dead", "impact"]),
|
|
134
|
-
target: tool.schema.string().optional(),
|
|
135
|
-
format: tool.schema.enum(["text", "json"]).optional()
|
|
136
|
-
},
|
|
137
|
-
|
|
138
|
-
async execute({ command, target, format }) {
|
|
139
|
-
const fmt = format || "text";
|
|
140
|
-
const cmd = target
|
|
141
|
-
? `npx ai-tool ${command} "${target}" --format=${fmt}`
|
|
142
|
-
: `npx ai-tool ${command} --format=${fmt}`;
|
|
143
|
-
|
|
144
|
-
return execSync(cmd, { encoding: "utf-8" });
|
|
145
|
-
}
|
|
146
|
-
});
|
|
147
|
-
```
|
|
201
|
+
- Cache e invalidado automaticamente quando arquivos mudam
|
|
202
|
+
- Use `--no-cache` para forcar regeneracao
|
|
203
|
+
- Adicione `.analyze/` ao `.gitignore`
|
|
148
204
|
|
|
149
205
|
## Requisitos
|
|
150
206
|
|
|
151
207
|
- Node.js >= 18.0.0
|
|
152
|
-
- TypeScript/JavaScript
|
|
208
|
+
- Projeto TypeScript/JavaScript
|
|
153
209
|
|
|
154
|
-
##
|
|
210
|
+
## Creditos
|
|
155
211
|
|
|
156
|
-
- [Skott](https://github.com/antoine-coulon/skott) -
|
|
157
|
-
- [Knip](https://knip.dev) -
|
|
212
|
+
- [Skott](https://github.com/antoine-coulon/skott) - Analise de dependencias
|
|
213
|
+
- [Knip](https://knip.dev) - Deteccao de codigo morto
|
|
214
|
+
- [ts-morph](https://ts-morph.com) - Analise AST
|
|
158
215
|
|
|
159
|
-
##
|
|
216
|
+
## Licenca
|
|
160
217
|
|
|
161
218
|
MIT - [Koda AI Studio](https://kodaai.app)
|