@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
package/README.md ADDED
@@ -0,0 +1,346 @@
1
+ # Git MCP Server v2.6.1
2
+
3
+ 🚀 **Complete MCP Server for Gitea Self-Hosted** - 18 tools with 100+ actions including AI code review, enhanced validation and automated DevOps workflows
4
+
5
+ ## 🎯 Overview
6
+
7
+ Git MCP Server v2.6.1 é um servidor MCP moderno em TypeScript, focado em Gitea self-hosted e com suporte completo a multi-provedor (GitHub + Gitea simultaneamente). Inclui arquitetura de providers unificada, documentação abrangente, boas práticas, validações aprimoradas, nova tool de code-review com IA e guia para uso individual (solo).
8
+
9
+ ## ✨ Features
10
+
11
+ ### 🛠️ **18 Tools**
12
+
13
+ 1. **repositories** - Complete repository management with cloning, archiving, templates
14
+ 2. **branches** - Branch operations with enhanced validation
15
+ 3. **files** - File and directory management with search capabilities
16
+ 4. **commits** - Commit operations with search and creation
17
+ 5. **issues** - Issue management with advanced search
18
+ 6. **pulls** - Pull request management with reviews
19
+ 7. **releases** - Release management with enhanced validation
20
+ 8. **tags** - Tag management with search
21
+ 9. **users** - User operations with search
22
+ 10. **webhooks** - Webhook management with testing
23
+ 11. **code-review** - AI-powered code analysis and review suggestions ⭐ **NEW**
24
+ 12. **git-sync** - Cross-provider repository synchronization with bidirectional sync
25
+ 13. **version-control** - Versioning, backup and change tracking system with semantic versioning
26
+ 14. **workflows** - CI/CD workflow management
27
+ 15. **actions** - GitHub Actions management
28
+ 16. **deployments** - Deployment tracking and rollbacks
29
+ 17. **security** - Security scanning and compliance
30
+ 18. **analytics** - Repository insights and analytics
31
+
32
+ > 🚀 **Multi-Provider Complete** (GitHub + Gitea simultaneamente)
33
+
34
+ ### 🔧 **Technical Features**
35
+
36
+ - ✅ **TypeScript**: Full type safety and modern development
37
+ - ✅ **Zod Validation**: Input/output schema validation
38
+ - ✅ **Axios Client**: Robust HTTP client with interceptors
39
+ - ✅ **Error Handling**: Comprehensive error management
40
+ - ✅ **Debug Mode**: Detailed logging for development
41
+ - ✅ **Self-Hosted Focus**: Optimized for Gitea instances
42
+
43
+ ## 📦 Installation
44
+
45
+ ### NPX (Recommended)
46
+ ```bash
47
+ npx @andrebuzeli/gitea-mcp-v2
48
+ ```
49
+
50
+ ### Global Installation
51
+ ```bash
52
+ npm install -g @andrebuzeli/gitea-mcp-v2
53
+ ```
54
+
55
+ ## ⚙️ Configuration
56
+
57
+ ### Demo Mode
58
+
59
+ Para testar o servidor sem configurar providers reais:
60
+
61
+ ```bash
62
+ DEMO_MODE=true npx @andrebuzeli/gitea-mcp-v2
63
+ ```
64
+
65
+ O modo demo permite:
66
+ - ✅ Testar todas as funcionalidades sem APIs reais
67
+ - ✅ Desenvolvimento e debugging
68
+ - ✅ Demonstrações e tutoriais
69
+ - ⚠️ Não executa operações reais nos repositórios
70
+
71
+ ### Environment Variables
72
+
73
+ ```bash
74
+ GITEA_URL=http://your-gitea-instance:3000
75
+ GITEA_TOKEN=your_personal_access_token
76
+ GITEA_USERNAME=your_username
77
+ DEBUG=false
78
+ TIMEOUT=30000
79
+ DEMO_MODE=false # Set to 'true' for testing without real providers
80
+ ```
81
+
82
+ ### MCP Configuration
83
+
84
+ #### Single Provider (Gitea)
85
+
86
+ ```json
87
+ {
88
+ "mcpServers": {
89
+ "gitea": {
90
+ "command": "npx",
91
+ "args": ["@andrebuzeli/gitea-mcp-v2"],
92
+ "env": {
93
+ "GITEA_URL": "http://your-gitea-instance:3000",
94
+ "GITEA_TOKEN": "your_personal_access_token",
95
+ "GITEA_USERNAME": "your_username"
96
+ }
97
+ }
98
+ }
99
+ }
100
+ ```
101
+
102
+ #### Single Provider (GitHub)
103
+
104
+ ```json
105
+ {
106
+ "mcpServers": {
107
+ "github": {
108
+ "command": "npx",
109
+ "args": ["@andrebuzeli/gitea-mcp-v2"],
110
+ "env": {
111
+ "GITHUB_TOKEN": "your_github_token",
112
+ "GITHUB_USERNAME": "your_github_username"
113
+ }
114
+ }
115
+ }
116
+ }
117
+ ```
118
+
119
+ #### Multi-Provider (GitHub + Gitea Simultaneamente)
120
+
121
+ ```json
122
+ {
123
+ "mcpServers": {
124
+ "gitea-mcp": {
125
+ "command": "npx",
126
+ "args": ["@andrebuzeli/gitea-mcp-v2"],
127
+ "env": {
128
+ "PROVIDERS_JSON": "[{\"name\":\"gitea\",\"type\":\"gitea\",\"apiUrl\":\"http://your-gitea:3000/api/v1\",\"token\":\"your_gitea_token\"},{\"name\":\"github\",\"type\":\"github\",\"apiUrl\":\"https://api.github.com\",\"token\":\"your_github_token\"}]",
129
+ "DEFAULT_PROVIDER": "gitea"
130
+ }
131
+ }
132
+ }
133
+ }
134
+ ```
135
+
136
+ #### Multi-Provider com Variáveis Separadas
137
+
138
+ ```json
139
+ {
140
+ "mcpServers": {
141
+ "gitea-mcp": {
142
+ "command": "npx",
143
+ "args": ["@andrebuzeli/gitea-mcp-v2"],
144
+ "env": {
145
+ "GITEA_URL": "http://your-gitea:3000/api/v1",
146
+ "GITEA_TOKEN": "your_gitea_token",
147
+ "GITHUB_TOKEN": "your_github_token",
148
+ "DEFAULT_PROVIDER": "gitea"
149
+ }
150
+ }
151
+ }
152
+ }
153
+ ```
154
+
155
+ ## 🚀 Usage Examples
156
+
157
+ ### Repository Management
158
+ ```json
159
+ {
160
+ "tool": "repositories",
161
+ "arguments": {
162
+ "action": "create",
163
+ "name": "my-new-repo",
164
+ "description": "A new repository",
165
+ "private": false
166
+ }
167
+ }
168
+ ```
169
+
170
+ ### Issue Creation
171
+ ```json
172
+ {
173
+ "tool": "issues",
174
+ "arguments": {
175
+ "action": "create",
176
+ "owner": "username",
177
+ "repo": "repository",
178
+ "title": "Bug report",
179
+ "body": "Description of the issue",
180
+ "labels": ["bug", "priority-high"]
181
+ }
182
+ }
183
+ ```
184
+
185
+ ### File Operations
186
+ ```json
187
+ {
188
+ "tool": "files",
189
+ "arguments": {
190
+ "action": "create",
191
+ "owner": "username",
192
+ "repo": "repository",
193
+ "path": "src/main.js",
194
+ "content": "console.log('Hello World');",
195
+ "message": "Add main.js file"
196
+ }
197
+ }
198
+ ```
199
+
200
+ ## 🔐 Authentication
201
+
202
+ ### Personal Access Token
203
+
204
+ 1. Go to your Gitea instance
205
+ 2. Navigate to **Settings** → **Applications**
206
+ 3. Generate a new **Personal Access Token**
207
+ 4. Grant necessary permissions:
208
+ - `repo` - Repository access
209
+ - `user` - User information
210
+ - `write:repo_hook` - Webhook management
211
+
212
+ ### Permissions Required
213
+
214
+ - **Read**: Repository content, issues, pull requests
215
+ - **Write**: Create/update repositories, files, issues, PRs
216
+ - **Admin**: Webhook management, repository settings
217
+
218
+ ## 🏗️ Architecture
219
+
220
+ ### Project Structure
221
+ ```
222
+ src/
223
+ ├── index.ts # Entry point
224
+ ├── server.ts # MCP Server setup
225
+ ├── config.ts # Configuration management
226
+ ├── client.ts # Gitea API client
227
+ └── tools/ # Tool implementations
228
+ ├── repositories.ts
229
+ ├── branches.ts
230
+ ├── files.ts
231
+ ├── commits.ts
232
+ ├── issues.ts
233
+ ├── pulls.ts
234
+ ├── releases.ts
235
+ ├── tags.ts
236
+ ├── users.ts
237
+ └── webhooks.ts
238
+ ```
239
+
240
+ ### Design Principles
241
+
242
+ - **Modular**: Each tool is self-contained
243
+ - **Type-Safe**: Full TypeScript coverage
244
+ - **Validated**: Zod schemas for all inputs/outputs
245
+ - **Consistent**: Uniform API across all tools
246
+ - **Documented**: Comprehensive JSDoc comments
247
+
248
+ ## 🐛 Debugging
249
+
250
+ ### Enable Debug Mode
251
+ ```bash
252
+ DEBUG=true npx @andrebuzeli/gitea-mcp-v2
253
+ ```
254
+
255
+ ### Debug Output
256
+ - HTTP request/response logging
257
+ - Configuration validation
258
+ - Error stack traces
259
+ - Performance metrics
260
+
261
+ ## 🤝 Contributing
262
+
263
+ 1. Fork the repository
264
+ 2. Create a feature branch
265
+ 3. Make your changes
266
+ 4. Add tests if applicable
267
+ 5. Submit a pull request
268
+
269
+ ### Development Setup
270
+
271
+ ```bash
272
+ git clone https://github.com/andrebuzeli/gitea-mcp-v2.git
273
+ cd gitea-mcp-v2
274
+ npm install
275
+ npm run dev
276
+ ```
277
+
278
+ ## 📄 License
279
+
280
+ MIT License - see [LICENSE](LICENSE) file for details.
281
+
282
+ ## 🔗 Links
283
+
284
+ - **NPM Package**: [@andrebuzeli/gitea-mcp-v2](https://www.npmjs.com/package/@andrebuzeli/gitea-mcp-v2)
285
+ - **GitHub Repository**: [gitea-mcp-v2](https://github.com/andrebuzeli/gitea-mcp-v2)
286
+ - **Gitea Official**: [gitea.io](https://gitea.io)
287
+ - **MCP Protocol**: [modelcontextprotocol.io](https://modelcontextprotocol.io)
288
+
289
+ ## 🆚 Comparison
290
+
291
+ ### vs Official Gitea MCP (Go)
292
+
293
+ | Feature | Gitea MCP v2.0 (Node.js) | Official (Go) |
294
+ |---------|---------------------------|---------------|
295
+ | **Tools** | 10 multifunctional | 40+ single-purpose |
296
+ | **Actions** | 65+ total | 40+ total |
297
+ | **Language** | TypeScript/Node.js | Go |
298
+ | **Type Safety** | Full Zod validation | Go types |
299
+ | **Installation** | NPM/NPX | Binary download |
300
+ | **Configuration** | Environment variables | CLI arguments |
301
+ | **Debugging** | Rich logging | Basic logging |
302
+ | **Maintenance** | Community | Official |
303
+
304
+ ### Advantages
305
+
306
+ - ✅ **Organized**: Logical tool grouping
307
+ - ✅ **Modern**: TypeScript ecosystem
308
+ - ✅ **Flexible**: Multiple actions per tool
309
+ - ✅ **Validated**: Input/output validation
310
+ - ✅ **Documented**: Comprehensive documentation
311
+
312
+ ## 🎉 Changelog
313
+
314
+ ### v2.1.2
315
+ - 📄 Added solo usage guide (docs/guia-gitea-solo.md)
316
+ - 📝 Updated docs and descriptions
317
+ - 🔖 Prepared release and tagging guidance for solo users
318
+
319
+ ### v2.1.1
320
+ - 📚 **Enhanced tool documentation** - All 10 tools now have comprehensive JSDoc comments with parameters, actions, and direct instructions
321
+ - 🗑️ **Removed emojis** from console logs and code comments
322
+ - 📖 **Added detailed instructions and recommendations** for each tool and method
323
+ - 🔧 **Improved code structure** with better organization and clarity
324
+ - 🎯 **Enhanced developer experience** with clear usage examples and best practices
325
+
326
+ ### v2.1.0
327
+ - 📚 Comprehensive code documentation
328
+ - 🧹 Removed emojis for professional use
329
+ - 📖 Added detailed usage instructions
330
+ - 🔧 Enhanced code comments and recommendations
331
+ - 📋 Improved development guidelines
332
+ - 🎯 Better error handling documentation
333
+ - 🚀 Enhanced developer experience
334
+
335
+ ### v2.0.0
336
+ - 🎯 Complete rewrite from scratch
337
+ - 🛠️ 10 multifunctional tools
338
+ - 🔧 TypeScript implementation
339
+ - ✅ Zod validation
340
+ - 📚 Basic documentation
341
+ - 🐛 Debug mode support
342
+ - 🚀 NPM package distribution
343
+
344
+ ---
345
+
346
+ **Made with ❤️ for the Gitea community**
@@ -0,0 +1,307 @@
1
+ /**
2
+ * Cliente HTTP para API Gitea
3
+ *
4
+ * RESPONSABILIDADES:
5
+ * - Comunicação com API REST do Gitea
6
+ * - Gerenciamento de autenticação
7
+ * - Tratamento de requisições HTTP
8
+ * - Logging e debug de operações
9
+ *
10
+ * ARQUITETURA:
11
+ * - Cliente Axios configurável
12
+ * - Interceptors para logging
13
+ * - Tratamento centralizado de erros
14
+ * - Timeout configurável
15
+ *
16
+ * RECOMENDAÇÕES:
17
+ * - Configure timeout adequado para sua rede
18
+ * - Use HTTPS em produção
19
+ * - Rotacione tokens periodicamente
20
+ * - Monitore rate limits da API
21
+ */
22
+ /**
23
+ * Interface para repositório Gitea
24
+ *
25
+ * PROPRIEDADES:
26
+ * - id: Identificador único do repositório
27
+ * - name: Nome do repositório
28
+ * - full_name: Nome completo (owner/repo)
29
+ * - description: Descrição do repositório
30
+ * - private: Se é privado ou público
31
+ * - fork: Se é um fork de outro repositório
32
+ * - html_url: URL para visualização web
33
+ * - clone_url: URL para clone HTTP
34
+ * - ssh_url: URL para clone SSH
35
+ * - default_branch: Branch padrão
36
+ * - created_at: Data de criação
37
+ * - updated_at: Data da última atualização
38
+ */
39
+ export interface GiteaRepository {
40
+ id: number;
41
+ name: string;
42
+ full_name: string;
43
+ description: string;
44
+ private: boolean;
45
+ fork: boolean;
46
+ html_url: string;
47
+ clone_url: string;
48
+ ssh_url: string;
49
+ default_branch: string;
50
+ created_at: string;
51
+ updated_at: string;
52
+ }
53
+ export interface GiteaBranch {
54
+ name: string;
55
+ commit: {
56
+ id: string;
57
+ message: string;
58
+ author: {
59
+ name: string;
60
+ email: string;
61
+ date: string;
62
+ };
63
+ };
64
+ }
65
+ export interface GiteaFile {
66
+ name: string;
67
+ path: string;
68
+ sha: string;
69
+ size: number;
70
+ url: string;
71
+ html_url: string;
72
+ git_url: string;
73
+ download_url: string;
74
+ type: 'file' | 'dir';
75
+ content?: string;
76
+ encoding?: string;
77
+ }
78
+ export interface GiteaCommit {
79
+ sha: string;
80
+ commit: {
81
+ message: string;
82
+ author: {
83
+ name: string;
84
+ email: string;
85
+ date: string;
86
+ };
87
+ committer: {
88
+ name: string;
89
+ email: string;
90
+ date: string;
91
+ };
92
+ };
93
+ author: {
94
+ login: string;
95
+ avatar_url: string;
96
+ };
97
+ html_url: string;
98
+ }
99
+ export interface GiteaIssue {
100
+ id: number;
101
+ number: number;
102
+ title: string;
103
+ body: string;
104
+ state: 'open' | 'closed';
105
+ user: {
106
+ login: string;
107
+ avatar_url: string;
108
+ };
109
+ labels: Array<{
110
+ name: string;
111
+ color: string;
112
+ }>;
113
+ created_at: string;
114
+ updated_at: string;
115
+ html_url: string;
116
+ }
117
+ export interface GiteaPullRequest {
118
+ id: number;
119
+ number: number;
120
+ title: string;
121
+ body: string;
122
+ state: 'open' | 'closed' | 'merged';
123
+ user: {
124
+ login: string;
125
+ avatar_url: string;
126
+ };
127
+ head: {
128
+ ref: string;
129
+ sha: string;
130
+ };
131
+ base: {
132
+ ref: string;
133
+ sha: string;
134
+ };
135
+ mergeable: boolean;
136
+ merged: boolean;
137
+ created_at: string;
138
+ updated_at: string;
139
+ html_url: string;
140
+ }
141
+ export interface GiteaRelease {
142
+ id: number;
143
+ tag_name: string;
144
+ name: string;
145
+ body: string;
146
+ draft: boolean;
147
+ prerelease: boolean;
148
+ created_at: string;
149
+ published_at: string;
150
+ html_url: string;
151
+ tarball_url: string;
152
+ zipball_url: string;
153
+ }
154
+ export interface GiteaTag {
155
+ name: string;
156
+ commit: {
157
+ sha: string;
158
+ url: string;
159
+ };
160
+ zipball_url: string;
161
+ tarball_url: string;
162
+ }
163
+ export interface GiteaUser {
164
+ id: number;
165
+ login: string;
166
+ full_name: string;
167
+ email: string;
168
+ avatar_url: string;
169
+ website: string;
170
+ location: string;
171
+ bio: string;
172
+ public_repos: number;
173
+ followers: number;
174
+ following: number;
175
+ created_at: string;
176
+ }
177
+ export interface GiteaWebhook {
178
+ id: number;
179
+ type: string;
180
+ config: {
181
+ url: string;
182
+ content_type: string;
183
+ secret?: string;
184
+ };
185
+ events: string[];
186
+ active: boolean;
187
+ created_at: string;
188
+ updated_at: string;
189
+ }
190
+ /**
191
+ * Cliente principal para API Gitea
192
+ *
193
+ * RESPONSABILIDADES:
194
+ * - Configuração do cliente HTTP
195
+ * - Gerenciamento de autenticação
196
+ * - Implementação de todos os endpoints
197
+ * - Tratamento de erros e respostas
198
+ *
199
+ * ARQUITETURA:
200
+ * - Cliente Axios configurado
201
+ * - Headers de autenticação automáticos
202
+ * - Base URL configurável
203
+ * - Timeout configurável
204
+ *
205
+ * RECOMENDAÇÕES:
206
+ * - Use apenas uma instância por aplicação
207
+ * - Configure interceptors para logging
208
+ * - Trate erros de autenticação adequadamente
209
+ * - Monitore uso da API
210
+ */
211
+ export declare class GiteaClient {
212
+ private axios;
213
+ private baseURL;
214
+ private providerFactory;
215
+ constructor();
216
+ /**
217
+ * Método helper para chamadas da API
218
+ *
219
+ * FUNCIONALIDADE:
220
+ * - Executa requisições HTTP para API Gitea
221
+ * - Trata erros de forma uniforme
222
+ * - Formata mensagens de erro
223
+ * - Suporta todos os métodos HTTP
224
+ *
225
+ * PARÂMETROS:
226
+ * - method: Método HTTP (GET, POST, PUT, DELETE, PATCH)
227
+ * - url: Endpoint da API
228
+ * - data: Dados para envio (opcional)
229
+ *
230
+ * TRATAMENTO DE ERROS:
231
+ * - Erros HTTP: formata com status e mensagem
232
+ * - Erros de rede: propaga erro original
233
+ * - Timeout: captura e formata adequadamente
234
+ *
235
+ * RECOMENDAÇÕES:
236
+ * - Use para todas as chamadas da API
237
+ * - Trate erros específicos por status
238
+ * - Implemente retry para erros temporários
239
+ */
240
+ private request;
241
+ getRepositories(username?: string, page?: number, limit?: number): Promise<GiteaRepository[]>;
242
+ getRepository(owner: string, repo: string): Promise<GiteaRepository>;
243
+ createRepository(data: any): Promise<GiteaRepository>;
244
+ updateRepository(owner: string, repo: string, data: any): Promise<GiteaRepository>;
245
+ deleteRepository(owner: string, repo: string): Promise<void>;
246
+ forkRepository(owner: string, repo: string, organization?: string): Promise<GiteaRepository>;
247
+ searchRepositories(query: string, page?: number, limit?: number): Promise<{
248
+ data: GiteaRepository[];
249
+ }>;
250
+ getBranches(owner: string, repo: string, page?: number, limit?: number): Promise<GiteaBranch[]>;
251
+ getBranch(owner: string, repo: string, branch: string): Promise<GiteaBranch>;
252
+ createBranch(owner: string, repo: string, branchName: string, fromBranch: string): Promise<GiteaBranch>;
253
+ deleteBranch(owner: string, repo: string, branch: string): Promise<void>;
254
+ getFile(owner: string, repo: string, path: string, ref?: string): Promise<GiteaFile>;
255
+ getDirectoryContents(owner: string, repo: string, path?: string, ref?: string): Promise<GiteaFile[]>;
256
+ createFile(owner: string, repo: string, path: string, data: any): Promise<any>;
257
+ updateFile(owner: string, repo: string, path: string, data: any): Promise<any>;
258
+ deleteFile(owner: string, repo: string, path: string, data: any): Promise<any>;
259
+ getCommits(owner: string, repo: string, page?: number, limit?: number, sha?: string): Promise<GiteaCommit[]>;
260
+ getCommit(owner: string, repo: string, sha: string): Promise<GiteaCommit>;
261
+ getIssues(owner: string, repo: string, state?: string, page?: number, limit?: number): Promise<GiteaIssue[]>;
262
+ getIssue(owner: string, repo: string, index: number): Promise<GiteaIssue>;
263
+ createIssue(owner: string, repo: string, data: any): Promise<GiteaIssue>;
264
+ updateIssue(owner: string, repo: string, index: number, data: any): Promise<GiteaIssue>;
265
+ createIssueComment(owner: string, repo: string, index: number, body: string): Promise<any>;
266
+ getPullRequests(owner: string, repo: string, state?: string, page?: number, limit?: number): Promise<GiteaPullRequest[]>;
267
+ getPullRequest(owner: string, repo: string, index: number): Promise<GiteaPullRequest>;
268
+ createPullRequest(owner: string, repo: string, data: any): Promise<GiteaPullRequest>;
269
+ updatePullRequest(owner: string, repo: string, index: number, data: any): Promise<GiteaPullRequest>;
270
+ mergePullRequest(owner: string, repo: string, index: number, data: any): Promise<any>;
271
+ getReleases(owner: string, repo: string, page?: number, limit?: number): Promise<GiteaRelease[]>;
272
+ getRelease(owner: string, repo: string, id: number): Promise<GiteaRelease>;
273
+ getLatestRelease(owner: string, repo: string): Promise<GiteaRelease>;
274
+ createRelease(owner: string, repo: string, data: any): Promise<GiteaRelease>;
275
+ updateRelease(owner: string, repo: string, id: number, data: any): Promise<GiteaRelease>;
276
+ deleteRelease(owner: string, repo: string, id: number): Promise<void>;
277
+ getTags(owner: string, repo: string, page?: number, limit?: number): Promise<GiteaTag[]>;
278
+ createTag(owner: string, repo: string, data: any): Promise<any>;
279
+ deleteTag(owner: string, repo: string, tag: string): Promise<void>;
280
+ getCurrentUser(): Promise<GiteaUser>;
281
+ getUser(username: string): Promise<GiteaUser>;
282
+ searchUsers(query: string, page?: number, limit?: number): Promise<{
283
+ data: GiteaUser[];
284
+ }>;
285
+ getUserOrganizations(username: string): Promise<any[]>;
286
+ getWebhooks(owner: string, repo: string): Promise<GiteaWebhook[]>;
287
+ getWebhook(owner: string, repo: string, id: number): Promise<GiteaWebhook>;
288
+ createWebhook(owner: string, repo: string, data: any): Promise<GiteaWebhook>;
289
+ updateWebhook(owner: string, repo: string, id: number, data: any): Promise<GiteaWebhook>;
290
+ deleteWebhook(owner: string, repo: string, id: number): Promise<void>;
291
+ testWebhook(owner: string, repo: string, id: number): Promise<any>;
292
+ }
293
+ /**
294
+ * Instância global do cliente Gitea
295
+ *
296
+ * USO:
297
+ * - import { giteaClient } from './client.js';
298
+ * - const repos = await giteaClient.getRepositories();
299
+ *
300
+ * RECOMENDAÇÕES:
301
+ * - Use esta instância para todas as operações
302
+ * - Não crie novas instâncias
303
+ * - Configure antes de usar
304
+ * - Monitore uso e performance
305
+ */
306
+ export declare const giteaClient: GiteaClient;
307
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}