@imenam/mcp-github 1.1.54 → 1.1.55
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 +276 -191
- package/dist/__tests__/gateway-exec/session.test.d.ts +2 -0
- package/dist/__tests__/gateway-exec/session.test.d.ts.map +1 -0
- package/dist/__tests__/gateway-exec/session.test.js +72 -0
- package/dist/__tests__/gateway-exec/session.test.js.map +1 -0
- package/dist/__tests__/git-proxy/pkt-line.test.d.ts +2 -0
- package/dist/__tests__/git-proxy/pkt-line.test.d.ts.map +1 -0
- package/dist/__tests__/git-proxy/pkt-line.test.js +93 -0
- package/dist/__tests__/git-proxy/pkt-line.test.js.map +1 -0
- package/dist/__tests__/git-proxy/proxy.e2e.test.d.ts +2 -0
- package/dist/__tests__/git-proxy/proxy.e2e.test.d.ts.map +1 -0
- package/dist/__tests__/git-proxy/proxy.e2e.test.js +206 -0
- package/dist/__tests__/git-proxy/proxy.e2e.test.js.map +1 -0
- package/dist/__tests__/handlers/agent-git.test.d.ts +2 -0
- package/dist/__tests__/handlers/agent-git.test.d.ts.map +1 -0
- package/dist/__tests__/handlers/agent-git.test.js +124 -0
- package/dist/__tests__/handlers/agent-git.test.js.map +1 -0
- package/dist/__tests__/utils/git.test.js +9 -2
- package/dist/__tests__/utils/git.test.js.map +1 -1
- package/dist/config-server.d.ts.map +1 -1
- package/dist/config-server.js +8 -0
- package/dist/config-server.js.map +1 -1
- package/dist/gateway-exec/session.d.ts +36 -0
- package/dist/gateway-exec/session.d.ts.map +1 -0
- package/dist/gateway-exec/session.js +116 -0
- package/dist/gateway-exec/session.js.map +1 -0
- package/dist/git-proxy/pkt-line.d.ts +50 -0
- package/dist/git-proxy/pkt-line.d.ts.map +1 -0
- package/dist/git-proxy/pkt-line.js +110 -0
- package/dist/git-proxy/pkt-line.js.map +1 -0
- package/dist/git-proxy/server.d.ts +27 -0
- package/dist/git-proxy/server.d.ts.map +1 -0
- package/dist/git-proxy/server.js +216 -0
- package/dist/git-proxy/server.js.map +1 -0
- package/dist/handlers/agent-git.d.ts +5 -0
- package/dist/handlers/agent-git.d.ts.map +1 -0
- package/dist/handlers/agent-git.js +205 -0
- package/dist/handlers/agent-git.js.map +1 -0
- package/dist/handlers/git.d.ts +1 -1
- package/dist/handlers/git.d.ts.map +1 -1
- package/dist/handlers/git.js +75 -121
- package/dist/handlers/git.js.map +1 -1
- package/dist/handlers/github.d.ts.map +1 -1
- package/dist/handlers/github.js +12 -7
- package/dist/handlers/github.js.map +1 -1
- package/dist/handlers/info.d.ts.map +1 -1
- package/dist/handlers/info.js +14 -3
- package/dist/handlers/info.js.map +1 -1
- package/dist/index.js +41 -3
- package/dist/index.js.map +1 -1
- package/dist/utils/git.d.ts +4 -1
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +30 -20
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/role.d.ts +15 -0
- package/dist/utils/role.d.ts.map +1 -0
- package/dist/utils/role.js +18 -0
- package/dist/utils/role.js.map +1 -0
- package/dist/utils/target.d.ts +13 -0
- package/dist/utils/target.d.ts.map +1 -0
- package/dist/utils/target.js +38 -0
- package/dist/utils/target.js.map +1 -0
- package/package.json +1 -1
- package/public/index.html +5 -1
package/dist/handlers/git.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import {} from "@modelcontextprotocol/sdk/types.js";
|
|
2
2
|
import fs from "fs";
|
|
3
3
|
import { logToFile } from "../logger.js";
|
|
4
|
-
import { getCurrentBranch, execGitSecure, performClone, alignRepoOwnership } from "../utils/git.js";
|
|
4
|
+
import { getCurrentBranch, execGitSecure, performClone, alignRepoOwnership, remoteBranchExists, ensureOrigin } from "../utils/git.js";
|
|
5
|
+
import { getGitHubRemoteUrl, resolveTarget } from "../utils/target.js";
|
|
5
6
|
export const GIT_TOOLS = [
|
|
6
7
|
{
|
|
7
8
|
name: "commit",
|
|
@@ -58,118 +59,97 @@ export const GIT_TOOLS = [
|
|
|
58
59
|
},
|
|
59
60
|
},
|
|
60
61
|
];
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
const { message } = args;
|
|
65
|
-
const finalRepoPath = config.REPO_PATH;
|
|
66
|
-
if (!finalRepoPath) {
|
|
62
|
+
function requireRepoPath(config) {
|
|
63
|
+
const repoPath = config.REPO_PATH;
|
|
64
|
+
if (!repoPath) {
|
|
67
65
|
throw new Error("Repository path is not defined. You must call 'clone' first.");
|
|
68
66
|
}
|
|
69
|
-
if (!fs.existsSync(
|
|
70
|
-
throw new Error(`Repository not found at "${
|
|
67
|
+
if (!fs.existsSync(repoPath)) {
|
|
68
|
+
throw new Error(`Repository not found at "${repoPath}". You must call 'clone' first.`);
|
|
71
69
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
70
|
+
return repoPath;
|
|
71
|
+
}
|
|
72
|
+
function requireTargetBranch(repoPath, target) {
|
|
73
|
+
const currentBranch = getCurrentBranch(repoPath);
|
|
74
|
+
if (currentBranch !== target.targetBranch) {
|
|
75
|
+
throw new Error(`Branch mismatch: current branch is "${currentBranch}", expected "${target.targetBranch}". Run 'init_working_dir' first.`);
|
|
75
76
|
}
|
|
76
|
-
|
|
77
|
+
}
|
|
78
|
+
/** git add + commit. Rend false si l'arbre de travail est propre. */
|
|
79
|
+
function commitAll(repoPath, message) {
|
|
80
|
+
const execOptions = { cwd: repoPath };
|
|
81
|
+
execGitSecure("git add .", execOptions);
|
|
77
82
|
try {
|
|
78
|
-
execGitSecure(
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
83
|
+
execGitSecure(`git commit -m "${message}"`, execOptions);
|
|
84
|
+
return true;
|
|
85
|
+
}
|
|
86
|
+
catch (e) {
|
|
87
|
+
const status = execGitSecure("git status --porcelain", execOptions).toString();
|
|
88
|
+
if (status.length === 0)
|
|
89
|
+
return false;
|
|
90
|
+
throw e;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
function pushToTarget(repoPath, target) {
|
|
94
|
+
execGitSecure(`push ${getGitHubRemoteUrl(target)} HEAD:${target.targetBranch}`, { cwd: repoPath });
|
|
95
|
+
}
|
|
96
|
+
export async function handleCommit(args, config) {
|
|
97
|
+
const target = resolveTarget();
|
|
98
|
+
if (target.readOnly)
|
|
99
|
+
throw new Error("Server is in read-only mode");
|
|
100
|
+
const { message } = args;
|
|
101
|
+
const repoPath = requireRepoPath(config);
|
|
102
|
+
requireTargetBranch(repoPath, target);
|
|
103
|
+
try {
|
|
104
|
+
if (!commitAll(repoPath, message)) {
|
|
105
|
+
return { content: [{ type: "text", text: "Nothing to commit, working tree clean." }] };
|
|
88
106
|
}
|
|
89
107
|
const successMsg = `Successfully committed all changes with message: "${message}"`;
|
|
90
108
|
logToFile(successMsg);
|
|
91
109
|
return { content: [{ type: "text", text: successMsg }] };
|
|
92
110
|
}
|
|
93
111
|
catch (error) {
|
|
94
|
-
const msg = `Git commit failed at ${
|
|
112
|
+
const msg = `Git commit failed at ${repoPath}: ${error.message}`;
|
|
95
113
|
logToFile(msg);
|
|
96
114
|
throw new Error(msg);
|
|
97
115
|
}
|
|
98
116
|
}
|
|
99
117
|
export async function handlePush(_args, config) {
|
|
100
|
-
|
|
118
|
+
const target = resolveTarget();
|
|
119
|
+
if (target.readOnly)
|
|
101
120
|
throw new Error("Server is in read-only mode");
|
|
102
|
-
const
|
|
103
|
-
|
|
104
|
-
throw new Error("Repository path is not defined. You must call 'clone' first.");
|
|
105
|
-
}
|
|
106
|
-
if (!fs.existsSync(finalRepoPath)) {
|
|
107
|
-
throw new Error(`Repository not found at "${finalRepoPath}". You must call 'clone' first.`);
|
|
108
|
-
}
|
|
109
|
-
if (!config.TARGET_BRANCH) {
|
|
110
|
-
throw new Error("TARGET_BRANCH environment variable is not defined");
|
|
111
|
-
}
|
|
112
|
-
const currentBranch = getCurrentBranch(finalRepoPath);
|
|
113
|
-
if (currentBranch !== config.TARGET_BRANCH) {
|
|
114
|
-
throw new Error(`Branch mismatch: current branch is "${currentBranch}", expected "${config.TARGET_BRANCH}". Run 'init_working_dir' first.`);
|
|
115
|
-
}
|
|
116
|
-
const execOptions = { cwd: finalRepoPath };
|
|
121
|
+
const repoPath = requireRepoPath(config);
|
|
122
|
+
requireTargetBranch(repoPath, target);
|
|
117
123
|
try {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
: "origin";
|
|
121
|
-
execGitSecure(`push ${remote} HEAD:${config.TARGET_BRANCH}`, execOptions);
|
|
122
|
-
const successMsg = `Successfully pushed to ${config.TARGET_BRANCH} from ${finalRepoPath}`;
|
|
124
|
+
pushToTarget(repoPath, target);
|
|
125
|
+
const successMsg = `Successfully pushed to ${target.targetBranch} from ${repoPath}`;
|
|
123
126
|
logToFile(successMsg);
|
|
124
127
|
return { content: [{ type: "text", text: successMsg }] };
|
|
125
128
|
}
|
|
126
129
|
catch (error) {
|
|
127
|
-
const msg = `Git push failed at ${
|
|
130
|
+
const msg = `Git push failed at ${repoPath}: ${error.message}`;
|
|
128
131
|
logToFile(msg);
|
|
129
132
|
throw new Error(msg);
|
|
130
133
|
}
|
|
131
134
|
}
|
|
132
135
|
export async function handleCommitAndPush(args, config) {
|
|
133
|
-
|
|
136
|
+
const target = resolveTarget();
|
|
137
|
+
if (target.readOnly)
|
|
134
138
|
throw new Error("Server is in read-only mode");
|
|
135
139
|
const { message } = args;
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
throw new Error("Repository path is not defined. You must call 'clone' first.");
|
|
139
|
-
}
|
|
140
|
-
if (!fs.existsSync(finalRepoPath)) {
|
|
141
|
-
throw new Error(`Repository not found at "${finalRepoPath}". You must call 'clone' first.`);
|
|
142
|
-
}
|
|
143
|
-
if (!config.TARGET_BRANCH) {
|
|
144
|
-
throw new Error("TARGET_BRANCH environment variable is not defined");
|
|
145
|
-
}
|
|
146
|
-
const currentBranch = getCurrentBranch(finalRepoPath);
|
|
147
|
-
if (currentBranch !== config.TARGET_BRANCH) {
|
|
148
|
-
throw new Error(`Branch mismatch: current branch is "${currentBranch}", expected "${config.TARGET_BRANCH}". Run 'init_working_dir' first.`);
|
|
149
|
-
}
|
|
150
|
-
const execOptions = { cwd: finalRepoPath };
|
|
140
|
+
const repoPath = requireRepoPath(config);
|
|
141
|
+
requireTargetBranch(repoPath, target);
|
|
151
142
|
try {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
execGitSecure(`git commit -m "${message}"`, execOptions);
|
|
155
|
-
}
|
|
156
|
-
catch (e) {
|
|
157
|
-
const status = execGitSecure("git status --porcelain", execOptions).toString();
|
|
158
|
-
if (status.length === 0) {
|
|
159
|
-
return { content: [{ type: "text", text: "Nothing to commit, working tree clean." }] };
|
|
160
|
-
}
|
|
161
|
-
throw e;
|
|
143
|
+
if (!commitAll(repoPath, message)) {
|
|
144
|
+
return { content: [{ type: "text", text: "Nothing to commit, working tree clean." }] };
|
|
162
145
|
}
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
: "origin";
|
|
166
|
-
execGitSecure(`push ${remote} HEAD:${config.TARGET_BRANCH}`, execOptions);
|
|
167
|
-
const successMsg = `Successfully committed and pushed all changes to branch ${config.TARGET_BRANCH} from ${finalRepoPath}`;
|
|
146
|
+
pushToTarget(repoPath, target);
|
|
147
|
+
const successMsg = `Successfully committed and pushed all changes to branch ${target.targetBranch} from ${repoPath}`;
|
|
168
148
|
logToFile(successMsg);
|
|
169
149
|
return { content: [{ type: "text", text: successMsg }] };
|
|
170
150
|
}
|
|
171
151
|
catch (error) {
|
|
172
|
-
const msg = `Git operation failed at ${
|
|
152
|
+
const msg = `Git operation failed at ${repoPath}: ${error.message}`;
|
|
173
153
|
logToFile(msg);
|
|
174
154
|
throw new Error(msg);
|
|
175
155
|
}
|
|
@@ -179,35 +159,20 @@ export async function handleClone() {
|
|
|
179
159
|
return { content: [{ type: "text", text: result }] };
|
|
180
160
|
}
|
|
181
161
|
export async function handleCheckStatus(_args, config) {
|
|
182
|
-
const
|
|
183
|
-
|
|
184
|
-
throw new Error("Repository path is not defined. You must call 'clone' first.");
|
|
185
|
-
}
|
|
186
|
-
if (!fs.existsSync(repoPath)) {
|
|
187
|
-
throw new Error(`Repository not found at "${repoPath}". You must call 'clone' first.`);
|
|
188
|
-
}
|
|
162
|
+
const target = resolveTarget();
|
|
163
|
+
const repoPath = requireRepoPath(config);
|
|
189
164
|
const currentBranch = getCurrentBranch(repoPath);
|
|
190
|
-
const expectedBranch =
|
|
165
|
+
const expectedBranch = target.targetBranch;
|
|
191
166
|
const match = currentBranch === expectedBranch;
|
|
192
167
|
return { content: [{ type: "text", text: JSON.stringify({ currentBranch, expectedBranch, match }, null, 2) }] };
|
|
193
168
|
}
|
|
194
|
-
export async function handleInitWorkingDir(_args, config
|
|
195
|
-
const
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
}
|
|
199
|
-
if (!fs.existsSync(repoPath)) {
|
|
200
|
-
throw new Error(`Repository not found at "${repoPath}". You must call 'clone' first.`);
|
|
201
|
-
}
|
|
202
|
-
if (!config.TARGET_BRANCH) {
|
|
203
|
-
throw new Error("TARGET_BRANCH is not defined.");
|
|
204
|
-
}
|
|
205
|
-
if (!config.TARGET_REPO || !config.TARGET_REPO.includes("/")) {
|
|
206
|
-
throw new Error("TARGET_REPO must be defined as 'owner/repo'");
|
|
207
|
-
}
|
|
169
|
+
export async function handleInitWorkingDir(_args, config) {
|
|
170
|
+
const target = resolveTarget();
|
|
171
|
+
const repoPath = requireRepoPath(config);
|
|
172
|
+
const remoteUrl = getGitHubRemoteUrl(target);
|
|
208
173
|
const execOptions = { cwd: repoPath };
|
|
209
174
|
const steps = [];
|
|
210
|
-
|
|
175
|
+
ensureOrigin(repoPath, remoteUrl);
|
|
211
176
|
const currentBranchBefore = getCurrentBranch(repoPath);
|
|
212
177
|
const stashOutput = execGitSecure(`stash push -u -m "auto-stash/${currentBranchBefore}"`, execOptions).toString().trim();
|
|
213
178
|
if (stashOutput.includes("No local changes to save")) {
|
|
@@ -216,30 +181,19 @@ export async function handleInitWorkingDir(_args, config, octokit) {
|
|
|
216
181
|
else {
|
|
217
182
|
steps.push(`Stashed local changes as "auto-stash/${currentBranchBefore}"`);
|
|
218
183
|
}
|
|
219
|
-
execGitSecure(`checkout ${
|
|
220
|
-
steps.push(`Checked out ${
|
|
184
|
+
execGitSecure(`checkout ${target.baseBranch}`, execOptions);
|
|
185
|
+
steps.push(`Checked out ${target.baseBranch}`);
|
|
221
186
|
execGitSecure("fetch --all", execOptions);
|
|
222
187
|
steps.push("Fetched all remotes");
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
branchExistsOnRemote = true;
|
|
228
|
-
}
|
|
229
|
-
catch (e) {
|
|
230
|
-
if (e.status !== 404)
|
|
231
|
-
throw e;
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
if (branchExistsOnRemote) {
|
|
235
|
-
execGitSecure(`checkout ${config.TARGET_BRANCH}`, execOptions);
|
|
236
|
-
execGitSecure(`pull origin ${config.TARGET_BRANCH}`, execOptions);
|
|
237
|
-
steps.push(`Checked out and pulled "${config.TARGET_BRANCH}"`);
|
|
188
|
+
if (remoteBranchExists(repoPath, remoteUrl, target.targetBranch)) {
|
|
189
|
+
execGitSecure(`checkout ${target.targetBranch}`, execOptions);
|
|
190
|
+
execGitSecure(`pull origin ${target.targetBranch}`, execOptions);
|
|
191
|
+
steps.push(`Checked out and pulled "${target.targetBranch}"`);
|
|
238
192
|
}
|
|
239
193
|
else {
|
|
240
|
-
execGitSecure(`checkout -b ${
|
|
241
|
-
execGitSecure(`push -u origin ${
|
|
242
|
-
steps.push(`Created and pushed new branch "${
|
|
194
|
+
execGitSecure(`checkout -b ${target.targetBranch}`, execOptions);
|
|
195
|
+
execGitSecure(`push -u origin ${target.targetBranch}`, execOptions);
|
|
196
|
+
steps.push(`Created and pushed new branch "${target.targetBranch}"`);
|
|
243
197
|
}
|
|
244
198
|
// checkout/stash/pull ont pu créer des fichiers appartenant à root → réaligner
|
|
245
199
|
// sur l'utilisateur de l'agent avant qu'il ne reprenne l'édition.
|
package/dist/handlers/git.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/handlers/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"git.js","sourceRoot":"","sources":["../../src/handlers/git.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/handlers/github.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/handlers/github.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAS/D,wBAAgB,UAAU;;;;;;UAOzB;AAED,wBAAgB,YAAY,SAE3B;AAED,eAAO,MAAM,YAAY,EAAE,IAAI,EAa9B,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;;;;;GAsD7D"}
|
package/dist/handlers/github.js
CHANGED
|
@@ -3,6 +3,7 @@ import { Octokit } from "octokit";
|
|
|
3
3
|
import { logToFile } from "../logger.js";
|
|
4
4
|
import { getConfig } from "../utils/config.js";
|
|
5
5
|
import { getCurrentBranch } from "../utils/git.js";
|
|
6
|
+
import { getRole } from "../utils/role.js";
|
|
6
7
|
let _octokit = null;
|
|
7
8
|
export function getOctokit() {
|
|
8
9
|
const { GITHUB_TOKEN } = getConfig();
|
|
@@ -37,13 +38,17 @@ export async function handlePullRequest(args, config) {
|
|
|
37
38
|
}
|
|
38
39
|
if (config.READ_ONLY)
|
|
39
40
|
throw new Error("Server is in read-only mode");
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
41
|
+
// En rôle remote, la copie de travail est sur la machine de l'agent : seul le
|
|
42
|
+
// rôle standalone peut vérifier la branche courante.
|
|
43
|
+
if (getRole() === "standalone") {
|
|
44
|
+
const prRepoPath = config.REPO_PATH;
|
|
45
|
+
if (!prRepoPath) {
|
|
46
|
+
throw new Error("Repository path is not defined. You must call 'clone' first.");
|
|
47
|
+
}
|
|
48
|
+
const currentBranch = getCurrentBranch(prRepoPath);
|
|
49
|
+
if (currentBranch !== config.TARGET_BRANCH) {
|
|
50
|
+
throw new Error(`Branch mismatch: current branch is "${currentBranch}", expected "${config.TARGET_BRANCH}". Run 'init_working_dir' first.`);
|
|
51
|
+
}
|
|
47
52
|
}
|
|
48
53
|
const { title, body } = args;
|
|
49
54
|
if (!config.TARGET_REPO || !config.TARGET_REPO.includes("/")) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/handlers/github.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/handlers/github.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,IAAI,QAAQ,GAAmB,IAAI,CAAC;AAEpC,MAAM,UAAU,UAAU;IACxB,MAAM,EAAE,YAAY,EAAE,GAAG,SAAS,EAAE,CAAC;IACrC,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,QAAQ,GAAG,IAAI,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAW;IAClC;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,iEAAiE;QAC9E,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE;gBACvE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0CAA0C,EAAE;aAClF;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;KACF;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAS,EAAE,MAAW;IAC5D,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;IAClG,CAAC;IACD,IAAI,MAAM,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAErE,8EAA8E;IAC9E,qDAAqD;IACrD,IAAI,OAAO,EAAE,KAAK,YAAY,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;QACpC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,aAAa,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,aAAa,KAAK,MAAM,CAAC,aAAa,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,uCAAuC,aAAa,gBAAgB,MAAM,CAAC,aAAa,kCAAkC,CAAC,CAAC;QAC9I,CAAC;IACH,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAE7B,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEpD,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,CAAC;QACH,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAC/C,KAAK;YACL,IAAI;YACJ,KAAK;YACL,IAAI;YACJ,IAAI,EAAE,MAAM,CAAC,aAAa;YAC1B,IAAI,EAAE,MAAM,CAAC,WAAW;SACzB,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,sCAAsC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClF,SAAS,CAAC,UAAU,CAAC,CAAC;QACtB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;IAC3D,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,kCAAkC,KAAK,CAAC,OAAO,EAAE,CAAC;QAC9D,SAAS,CAAC,GAAG,CAAC,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/handlers/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/handlers/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAM/D,eAAO,MAAM,UAAU,EAAE,IAAI,EAmB5B,CAAC;AAEF,wBAAsB,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;;;;;GA+B1D;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,GAAG;;;;;GAqB5C"}
|
package/dist/handlers/info.js
CHANGED
|
@@ -2,6 +2,7 @@ import {} from "@modelcontextprotocol/sdk/types.js";
|
|
|
2
2
|
import path from "path";
|
|
3
3
|
import fs from "fs";
|
|
4
4
|
import { logToFile } from "../logger.js";
|
|
5
|
+
import { getGatewayRoute, getRole } from "../utils/role.js";
|
|
5
6
|
export const INFO_TOOLS = [
|
|
6
7
|
{
|
|
7
8
|
name: "get_info",
|
|
@@ -23,16 +24,26 @@ export const INFO_TOOLS = [
|
|
|
23
24
|
},
|
|
24
25
|
];
|
|
25
26
|
export async function handleGetInfo(_args, config) {
|
|
27
|
+
const role = getRole();
|
|
28
|
+
const workingCopy = role === "remote"
|
|
29
|
+
? {
|
|
30
|
+
REPO_PATH: config.REPO_PATH || "<dossier de lancement du relais agent>/<nom du dépôt>",
|
|
31
|
+
GIT_REMOTE: `<GATEWAY_URL>${getGatewayRoute()}/http/repo.git`,
|
|
32
|
+
}
|
|
33
|
+
: {
|
|
34
|
+
CLONE_DIR: config.CLONE_DIR,
|
|
35
|
+
REPO_PATH: config.REPO_PATH || "Not defined (Call 'clone' first)",
|
|
36
|
+
CURRENT_WORKING_DIR: process.cwd(),
|
|
37
|
+
};
|
|
26
38
|
const info = {
|
|
39
|
+
ROLE: role,
|
|
27
40
|
TARGET_REPO: config.TARGET_REPO,
|
|
28
41
|
TARGET_BRANCH: config.TARGET_BRANCH,
|
|
29
42
|
BASE_BRANCH: config.BASE_BRANCH,
|
|
30
|
-
CLONE_DIR: config.CLONE_DIR,
|
|
31
|
-
REPO_PATH: config.REPO_PATH || "Not defined (Call 'clone' first)",
|
|
32
43
|
READ_ONLY: config.READ_ONLY,
|
|
33
44
|
INCLUDE_PUBLIC: config.INCLUDE_PUBLIC,
|
|
34
45
|
INCLUDE_NOT_OWNED: config.INCLUDE_NOT_OWNED,
|
|
35
|
-
|
|
46
|
+
...workingCopy,
|
|
36
47
|
GITHUB_TOKEN_LAST_5: config.GITHUB_TOKEN ? `***${config.GITHUB_TOKEN.slice(-5)}` : "Non configuré",
|
|
37
48
|
};
|
|
38
49
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/handlers/info.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,oCAAoC,CAAC;AAC/D,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/handlers/info.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -9,14 +9,31 @@ import { logToFile, setupLogging } from "./logger.js";
|
|
|
9
9
|
import { getConfig, setupIpcErrorHandlers } from "./utils/config.js";
|
|
10
10
|
import { spawnGuiProcess } from "./gui-process.js";
|
|
11
11
|
import { performClone } from "./utils/git.js";
|
|
12
|
-
import {
|
|
12
|
+
import { getGatewayRoute, getRole } from "./utils/role.js";
|
|
13
|
+
import { GITHUB_ORIGIN, startGitProxy } from "./git-proxy/server.js";
|
|
14
|
+
import { resetOctokit, GITHUB_TOOLS, handlePullRequest } from "./handlers/github.js";
|
|
13
15
|
import { GIT_TOOLS, handleCommit, handlePush, handleCommitAndPush, handleClone, handleCheckStatus, handleInitWorkingDir } from "./handlers/git.js";
|
|
14
16
|
import { DEPLOY_TOOLS, handleDeploy, handleTest, handleTestLogs } from "./handlers/deploy.js";
|
|
15
17
|
import { INFO_TOOLS, handleGetInfo, handleGetLogs } from "./handlers/info.js";
|
|
18
|
+
import { handleAgentGitTool } from "./handlers/agent-git.js";
|
|
16
19
|
const __filename = fileURLToPath(import.meta.url);
|
|
17
20
|
const __dirname = path.dirname(__filename);
|
|
18
21
|
setupLogging("MASTER");
|
|
19
22
|
setupIpcErrorHandlers();
|
|
23
|
+
function fatal(message) {
|
|
24
|
+
console.error(message);
|
|
25
|
+
logToFile(message);
|
|
26
|
+
process.exit(1);
|
|
27
|
+
}
|
|
28
|
+
let ROLE;
|
|
29
|
+
try {
|
|
30
|
+
ROLE = getRole();
|
|
31
|
+
if (ROLE === "remote")
|
|
32
|
+
getGatewayRoute();
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
fatal(`Configuration invalide : ${error.message}`);
|
|
36
|
+
}
|
|
20
37
|
if (!process.env.PROXY_URL) {
|
|
21
38
|
console.error('[MASTER] PROXY_URL non défini — GUI désactivée.');
|
|
22
39
|
}
|
|
@@ -75,13 +92,18 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
75
92
|
const config = getConfig();
|
|
76
93
|
try {
|
|
77
94
|
logToFile(`Executing tool: ${name}`);
|
|
95
|
+
if (ROLE === "remote") {
|
|
96
|
+
const agentGit = handleAgentGitTool(name, args, config);
|
|
97
|
+
if (agentGit)
|
|
98
|
+
return await agentGit;
|
|
99
|
+
}
|
|
78
100
|
switch (name) {
|
|
79
101
|
case "commit": return await handleCommit(args, config);
|
|
80
102
|
case "push": return await handlePush(args, config);
|
|
81
103
|
case "commit_and_push": return await handleCommitAndPush(args, config);
|
|
82
104
|
case "clone": return await handleClone();
|
|
83
105
|
case "check_status": return await handleCheckStatus(args, config);
|
|
84
|
-
case "init_working_dir": return await handleInitWorkingDir(args, config
|
|
106
|
+
case "init_working_dir": return await handleInitWorkingDir(args, config);
|
|
85
107
|
case "pull_request": return await handlePullRequest(args, config);
|
|
86
108
|
case "deploy": return await handleDeploy(args, config);
|
|
87
109
|
case "test": return await handleTest(args, config);
|
|
@@ -101,10 +123,26 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
101
123
|
};
|
|
102
124
|
}
|
|
103
125
|
});
|
|
126
|
+
async function startRemoteGitProxy() {
|
|
127
|
+
const rawPort = process.env.MCP_HTTP_RELAY_PORT;
|
|
128
|
+
const port = Number(rawPort);
|
|
129
|
+
if (!rawPort || !Number.isInteger(port) || port < 1 || port > 65535) {
|
|
130
|
+
fatal(`MCP_HTTP_RELAY_PORT="${rawPort ?? ""}" invalide : le rôle remote exige le port de relais HTTP déclaré au gateway.`);
|
|
131
|
+
}
|
|
132
|
+
try {
|
|
133
|
+
await startGitProxy({ getConfig, upstreamOrigin: GITHUB_ORIGIN }, port);
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
fatal(`Impossible d'ouvrir le proxy git sur 127.0.0.1:${port} : ${error.message}`);
|
|
137
|
+
}
|
|
138
|
+
logToFile(`[git-proxy] Proxy git à l'écoute sur 127.0.0.1:${port}`);
|
|
139
|
+
}
|
|
104
140
|
async function main() {
|
|
141
|
+
if (ROLE === "remote")
|
|
142
|
+
await startRemoteGitProxy();
|
|
105
143
|
const transport = new StdioServerTransport();
|
|
106
144
|
await server.connect(transport);
|
|
107
|
-
const msg = `GitHub MCP Server running on stdio (CWD: ${process.cwd()})`;
|
|
145
|
+
const msg = `GitHub MCP Server running on stdio (role: ${ROLE}, CWD: ${process.cwd()})`;
|
|
108
146
|
console.error(msg);
|
|
109
147
|
logToFile(msg);
|
|
110
148
|
}
|
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,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AACnG,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/git.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export declare function getCurrentBranch(repoPath: string): string;
|
|
2
|
-
export declare function getGitAuthHeader(): string | null;
|
|
3
2
|
export declare function execGitSecure(command: string, options: any): string;
|
|
3
|
+
/** Indique si la branche existe sur le remote, via `git ls-remote` (code 2 : absente). */
|
|
4
|
+
export declare function remoteBranchExists(repoPath: string, remoteUrl: string, branch: string): boolean;
|
|
5
|
+
/** Fait pointer `origin` sur l'URL attendue pour le rôle de l'instance. */
|
|
6
|
+
export declare function ensureOrigin(repoPath: string, remoteUrl: string): void;
|
|
4
7
|
/**
|
|
5
8
|
* Aligne la propriété et les droits du dépôt sur l'utilisateur de l'agent.
|
|
6
9
|
*
|
package/dist/utils/git.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/utils/git.ts"],"names":[],"mappings":"AAQA,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEzD;AAcD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,UAc1D;AAED,0FAA0F;AAC1F,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAQ/F;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAEtE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAazD;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAiDpD"}
|