@andrebuzeli/git-mcp 7.6.0 → 8.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.
- package/README.md +309 -0
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/providers/giteaProvider.d.ts +17 -1
- package/dist/providers/giteaProvider.d.ts.map +1 -1
- package/dist/providers/giteaProvider.js +86 -1
- package/dist/providers/giteaProvider.js.map +1 -1
- package/dist/providers/providerManager.d.ts +2 -0
- package/dist/providers/providerManager.d.ts.map +1 -1
- package/dist/providers/providerManager.js +3 -0
- package/dist/providers/providerManager.js.map +1 -1
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +1 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/gitAnalytics.d.ts.map +1 -1
- package/dist/tools/gitAnalytics.js +5 -0
- package/dist/tools/gitAnalytics.js.map +1 -1
- package/dist/tools/gitBackup.d.ts +2 -2
- package/dist/tools/gitBackup.d.ts.map +1 -1
- package/dist/tools/gitBackup.js +5 -6
- package/dist/tools/gitBackup.js.map +1 -1
- package/dist/tools/gitBranches.d.ts.map +1 -1
- package/dist/tools/gitBranches.js +35 -21
- package/dist/tools/gitBranches.js.map +1 -1
- package/dist/tools/gitConfig.d.ts +2 -2
- package/dist/tools/gitConfig.d.ts.map +1 -1
- package/dist/tools/gitConfig.js +7 -8
- package/dist/tools/gitConfig.js.map +1 -1
- package/dist/tools/gitFix.d.ts +2 -1
- package/dist/tools/gitFix.d.ts.map +1 -1
- package/dist/tools/gitFix.js +24 -17
- package/dist/tools/gitFix.js.map +1 -1
- package/dist/tools/gitFix.tool.d.ts +2 -2
- package/dist/tools/gitFix.tool.d.ts.map +1 -1
- package/dist/tools/gitFix.tool.js +2 -2
- package/dist/tools/gitFix.tool.js.map +1 -1
- package/dist/tools/gitHistory.d.ts.map +1 -1
- package/dist/tools/gitHistory.js +9 -10
- package/dist/tools/gitHistory.js.map +1 -1
- package/dist/tools/gitIssues.d.ts.map +1 -1
- package/dist/tools/gitIssues.js +44 -13
- package/dist/tools/gitIssues.js.map +1 -1
- package/dist/tools/gitMonitor.d.ts.map +1 -1
- package/dist/tools/gitMonitor.js +10 -11
- package/dist/tools/gitMonitor.js.map +1 -1
- package/dist/tools/gitPackages.js +1 -1
- package/dist/tools/gitPackages.js.map +1 -1
- package/dist/tools/gitPulls.d.ts.map +1 -1
- package/dist/tools/gitPulls.js +24 -5
- package/dist/tools/gitPulls.js.map +1 -1
- package/dist/tools/gitRelease.d.ts.map +1 -1
- package/dist/tools/gitRelease.js +35 -4
- package/dist/tools/gitRelease.js.map +1 -1
- package/dist/tools/gitRemote.d.ts +6 -1
- package/dist/tools/gitRemote.d.ts.map +1 -1
- package/dist/tools/gitRemote.js +17 -9
- package/dist/tools/gitRemote.js.map +1 -1
- package/dist/tools/gitReset.d.ts.map +1 -1
- package/dist/tools/gitReset.js +6 -7
- package/dist/tools/gitReset.js.map +1 -1
- package/dist/tools/gitStash.d.ts +2 -2
- package/dist/tools/gitStash.d.ts.map +1 -1
- package/dist/tools/gitStash.js +21 -25
- package/dist/tools/gitStash.js.map +1 -1
- package/dist/tools/gitSync.d.ts.map +1 -1
- package/dist/tools/gitSync.js +16 -19
- package/dist/tools/gitSync.js.map +1 -1
- package/dist/tools/gitTags.d.ts.map +1 -1
- package/dist/tools/gitTags.js +12 -23
- package/dist/tools/gitTags.js.map +1 -1
- package/dist/tools/gitUpdate.d.ts.map +1 -1
- package/dist/tools/gitUpdate.js +28 -41
- package/dist/tools/gitUpdate.js.map +1 -1
- package/dist/tools/gitUpload.d.ts.map +1 -1
- package/dist/tools/gitUpload.js +19 -21
- package/dist/tools/gitUpload.js.map +1 -1
- package/dist/tools/gitWorkflow.d.ts.map +1 -1
- package/dist/tools/gitWorkflow.js +21 -39
- package/dist/tools/gitWorkflow.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/apiHelpers.d.ts +30 -0
- package/dist/utils/apiHelpers.d.ts.map +1 -0
- package/dist/utils/apiHelpers.js +126 -0
- package/dist/utils/apiHelpers.js.map +1 -0
- package/dist/utils/gitAdapter.d.ts +222 -0
- package/dist/utils/gitAdapter.d.ts.map +1 -0
- package/dist/utils/gitAdapter.js +1071 -0
- package/dist/utils/gitAdapter.js.map +1 -0
- package/package.json +12 -4
package/README.md
ADDED
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
# 🚀 Git MCP - 100% Native JavaScript Git Implementation
|
|
2
|
+
|
|
3
|
+
**Model Context Protocol (MCP) server for Git operations with ZERO dependencies on installed Git!**
|
|
4
|
+
|
|
5
|
+
## ✨ Key Features
|
|
6
|
+
|
|
7
|
+
### 🎯 **100% Git Independent**
|
|
8
|
+
- **No Git installation required** - Pure JavaScript implementation using [isomorphic-git](https://isomorphic-git.org/)
|
|
9
|
+
- **Works anywhere** - Browser, Node.js, Electron, VS Code, or any JavaScript runtime
|
|
10
|
+
- **Cross-platform** - Windows, macOS, Linux with identical behavior
|
|
11
|
+
- **Portable** - Bundle everything in your app, no external dependencies
|
|
12
|
+
|
|
13
|
+
### 🔄 **Dual-Provider Support**
|
|
14
|
+
- **GitHub + Gitea** - Automatic dual-push to both platforms
|
|
15
|
+
- **Unified API** - Single command pushes to both providers
|
|
16
|
+
- **Fallback support** - Works with either provider independently
|
|
17
|
+
- **Environment-based auth** - Uses `GITHUB_TOKEN` and `GITEA_TOKEN`
|
|
18
|
+
|
|
19
|
+
### 🧠 **Smart Commit Authors**
|
|
20
|
+
- **Automatic detection** - Extracts username from GitHub/Gitea APIs
|
|
21
|
+
- **Provider-aware** - Uses authenticated provider username
|
|
22
|
+
- **Fallback chain** - Provider → Local .git/config → Default "MCP User"
|
|
23
|
+
|
|
24
|
+
### 📊 **Complete Traceability**
|
|
25
|
+
- **Full history tracking** - Every change logged with timestamps
|
|
26
|
+
- **Issue integration** - Links commits to GitHub/Gitea issues
|
|
27
|
+
- **Detailed metadata** - Files changed, authors, providers, and more
|
|
28
|
+
|
|
29
|
+
### 🛠️ **22 Comprehensive Tools**
|
|
30
|
+
|
|
31
|
+
#### Core Operations
|
|
32
|
+
- `git-workflow` - Initialize, status, commit, sync, backup
|
|
33
|
+
- `git-update` - Complete update workflow (add + commit + push)
|
|
34
|
+
- `git-upload` - Upload entire project to GitHub/Gitea
|
|
35
|
+
- `git-fix` - Auto-configure dual-provider system
|
|
36
|
+
|
|
37
|
+
#### Branch Management
|
|
38
|
+
- `git-branches` - List, create, delete, checkout, merge branches
|
|
39
|
+
|
|
40
|
+
#### Remote Operations
|
|
41
|
+
- `git-remote` - Manage remotes (add, remove, list)
|
|
42
|
+
- `git-sync` - Fetch, pull, push operations
|
|
43
|
+
|
|
44
|
+
#### Version Control
|
|
45
|
+
- `git-tags` - Create, list, delete tags
|
|
46
|
+
- `git-stash` - Save, list, apply, pop, drop stash (standard Git format)
|
|
47
|
+
- `git-reset` - Soft, mixed, hard reset operations
|
|
48
|
+
|
|
49
|
+
#### Configuration
|
|
50
|
+
- `git-config` - Local, global, and system Git configuration
|
|
51
|
+
- `git-ignore` - Manage .gitignore patterns
|
|
52
|
+
|
|
53
|
+
#### Collaboration
|
|
54
|
+
- `git-issues` - Create, list, update GitHub/Gitea issues
|
|
55
|
+
- `git-pulls` - Create, list, merge pull requests
|
|
56
|
+
- `git-release` - Create and manage releases
|
|
57
|
+
|
|
58
|
+
#### Advanced
|
|
59
|
+
- `git-history` - Complete change history with remote tracking
|
|
60
|
+
- `git-monitor` - Repository monitoring and analytics
|
|
61
|
+
- `git-analytics` - Detailed repository statistics
|
|
62
|
+
- `git-backup` - Backup and restore operations
|
|
63
|
+
- `git-archive` - Archive repository state
|
|
64
|
+
- `git-packages` - Package management
|
|
65
|
+
|
|
66
|
+
## 🏗️ Architecture
|
|
67
|
+
|
|
68
|
+
### GitAdapter Pattern
|
|
69
|
+
```typescript
|
|
70
|
+
interface GitAdapter {
|
|
71
|
+
// Core operations
|
|
72
|
+
init(projectPath: string): Promise<void>;
|
|
73
|
+
status(projectPath: string): Promise<StatusResult>;
|
|
74
|
+
add(projectPath: string, files: string[]): Promise<void>;
|
|
75
|
+
commit(projectPath: string, message: string): Promise<string>;
|
|
76
|
+
|
|
77
|
+
// Remote operations (HTTP-based, no SSH)
|
|
78
|
+
push(projectPath: string, remote: string, branch: string): Promise<void>;
|
|
79
|
+
pull(projectPath: string, remote: string, branch: string): Promise<void>;
|
|
80
|
+
fetch(projectPath: string, remote: string): Promise<void>;
|
|
81
|
+
|
|
82
|
+
// Advanced operations
|
|
83
|
+
merge(projectPath: string, branch: string): Promise<void>;
|
|
84
|
+
log(projectPath: string, options?: any): Promise<LogEntry[]>;
|
|
85
|
+
diff(projectPath: string, ref1?: string, ref2?: string): Promise<DiffResult>;
|
|
86
|
+
reset(projectPath: string, ref: string, mode: 'soft'|'mixed'|'hard'): Promise<void>;
|
|
87
|
+
|
|
88
|
+
// Hybrid implementations
|
|
89
|
+
stashSave/List/Apply/Pop/Drop/Clear() // Uses refs/stash + reflog
|
|
90
|
+
getConfig/setConfig/listConfig() // isomorphic-git + fs for global/system
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### IsomorphicGitAdapter Implementation
|
|
95
|
+
- **100% isomorphic-git** - No simple-git dependency
|
|
96
|
+
- **HTTP authentication** - Token-based via `onAuth` callbacks
|
|
97
|
+
- **Standard Git formats** - Compatible with native Git
|
|
98
|
+
- **Hybrid features** - Combines isomorphic-git with Node.js fs for full functionality
|
|
99
|
+
|
|
100
|
+
## 📦 Installation
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
npm install @andrebuzeli/git-mcp
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Environment Variables
|
|
107
|
+
```bash
|
|
108
|
+
# GitHub authentication
|
|
109
|
+
GITHUB_TOKEN=ghp_xxxxxxxxxxxx
|
|
110
|
+
GITHUB_USERNAME=your-username
|
|
111
|
+
|
|
112
|
+
# Gitea authentication
|
|
113
|
+
GITEA_TOKEN=xxxxxxxxxx
|
|
114
|
+
GITEA_USERNAME=your-username
|
|
115
|
+
GITEA_URL=https://gitea.example.com # or http://localhost:3000
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### MCP Configuration (Claude Desktop / IDEs)
|
|
119
|
+
|
|
120
|
+
Add to your `mcp.json`:
|
|
121
|
+
|
|
122
|
+
```json
|
|
123
|
+
{
|
|
124
|
+
"mcpServers": {
|
|
125
|
+
"git-mcp": {
|
|
126
|
+
"command": "node",
|
|
127
|
+
"args": ["Z:\\MCP\\GIT MCP\\build\\index.js"],
|
|
128
|
+
"env": {
|
|
129
|
+
"GITHUB_TOKEN": "ghp_xxxxxxxxxxxx",
|
|
130
|
+
"GITHUB_USERNAME": "your-username",
|
|
131
|
+
"GITEA_TOKEN": "xxxxxxxxxx",
|
|
132
|
+
"GITEA_USERNAME": "your-username",
|
|
133
|
+
"GITEA_URL": "http://localhost:3000"
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## 🚀 Quick Start
|
|
141
|
+
|
|
142
|
+
### 1. Fix Existing Repository
|
|
143
|
+
```typescript
|
|
144
|
+
{
|
|
145
|
+
"projectPath": "/path/to/repo",
|
|
146
|
+
"autoDetect": true // Auto-detects GitHub/Gitea from existing remotes
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### 2. Initialize New Repository
|
|
151
|
+
```typescript
|
|
152
|
+
{
|
|
153
|
+
"action": "init",
|
|
154
|
+
"projectPath": "/path/to/new-project"
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### 3. Complete Update Workflow
|
|
159
|
+
```typescript
|
|
160
|
+
{
|
|
161
|
+
"projectPath": "/path/to/project",
|
|
162
|
+
"commitMessage": "feat: add new feature",
|
|
163
|
+
"repoName": "my-project",
|
|
164
|
+
"description": "My awesome project",
|
|
165
|
+
"private": true
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
## 🔧 How It Works
|
|
170
|
+
|
|
171
|
+
### No Git Installation Needed
|
|
172
|
+
|
|
173
|
+
Traditional Git tools require Git CLI to be installed:
|
|
174
|
+
```bash
|
|
175
|
+
# ❌ OLD WAY - Requires Git installation
|
|
176
|
+
git add .
|
|
177
|
+
git commit -m "message"
|
|
178
|
+
git push origin main
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**Git MCP uses isomorphic-git - pure JavaScript:**
|
|
182
|
+
```typescript
|
|
183
|
+
// ✅ NEW WAY - No Git installation required
|
|
184
|
+
await git.add(projectPath, '.');
|
|
185
|
+
await git.commit(projectPath, 'message');
|
|
186
|
+
await git.push(projectPath, 'origin', 'main');
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### HTTP-Based Authentication
|
|
190
|
+
|
|
191
|
+
**No SSH keys needed** - Uses HTTP tokens:
|
|
192
|
+
|
|
193
|
+
```typescript
|
|
194
|
+
// Automatic authentication via environment tokens
|
|
195
|
+
const auth = {
|
|
196
|
+
username: process.env.GITHUB_USERNAME,
|
|
197
|
+
password: process.env.GITHUB_TOKEN
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
await git.push({
|
|
201
|
+
fs,
|
|
202
|
+
http,
|
|
203
|
+
dir: projectPath,
|
|
204
|
+
remote: 'github',
|
|
205
|
+
ref: 'main',
|
|
206
|
+
onAuth: () => auth
|
|
207
|
+
});
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Hybrid Implementations
|
|
211
|
+
|
|
212
|
+
Some Git features not natively supported by isomorphic-git are implemented using hybrid approaches:
|
|
213
|
+
|
|
214
|
+
#### Stash (refs/stash + reflog)
|
|
215
|
+
```typescript
|
|
216
|
+
// Creates standard Git stash using commits + refs/stash
|
|
217
|
+
await git.stashSave(projectPath, 'WIP: feature');
|
|
218
|
+
|
|
219
|
+
// Reflog stored in .git/logs/refs/stash
|
|
220
|
+
// Compatible with native Git stash commands
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
#### Global Config (fs + isomorphic-git)
|
|
224
|
+
```typescript
|
|
225
|
+
// Local config via isomorphic-git
|
|
226
|
+
await git.setConfig(projectPath, 'user.name', 'John', 'local');
|
|
227
|
+
|
|
228
|
+
// Global config via direct fs access to ~/.gitconfig
|
|
229
|
+
await git.setConfig(projectPath, 'user.email', 'john@example.com', 'global');
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## 🎯 Use Cases
|
|
233
|
+
|
|
234
|
+
### ✅ Perfect For:
|
|
235
|
+
- **CI/CD pipelines** - No Git installation needed
|
|
236
|
+
- **Electron apps** - Embedded Git functionality
|
|
237
|
+
- **VS Code extensions** - Native Git operations
|
|
238
|
+
- **Web applications** - Git in the browser
|
|
239
|
+
- **Docker containers** - Smaller images without Git
|
|
240
|
+
- **Cross-platform tools** - Consistent behavior everywhere
|
|
241
|
+
|
|
242
|
+
### ⚠️ Limitations:
|
|
243
|
+
- **SSH not supported** - Use HTTPS with tokens
|
|
244
|
+
- **Large repos** - May be slower than native Git
|
|
245
|
+
- **Complex operations** - Some advanced features limited
|
|
246
|
+
|
|
247
|
+
## 📊 Performance
|
|
248
|
+
|
|
249
|
+
- **Startup time**: ~100ms (no Git CLI spawning)
|
|
250
|
+
- **Small repos (<100MB)**: Comparable to native Git
|
|
251
|
+
- **Large repos (>1GB)**: 2-3x slower than native Git
|
|
252
|
+
- **Memory usage**: Higher than native Git (pure JavaScript)
|
|
253
|
+
|
|
254
|
+
## 🔒 Security
|
|
255
|
+
|
|
256
|
+
- **Token-based auth** - No passwords or SSH keys stored
|
|
257
|
+
- **Environment variables** - Credentials from secure sources
|
|
258
|
+
- **No shell execution** - Pure JavaScript, no command injection
|
|
259
|
+
- **Sandboxed operations** - All operations in Node.js runtime
|
|
260
|
+
|
|
261
|
+
## 🛠️ Development
|
|
262
|
+
|
|
263
|
+
### Build
|
|
264
|
+
```bash
|
|
265
|
+
npm run build
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### Test
|
|
269
|
+
```bash
|
|
270
|
+
npm test
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
### Lint
|
|
274
|
+
```bash
|
|
275
|
+
npm run lint
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
## 📚 Documentation
|
|
279
|
+
|
|
280
|
+
- [isomorphic-git Documentation](https://isomorphic-git.org/)
|
|
281
|
+
- [Model Context Protocol](https://modelcontextprotocol.io/)
|
|
282
|
+
- [API Reference](./docs/api.md) *(coming soon)*
|
|
283
|
+
|
|
284
|
+
## 🤝 Contributing
|
|
285
|
+
|
|
286
|
+
Contributions welcome! Please read [CONTRIBUTING.md](./CONTRIBUTING.md) for guidelines.
|
|
287
|
+
|
|
288
|
+
## 📄 License
|
|
289
|
+
|
|
290
|
+
MIT License - see [LICENSE](./LICENSE) for details.
|
|
291
|
+
|
|
292
|
+
## 🙏 Credits
|
|
293
|
+
|
|
294
|
+
Built with:
|
|
295
|
+
- [isomorphic-git](https://isomorphic-git.org/) - Pure JavaScript Git implementation
|
|
296
|
+
- [@modelcontextprotocol/sdk](https://modelcontextprotocol.io/) - MCP protocol
|
|
297
|
+
- [@octokit/rest](https://octokit.github.io/rest.js/) - GitHub API client
|
|
298
|
+
- [axios](https://axios-http.com/) - HTTP client for Gitea API
|
|
299
|
+
|
|
300
|
+
## 📞 Support
|
|
301
|
+
|
|
302
|
+
- **Issues**: [GitHub Issues](https://github.com/Andre-Buzeli/git-mcp/issues)
|
|
303
|
+
- **Discussions**: [GitHub Discussions](https://github.com/Andre-Buzeli/git-mcp/discussions)
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
**Made with ❤️ by Andre Buzeli**
|
|
308
|
+
|
|
309
|
+
*Git operations without Git - powered by isomorphic-git and MCP*
|
package/dist/index.js
CHANGED
|
@@ -3,6 +3,7 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
|
3
3
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
4
|
import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
5
5
|
import { ProviderManager } from './providers/providerManager.js';
|
|
6
|
+
import { IsomorphicGitAdapter } from './utils/gitAdapter.js';
|
|
6
7
|
import { loadMCPConfig } from './config.js';
|
|
7
8
|
import { GitFilesTool } from './tools/gitFiles.js';
|
|
8
9
|
import { GitWorkflowTool } from './tools/gitWorkflow.js';
|
|
@@ -31,6 +32,7 @@ async function main() {
|
|
|
31
32
|
// Load optional mcp.json configuration (will populate process.env if values present)
|
|
32
33
|
loadMCPConfig();
|
|
33
34
|
const providerManager = new ProviderManager();
|
|
35
|
+
const gitAdapter = new IsomorphicGitAdapter(providerManager);
|
|
34
36
|
// Skip validation on startup to prevent hanging (validation happens on first use)
|
|
35
37
|
// Provider validation moved to lazy initialization
|
|
36
38
|
// Register all 22 Git tools
|
|
@@ -100,7 +102,7 @@ async function main() {
|
|
|
100
102
|
throw new Error(`Tool not found: ${toolName}`);
|
|
101
103
|
}
|
|
102
104
|
try {
|
|
103
|
-
const result = await tool.handle(request.params.arguments ?? {}, { providerManager });
|
|
105
|
+
const result = await tool.handle(request.params.arguments ?? {}, { providerManager, gitAdapter });
|
|
104
106
|
return {
|
|
105
107
|
content: [
|
|
106
108
|
{
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,WAAW,MAAM,2BAA2B,CAAC;AAEpD,KAAK,UAAU,IAAI;IACjB,qFAAqF;IACrF,aAAa,EAAE,CAAC;IAEhB,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,20 @@
|
|
|
1
|
+
export declare class GiteaAPIError extends Error {
|
|
2
|
+
status: number;
|
|
3
|
+
url: string;
|
|
4
|
+
response?: any | undefined;
|
|
5
|
+
constructor(message: string, status: number, url: string, response?: any | undefined);
|
|
6
|
+
}
|
|
7
|
+
interface GiteaResponse<T = any> {
|
|
8
|
+
data: T;
|
|
9
|
+
headers?: Record<string, string>;
|
|
10
|
+
status: number;
|
|
11
|
+
}
|
|
1
12
|
export declare function createGiteaClient(baseUrl: string, token: string): {
|
|
2
|
-
request
|
|
13
|
+
request<T = any>(path: string, opts?: any): Promise<GiteaResponse<T>>;
|
|
14
|
+
get<T = any>(path: string): Promise<GiteaResponse<T>>;
|
|
15
|
+
post<T = any>(path: string, data?: any): Promise<GiteaResponse<T>>;
|
|
16
|
+
patch<T = any>(path: string, data?: any): Promise<GiteaResponse<T>>;
|
|
17
|
+
delete<T = any>(path: string): Promise<GiteaResponse<T>>;
|
|
3
18
|
};
|
|
19
|
+
export {};
|
|
4
20
|
//# sourceMappingURL=giteaProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"giteaProvider.d.ts","sourceRoot":"","sources":["../../src/providers/giteaProvider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"giteaProvider.d.ts","sourceRoot":"","sources":["../../src/providers/giteaProvider.ts"],"names":[],"mappings":"AAMA,qBAAa,aAAc,SAAQ,KAAK;IAG7B,MAAM,EAAE,MAAM;IACd,GAAG,EAAE,MAAM;IACX,QAAQ,CAAC,EAAE,GAAG;gBAHrB,OAAO,EAAE,MAAM,EACR,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,GAAG,YAAA;CAKxB;AAED,UAAU,aAAa,CAAC,CAAC,GAAG,GAAG;IAC7B,IAAI,EAAE,CAAC,CAAC;IACR,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;CAChB;AAoED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;YAU9C,CAAC,cAAc,MAAM,SAAQ,GAAG,GAAQ,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;QAYrE,CAAC,cAAc,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SAQhD,CAAC,cAAc,MAAM,SAAS,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;UAQ5D,CAAC,cAAc,MAAM,SAAS,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;WAQ5D,CAAC,cAAc,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;EAQjE"}
|
|
@@ -1,7 +1,92 @@
|
|
|
1
1
|
import axios from 'axios';
|
|
2
|
+
// ============================================================================
|
|
3
|
+
// GITEA API ERROR HANDLING
|
|
4
|
+
// ============================================================================
|
|
5
|
+
export class GiteaAPIError extends Error {
|
|
6
|
+
constructor(message, status, url, response) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.status = status;
|
|
9
|
+
this.url = url;
|
|
10
|
+
this.response = response;
|
|
11
|
+
this.name = 'GiteaAPIError';
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// GITEA API VALIDATION & RETRY
|
|
16
|
+
// ============================================================================
|
|
17
|
+
async function validateGiteaResponse(response, url) {
|
|
18
|
+
// Axios throws on non-2xx, but double-check
|
|
19
|
+
if (response.status < 200 || response.status >= 300) {
|
|
20
|
+
const errorMessage = response.data?.message || `Gitea API Error: ${response.status} ${response.statusText}`;
|
|
21
|
+
throw new GiteaAPIError(errorMessage, response.status, url, response.data);
|
|
22
|
+
}
|
|
23
|
+
// Validate data exists
|
|
24
|
+
if (response.data === null || response.data === undefined) {
|
|
25
|
+
throw new GiteaAPIError('Response data is null or undefined', response.status, url);
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
data: response.data,
|
|
29
|
+
headers: response.headers,
|
|
30
|
+
status: response.status
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
async function giteaFetchWithRetry(axiosCall, url, maxRetries = 3, retryDelay = 1000) {
|
|
34
|
+
let lastError = null;
|
|
35
|
+
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
36
|
+
try {
|
|
37
|
+
const response = await axiosCall();
|
|
38
|
+
return await validateGiteaResponse(response, url);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
lastError = error;
|
|
42
|
+
// Don't retry on 4xx (client errors)
|
|
43
|
+
if (error.response?.status >= 400 && error.response?.status < 500) {
|
|
44
|
+
throw new GiteaAPIError(error.response.data?.message || error.message, error.response.status, url, error.response.data);
|
|
45
|
+
}
|
|
46
|
+
// Retry on 5xx (server errors) or network errors
|
|
47
|
+
if (attempt < maxRetries - 1) {
|
|
48
|
+
await new Promise(resolve => setTimeout(resolve, retryDelay * (attempt + 1)));
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
throw lastError || new Error('Max retries exceeded');
|
|
54
|
+
}
|
|
55
|
+
// ============================================================================
|
|
56
|
+
// GITEA CLIENT
|
|
57
|
+
// ============================================================================
|
|
2
58
|
export function createGiteaClient(baseUrl, token) {
|
|
59
|
+
const cleanBaseUrl = baseUrl.replace(/\/+$/, ''); // Remove trailing slashes
|
|
60
|
+
const getHeaders = () => ({
|
|
61
|
+
'Authorization': `token ${token}`,
|
|
62
|
+
'Content-Type': 'application/json',
|
|
63
|
+
'Accept': 'application/json'
|
|
64
|
+
});
|
|
3
65
|
return {
|
|
4
|
-
request
|
|
66
|
+
async request(path, opts = {}) {
|
|
67
|
+
const url = `${cleanBaseUrl}${path}`;
|
|
68
|
+
return giteaFetchWithRetry(() => axios.request({
|
|
69
|
+
url,
|
|
70
|
+
headers: { ...getHeaders(), ...opts.headers },
|
|
71
|
+
...opts
|
|
72
|
+
}), url);
|
|
73
|
+
},
|
|
74
|
+
async get(path) {
|
|
75
|
+
const url = `${cleanBaseUrl}${path}`;
|
|
76
|
+
return giteaFetchWithRetry(() => axios.get(url, { headers: getHeaders() }), url);
|
|
77
|
+
},
|
|
78
|
+
async post(path, data) {
|
|
79
|
+
const url = `${cleanBaseUrl}${path}`;
|
|
80
|
+
return giteaFetchWithRetry(() => axios.post(url, data, { headers: getHeaders() }), url);
|
|
81
|
+
},
|
|
82
|
+
async patch(path, data) {
|
|
83
|
+
const url = `${cleanBaseUrl}${path}`;
|
|
84
|
+
return giteaFetchWithRetry(() => axios.patch(url, data, { headers: getHeaders() }), url);
|
|
85
|
+
},
|
|
86
|
+
async delete(path) {
|
|
87
|
+
const url = `${cleanBaseUrl}${path}`;
|
|
88
|
+
return giteaFetchWithRetry(() => axios.delete(url, { headers: getHeaders() }), url);
|
|
89
|
+
}
|
|
5
90
|
};
|
|
6
91
|
}
|
|
7
92
|
//# sourceMappingURL=giteaProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"giteaProvider.js","sourceRoot":"","sources":["../../src/providers/giteaProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,KAAa;IAC9D,OAAO
|
|
1
|
+
{"version":3,"file":"giteaProvider.js","sourceRoot":"","sources":["../../src/providers/giteaProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,YACE,OAAe,EACR,MAAc,EACd,GAAW,EACX,QAAc;QAErB,KAAK,CAAC,OAAO,CAAC,CAAC;QAJR,WAAM,GAAN,MAAM,CAAQ;QACd,QAAG,GAAH,GAAG,CAAQ;QACX,aAAQ,GAAR,QAAQ,CAAM;QAGrB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAQD,+EAA+E;AAC/E,+BAA+B;AAC/B,+EAA+E;AAE/E,KAAK,UAAU,qBAAqB,CAClC,QAAa,EACb,GAAW;IAEX,4CAA4C;IAC5C,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QACpD,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,oBAAoB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5G,MAAM,IAAI,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7E,CAAC;IAED,uBAAuB;IACvB,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC1D,MAAM,IAAI,aAAa,CAAC,oCAAoC,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtF,CAAC;IAED,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;KACxB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,SAA6B,EAC7B,GAAW,EACX,UAAU,GAAG,CAAC,EACd,UAAU,GAAG,IAAI;IAEjB,IAAI,SAAS,GAAiB,IAAI,CAAC;IAEnC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;QACtD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,SAAS,EAAE,CAAC;YACnC,OAAO,MAAM,qBAAqB,CAAI,QAAQ,EAAE,GAAG,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,SAAS,GAAG,KAAK,CAAC;YAElB,qCAAqC;YACrC,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,EAAE,CAAC;gBAClE,MAAM,IAAI,aAAa,CACrB,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,IAAI,KAAK,CAAC,OAAO,EAC7C,KAAK,CAAC,QAAQ,CAAC,MAAM,EACrB,GAAG,EACH,KAAK,CAAC,QAAQ,CAAC,IAAI,CACpB,CAAC;YACJ,CAAC;YAED,iDAAiD;YACjD,IAAI,OAAO,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC9E,SAAS;YACX,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,SAAS,IAAI,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;AACvD,CAAC;AAED,+EAA+E;AAC/E,eAAe;AACf,+EAA+E;AAE/E,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,KAAa;IAC9D,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,0BAA0B;IAE5E,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC,CAAC;QACxB,eAAe,EAAE,SAAS,KAAK,EAAE;QACjC,cAAc,EAAE,kBAAkB;QAClC,QAAQ,EAAE,kBAAkB;KAC7B,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,CAAC,OAAO,CAAU,IAAY,EAAE,OAAY,EAAE;YACjD,MAAM,GAAG,GAAG,GAAG,YAAY,GAAG,IAAI,EAAE,CAAC;YACrC,OAAO,mBAAmB,CACxB,GAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;gBAClB,GAAG;gBACH,OAAO,EAAE,EAAE,GAAG,UAAU,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE;gBAC7C,GAAG,IAAI;aACR,CAAC,EACF,GAAG,CACJ,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,GAAG,CAAU,IAAY;YAC7B,MAAM,GAAG,GAAG,GAAG,YAAY,GAAG,IAAI,EAAE,CAAC;YACrC,OAAO,mBAAmB,CACxB,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,EAC/C,GAAG,CACJ,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,IAAI,CAAU,IAAY,EAAE,IAAU;YAC1C,MAAM,GAAG,GAAG,GAAG,YAAY,GAAG,IAAI,EAAE,CAAC;YACrC,OAAO,mBAAmB,CACxB,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,EACtD,GAAG,CACJ,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,KAAK,CAAU,IAAY,EAAE,IAAU;YAC3C,MAAM,GAAG,GAAG,GAAG,YAAY,GAAG,IAAI,EAAE,CAAC;YACrC,OAAO,mBAAmB,CACxB,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,EACvD,GAAG,CACJ,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,MAAM,CAAU,IAAY;YAChC,MAAM,GAAG,GAAG,GAAG,YAAY,GAAG,IAAI,EAAE,CAAC;YACrC,OAAO,mBAAmB,CACxB,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,CAAC,EAClD,GAAG,CACJ,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Octokit } from '@octokit/rest';
|
|
2
|
+
import { createGiteaClient } from './giteaProvider.js';
|
|
2
3
|
export declare class ProviderManager {
|
|
3
4
|
github?: Octokit;
|
|
5
|
+
gitea?: ReturnType<typeof createGiteaClient>;
|
|
4
6
|
giteaBaseUrl?: string;
|
|
5
7
|
giteaToken?: string;
|
|
6
8
|
constructor();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providerManager.d.ts","sourceRoot":"","sources":["../../src/providers/providerManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"providerManager.d.ts","sourceRoot":"","sources":["../../src/providers/providerManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,qBAAa,eAAe;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;IAC7C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;;IAoBd,2BAA2B;YACK,OAAO;gBAAU,MAAM;;CAqC9D"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Octokit } from '@octokit/rest';
|
|
2
2
|
import axios from 'axios';
|
|
3
|
+
import { createGiteaClient } from './giteaProvider.js';
|
|
3
4
|
export class ProviderManager {
|
|
4
5
|
constructor() {
|
|
5
6
|
const ghToken = process.env.GITHUB_TOKEN;
|
|
@@ -9,6 +10,8 @@ export class ProviderManager {
|
|
|
9
10
|
if (process.env.GITEA_URL && process.env.GITEA_TOKEN) {
|
|
10
11
|
this.giteaBaseUrl = process.env.GITEA_URL;
|
|
11
12
|
this.giteaToken = process.env.GITEA_TOKEN;
|
|
13
|
+
// Initialize Gitea client
|
|
14
|
+
this.gitea = createGiteaClient(process.env.GITEA_URL, process.env.GITEA_TOKEN);
|
|
12
15
|
}
|
|
13
16
|
}
|
|
14
17
|
async validateConfiguredProviders() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providerManager.js","sourceRoot":"","sources":["../../src/providers/providerManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"providerManager.js","sourceRoot":"","sources":["../../src/providers/providerManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,OAAO,eAAe;IAM1B;QACE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QACzC,IAAI,OAAO,EAAE,CAAC;YACZ,IAAI,CAAC,MAAM,GAAG,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,OAAiB,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YACrD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;YAC1C,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;YAE1C,0BAA0B;YAC1B,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAC5B,OAAO,CAAC,GAAG,CAAC,SAAS,EACrB,OAAO,CAAC,GAAG,CAAC,WAAW,CACxB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,2BAA2B;QAC/B,MAAM,OAAO,GAAoD,EAAE,CAAC;QACpE,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,gCAAgC;QAEtD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;gBACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;gBAEhE,MAAM,OAAO,CAAC,IAAI,CAAC;oBACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;oBACzC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CACxB,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CACxD;iBACF,CAAC,CAAC;gBAEH,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YAChC,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;YACrD,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACzC,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,cAAc,EAAE;oBAC/D,OAAO,EAAE,EAAE,aAAa,EAAE,SAAS,IAAI,CAAC,UAAU,EAAE,EAAE;oBACtD,OAAO,EAAE,OAAO;iBACjB,CAAC,CAAC;gBACH,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG;oBAAE,OAAO,CAAC,KAAK,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;;oBACjD,OAAO,CAAC,KAAK,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACrE,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;YACpD,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
|
package/dist/server.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { ProviderManager } from './providers/providerManager.js';
|
|
2
|
+
import { GitAdapter } from './utils/gitAdapter.js';
|
|
2
3
|
import { Tool, Resource } from './types.js';
|
|
3
4
|
export declare function createServer(opts: {
|
|
4
5
|
tools: Tool[];
|
|
5
6
|
providerManager: ProviderManager;
|
|
7
|
+
gitAdapter: GitAdapter;
|
|
6
8
|
resources?: Resource[];
|
|
7
9
|
}): import("express-serve-static-core").Express;
|
|
8
10
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG5C,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,eAAe,EAAE,eAAe,CAAC;IACjC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACxB,+CAsEA"}
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG5C,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,eAAe,EAAE,eAAe,CAAC;IACjC,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;CACxB,+CAsEA"}
|
package/dist/server.js
CHANGED
|
@@ -54,7 +54,7 @@ export function createServer(opts) {
|
|
|
54
54
|
}
|
|
55
55
|
try {
|
|
56
56
|
// TODO: validate params via JSON Schema
|
|
57
|
-
const result = await t.handle(params ?? {}, { providerManager: opts.providerManager });
|
|
57
|
+
const result = await t.handle(params ?? {}, { providerManager: opts.providerManager, gitAdapter: opts.gitAdapter });
|
|
58
58
|
res.json({ success: true, result });
|
|
59
59
|
}
|
|
60
60
|
catch (err) {
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,UAAU,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitAnalytics.d.ts","sourceRoot":"","sources":["../../src/tools/gitAnalytics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"gitAnalytics.d.ts","sourceRoot":"","sources":["../../src/tools/gitAnalytics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAM/C,qBAAa,gBAAiB,YAAW,IAAI;IAC3C,IAAI,SAAmB;IACvB,WAAW,SAAyG;IAEpH,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;MA2BT;IAEI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,UAAU;CAkO1D"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { MCPError } from '../utils/errors.js';
|
|
2
2
|
import axios from 'axios';
|
|
3
3
|
import { getRepoInfo, normalizeToolParams } from '../utils/repoHelpers.js';
|
|
4
|
+
import { validateStatsResponse, validateContributorsResponse } from '../utils/apiHelpers.js';
|
|
4
5
|
export class GitAnalyticsTool {
|
|
5
6
|
constructor() {
|
|
6
7
|
this.name = 'git-analytics';
|
|
@@ -58,6 +59,8 @@ export class GitAnalyticsTool {
|
|
|
58
59
|
owner: githubOwner,
|
|
59
60
|
repo: repo,
|
|
60
61
|
});
|
|
62
|
+
// Validate response
|
|
63
|
+
validateStatsResponse(repoData);
|
|
61
64
|
const branches = await ctx.providerManager.github.rest.repos.listBranches({
|
|
62
65
|
owner: githubOwner,
|
|
63
66
|
repo: repo,
|
|
@@ -178,6 +181,8 @@ export class GitAnalyticsTool {
|
|
|
178
181
|
repo: repo,
|
|
179
182
|
per_page: 100,
|
|
180
183
|
});
|
|
184
|
+
// Validate response
|
|
185
|
+
validateContributorsResponse(contributors);
|
|
181
186
|
results.providers.github = {
|
|
182
187
|
success: true,
|
|
183
188
|
contributors: contributors.data.map((c) => ({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitAnalytics.js","sourceRoot":"","sources":["../../src/tools/gitAnalytics.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"gitAnalytics.js","sourceRoot":"","sources":["../../src/tools/gitAnalytics.ts"],"names":[],"mappings":"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"}
|