@gilbert_oliveira/commit-wizard 1.2.1 → 2.0.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.
@@ -1,156 +0,0 @@
1
- /**
2
- * Serviço para interação com APIs de IA
3
- */
4
- export class AIService {
5
- constructor(config) {
6
- this.config = config;
7
- }
8
- /**
9
- * Gera prompt do sistema baseado no modo e linguagem
10
- */
11
- getSystemPrompt(mode) {
12
- const isPortuguese = this.config.language === 'pt';
13
- if (mode === 'commit') {
14
- return isPortuguese
15
- ? 'Você é um assistente que gera mensagens de commit seguindo a convenção do Conventional Commits. Use linguagem imperativa em português.'
16
- : 'You are an assistant that generates commit messages following the Conventional Commits convention. Use imperative language in English.';
17
- }
18
- return isPortuguese
19
- ? 'Você é um assistente que resume alterações de código de forma breve, usando linguagem imperativa em português.'
20
- : 'You are an assistant that summarizes code changes briefly, using imperative language in English.';
21
- }
22
- /**
23
- * Gera prompt para mensagem de commit
24
- */
25
- getCommitPrompt() {
26
- const isPortuguese = this.config.language === 'pt';
27
- if (isPortuguese) {
28
- return `
29
- Por favor, escreva a mensagem de commit para este diff usando a convenção de Conventional Commits.
30
- A mensagem deve começar com um tipo de commit, como:
31
- feat: para novas funcionalidades
32
- fix: para correções de bugs
33
- chore: para alterações que não afetam a funcionalidade
34
- docs: para mudanças na documentação
35
- style: para alterações no estilo do código (formatação)
36
- refactor: para alterações no código que não alteram a funcionalidade
37
- perf: para melhorias de desempenho
38
- test: para alterações nos testes
39
- ci: para mudanças no pipeline de integração contínua
40
-
41
- ${this.config.includeEmoji ? 'Inclua emojis apropriados no início da mensagem.' : 'Não inclua emojis na mensagem.'}
42
-
43
- Para breaking changes, use "!" após o tipo: feat!(auth): reestruturar fluxo de login
44
-
45
- Use sempre linguagem imperativa, como:
46
- - "adiciona recurso"
47
- - "corrige bug"
48
- - "remove arquivo"
49
-
50
- Mantenha a mensagem concisa mas informativa.
51
- `;
52
- }
53
- return `
54
- Please write the commit message for this diff using the Conventional Commits convention.
55
- The message should start with a commit type, such as:
56
- feat: for new features
57
- fix: for bug fixes
58
- chore: for changes that don't affect functionality
59
- docs: for documentation changes
60
- style: for code style changes (formatting)
61
- refactor: for code changes that don't alter functionality
62
- perf: for performance improvements
63
- test: for test changes
64
- ci: for CI pipeline changes
65
-
66
- ${this.config.includeEmoji ? 'Include appropriate emojis at the beginning of the message.' : 'Do not include emojis in the message.'}
67
-
68
- For breaking changes, use "!" after the type: feat!(auth): restructure login flow
69
-
70
- Always use imperative language, such as:
71
- - "add feature"
72
- - "fix bug"
73
- - "remove file"
74
-
75
- Keep the message concise but informative.
76
- `;
77
- }
78
- /**
79
- * Realiza chamada para a API da OpenAI
80
- */
81
- async callOpenAI(prompt, mode = 'commit') {
82
- if (!this.config.apiKey) {
83
- throw new Error('API key da OpenAI não configurada');
84
- }
85
- const url = 'https://api.openai.com/v1/chat/completions';
86
- const systemPrompt = this.getSystemPrompt(mode);
87
- const fullPrompt = mode === 'commit' ? `${this.getCommitPrompt()}\n\nDiff:\n\n${prompt}` : prompt;
88
- const body = {
89
- model: this.config.model,
90
- messages: [
91
- { role: 'system', content: systemPrompt },
92
- { role: 'user', content: fullPrompt },
93
- ],
94
- temperature: this.config.temperature,
95
- max_tokens: 500, // Limite para mensagens de commit
96
- };
97
- try {
98
- // Timeout de 30 segundos para evitar travamentos
99
- const controller = new AbortController();
100
- const timeoutId = globalThis.setTimeout(() => controller.abort(), 30000);
101
- const response = await globalThis.fetch(url, {
102
- method: 'POST',
103
- headers: {
104
- 'Content-Type': 'application/json',
105
- Authorization: `Bearer ${this.config.apiKey}`,
106
- },
107
- body: JSON.stringify(body),
108
- signal: controller.signal,
109
- });
110
- globalThis.clearTimeout(timeoutId);
111
- if (!response.ok) {
112
- const errorData = await response.json().catch(() => ({}));
113
- throw new Error(`Erro na API OpenAI (${response.status}): ${errorData.error?.message || response.statusText}`);
114
- }
115
- const data = await response.json();
116
- return {
117
- content: data.choices[0].message.content.trim().replace(/```/g, ''),
118
- usage: data.usage
119
- ? {
120
- promptTokens: data.usage.prompt_tokens,
121
- completionTokens: data.usage.completion_tokens,
122
- totalTokens: data.usage.total_tokens,
123
- }
124
- : undefined,
125
- };
126
- }
127
- catch (error) {
128
- if (error instanceof Error) {
129
- if (error.name === 'AbortError') {
130
- throw new Error('Timeout: A requisição demorou mais de 30 segundos. Tente reduzir o tamanho do diff ou verificar sua conexão.');
131
- }
132
- throw error;
133
- }
134
- throw new Error(`Erro desconhecido ao chamar API: ${error}`);
135
- }
136
- }
137
- /**
138
- * Gera resumo de um chunk de diff
139
- */
140
- async generateSummary(chunk) {
141
- const isPortuguese = this.config.language === 'pt';
142
- const summaryPrefix = isPortuguese
143
- ? 'A partir do diff abaixo, extraia um resumo breve das alterações (use linguagem imperativa):'
144
- : 'From the diff below, extract a brief summary of the changes (use imperative language):';
145
- const prompt = `${summaryPrefix}\n\n${chunk}`;
146
- const response = await this.callOpenAI(prompt, 'summary');
147
- return response.content;
148
- }
149
- /**
150
- * Gera mensagem de commit baseada no diff ou resumo
151
- */
152
- async generateCommitMessage(diffOrSummary) {
153
- return this.callOpenAI(diffOrSummary, 'commit');
154
- }
155
- }
156
- //# sourceMappingURL=ai-service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ai-service.js","sourceRoot":"","sources":["../src/ai-service.ts"],"names":[],"mappings":"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"}
@@ -1,48 +0,0 @@
1
- import { GitUtils } from './git-utils.js';
2
- import { Config } from './config.js';
3
- export interface CommitGroup {
4
- id: string;
5
- type: 'feat' | 'fix' | 'docs' | 'style' | 'refactor' | 'test' | 'chore' | 'ci';
6
- emoji: string;
7
- description: string;
8
- files: string[];
9
- diff: string;
10
- priority: number;
11
- }
12
- export interface SplitCommitResult {
13
- groups: CommitGroup[];
14
- totalFiles: number;
15
- suggestedOrder: string[];
16
- }
17
- /**
18
- * Serviço para dividir commits grandes em commits menores e organizados
19
- */
20
- export declare class CommitSplitter {
21
- private gitUtils;
22
- private config;
23
- constructor(gitUtils: GitUtils, config: Config);
24
- /**
25
- * Analisa um arquivo e determina seu contexto/tipo
26
- */
27
- private analyzeFileContext;
28
- /**
29
- * Obtém emoji e prioridade para cada tipo de commit
30
- */
31
- private getCommitTypeInfo;
32
- /**
33
- * Agrupa arquivos relacionados por similaridade de caminho
34
- */
35
- private groupRelatedFiles;
36
- /**
37
- * Divide o diff atual em grupos de commits organizados
38
- */
39
- analyzeAndSplit(): Promise<SplitCommitResult>;
40
- /**
41
- * Gera descrição inteligente para um grupo de arquivos
42
- */
43
- private generateGroupDescription;
44
- /**
45
- * Encontra diretório comum de uma lista de arquivos
46
- */
47
- private findCommonDirectory;
48
- }
@@ -1,227 +0,0 @@
1
- import chalk from 'chalk';
2
- /**
3
- * Serviço para dividir commits grandes em commits menores e organizados
4
- */
5
- export class CommitSplitter {
6
- constructor(gitUtils, config) {
7
- this.gitUtils = gitUtils;
8
- this.config = config;
9
- }
10
- /**
11
- * Analisa um arquivo e determina seu contexto/tipo
12
- */
13
- analyzeFileContext(filePath, diff) {
14
- const fileName = filePath.toLowerCase();
15
- const diffContent = diff.toLowerCase();
16
- // Testes
17
- if (fileName.includes('test') || fileName.includes('spec') || fileName.includes('__tests__')) {
18
- return 'test';
19
- }
20
- // Documentação
21
- if (fileName.includes('readme') ||
22
- fileName.includes('.md') ||
23
- fileName.includes('docs/') ||
24
- fileName.includes('changelog')) {
25
- return 'docs';
26
- }
27
- // CI/CD
28
- if (fileName.includes('.github/') ||
29
- fileName.includes('ci.yml') ||
30
- fileName.includes('workflow') ||
31
- fileName.includes('pipeline')) {
32
- return 'ci';
33
- }
34
- // Configuração/Build
35
- if (fileName.includes('package.json') ||
36
- fileName.includes('tsconfig') ||
37
- fileName.includes('eslint') ||
38
- fileName.includes('.config') ||
39
- fileName.includes('jest.config') ||
40
- fileName.includes('.gitignore')) {
41
- return 'chore';
42
- }
43
- // Estilos (CSS, formatação)
44
- if (fileName.includes('.css') ||
45
- fileName.includes('.scss') ||
46
- fileName.includes('style') ||
47
- diffContent.includes('prettier') ||
48
- diffContent.includes('format')) {
49
- return 'style';
50
- }
51
- // Análise do conteúdo do diff
52
- if (diffContent.includes('fix') ||
53
- diffContent.includes('bug') ||
54
- diffContent.includes('error') ||
55
- diffContent.includes('throw') ||
56
- diffContent.includes('catch')) {
57
- return 'fix';
58
- }
59
- if (diffContent.includes('refactor') ||
60
- diffContent.includes('rename') ||
61
- diffContent.includes('move') ||
62
- diffContent.includes('extract') ||
63
- diffContent.includes('reorganiz')) {
64
- return 'refactor';
65
- }
66
- // Por padrão, considera como nova funcionalidade
67
- return 'feat';
68
- }
69
- /**
70
- * Obtém emoji e prioridade para cada tipo de commit
71
- */
72
- getCommitTypeInfo(type) {
73
- const typeMap = {
74
- fix: { emoji: '🐛', priority: 1 },
75
- test: { emoji: '🧪', priority: 2 },
76
- docs: { emoji: '📚', priority: 3 },
77
- chore: { emoji: '🔧', priority: 4 },
78
- style: { emoji: '💄', priority: 5 },
79
- refactor: { emoji: '♻️', priority: 6 },
80
- feat: { emoji: '✨', priority: 7 },
81
- ci: { emoji: '🔄', priority: 8 },
82
- };
83
- return typeMap[type];
84
- }
85
- /**
86
- * Agrupa arquivos relacionados por similaridade de caminho
87
- */
88
- groupRelatedFiles(files) {
89
- const groups = [];
90
- const processed = new Set();
91
- for (const file of files) {
92
- if (processed.has(file))
93
- continue;
94
- const group = [file];
95
- processed.add(file);
96
- const fileDir = file.split('/').slice(0, -1).join('/');
97
- const fileName = file.split('/').pop()?.split('.')[0] || '';
98
- // Procura arquivos relacionados
99
- for (const otherFile of files) {
100
- if (processed.has(otherFile) || otherFile === file)
101
- continue;
102
- const otherDir = otherFile.split('/').slice(0, -1).join('/');
103
- const otherName = otherFile.split('/').pop()?.split('.')[0] || '';
104
- // Mesmo diretório ou nomes similares
105
- if (fileDir === otherDir ||
106
- fileName === otherName ||
107
- otherName.includes(fileName) ||
108
- fileName.includes(otherName)) {
109
- group.push(otherFile);
110
- processed.add(otherFile);
111
- }
112
- }
113
- groups.push(group);
114
- }
115
- return groups;
116
- }
117
- /**
118
- * Divide o diff atual em grupos de commits organizados
119
- */
120
- async analyzeAndSplit() {
121
- console.log(chalk.blue('\n🔍 Analisando mudanças para dividir em commits...'));
122
- const changedFiles = this.gitUtils.getChangedFiles();
123
- if (changedFiles.length === 0) {
124
- throw new Error('Nenhuma mudança detectada para commit');
125
- }
126
- console.log(chalk.gray(`📁 Arquivos alterados: ${changedFiles.length}`));
127
- // Agrupa arquivos por contexto
128
- const contextGroups = new Map();
129
- for (const file of changedFiles) {
130
- const fileDiff = this.gitUtils.getFileDiff(file);
131
- const context = this.analyzeFileContext(file, fileDiff);
132
- const key = context;
133
- if (!contextGroups.has(key)) {
134
- contextGroups.set(key, { files: [], type: context });
135
- }
136
- contextGroups.get(key).files.push(file);
137
- }
138
- // Cria grupos de commit
139
- const commitGroups = [];
140
- let groupId = 1;
141
- for (const [, group] of contextGroups) {
142
- const { emoji, priority } = this.getCommitTypeInfo(group.type);
143
- // Subdivide grupos grandes por arquivos relacionados
144
- const relatedGroups = this.groupRelatedFiles(group.files);
145
- for (const relatedFiles of relatedGroups) {
146
- const groupDiff = relatedFiles.map(file => this.gitUtils.getFileDiff(file)).join('\n\n');
147
- commitGroups.push({
148
- id: `group-${groupId++}`,
149
- type: group.type,
150
- emoji,
151
- description: await this.generateGroupDescription(relatedFiles, group.type),
152
- files: relatedFiles,
153
- diff: groupDiff,
154
- priority,
155
- });
156
- }
157
- }
158
- // Ordena por prioridade e complexidade
159
- commitGroups.sort((a, b) => {
160
- if (a.priority !== b.priority)
161
- return a.priority - b.priority;
162
- return a.files.length - b.files.length;
163
- });
164
- const suggestedOrder = commitGroups.map(g => g.id);
165
- return {
166
- groups: commitGroups,
167
- totalFiles: changedFiles.length,
168
- suggestedOrder,
169
- };
170
- }
171
- /**
172
- * Gera descrição inteligente para um grupo de arquivos
173
- */
174
- async generateGroupDescription(files, type) {
175
- const isPortuguese = this.config.language === 'pt';
176
- // Descrições padrão por tipo
177
- const defaultDescriptions = {
178
- feat: isPortuguese ? 'adiciona nova funcionalidade' : 'add new feature',
179
- fix: isPortuguese ? 'corrige bug' : 'fix bug',
180
- docs: isPortuguese ? 'atualiza documentação' : 'update documentation',
181
- style: isPortuguese ? 'melhora formatação do código' : 'improve code formatting',
182
- refactor: isPortuguese ? 'refatora código' : 'refactor code',
183
- test: isPortuguese ? 'adiciona/atualiza testes' : 'add/update tests',
184
- chore: isPortuguese ? 'atualiza configurações' : 'update configuration',
185
- ci: isPortuguese ? 'atualiza CI/CD' : 'update CI/CD',
186
- };
187
- // Se apenas um arquivo, usa nome específico
188
- if (files.length === 1) {
189
- const fileName = files[0].split('/').pop() || '';
190
- return isPortuguese
191
- ? `${defaultDescriptions[type]} em ${fileName}`
192
- : `${defaultDescriptions[type]} in ${fileName}`;
193
- }
194
- // Se múltiplos arquivos do mesmo diretório
195
- const commonDir = this.findCommonDirectory(files);
196
- if (commonDir) {
197
- return isPortuguese
198
- ? `${defaultDescriptions[type]} em ${commonDir}`
199
- : `${defaultDescriptions[type]} in ${commonDir}`;
200
- }
201
- // Descrição genérica
202
- return defaultDescriptions[type];
203
- }
204
- /**
205
- * Encontra diretório comum de uma lista de arquivos
206
- */
207
- findCommonDirectory(files) {
208
- if (files.length === 0)
209
- return null;
210
- const dirs = files.map(f => f.split('/').slice(0, -1));
211
- if (dirs.length === 1)
212
- return dirs[0].join('/');
213
- const commonParts = [];
214
- const minLength = Math.min(...dirs.map(d => d.length));
215
- for (let i = 0; i < minLength; i++) {
216
- const part = dirs[0][i];
217
- if (dirs.every(d => d[i] === part)) {
218
- commonParts.push(part);
219
- }
220
- else {
221
- break;
222
- }
223
- }
224
- return commonParts.length > 0 ? commonParts.join('/') : null;
225
- }
226
- }
227
- //# sourceMappingURL=commit-splitter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"commit-splitter.js","sourceRoot":"","sources":["../src/commit-splitter.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts DELETED
@@ -1,22 +0,0 @@
1
- export interface Config {
2
- apiKey?: string;
3
- model: string;
4
- temperature: number;
5
- maxTokens: number;
6
- language: 'pt' | 'en';
7
- autoCommit: boolean;
8
- excludePatterns: string[];
9
- includeEmoji: boolean;
10
- }
11
- /**
12
- * Carrega a configuração mesclando defaults com arquivo de config
13
- */
14
- export declare function loadConfig(): Config;
15
- /**
16
- * Salva a configuração no arquivo local ou global
17
- */
18
- export declare function saveConfig(config: Partial<Config>, global?: boolean): void;
19
- /**
20
- * Cria um arquivo de configuração exemplo
21
- */
22
- export declare function createConfigExample(): void;
package/dist/config.js DELETED
@@ -1,84 +0,0 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- import os from 'os';
4
- const DEFAULT_CONFIG = {
5
- model: 'gpt-4o',
6
- temperature: 0.2,
7
- maxTokens: 1000,
8
- language: 'pt',
9
- autoCommit: false,
10
- excludePatterns: ['*.lock*', '*.log', 'node_modules/**'],
11
- includeEmoji: true,
12
- };
13
- const CONFIG_FILE_NAME = '.commit-wizard.json';
14
- /**
15
- * Busca o arquivo de configuração no diretório atual ou no home do usuário
16
- */
17
- function findConfigFile() {
18
- // Primeiro verifica no diretório atual
19
- const localConfig = path.join(process.cwd(), CONFIG_FILE_NAME);
20
- if (fs.existsSync(localConfig)) {
21
- return localConfig;
22
- }
23
- // Depois verifica no home do usuário
24
- const globalConfig = path.join(os.homedir(), CONFIG_FILE_NAME);
25
- if (fs.existsSync(globalConfig)) {
26
- return globalConfig;
27
- }
28
- return null;
29
- }
30
- /**
31
- * Carrega a configuração mesclando defaults com arquivo de config
32
- */
33
- export function loadConfig() {
34
- const configFile = findConfigFile();
35
- let userConfig = {};
36
- if (configFile) {
37
- try {
38
- const configContent = fs.readFileSync(configFile, 'utf8');
39
- userConfig = JSON.parse(configContent);
40
- }
41
- catch (error) {
42
- console.warn(`⚠️ Erro ao ler arquivo de configuração ${configFile}:`, error);
43
- }
44
- }
45
- // Mescla configuração padrão com configuração do usuário
46
- const config = {
47
- ...DEFAULT_CONFIG,
48
- ...userConfig,
49
- apiKey: userConfig.apiKey || process.env.OPENAI_API_KEY,
50
- };
51
- return config;
52
- }
53
- /**
54
- * Salva a configuração no arquivo local ou global
55
- */
56
- export function saveConfig(config, global = false) {
57
- const configPath = global
58
- ? path.join(os.homedir(), CONFIG_FILE_NAME)
59
- : path.join(process.cwd(), CONFIG_FILE_NAME);
60
- try {
61
- const existingConfig = global ? {} : loadConfig();
62
- const newConfig = { ...existingConfig, ...config };
63
- // Remove a apiKey do arquivo (deve ficar apenas em variável de ambiente)
64
- delete newConfig.apiKey;
65
- fs.writeFileSync(configPath, JSON.stringify(newConfig, null, 2));
66
- console.log(`✅ Configuração salva em ${configPath}`);
67
- }
68
- catch (error) {
69
- console.error('❌ Erro ao salvar configuração:', error);
70
- }
71
- }
72
- /**
73
- * Cria um arquivo de configuração exemplo
74
- */
75
- export function createConfigExample() {
76
- const configPath = path.join(process.cwd(), `${CONFIG_FILE_NAME}.example`);
77
- const exampleConfig = {
78
- ...DEFAULT_CONFIG,
79
- apiKey: 'sk-your-openai-api-key-here',
80
- };
81
- fs.writeFileSync(configPath, JSON.stringify(exampleConfig, null, 2));
82
- console.log(`📄 Arquivo de exemplo criado: ${configPath}`);
83
- }
84
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AAapB,MAAM,cAAc,GAAW;IAC7B,KAAK,EAAE,QAAQ;IACf,WAAW,EAAE,GAAG;IAChB,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,KAAK;IACjB,eAAe,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,iBAAiB,CAAC;IACxD,YAAY,EAAE,IAAI;CACnB,CAAC;AAEF,MAAM,gBAAgB,GAAG,qBAAqB,CAAC;AAE/C;;GAEG;AACH,SAAS,cAAc;IACrB,uCAAuC;IACvC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAC/D,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,qCAAqC;IACrC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAC/D,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;IACpC,IAAI,UAAU,GAAoB,EAAE,CAAC;IAErC,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC1D,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,0CAA0C,UAAU,GAAG,EAAE,KAAK,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,yDAAyD;IACzD,MAAM,MAAM,GAAW;QACrB,GAAG,cAAc;QACjB,GAAG,UAAU;QACb,MAAM,EAAE,UAAU,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc;KACxD,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAAuB,EAAE,MAAM,GAAG,KAAK;IAChE,MAAM,UAAU,GAAG,MAAM;QACvB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,gBAAgB,CAAC;QAC3C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAE/C,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QAClD,MAAM,SAAS,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;QAEnD,yEAAyE;QACzE,OAAO,SAAS,CAAC,MAAM,CAAC;QAExB,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,2BAA2B,UAAU,EAAE,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,gBAAgB,UAAU,CAAC,CAAC;IAC3E,MAAM,aAAa,GAAG;QACpB,GAAG,cAAc;QACjB,MAAM,EAAE,6BAA6B;KACtC,CAAC;IAEF,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,iCAAiC,UAAU,EAAE,CAAC,CAAC;AAC7D,CAAC"}
@@ -1,39 +0,0 @@
1
- import { AIService } from './ai-service.js';
2
- /**
3
- * Processador de diff para chunks e resumos
4
- */
5
- export declare class DiffProcessor {
6
- private aiService;
7
- private maxTokens;
8
- constructor(aiService: AIService, maxTokens?: number);
9
- /**
10
- * Divide o diff em chunks menores baseado na contagem de tokens
11
- */
12
- chunkDiff(diff: string): string[];
13
- /**
14
- * Processa diff grande gerando resumos dos chunks
15
- */
16
- processLargeDiff(diff: string): Promise<string>;
17
- /**
18
- * Analisa a complexidade do diff
19
- */
20
- analyzeDiffComplexity(diff: string): {
21
- tokenCount: number;
22
- lineCount: number;
23
- fileCount: number;
24
- complexity: 'simple' | 'moderate' | 'complex';
25
- };
26
- /**
27
- * Extrai estatísticas do diff
28
- */
29
- extractDiffStats(diff: string): {
30
- additions: number;
31
- deletions: number;
32
- files: string[];
33
- types: string[];
34
- };
35
- /**
36
- * Verifica se o diff contém breaking changes
37
- */
38
- detectBreakingChanges(diff: string): boolean;
39
- }