@imenam/mcp-github 1.1.54 → 1.1.56
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 +280 -191
- package/dist/__tests__/config-server.guard.test.d.ts +2 -0
- package/dist/__tests__/config-server.guard.test.d.ts.map +1 -0
- package/dist/__tests__/config-server.guard.test.js +135 -0
- package/dist/__tests__/config-server.guard.test.js.map +1 -0
- 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 +11 -2
- 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 +2 -2
- package/public/index.html +5 -1
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Proxy git « smart HTTP » de l'instance `remote`, joint par le relais HTTP du gateway.
|
|
3
|
+
*
|
|
4
|
+
* Le client git parle au proxy comme à GitHub. Le proxy :
|
|
5
|
+
* - envoie toujours la requête vers le dépôt configuré (TARGET_REPO), quel que soit le
|
|
6
|
+
* chemin demandé ;
|
|
7
|
+
* - lit les commandes d'un `git-receive-pack` avant de contacter GitHub et refuse tout
|
|
8
|
+
* push qui vise une autre ref que refs/heads/<TARGET_BRANCH> ou qui la supprime ;
|
|
9
|
+
* - ajoute le token GitHub, que le client ne voit jamais.
|
|
10
|
+
*
|
|
11
|
+
* Routes (chemins relatifs au préfixe de relais) :
|
|
12
|
+
* - GET <…>/info/refs?service=git-upload-pack|git-receive-pack
|
|
13
|
+
* - POST <…>/git-upload-pack
|
|
14
|
+
* - POST <…>/git-receive-pack
|
|
15
|
+
*/
|
|
16
|
+
import http from "http";
|
|
17
|
+
import https from "https";
|
|
18
|
+
import { logToFile } from "../logger.js";
|
|
19
|
+
import { buildRefusalReport, checkRefUpdates, GitProtocolError, parseReceivePackCommands } from "./pkt-line.js";
|
|
20
|
+
export const GITHUB_ORIGIN = "https://github.com";
|
|
21
|
+
/** Taille maximale de la liste de commandes lue avant de relayer un push. */
|
|
22
|
+
const MAX_COMMAND_SECTION = 1024 * 1024;
|
|
23
|
+
const FORWARDED_REQUEST_HEADERS = [
|
|
24
|
+
"accept", "accept-encoding", "content-type", "content-encoding",
|
|
25
|
+
"content-length", "git-protocol", "user-agent",
|
|
26
|
+
];
|
|
27
|
+
const HOP_BY_HOP = new Set([
|
|
28
|
+
"connection", "keep-alive", "proxy-authenticate", "proxy-authorization",
|
|
29
|
+
"te", "trailer", "transfer-encoding", "upgrade",
|
|
30
|
+
]);
|
|
31
|
+
function isService(value) {
|
|
32
|
+
return value === "git-upload-pack" || value === "git-receive-pack";
|
|
33
|
+
}
|
|
34
|
+
function matchRoute(method, url) {
|
|
35
|
+
const path = url.pathname;
|
|
36
|
+
if (method === "GET" && path.endsWith("/info/refs")) {
|
|
37
|
+
const service = url.searchParams.get("service");
|
|
38
|
+
return isService(service) ? { kind: "info-refs", service } : null;
|
|
39
|
+
}
|
|
40
|
+
if (method === "POST") {
|
|
41
|
+
const service = path.slice(path.lastIndexOf("/") + 1);
|
|
42
|
+
if (isService(service))
|
|
43
|
+
return { kind: "rpc", service };
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
function sendText(res, status, text) {
|
|
48
|
+
res.writeHead(status, { "content-type": "text/plain; charset=utf-8" });
|
|
49
|
+
res.end(`${text}\n`);
|
|
50
|
+
}
|
|
51
|
+
function authHeader(token) {
|
|
52
|
+
return `Basic ${Buffer.from(`x-access-token:${token}`).toString("base64")}`;
|
|
53
|
+
}
|
|
54
|
+
function forwardedHeaders(req, token) {
|
|
55
|
+
const headers = {};
|
|
56
|
+
for (const name of FORWARDED_REQUEST_HEADERS) {
|
|
57
|
+
const value = req.headers[name];
|
|
58
|
+
if (value !== undefined)
|
|
59
|
+
headers[name] = value;
|
|
60
|
+
}
|
|
61
|
+
headers.authorization = authHeader(token);
|
|
62
|
+
return headers;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Ouvre la requête vers GitHub et relaie sa réponse telle quelle vers le client.
|
|
66
|
+
* Le corps de la requête est à écrire par l'appelant dans le flux rendu.
|
|
67
|
+
*/
|
|
68
|
+
function openUpstream(options, method, upstreamPath, headers, res) {
|
|
69
|
+
const target = new URL(upstreamPath, options.upstreamOrigin);
|
|
70
|
+
const transport = target.protocol === "https:" ? https : http;
|
|
71
|
+
const upstream = transport.request(target, { method, headers }, (upstreamRes) => {
|
|
72
|
+
// Un 401 relayé ferait chercher des identifiants au client git : le refus du
|
|
73
|
+
// token de l'instance remote est rendu comme une erreur du proxy.
|
|
74
|
+
if (upstreamRes.statusCode === 401) {
|
|
75
|
+
upstreamRes.resume();
|
|
76
|
+
logToFile(`[git-proxy] GitHub a refusé le token (HTTP 401) pour ${target.pathname}`);
|
|
77
|
+
sendText(res, 502, "GitHub a refusé le token de l'instance remote (HTTP 401).");
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
const responseHeaders = {};
|
|
81
|
+
for (const [key, value] of Object.entries(upstreamRes.headers)) {
|
|
82
|
+
if (!HOP_BY_HOP.has(key) && value !== undefined)
|
|
83
|
+
responseHeaders[key] = value;
|
|
84
|
+
}
|
|
85
|
+
res.writeHead(upstreamRes.statusCode ?? 502, responseHeaders);
|
|
86
|
+
upstreamRes.pipe(res);
|
|
87
|
+
});
|
|
88
|
+
upstream.on("error", (err) => {
|
|
89
|
+
logToFile(`[git-proxy] Échec de la requête vers ${target.origin} : ${err.message}`);
|
|
90
|
+
if (!res.headersSent)
|
|
91
|
+
sendText(res, 502, `Échec de la requête vers GitHub : ${err.message}`);
|
|
92
|
+
else
|
|
93
|
+
res.destroy(err);
|
|
94
|
+
});
|
|
95
|
+
res.on("close", () => upstream.destroy());
|
|
96
|
+
return upstream;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Lit la liste de commandes d'un push, la contrôle, puis soit relaie le corps complet
|
|
100
|
+
* vers GitHub, soit répond par un refus sans contacter GitHub.
|
|
101
|
+
*/
|
|
102
|
+
function handleReceivePack(options, req, res, upstreamPath, config) {
|
|
103
|
+
const encoding = req.headers["content-encoding"];
|
|
104
|
+
if (encoding && encoding !== "identity") {
|
|
105
|
+
req.resume();
|
|
106
|
+
sendText(res, 415, `Push refusé : corps encodé (${encoding}) non contrôlable.`);
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const chunks = [];
|
|
110
|
+
let received = 0;
|
|
111
|
+
const refuse = (status, message) => {
|
|
112
|
+
req.off("data", onData);
|
|
113
|
+
req.resume();
|
|
114
|
+
logToFile(`[git-proxy] Push refusé : ${message}`);
|
|
115
|
+
sendText(res, status, `Push refusé : ${message}`);
|
|
116
|
+
};
|
|
117
|
+
const onData = (chunk) => {
|
|
118
|
+
chunks.push(chunk);
|
|
119
|
+
received += chunk.length;
|
|
120
|
+
let parsed;
|
|
121
|
+
try {
|
|
122
|
+
parsed = parseReceivePackCommands(Buffer.concat(chunks));
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
if (err instanceof GitProtocolError)
|
|
126
|
+
return refuse(400, err.message);
|
|
127
|
+
throw err;
|
|
128
|
+
}
|
|
129
|
+
if (!parsed.complete) {
|
|
130
|
+
if (received > MAX_COMMAND_SECTION)
|
|
131
|
+
refuse(413, "liste de commandes trop longue");
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
req.off("data", onData);
|
|
135
|
+
req.pause();
|
|
136
|
+
const { updates, capabilities } = parsed.request;
|
|
137
|
+
const refusals = checkRefUpdates(updates, config.TARGET_BRANCH);
|
|
138
|
+
if (refusals.length > 0) {
|
|
139
|
+
req.resume();
|
|
140
|
+
logToFile(`[git-proxy] Push refusé : ${refusals.map((r) => `${r.ref} (${r.reason})`).join(", ")}`);
|
|
141
|
+
const report = buildRefusalReport(refusals, capabilities);
|
|
142
|
+
if (report) {
|
|
143
|
+
res.writeHead(200, { "content-type": "application/x-git-receive-pack-result", "cache-control": "no-cache" });
|
|
144
|
+
res.end(report);
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
sendText(res, 403, `Push refusé : ${refusals.map((r) => `${r.ref} (${r.reason})`).join(", ")}`);
|
|
148
|
+
}
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
logToFile(`[git-proxy] Push autorisé vers ${config.TARGET_REPO} : ${updates.map((u) => u.ref).join(", ")}`);
|
|
152
|
+
const upstream = openUpstream(options, "POST", upstreamPath, forwardedHeaders(req, config.GITHUB_TOKEN), res);
|
|
153
|
+
upstream.write(Buffer.concat(chunks));
|
|
154
|
+
req.pipe(upstream);
|
|
155
|
+
};
|
|
156
|
+
req.on("data", onData);
|
|
157
|
+
req.on("end", () => {
|
|
158
|
+
if (!res.headersSent && !res.writableEnded && req.listeners("data").includes(onData)) {
|
|
159
|
+
refuse(400, "corps de requête incomplet");
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
export function createGitProxyServer(options) {
|
|
164
|
+
return http.createServer((req, res) => {
|
|
165
|
+
const url = new URL(req.url ?? "/", "http://proxy.local");
|
|
166
|
+
const method = req.method ?? "GET";
|
|
167
|
+
const route = matchRoute(method, url);
|
|
168
|
+
if (!route) {
|
|
169
|
+
req.resume();
|
|
170
|
+
sendText(res, 404, "Route inconnue du proxy git.");
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
const config = options.getConfig();
|
|
174
|
+
if (!config.TARGET_REPO || !config.TARGET_REPO.includes("/") || !config.TARGET_BRANCH) {
|
|
175
|
+
req.resume();
|
|
176
|
+
sendText(res, 503, "TARGET_REPO et TARGET_BRANCH ne sont pas configurés sur l'instance remote.");
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
if (!config.GITHUB_TOKEN) {
|
|
180
|
+
req.resume();
|
|
181
|
+
sendText(res, 503, "GITHUB_TOKEN n'est pas configuré sur l'instance remote.");
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
const repoPath = `/${config.TARGET_REPO}.git`;
|
|
185
|
+
if (route.kind === "info-refs") {
|
|
186
|
+
if (route.service === "git-receive-pack" && config.READ_ONLY) {
|
|
187
|
+
sendText(res, 403, "Push refusé : l'instance remote est en lecture seule.");
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
openUpstream(options, "GET", `${repoPath}/info/refs?service=${route.service}`, forwardedHeaders(req, config.GITHUB_TOKEN), res).end();
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
if (route.service === "git-upload-pack") {
|
|
194
|
+
req.pipe(openUpstream(options, "POST", `${repoPath}/git-upload-pack`, forwardedHeaders(req, config.GITHUB_TOKEN), res));
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
if (config.READ_ONLY) {
|
|
198
|
+
req.resume();
|
|
199
|
+
sendText(res, 403, "Push refusé : l'instance remote est en lecture seule.");
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
handleReceivePack(options, req, res, `${repoPath}/git-receive-pack`, config);
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
/** Démarre le proxy sur 127.0.0.1:<port>. Rejette si le port ne peut pas être ouvert. */
|
|
206
|
+
export function startGitProxy(options, port) {
|
|
207
|
+
const server = createGitProxyServer(options);
|
|
208
|
+
return new Promise((resolve, reject) => {
|
|
209
|
+
server.once("error", reject);
|
|
210
|
+
server.listen(port, "127.0.0.1", () => {
|
|
211
|
+
server.off("error", reject);
|
|
212
|
+
resolve(server);
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/git-proxy/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Config } from "../utils/config.js";
|
|
2
|
+
import { type ToolResult } from "../gateway-exec/session.js";
|
|
3
|
+
/** Aiguille un outil git du rôle remote vers son exécution sur la machine de l'agent. */
|
|
4
|
+
export declare function handleAgentGitTool(name: string, args: any, config: Config): Promise<ToolResult> | null;
|
|
5
|
+
//# sourceMappingURL=agent-git.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-git.d.ts","sourceRoot":"","sources":["../../src/handlers/agent-git.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,EAAgF,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAC;AA+L3I,yFAAyF;AACzF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAUtG"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Outils git du rôle `remote` : git s'exécute sur la machine de l'agent, lancé par le
|
|
3
|
+
* relais agent, et joint GitHub à travers le proxy git de cette instance.
|
|
4
|
+
*
|
|
5
|
+
* - La copie de travail est REPO_PATH s'il est configuré, sinon
|
|
6
|
+
* <dossier de lancement du relais agent>/<nom du dépôt>.
|
|
7
|
+
* - Le remote git est <GATEWAY_URL><MCP_SERVER_ROUTE>/http/repo.git ; le proxy en fait
|
|
8
|
+
* toujours TARGET_REPO et refuse tout push hors de TARGET_BRANCH.
|
|
9
|
+
* - Le jeton du gateway est passé à git par variables d'environnement, limité aux URL
|
|
10
|
+
* du gateway : il n'apparaît ni dans les arguments, ni dans .git/config.
|
|
11
|
+
*/
|
|
12
|
+
import { logToFile } from "../logger.js";
|
|
13
|
+
import { getGatewayRoute } from "../utils/role.js";
|
|
14
|
+
import { repoName, resolveTarget } from "../utils/target.js";
|
|
15
|
+
import { handleAgentExec } from "../gateway-exec/session.js";
|
|
16
|
+
function text(message) {
|
|
17
|
+
return { content: [{ type: "text", text: message }] };
|
|
18
|
+
}
|
|
19
|
+
function proxyUrl() {
|
|
20
|
+
return `{{GATEWAY_URL}}${getGatewayRoute()}/http/repo.git`;
|
|
21
|
+
}
|
|
22
|
+
/** Dossier de la copie de travail, tel que git le reçoit (`-C`) sur la machine de l'agent. */
|
|
23
|
+
function repoDir(config, target) {
|
|
24
|
+
return config.REPO_PATH || repoName(target);
|
|
25
|
+
}
|
|
26
|
+
function displayDir(config, target, agent) {
|
|
27
|
+
if (config.REPO_PATH)
|
|
28
|
+
return config.REPO_PATH;
|
|
29
|
+
const sep = agent.cwd.includes("\\") ? "\\" : "/";
|
|
30
|
+
return `${agent.cwd.replace(/[\\/]+$/, "")}${sep}${repoName(target)}`;
|
|
31
|
+
}
|
|
32
|
+
function gitStep(agent, args) {
|
|
33
|
+
const env = { GIT_TERMINAL_PROMPT: "0" };
|
|
34
|
+
if (agent.gatewayToken) {
|
|
35
|
+
env.GIT_CONFIG_COUNT = "1";
|
|
36
|
+
env.GIT_CONFIG_KEY_0 = "http.{{GATEWAY_URL}}/.extraHeader";
|
|
37
|
+
env.GIT_CONFIG_VALUE_0 = "Authorization: Bearer {{GATEWAY_TOKEN}}";
|
|
38
|
+
}
|
|
39
|
+
return { command: "git", args, env };
|
|
40
|
+
}
|
|
41
|
+
function describe(step, result) {
|
|
42
|
+
const command = `${step.command} ${step.args.join(" ")}`;
|
|
43
|
+
if (!result)
|
|
44
|
+
return `${command} n'a pas été exécuté`;
|
|
45
|
+
const detail = (result.error ?? (result.stderr.trim() || result.stdout.trim())) || "aucune sortie";
|
|
46
|
+
return `${command} a échoué (code ${result.code ?? "aucun"}) : ${detail}`;
|
|
47
|
+
}
|
|
48
|
+
/** Exécute les étapes et échoue si l'une d'elles n'a pas réussi. */
|
|
49
|
+
async function runAll(run, steps) {
|
|
50
|
+
const results = await run(steps);
|
|
51
|
+
steps.forEach((step, i) => {
|
|
52
|
+
if (results[i]?.code !== 0)
|
|
53
|
+
throw new Error(describe(step, results[i]));
|
|
54
|
+
});
|
|
55
|
+
return results;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Vérifie que la copie de travail est la racine d'un dépôt git et rend sa branche
|
|
59
|
+
* courante. `rev-parse --git-dir` vaut `.git` seulement à la racine du dépôt, pas dans
|
|
60
|
+
* un dossier quelconque d'un autre dépôt.
|
|
61
|
+
*/
|
|
62
|
+
async function openRepo(run, agent, dir, shown) {
|
|
63
|
+
const steps = [gitStep(agent, ["-C", dir, "rev-parse", "--git-dir"]), gitStep(agent, ["-C", dir, "branch", "--show-current"])];
|
|
64
|
+
const results = await run(steps);
|
|
65
|
+
if (results[0]?.code !== 0 || results[0].stdout.trim() !== ".git") {
|
|
66
|
+
throw new Error(`Repository not found at "${shown}". You must call 'clone' first.`);
|
|
67
|
+
}
|
|
68
|
+
if (results[1]?.code !== 0)
|
|
69
|
+
throw new Error(describe(steps[1], results[1]));
|
|
70
|
+
return results[1].stdout.trim();
|
|
71
|
+
}
|
|
72
|
+
function requireTargetBranch(current, target) {
|
|
73
|
+
if (current !== target.targetBranch) {
|
|
74
|
+
throw new Error(`Branch mismatch: current branch is "${current}", expected "${target.targetBranch}". Run 'init_working_dir' first.`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
async function clone(run, agent, config) {
|
|
78
|
+
const target = resolveTarget();
|
|
79
|
+
const dir = repoDir(config, target);
|
|
80
|
+
const shown = displayDir(config, target, agent);
|
|
81
|
+
const [check] = await run([gitStep(agent, ["-C", dir, "rev-parse", "--git-dir"])]);
|
|
82
|
+
if (check?.code === 0 && check.stdout.trim() === ".git") {
|
|
83
|
+
await runAll(run, [gitStep(agent, ["-C", dir, "remote", "set-url", "origin", proxyUrl()])]);
|
|
84
|
+
return text(`Repository already cloned at ${shown}. Use 'init_working_dir' to switch to the target branch.`);
|
|
85
|
+
}
|
|
86
|
+
await runAll(run, [
|
|
87
|
+
gitStep(agent, ["clone", proxyUrl(), dir]),
|
|
88
|
+
gitStep(agent, ["-C", dir, "config", "user.name", "Agent Zero"]),
|
|
89
|
+
gitStep(agent, ["-C", dir, "config", "user.email", "agentzero@arakei.net"]),
|
|
90
|
+
]);
|
|
91
|
+
logToFile(`[agent-git] ${target.repo} cloné sur la machine de l'agent : ${shown}`);
|
|
92
|
+
return text(`Successfully cloned ${target.repo} into ${shown}. Run 'init_working_dir' to switch to the target branch.`);
|
|
93
|
+
}
|
|
94
|
+
async function checkStatus(run, agent, config) {
|
|
95
|
+
const target = resolveTarget();
|
|
96
|
+
const currentBranch = await openRepo(run, agent, repoDir(config, target), displayDir(config, target, agent));
|
|
97
|
+
const expectedBranch = target.targetBranch;
|
|
98
|
+
return text(JSON.stringify({ currentBranch, expectedBranch, match: currentBranch === expectedBranch }, null, 2));
|
|
99
|
+
}
|
|
100
|
+
async function initWorkingDir(run, agent, config) {
|
|
101
|
+
const target = resolveTarget();
|
|
102
|
+
const dir = repoDir(config, target);
|
|
103
|
+
const current = await openRepo(run, agent, dir, displayDir(config, target, agent));
|
|
104
|
+
const steps = [];
|
|
105
|
+
const [, stash] = await runAll(run, [
|
|
106
|
+
gitStep(agent, ["-C", dir, "remote", "set-url", "origin", proxyUrl()]),
|
|
107
|
+
gitStep(agent, ["-C", dir, "stash", "push", "-u", "-m", `auto-stash/${current}`]),
|
|
108
|
+
]);
|
|
109
|
+
steps.push(stash.stdout.includes("No local changes to save")
|
|
110
|
+
? "No local changes to stash"
|
|
111
|
+
: `Stashed local changes as "auto-stash/${current}"`);
|
|
112
|
+
const lookup = [
|
|
113
|
+
gitStep(agent, ["-C", dir, "checkout", target.baseBranch]),
|
|
114
|
+
gitStep(agent, ["-C", dir, "fetch", "--all"]),
|
|
115
|
+
gitStep(agent, ["-C", dir, "ls-remote", "--exit-code", "--heads", "origin", `refs/heads/${target.targetBranch}`]),
|
|
116
|
+
];
|
|
117
|
+
const found = await run(lookup);
|
|
118
|
+
for (const i of [0, 1]) {
|
|
119
|
+
if (found[i]?.code !== 0)
|
|
120
|
+
throw new Error(describe(lookup[i], found[i]));
|
|
121
|
+
}
|
|
122
|
+
steps.push(`Checked out ${target.baseBranch}`, "Fetched all remotes");
|
|
123
|
+
const lsRemote = found[2];
|
|
124
|
+
if (lsRemote?.code === 0) {
|
|
125
|
+
await runAll(run, [
|
|
126
|
+
gitStep(agent, ["-C", dir, "checkout", target.targetBranch]),
|
|
127
|
+
gitStep(agent, ["-C", dir, "pull", "origin", target.targetBranch]),
|
|
128
|
+
]);
|
|
129
|
+
steps.push(`Checked out and pulled "${target.targetBranch}"`);
|
|
130
|
+
}
|
|
131
|
+
else if (lsRemote?.code === 2) {
|
|
132
|
+
await runAll(run, [
|
|
133
|
+
gitStep(agent, ["-C", dir, "checkout", "-b", target.targetBranch]),
|
|
134
|
+
gitStep(agent, ["-C", dir, "push", "-u", "origin", target.targetBranch]),
|
|
135
|
+
]);
|
|
136
|
+
steps.push(`Created and pushed new branch "${target.targetBranch}"`);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
throw new Error(describe(lookup[2], lsRemote));
|
|
140
|
+
}
|
|
141
|
+
const message = `Working directory initialized:\n${steps.map((s) => `- ${s}`).join("\n")}`;
|
|
142
|
+
logToFile(`[agent-git] ${message}`);
|
|
143
|
+
return text(message);
|
|
144
|
+
}
|
|
145
|
+
/** git add + commit. Rend false si l'arbre de travail est propre. */
|
|
146
|
+
async function commitAll(run, agent, dir, message) {
|
|
147
|
+
if (typeof message !== "string" || message.trim() === "")
|
|
148
|
+
throw new Error("A commit message is required.");
|
|
149
|
+
const [, status] = await runAll(run, [
|
|
150
|
+
gitStep(agent, ["-C", dir, "add", "."]),
|
|
151
|
+
gitStep(agent, ["-C", dir, "status", "--porcelain"]),
|
|
152
|
+
]);
|
|
153
|
+
if (status.stdout.trim() === "")
|
|
154
|
+
return false;
|
|
155
|
+
await runAll(run, [gitStep(agent, ["-C", dir, "commit", "-m", message])]);
|
|
156
|
+
return true;
|
|
157
|
+
}
|
|
158
|
+
async function pushToTarget(run, agent, dir, target) {
|
|
159
|
+
await runAll(run, [gitStep(agent, ["-C", dir, "push", proxyUrl(), `HEAD:${target.targetBranch}`])]);
|
|
160
|
+
}
|
|
161
|
+
async function commit(run, agent, config, message) {
|
|
162
|
+
const target = resolveTarget();
|
|
163
|
+
if (target.readOnly)
|
|
164
|
+
throw new Error("Server is in read-only mode");
|
|
165
|
+
const dir = repoDir(config, target);
|
|
166
|
+
requireTargetBranch(await openRepo(run, agent, dir, displayDir(config, target, agent)), target);
|
|
167
|
+
if (!(await commitAll(run, agent, dir, message)))
|
|
168
|
+
return text("Nothing to commit, working tree clean.");
|
|
169
|
+
return text(`Successfully committed all changes with message: "${String(message)}"`);
|
|
170
|
+
}
|
|
171
|
+
async function push(run, agent, config) {
|
|
172
|
+
const target = resolveTarget();
|
|
173
|
+
if (target.readOnly)
|
|
174
|
+
throw new Error("Server is in read-only mode");
|
|
175
|
+
const dir = repoDir(config, target);
|
|
176
|
+
const shown = displayDir(config, target, agent);
|
|
177
|
+
requireTargetBranch(await openRepo(run, agent, dir, shown), target);
|
|
178
|
+
await pushToTarget(run, agent, dir, target);
|
|
179
|
+
return text(`Successfully pushed to ${target.targetBranch} from ${shown}`);
|
|
180
|
+
}
|
|
181
|
+
async function commitAndPush(run, agent, config, message) {
|
|
182
|
+
const target = resolveTarget();
|
|
183
|
+
if (target.readOnly)
|
|
184
|
+
throw new Error("Server is in read-only mode");
|
|
185
|
+
const dir = repoDir(config, target);
|
|
186
|
+
const shown = displayDir(config, target, agent);
|
|
187
|
+
requireTargetBranch(await openRepo(run, agent, dir, shown), target);
|
|
188
|
+
if (!(await commitAll(run, agent, dir, message)))
|
|
189
|
+
return text("Nothing to commit, working tree clean.");
|
|
190
|
+
await pushToTarget(run, agent, dir, target);
|
|
191
|
+
return text(`Successfully committed and pushed all changes to branch ${target.targetBranch} from ${shown}`);
|
|
192
|
+
}
|
|
193
|
+
/** Aiguille un outil git du rôle remote vers son exécution sur la machine de l'agent. */
|
|
194
|
+
export function handleAgentGitTool(name, args, config) {
|
|
195
|
+
switch (name) {
|
|
196
|
+
case "clone": return handleAgentExec(args, (run, agent) => clone(run, agent, config));
|
|
197
|
+
case "check_status": return handleAgentExec(args, (run, agent) => checkStatus(run, agent, config));
|
|
198
|
+
case "init_working_dir": return handleAgentExec(args, (run, agent) => initWorkingDir(run, agent, config));
|
|
199
|
+
case "commit": return handleAgentExec(args, (run, agent) => commit(run, agent, config, args.message));
|
|
200
|
+
case "push": return handleAgentExec(args, (run, agent) => push(run, agent, config));
|
|
201
|
+
case "commit_and_push": return handleAgentExec(args, (run, agent) => commitAndPush(run, agent, config, args.message));
|
|
202
|
+
default: return null;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=agent-git.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-git.js","sourceRoot":"","sources":["../../src/handlers/agent-git.ts"],"names":[],"mappings":"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"}
|
package/dist/handlers/git.d.ts
CHANGED
|
@@ -30,7 +30,7 @@ export declare function handleCheckStatus(_args: any, config: any): Promise<{
|
|
|
30
30
|
text: string;
|
|
31
31
|
}[];
|
|
32
32
|
}>;
|
|
33
|
-
export declare function handleInitWorkingDir(_args: any, config: any
|
|
33
|
+
export declare function handleInitWorkingDir(_args: any, config: any): Promise<{
|
|
34
34
|
content: {
|
|
35
35
|
type: string;
|
|
36
36
|
text: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/handlers/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/handlers/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAM/D,eAAO,MAAM,SAAS,EAAE,IAAI,EAuD3B,CAAC;AAsCF,wBAAsB,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;;;;;GAoBxD;AAED,wBAAsB,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;;;;;GAiBvD;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;;;;;GAqB/D;AAED,wBAAsB,WAAW;;;;;GAGhC;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;;;;;GAO9D;AAED,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG;;;;;GAyCjE"}
|