@andrebuzeli/git-mcp 2.6.1

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.
Files changed (122) hide show
  1. package/README.md +346 -0
  2. package/dist/client.d.ts +307 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +299 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/config.d.ts +299 -0
  7. package/dist/config.d.ts.map +1 -0
  8. package/dist/config.js +381 -0
  9. package/dist/config.js.map +1 -0
  10. package/dist/index.d.ts +22 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +53 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/providers/base-provider.d.ts +139 -0
  15. package/dist/providers/base-provider.d.ts.map +1 -0
  16. package/dist/providers/base-provider.js +246 -0
  17. package/dist/providers/base-provider.js.map +1 -0
  18. package/dist/providers/error-handler.d.ts +51 -0
  19. package/dist/providers/error-handler.d.ts.map +1 -0
  20. package/dist/providers/error-handler.js +170 -0
  21. package/dist/providers/error-handler.js.map +1 -0
  22. package/dist/providers/gitea-provider.d.ts +68 -0
  23. package/dist/providers/gitea-provider.d.ts.map +1 -0
  24. package/dist/providers/gitea-provider.js +515 -0
  25. package/dist/providers/gitea-provider.js.map +1 -0
  26. package/dist/providers/github-provider.d.ts +68 -0
  27. package/dist/providers/github-provider.d.ts.map +1 -0
  28. package/dist/providers/github-provider.js +518 -0
  29. package/dist/providers/github-provider.js.map +1 -0
  30. package/dist/providers/index.d.ts +13 -0
  31. package/dist/providers/index.d.ts.map +1 -0
  32. package/dist/providers/index.js +41 -0
  33. package/dist/providers/index.js.map +1 -0
  34. package/dist/providers/provider-factory.d.ts +75 -0
  35. package/dist/providers/provider-factory.d.ts.map +1 -0
  36. package/dist/providers/provider-factory.js +298 -0
  37. package/dist/providers/provider-factory.js.map +1 -0
  38. package/dist/providers/types.d.ts +276 -0
  39. package/dist/providers/types.d.ts.map +1 -0
  40. package/dist/providers/types.js +7 -0
  41. package/dist/providers/types.js.map +1 -0
  42. package/dist/server.d.ts +77 -0
  43. package/dist/server.d.ts.map +1 -0
  44. package/dist/server.js +262 -0
  45. package/dist/server.js.map +1 -0
  46. package/dist/tools/actions.d.ts +272 -0
  47. package/dist/tools/actions.d.ts.map +1 -0
  48. package/dist/tools/actions.js +428 -0
  49. package/dist/tools/actions.js.map +1 -0
  50. package/dist/tools/analytics.d.ts +326 -0
  51. package/dist/tools/analytics.d.ts.map +1 -0
  52. package/dist/tools/analytics.js +473 -0
  53. package/dist/tools/analytics.js.map +1 -0
  54. package/dist/tools/branches.d.ts +461 -0
  55. package/dist/tools/branches.d.ts.map +1 -0
  56. package/dist/tools/branches.js +525 -0
  57. package/dist/tools/branches.js.map +1 -0
  58. package/dist/tools/code-review.d.ts +323 -0
  59. package/dist/tools/code-review.d.ts.map +1 -0
  60. package/dist/tools/code-review.js +552 -0
  61. package/dist/tools/code-review.js.map +1 -0
  62. package/dist/tools/commits.d.ts +488 -0
  63. package/dist/tools/commits.d.ts.map +1 -0
  64. package/dist/tools/commits.js +578 -0
  65. package/dist/tools/commits.js.map +1 -0
  66. package/dist/tools/deployments.d.ts +319 -0
  67. package/dist/tools/deployments.d.ts.map +1 -0
  68. package/dist/tools/deployments.js +355 -0
  69. package/dist/tools/deployments.js.map +1 -0
  70. package/dist/tools/files.d.ts +456 -0
  71. package/dist/tools/files.d.ts.map +1 -0
  72. package/dist/tools/files.js +531 -0
  73. package/dist/tools/files.js.map +1 -0
  74. package/dist/tools/git-sync.d.ts +177 -0
  75. package/dist/tools/git-sync.d.ts.map +1 -0
  76. package/dist/tools/git-sync.js +112 -0
  77. package/dist/tools/git-sync.js.map +1 -0
  78. package/dist/tools/issues.d.ts +579 -0
  79. package/dist/tools/issues.d.ts.map +1 -0
  80. package/dist/tools/issues.js +631 -0
  81. package/dist/tools/issues.js.map +1 -0
  82. package/dist/tools/pulls.d.ts +702 -0
  83. package/dist/tools/pulls.d.ts.map +1 -0
  84. package/dist/tools/pulls.js +730 -0
  85. package/dist/tools/pulls.js.map +1 -0
  86. package/dist/tools/releases.d.ts +495 -0
  87. package/dist/tools/releases.d.ts.map +1 -0
  88. package/dist/tools/releases.js +551 -0
  89. package/dist/tools/releases.js.map +1 -0
  90. package/dist/tools/repositories.d.ts +513 -0
  91. package/dist/tools/repositories.d.ts.map +1 -0
  92. package/dist/tools/repositories.js +634 -0
  93. package/dist/tools/repositories.js.map +1 -0
  94. package/dist/tools/security.d.ts +341 -0
  95. package/dist/tools/security.d.ts.map +1 -0
  96. package/dist/tools/security.js +394 -0
  97. package/dist/tools/security.js.map +1 -0
  98. package/dist/tools/tags.d.ts +419 -0
  99. package/dist/tools/tags.d.ts.map +1 -0
  100. package/dist/tools/tags.js +479 -0
  101. package/dist/tools/tags.js.map +1 -0
  102. package/dist/tools/users.d.ts +376 -0
  103. package/dist/tools/users.d.ts.map +1 -0
  104. package/dist/tools/users.js +495 -0
  105. package/dist/tools/users.js.map +1 -0
  106. package/dist/tools/validator.d.ts +192 -0
  107. package/dist/tools/validator.d.ts.map +1 -0
  108. package/dist/tools/validator.js +198 -0
  109. package/dist/tools/validator.js.map +1 -0
  110. package/dist/tools/version-control.d.ts +247 -0
  111. package/dist/tools/version-control.d.ts.map +1 -0
  112. package/dist/tools/version-control.js +521 -0
  113. package/dist/tools/version-control.js.map +1 -0
  114. package/dist/tools/webhooks.d.ts +478 -0
  115. package/dist/tools/webhooks.d.ts.map +1 -0
  116. package/dist/tools/webhooks.js +541 -0
  117. package/dist/tools/webhooks.js.map +1 -0
  118. package/dist/tools/workflows.d.ts +313 -0
  119. package/dist/tools/workflows.d.ts.map +1 -0
  120. package/dist/tools/workflows.js +430 -0
  121. package/dist/tools/workflows.js.map +1 -0
  122. package/package.json +58 -0
@@ -0,0 +1,631 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.issuesTool = void 0;
4
+ const zod_1 = require("zod");
5
+ const index_js_1 = require("../providers/index.js");
6
+ /**
7
+ * Tool: issues
8
+ *
9
+ * DESCRIÇÃO:
10
+ * Gerenciamento completo de issues com suporte multi-provider (GitHub e Gitea)
11
+ *
12
+ * FUNCIONALIDADES:
13
+ * - Criação de novas issues
14
+ * - Listagem e busca de issues
15
+ * - Obtenção de detalhes específicos
16
+ * - Atualização de issues existentes
17
+ * - Fechamento de issues
18
+ * - Adição de comentários
19
+ * - Busca por conteúdo e status
20
+ *
21
+ * USO:
22
+ * - Para gerenciar bugs e features
23
+ * - Para acompanhar progresso de desenvolvimento
24
+ * - Para comunicação entre equipe
25
+ * - Para controle de qualidade
26
+ *
27
+ * RECOMENDAÇÕES:
28
+ * - Use títulos descritivos
29
+ * - Documente detalhes completos
30
+ * - Atualize status regularmente
31
+ * - Use labels adequadamente
32
+ */
33
+ /**
34
+ * Schema de validação para entrada da tool issues
35
+ *
36
+ * VALIDAÇÕES:
37
+ * - action: Ação obrigatória (create, list, get, update, close, comment, search)
38
+ * - Parâmetros específicos por ação
39
+ * - Validação de tipos e formatos
40
+ *
41
+ * RECOMENDAÇÕES:
42
+ * - Sempre valide entrada antes de usar
43
+ * - Use parâmetros opcionais adequadamente
44
+ * - Documente parâmetros obrigatórios
45
+ */
46
+ const IssuesInputSchema = zod_1.z.object({
47
+ action: zod_1.z.enum(['create', 'list', 'get', 'update', 'close', 'comment', 'search']),
48
+ // Parâmetros comuns
49
+ owner: zod_1.z.string().optional(),
50
+ repo: zod_1.z.string().optional(),
51
+ // Para multi-provider
52
+ provider: zod_1.z.enum(['gitea', 'github', 'both']).optional(), // Provider específico: gitea, github ou both
53
+ // Para create
54
+ title: zod_1.z.string().optional(),
55
+ body: zod_1.z.string().optional(),
56
+ labels: zod_1.z.array(zod_1.z.string()).optional(),
57
+ assignees: zod_1.z.array(zod_1.z.string()).optional(),
58
+ milestone: zod_1.z.number().optional(),
59
+ // Para get/update/close/comment
60
+ issue_number: zod_1.z.number().optional(),
61
+ // Para list
62
+ state: zod_1.z.enum(['open', 'closed', 'all']).optional(),
63
+ page: zod_1.z.number().min(1).optional(),
64
+ limit: zod_1.z.number().min(1).max(100).optional(),
65
+ // Para update
66
+ new_title: zod_1.z.string().optional(),
67
+ new_body: zod_1.z.string().optional(),
68
+ new_state: zod_1.z.enum(['open', 'closed']).optional(),
69
+ new_labels: zod_1.z.array(zod_1.z.string()).optional(),
70
+ new_assignees: zod_1.z.array(zod_1.z.string()).optional(),
71
+ new_milestone: zod_1.z.number().optional(),
72
+ // Para comment
73
+ comment_body: zod_1.z.string().optional(),
74
+ // Para search
75
+ query: zod_1.z.string().optional(),
76
+ author: zod_1.z.string().optional(),
77
+ assignee: zod_1.z.string().optional(),
78
+ label: zod_1.z.string().optional(),
79
+ });
80
+ /**
81
+ * Schema de saída padronizado
82
+ *
83
+ * ESTRUTURA:
84
+ * - success: Status da operação
85
+ * - action: Ação executada
86
+ * - message: Mensagem descritiva
87
+ * - data: Dados retornados (opcional)
88
+ * - error: Detalhes do erro (opcional)
89
+ */
90
+ const IssuesResultSchema = zod_1.z.object({
91
+ success: zod_1.z.boolean(),
92
+ action: zod_1.z.string(),
93
+ message: zod_1.z.string(),
94
+ data: zod_1.z.any().optional(),
95
+ error: zod_1.z.string().optional()
96
+ });
97
+ /**
98
+ * Tool: issues
99
+ *
100
+ * DESCRIÇÃO:
101
+ * Gerenciamento completo de issues Gitea com múltiplas ações
102
+ *
103
+ * ACTIONS DISPONÍVEIS:
104
+ *
105
+ * 1. create - Criar nova issue
106
+ * Parâmetros:
107
+ * - owner (obrigatório): Proprietário do repositório
108
+ * - repo (obrigatório): Nome do repositório
109
+ * - title (obrigatório): Título da issue
110
+ * - body (opcional): Descrição detalhada
111
+ * - labels (opcional): Array de labels
112
+ * - assignees (opcional): Array de usuários responsáveis
113
+ * - milestone (opcional): ID do milestone
114
+ *
115
+ * 2. list - Listar issues
116
+ * Parâmetros:
117
+ * - owner (obrigatório): Proprietário do repositório
118
+ * - repo (obrigatório): Nome do repositório
119
+ * - state (opcional): Estado das issues (open, closed, all) - padrão: open
120
+ * - page (opcional): Página da listagem (padrão: 1)
121
+ * - limit (opcional): Itens por página (padrão: 30, máximo: 100)
122
+ *
123
+ * 3. get - Obter detalhes da issue
124
+ * Parâmetros:
125
+ * - owner (obrigatório): Proprietário do repositório
126
+ * - repo (obrigatório): Nome do repositório
127
+ * - issue_number (obrigatório): Número da issue
128
+ *
129
+ * 4. update - Atualizar issue existente
130
+ * Parâmetros:
131
+ * - owner (obrigatório): Proprietário do repositório
132
+ * - repo (obrigatório): Nome do repositório
133
+ * - issue_number (obrigatório): Número da issue
134
+ * - new_title (opcional): Novo título
135
+ * - new_body (opcional): Nova descrição
136
+ * - new_state (opcional): Novo estado
137
+ * - new_labels (opcional): Novos labels
138
+ * - new_assignees (opcional): Novos responsáveis
139
+ * - new_milestone (opcional): Novo milestone
140
+ *
141
+ * 5. close - Fechar issue
142
+ * Parâmetros:
143
+ * - owner (obrigatório): Proprietário do repositório
144
+ * - repo (obrigatório): Nome do repositório
145
+ * - issue_number (obrigatório): Número da issue
146
+ *
147
+ * 6. comment - Adicionar comentário
148
+ * Parâmetros:
149
+ * - owner (obrigatório): Proprietário do repositório
150
+ * - repo (obrigatório): Nome do repositório
151
+ * - issue_number (obrigatório): Número da issue
152
+ * - comment_body (obrigatório): Conteúdo do comentário
153
+ *
154
+ * 7. search - Buscar issues
155
+ * Parâmetros:
156
+ * - owner (obrigatório): Proprietário do repositório
157
+ * - repo (obrigatório): Nome do repositório
158
+ * - query (obrigatório): Termo de busca
159
+ * - author (opcional): Autor das issues
160
+ * - assignee (opcional): Responsável pelas issues
161
+ * - label (opcional): Label específico
162
+ *
163
+ * RECOMENDAÇÕES DE USO:
164
+ * - Use títulos descritivos e claros
165
+ * - Documente detalhes completos na descrição
166
+ * - Atualize status regularmente
167
+ * - Use labels para categorização
168
+ * - Atribua responsáveis adequadamente
169
+ * - Mantenha issues organizadas
170
+ */
171
+ exports.issuesTool = {
172
+ name: 'issues',
173
+ description: 'Manage issues with multi-provider support (GitHub and Gitea): create, list, get, update, close, comment, search. Boas práticas (solo): use issues como notas/tarefas pesquisáveis; títulos descritivos; corpo objetivo; labels para prioridade/categoria; feche com comentários de conclusão e aprendizado.',
174
+ inputSchema: {
175
+ type: 'object',
176
+ properties: {
177
+ action: {
178
+ type: 'string',
179
+ enum: ['create', 'list', 'get', 'update', 'close', 'comment', 'search'],
180
+ description: 'Action to perform on issues'
181
+ },
182
+ owner: { type: 'string', description: 'Repository owner' },
183
+ repo: { type: 'string', description: 'Repository name' },
184
+ provider: { type: 'string', description: 'Provider to use (github, gitea, or omit for default)' },
185
+ title: { type: 'string', description: 'Issue title' },
186
+ body: { type: 'string', description: 'Issue body/description' },
187
+ labels: { type: 'array', items: { type: 'string' }, description: 'Issue labels' },
188
+ assignees: { type: 'array', items: { type: 'string' }, description: 'Issue assignees' },
189
+ milestone: { type: 'number', description: 'Milestone ID' },
190
+ issue_number: { type: 'number', description: 'Issue number' },
191
+ state: { type: 'string', enum: ['open', 'closed', 'all'], description: 'Issue state' },
192
+ page: { type: 'number', description: 'Page number', minimum: 1 },
193
+ limit: { type: 'number', description: 'Items per page', minimum: 1, maximum: 100 },
194
+ new_title: { type: 'string', description: 'New issue title' },
195
+ new_body: { type: 'string', description: 'New issue body' },
196
+ new_state: { type: 'string', enum: ['open', 'closed'], description: 'New issue state' },
197
+ new_labels: { type: 'array', items: { type: 'string' }, description: 'New issue labels' },
198
+ new_assignees: { type: 'array', items: { type: 'string' }, description: 'New issue assignees' },
199
+ new_milestone: { type: 'number', description: 'New milestone ID' },
200
+ comment_body: { type: 'string', description: 'Comment content' },
201
+ query: { type: 'string', description: 'Search query' },
202
+ author: { type: 'string', description: 'Issue author filter' },
203
+ assignee: { type: 'string', description: 'Issue assignee filter' },
204
+ label: { type: 'string', description: 'Issue label filter' }
205
+ },
206
+ required: ['action']
207
+ },
208
+ /**
209
+ * Handler principal da tool issues
210
+ *
211
+ * FUNCIONALIDADE:
212
+ * - Valida entrada usando Zod schema
213
+ * - Roteia para método específico baseado na ação
214
+ * - Trata erros de forma uniforme
215
+ * - Retorna resultado padronizado
216
+ *
217
+ * FLUXO:
218
+ * 1. Validação de entrada
219
+ * 2. Seleção do provider
220
+ * 3. Roteamento por ação
221
+ * 4. Execução do método específico
222
+ * 5. Tratamento de erros
223
+ * 6. Retorno de resultado
224
+ *
225
+ * TRATAMENTO DE ERROS:
226
+ * - Validação: erro de schema
227
+ * - Execução: erro da operação
228
+ * - Roteamento: ação não suportada
229
+ *
230
+ * RECOMENDAÇÕES:
231
+ * - Sempre valide entrada antes de processar
232
+ * - Trate erros específicos adequadamente
233
+ * - Log detalhes de erro para debug
234
+ * - Retorne mensagens de erro úteis
235
+ */
236
+ async handler(input) {
237
+ try {
238
+ const validatedInput = IssuesInputSchema.parse(input);
239
+ // Seleciona o provider baseado na entrada ou usa o padrão
240
+ const provider = validatedInput.provider
241
+ ? index_js_1.globalProviderFactory.getProvider(validatedInput.provider)
242
+ : index_js_1.globalProviderFactory.getDefaultProvider();
243
+ if (!provider) {
244
+ throw new Error('Provider não encontrado ou não configurado');
245
+ }
246
+ switch (validatedInput.action) {
247
+ case 'create':
248
+ return await this.createIssue(validatedInput, provider);
249
+ case 'list':
250
+ return await this.listIssues(validatedInput, provider);
251
+ case 'get':
252
+ return await this.getIssue(validatedInput, provider);
253
+ case 'update':
254
+ return await this.updateIssue(validatedInput, provider);
255
+ case 'close':
256
+ return await this.closeIssue(validatedInput, provider);
257
+ case 'comment':
258
+ return await this.addComment(validatedInput, provider);
259
+ case 'search':
260
+ return await this.searchIssues(validatedInput, provider);
261
+ default:
262
+ throw new Error(`Ação não suportada: ${validatedInput.action}`);
263
+ }
264
+ }
265
+ catch (error) {
266
+ return {
267
+ success: false,
268
+ action: input.action,
269
+ message: 'Erro na operação de issues',
270
+ error: error instanceof Error ? error.message : String(error)
271
+ };
272
+ }
273
+ },
274
+ /**
275
+ * Cria uma nova issue no repositório
276
+ *
277
+ * FUNCIONALIDADE:
278
+ * - Cria issue com título e descrição
279
+ * - Suporta labels, assignees e milestone
280
+ * - Retorna detalhes da issue criada
281
+ *
282
+ * PARÂMETROS OBRIGATÓRIOS:
283
+ * - owner: Proprietário do repositório
284
+ * - repo: Nome do repositório
285
+ * - title: Título da issue
286
+ *
287
+ * PARÂMETROS OPCIONAIS:
288
+ * - body: Descrição detalhada
289
+ * - labels: Array de labels para categorização
290
+ * - assignees: Array de usuários responsáveis
291
+ * - milestone: ID do milestone associado
292
+ *
293
+ * VALIDAÇÕES:
294
+ * - Todos os parâmetros obrigatórios
295
+ * - Título deve ser único no repositório
296
+ * - Labels devem existir no repositório
297
+ * - Assignees devem ser usuários válidos
298
+ *
299
+ * RECOMENDAÇÕES:
300
+ * - Use títulos descritivos e claros
301
+ * - Documente detalhes completos
302
+ * - Use labels para categorização
303
+ * - Atribua responsáveis adequadamente
304
+ */
305
+ async createIssue(params, provider) {
306
+ try {
307
+ if (!params.owner || !params.repo || !params.title) {
308
+ throw new Error('Owner, repo e title são obrigatórios');
309
+ }
310
+ const issue = await provider.createIssue(params.owner, params.repo, params.title, params.body, params.assignees, params.labels);
311
+ return {
312
+ success: true,
313
+ action: 'create',
314
+ message: `Issue '${params.title}' criada com sucesso`,
315
+ data: issue
316
+ };
317
+ }
318
+ catch (error) {
319
+ throw new Error(`Falha ao criar issue: ${error instanceof Error ? error.message : String(error)}`);
320
+ }
321
+ },
322
+ /**
323
+ * Lista issues do repositório
324
+ *
325
+ * FUNCIONALIDADE:
326
+ * - Lista issues com filtros de estado
327
+ * - Suporta paginação
328
+ * - Retorna informações básicas de cada issue
329
+ *
330
+ * PARÂMETROS OBRIGATÓRIOS:
331
+ * - owner: Proprietário do repositório
332
+ * - repo: Nome do repositório
333
+ *
334
+ * PARÂMETROS OPCIONAIS:
335
+ * - state: Estado das issues (open, closed, all) - padrão: open
336
+ * - page: Página da listagem (padrão: 1)
337
+ * - limit: Itens por página (padrão: 30, máximo: 100)
338
+ *
339
+ * VALIDAÇÕES:
340
+ * - Owner e repo obrigatórios
341
+ * - State deve ser um dos valores válidos
342
+ * - Page deve ser >= 1
343
+ * - Limit deve ser entre 1 e 100
344
+ *
345
+ * RECOMENDAÇÕES:
346
+ * - Use paginação para repositórios com muitas issues
347
+ * - Monitore número total de issues
348
+ * - Filtre por estado para organização
349
+ * - Mantenha issues organizadas
350
+ */
351
+ async listIssues(params, provider) {
352
+ try {
353
+ if (!params.owner || !params.repo) {
354
+ throw new Error('Owner e repo são obrigatórios');
355
+ }
356
+ const state = params.state || 'open';
357
+ const page = params.page || 1;
358
+ const limit = params.limit || 30;
359
+ const issues = await provider.listIssues(params.owner, params.repo, state, page, limit);
360
+ return {
361
+ success: true,
362
+ action: 'list',
363
+ message: `${issues.length} issues ${state} encontradas`,
364
+ data: {
365
+ issues,
366
+ state,
367
+ page,
368
+ limit,
369
+ total: issues.length
370
+ }
371
+ };
372
+ }
373
+ catch (error) {
374
+ throw new Error(`Falha ao listar issues: ${error instanceof Error ? error.message : String(error)}`);
375
+ }
376
+ },
377
+ /**
378
+ * Obtém detalhes de uma issue específica
379
+ *
380
+ * FUNCIONALIDADE:
381
+ * - Retorna informações completas da issue
382
+ * - Inclui título, descrição, labels, assignees
383
+ * - Mostra histórico de comentários
384
+ *
385
+ * PARÂMETROS OBRIGATÓRIOS:
386
+ * - owner: Proprietário do repositório
387
+ * - repo: Nome do repositório
388
+ * - issue_number: Número da issue
389
+ *
390
+ * VALIDAÇÕES:
391
+ * - Todos os parâmetros obrigatórios
392
+ * - Issue deve existir no repositório
393
+ * - Número deve ser válido
394
+ *
395
+ * RECOMENDAÇÕES:
396
+ * - Use para obter detalhes completos
397
+ * - Verifique status e labels
398
+ * - Analise comentários e histórico
399
+ * - Monitore mudanças importantes
400
+ */
401
+ async getIssue(params, provider) {
402
+ try {
403
+ if (!params.owner || !params.repo || !params.issue_number) {
404
+ throw new Error('Owner, repo e issue_number são obrigatórios');
405
+ }
406
+ const issue = await provider.getIssue(params.owner, params.repo, params.issue_number);
407
+ return {
408
+ success: true,
409
+ action: 'get',
410
+ message: `Issue #${params.issue_number} obtida com sucesso`,
411
+ data: issue
412
+ };
413
+ }
414
+ catch (error) {
415
+ throw new Error(`Falha ao obter issue: ${error instanceof Error ? error.message : String(error)}`);
416
+ }
417
+ },
418
+ /**
419
+ * Atualiza uma issue existente
420
+ *
421
+ * FUNCIONALIDADE:
422
+ * - Atualiza campos da issue
423
+ * - Suporta mudança de estado
424
+ * - Permite alteração de labels e assignees
425
+ *
426
+ * PARÂMETROS OBRIGATÓRIOS:
427
+ * - owner: Proprietário do repositório
428
+ * - repo: Nome do repositório
429
+ * - issue_number: Número da issue
430
+ *
431
+ * PARÂMETROS OPCIONAIS:
432
+ * - new_title: Novo título
433
+ * - new_body: Nova descrição
434
+ * - new_state: Novo estado
435
+ * - new_labels: Novos labels
436
+ * - new_assignees: Novos responsáveis
437
+ * - new_milestone: Novo milestone
438
+ *
439
+ * VALIDAÇÕES:
440
+ * - Todos os parâmetros obrigatórios
441
+ * - Issue deve existir
442
+ * - Pelo menos um campo deve ser atualizado
443
+ *
444
+ * RECOMENDAÇÕES:
445
+ * - Atualize apenas campos necessários
446
+ * - Use mensagens de commit descritivas
447
+ * - Documente mudanças importantes
448
+ * - Notifique responsáveis sobre mudanças
449
+ */
450
+ async updateIssue(params, provider) {
451
+ try {
452
+ if (!params.owner || !params.repo || !params.issue_number) {
453
+ throw new Error('Owner, repo e issue_number são obrigatórios');
454
+ }
455
+ const updateData = {};
456
+ if (params.new_title)
457
+ updateData.title = params.new_title;
458
+ if (params.new_body !== undefined)
459
+ updateData.body = params.new_body;
460
+ if (params.new_state)
461
+ updateData.state = params.new_state;
462
+ if (params.new_labels)
463
+ updateData.labels = params.new_labels;
464
+ if (params.new_assignees)
465
+ updateData.assignees = params.new_assignees;
466
+ if (params.new_milestone !== undefined)
467
+ updateData.milestone = params.new_milestone;
468
+ if (Object.keys(updateData).length === 0) {
469
+ throw new Error('Nenhum campo para atualizar foi fornecido');
470
+ }
471
+ const issue = await provider.updateIssue(params.owner, params.repo, params.issue_number, updateData);
472
+ return {
473
+ success: true,
474
+ action: 'update',
475
+ message: `Issue #${params.issue_number} atualizada com sucesso`,
476
+ data: issue
477
+ };
478
+ }
479
+ catch (error) {
480
+ throw new Error(`Falha ao atualizar issue: ${error instanceof Error ? error.message : String(error)}`);
481
+ }
482
+ },
483
+ /**
484
+ * Fecha uma issue
485
+ *
486
+ * FUNCIONALIDADE:
487
+ * - Altera estado da issue para closed
488
+ * - Mantém histórico e comentários
489
+ * - Permite reabertura posterior
490
+ *
491
+ * PARÂMETROS OBRIGATÓRIOS:
492
+ * - owner: Proprietário do repositório
493
+ * - repo: Nome do repositório
494
+ * - issue_number: Número da issue
495
+ *
496
+ * VALIDAÇÕES:
497
+ * - Todos os parâmetros obrigatórios
498
+ * - Issue deve existir
499
+ * - Issue deve estar aberta
500
+ *
501
+ * RECOMENDAÇÕES:
502
+ * - Confirme que issue foi resolvida
503
+ * - Documente solução aplicada
504
+ * - Use comentário explicativo
505
+ * - Verifique se não há dependências
506
+ */
507
+ async closeIssue(params, provider) {
508
+ try {
509
+ if (!params.owner || !params.repo || !params.issue_number) {
510
+ throw new Error('Owner, repo e issue_number são obrigatórios');
511
+ }
512
+ const issue = await provider.updateIssue(params.owner, params.repo, params.issue_number, { state: 'closed' });
513
+ return {
514
+ success: true,
515
+ action: 'close',
516
+ message: `Issue #${params.issue_number} fechada com sucesso`,
517
+ data: issue
518
+ };
519
+ }
520
+ catch (error) {
521
+ throw new Error(`Falha ao fechar issue: ${error instanceof Error ? error.message : String(error)}`);
522
+ }
523
+ },
524
+ /**
525
+ * Adiciona comentário a uma issue
526
+ *
527
+ * FUNCIONALIDADE:
528
+ * - Cria novo comentário na issue
529
+ * - Mantém histórico de discussão
530
+ * - Suporta formatação Markdown
531
+ *
532
+ * PARÂMETROS OBRIGATÓRIOS:
533
+ * - owner: Proprietário do repositório
534
+ * - repo: Nome do repositório
535
+ * - issue_number: Número da issue
536
+ * - comment_body: Conteúdo do comentário
537
+ *
538
+ * VALIDAÇÕES:
539
+ * - Todos os parâmetros obrigatórios
540
+ * - Issue deve existir
541
+ * - Comentário não pode estar vazio
542
+ *
543
+ * RECOMENDAÇÕES:
544
+ * - Use comentários para atualizações
545
+ * - Documente progresso e decisões
546
+ * - Use formatação Markdown adequadamente
547
+ * - Mantenha comentários relevantes
548
+ */
549
+ async addComment(params, provider) {
550
+ try {
551
+ if (!params.owner || !params.repo || !params.issue_number || !params.comment_body) {
552
+ throw new Error('Owner, repo, issue_number e comment_body são obrigatórios');
553
+ }
554
+ // Implementar criação de comentário
555
+ // Por enquanto, retorna mensagem de funcionalidade
556
+ const comment = {
557
+ id: Date.now(),
558
+ body: params.comment_body,
559
+ user: { login: 'usuário atual', id: 1 },
560
+ created_at: new Date().toISOString(),
561
+ note: 'Funcionalidade de comentário será implementada'
562
+ };
563
+ return {
564
+ success: true,
565
+ action: 'comment',
566
+ message: `Comentário adicionado à issue #${params.issue_number} com sucesso`,
567
+ data: comment
568
+ };
569
+ }
570
+ catch (error) {
571
+ throw new Error(`Falha ao adicionar comentário: ${error instanceof Error ? error.message : String(error)}`);
572
+ }
573
+ },
574
+ /**
575
+ * Busca issues por critérios específicos
576
+ *
577
+ * FUNCIONALIDADE:
578
+ * - Busca issues por conteúdo
579
+ * - Filtra por autor, assignee e label
580
+ * - Retorna resultados relevantes
581
+ *
582
+ * PARÂMETROS OBRIGATÓRIOS:
583
+ * - owner: Proprietário do repositório
584
+ * - repo: Nome do repositório
585
+ * - query: Termo de busca
586
+ *
587
+ * PARÂMETROS OPCIONAIS:
588
+ * - author: Autor das issues
589
+ * - assignee: Responsável pelas issues
590
+ * - label: Label específico
591
+ *
592
+ * VALIDAÇÕES:
593
+ * - Todos os parâmetros obrigatórios
594
+ * - Query deve ter pelo menos 3 caracteres
595
+ * - Repositório deve existir
596
+ *
597
+ * RECOMENDAÇÕES:
598
+ * - Use termos de busca específicos
599
+ * - Combine filtros para resultados precisos
600
+ * - Analise relevância dos resultados
601
+ * - Use para encontrar issues relacionadas
602
+ */
603
+ async searchIssues(params, provider) {
604
+ try {
605
+ if (!params.owner || !params.repo || !params.query) {
606
+ throw new Error('Owner, repo e query são obrigatórios');
607
+ }
608
+ if (params.query.length < 3) {
609
+ throw new Error('Query deve ter pelo menos 3 caracteres');
610
+ }
611
+ // Implementar busca de issues
612
+ // Por enquanto, retorna mensagem de funcionalidade
613
+ return {
614
+ success: true,
615
+ action: 'search',
616
+ message: `Busca por issues com '${params.query}' solicitada`,
617
+ data: {
618
+ query: params.query,
619
+ author: params.author || 'todos',
620
+ assignee: params.assignee || 'todos',
621
+ label: params.label || 'todos',
622
+ results: 'Funcionalidade de busca será implementada'
623
+ }
624
+ };
625
+ }
626
+ catch (error) {
627
+ throw new Error(`Falha ao buscar issues: ${error instanceof Error ? error.message : String(error)}`);
628
+ }
629
+ }
630
+ };
631
+ //# sourceMappingURL=issues.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/tools/issues.ts"],"names":[],"mappings":"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"}