restricted-github-mcp 1.1.28 → 1.1.31

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.
@@ -1 +1 @@
1
- {"version":3,"file":"config-server.d.ts","sourceRoot":"","sources":["../src/config-server.ts"],"names":[],"mappings":"AAyEA;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAazD;AAED,wBAAsB,iBAAiB,kBAqJtC"}
1
+ {"version":3,"file":"config-server.d.ts","sourceRoot":"","sources":["../src/config-server.ts"],"names":[],"mappings":"AA0EA;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAazD;AAED,wBAAsB,iBAAiB,kBAqOtC"}
@@ -2,7 +2,8 @@ import express from "express";
2
2
  import path from "path";
3
3
  import fs from "fs";
4
4
  import { fileURLToPath } from "url";
5
- import { logToFile } from "./logger.js";
5
+ import { Octokit } from "octokit";
6
+ import { logToFile, updateEnvFile } from "./logger.js";
6
7
  /**
7
8
  * Envoie un message au parent de manière sécurisée.
8
9
  */
@@ -122,22 +123,93 @@ export async function startConfigServer() {
122
123
  res.status(500).json({ error: msg });
123
124
  }
124
125
  });
126
+ app.get("/api/repositories", async (req, res) => {
127
+ logToFile("[GUI] GET /api/repositories called");
128
+ try {
129
+ const token = process.env.GITHUB_TOKEN;
130
+ if (!token) {
131
+ logToFile("[GUI] Repositories endpoint: Token non configuré");
132
+ return res.status(400).json({ error: "Token GitHub non configuré" });
133
+ }
134
+ const octokit = new Octokit({ auth: token });
135
+ const user = await octokit.rest.users.getAuthenticated();
136
+ logToFile(`[GUI] Authenticated as: ${user.data.login}`);
137
+ const { data } = await octokit.rest.repos.listForAuthenticatedUser({
138
+ affiliation: "owner",
139
+ sort: "updated",
140
+ per_page: 100,
141
+ });
142
+ // Filtrer pour garder seulement les repos accessibles au token
143
+ const accessibleRepos = [];
144
+ for (const repo of data) {
145
+ try {
146
+ // Tenter de lister les branches pour tester l'accès
147
+ await octokit.rest.repos.listBranches({
148
+ owner: repo.owner.login,
149
+ repo: repo.name,
150
+ per_page: 1,
151
+ });
152
+ accessibleRepos.push(repo.full_name);
153
+ }
154
+ catch (error) {
155
+ if (error.status !== 403) {
156
+ logToFile(`[GUI] Error checking access for ${repo.full_name}: ${error.message}`);
157
+ }
158
+ }
159
+ }
160
+ logToFile(`[GUI] Filtered to ${accessibleRepos.length} accessible repos`);
161
+ res.json(accessibleRepos);
162
+ }
163
+ catch (error) {
164
+ const msg = `[GUI] Failed to fetch repositories: ${error.message}`;
165
+ logToFile(msg);
166
+ res.status(500).json({ error: msg });
167
+ }
168
+ });
169
+ app.get("/api/branches", async (req, res) => {
170
+ logToFile("[GUI] GET /api/branches called");
171
+ try {
172
+ const repo = req.query.repo;
173
+ const token = process.env.GITHUB_TOKEN;
174
+ if (!repo) {
175
+ logToFile("[GUI] Branches endpoint: Paramètre repo manquant");
176
+ return res.status(400).json({ error: "Paramètre repo manquant" });
177
+ }
178
+ if (!token) {
179
+ logToFile("[GUI] Branches endpoint: Token non configuré");
180
+ return res.status(400).json({ error: "Token GitHub non configuré" });
181
+ }
182
+ const [owner, repoName] = repo.split("/");
183
+ if (!owner || !repoName) {
184
+ logToFile("[GUI] Branches endpoint: Format de repo invalide");
185
+ return res.status(400).json({ error: "Format de repo invalide (owner/repo)" });
186
+ }
187
+ const octokit = new Octokit({ auth: token });
188
+ const { data } = await octokit.rest.repos.listBranches({
189
+ owner,
190
+ repo: repoName,
191
+ per_page: 100,
192
+ });
193
+ const branches = data.map((branch) => branch.name).reverse();
194
+ logToFile(`[GUI] Branches endpoint: ${branches.length} branches retournées pour ${repo}`);
195
+ res.json(branches);
196
+ }
197
+ catch (error) {
198
+ const msg = `[GUI] Failed to fetch branches: ${error.message}`;
199
+ logToFile(msg);
200
+ res.status(500).json({ error: msg });
201
+ }
202
+ });
125
203
  app.post("/api/config", (req, res) => {
126
204
  logToFile("[GUI] POST /api/config called");
127
205
  const newConfig = req.body;
128
- let envContent = "";
129
- for (const [key, value] of Object.entries(newConfig)) {
130
- // Sécurité : on n'autorise pas la persistance de REPO_PATH dans le .env
131
- if (key === "REPO_PATH")
132
- continue;
133
- envContent += `${key}=${value}\n`;
134
- }
135
206
  try {
136
- const envPath = path.join(process.cwd(), ".env");
137
- logToFile(`[GUI] Saving config to: ${envPath}`);
138
- fs.writeFileSync(envPath, envContent);
139
207
  // Update current process env
140
208
  Object.assign(process.env, newConfig);
209
+ // Persist each key to .env without destroying other existing keys
210
+ for (const [key, value] of Object.entries(newConfig)) {
211
+ updateEnvFile(key, value);
212
+ }
141
213
  // Notify master process about the update
142
214
  logToFile("[GUI] Sending CONFIG_UPDATED to master process");
143
215
  safeSend({ type: "CONFIG_UPDATED", config: newConfig });
@@ -1 +1 @@
1
- {"version":3,"file":"config-server.js","sourceRoot":"","sources":["../src/config-server.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC;;GAEG;AACH,SAAS,QAAQ,CAAC,OAAY;IAC5B,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,SAAS,CAAC,4BAA4B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACrD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,sBAAsB;AACtB,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;AACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC;AACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,mBAAmB,CAAC;AAE7D,0CAA0C;AAC1C,IAAI,cAAc,GAAkB,IAAI,CAAC;AAEzC;;;GAGG;AACH,KAAK,UAAU,oBAAoB;IACjC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,CAAC,4DAA4D,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;QAE7D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,iBAAiB,EAAE;YAC1D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YACxD,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1D,SAAS,CAAC,qCAAqC,SAAS,CAAC,KAAK,IAAI,QAAQ,CAAC,UAAU,uBAAuB,YAAY,EAAE,CAAC,CAAC;YAC5H,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,cAAc,GAAG,QAAQ,CAAC;QAC1B,SAAS,CAAC,2CAA2C,QAAQ,WAAW,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACtF,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;QACvE,SAAS,CAAC,qCAAqC,MAAM,uBAAuB,YAAY,EAAE,CAAC,CAAC;QAC5F,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,IAAI,CAAC,SAAS,IAAI,CAAC,cAAc;QAAE,OAAO;IAE1C,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,GAAG,SAAS,mBAAmB,EAAE;YAC3C,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;SAC/C,CAAC,CAAC;QACH,SAAS,CAAC,uCAAuC,cAAc,GAAG,CAAC,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,2CAA2C;IAC7C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,SAAS,CAAC,qCAAqC,CAAC,CAAC;IAEjD,6CAA6C;IAC7C,MAAM,SAAS,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,SAAS,IAAI,YAAY,CAAC;IAEvC,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IAEtB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAExB,sCAAsC;IACtC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACzB,SAAS,CAAC,kBAAkB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QACrD,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;IAEH,4CAA4C;IAC5C,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACpC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,mEAAmE;IACnE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxD,SAAS,CAAC,sCAAsC,UAAU,EAAE,CAAC,CAAC;IAE9D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,uDAAuD,UAAU,EAAE,CAAC;QACrF,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxB,SAAS,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;IAED,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAEpC,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAClC,SAAS,CAAC,8BAA8B,CAAC,CAAC;QAC1C,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC;gBACP,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;gBACtC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;gBACpC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;gBACxC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,MAAM;gBAC9C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,MAAM;aAC5C,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,sCAAsC,KAAK,CAAC,OAAO,EAAE,CAAC;YAClE,SAAS,CAAC,GAAG,CAAC,CAAC;YACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACnC,SAAS,CAAC,+BAA+B,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC;QAC3B,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,wEAAwE;YACxE,IAAI,GAAG,KAAK,WAAW;gBAAE,SAAS;YAClC,UAAU,IAAI,GAAG,GAAG,IAAI,KAAK,IAAI,CAAC;QACpC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;YACjD,SAAS,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;YAChD,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YAEtC,6BAA6B;YAC7B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAEtC,yCAAyC;YACzC,SAAS,CAAC,gDAAgD,CAAC,CAAC;YAC5D,QAAQ,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YAExD,SAAS,CAAC,iDAAiD,CAAC,CAAC;YAC7D,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC;YAC1D,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,SAAS,CAAC,GAAG,CAAC,CAAC;YACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACpC,SAAS,CAAC,2CAA2C,CAAC,CAAC;QACvD,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC,CAAC;YAEzD,UAAU,CAAC,GAAG,EAAE;gBACd,SAAS,CAAC,gDAAgD,CAAC,CAAC;gBAC5D,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;oBACnC,SAAS,CAAC,mDAAmD,CAAC,CAAC;oBAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,4BAA4B,KAAK,CAAC,OAAO,EAAE,CAAC;YACxD,SAAS,CAAC,GAAG,CAAC,CAAC;YACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACjC,SAAS,CAAC,wCAAwC,CAAC,CAAC;QACpD,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC,CAAC;YAEvD,UAAU,CAAC,GAAG,EAAE;gBACd,SAAS,CAAC,6CAA6C,CAAC,CAAC;gBACzD,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;oBAChC,SAAS,CAAC,mDAAmD,CAAC,CAAC;oBAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,yBAAyB,KAAK,CAAC,OAAO,EAAE,CAAC;YACrD,SAAS,CAAC,GAAG,CAAC,CAAC;YACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,SAAS,CAAC,sCAAsC,IAAI,KAAK,CAAC,CAAC;QAC3D,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;YAC3C,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,cAAc,SAAS,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC;YACnF,MAAM,GAAG,GAAG,oDAAoD,IAAI,MAAM,IAAI,EAAE,CAAC;YACjF,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,SAAS,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE;YACtC,IAAI,GAAG,GAAG,+BAA+B,IAAI,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;YACjE,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC9B,GAAG,GAAG,6BAA6B,IAAI,wCAAwC,CAAC;YAClF,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,SAAS,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAC9B,SAAS,CAAC,4CAA4C,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IAEL,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,iDAAiD,KAAK,CAAC,OAAO,EAAE,CAAC;QAC7E,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,SAAS,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"config-server.js","sourceRoot":"","sources":["../src/config-server.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEvD;;GAEG;AACH,SAAS,QAAQ,CAAC,OAAY;IAC5B,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,SAAS,CAAC,4BAA4B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACrD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,sBAAsB;AACtB,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;AACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa,CAAC;AACvD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,mBAAmB,CAAC;AAE7D,0CAA0C;AAC1C,IAAI,cAAc,GAAkB,IAAI,CAAC;AAEzC;;;GAGG;AACH,KAAK,UAAU,oBAAoB;IACjC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,CAAC,4DAA4D,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;QAE7D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,SAAS,iBAAiB,EAAE;YAC1D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YACxD,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC,CAAC;QAEH,YAAY,CAAC,SAAS,CAAC,CAAC;QAExB,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1D,SAAS,CAAC,qCAAqC,SAAS,CAAC,KAAK,IAAI,QAAQ,CAAC,UAAU,uBAAuB,YAAY,EAAE,CAAC,CAAC;YAC5H,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,cAAc,GAAG,QAAQ,CAAC;QAC1B,SAAS,CAAC,2CAA2C,QAAQ,WAAW,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACtF,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;QACvE,SAAS,CAAC,qCAAqC,MAAM,uBAAuB,YAAY,EAAE,CAAC,CAAC;QAC5F,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,IAAI,CAAC,SAAS,IAAI,CAAC,cAAc;QAAE,OAAO;IAE1C,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,GAAG,SAAS,mBAAmB,EAAE;YAC3C,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;SAC/C,CAAC,CAAC;QACH,SAAS,CAAC,uCAAuC,cAAc,GAAG,CAAC,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,2CAA2C;IAC7C,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,SAAS,CAAC,qCAAqC,CAAC,CAAC;IAEjD,6CAA6C;IAC7C,MAAM,SAAS,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,SAAS,IAAI,YAAY,CAAC;IAEvC,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IAEtB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAExB,sCAAsC;IACtC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACzB,SAAS,CAAC,kBAAkB,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;QACrD,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;IAEH,4CAA4C;IAC5C,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACpC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,mEAAmE;IACnE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxD,SAAS,CAAC,sCAAsC,UAAU,EAAE,CAAC,CAAC;IAE9D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,uDAAuD,UAAU,EAAE,CAAC;QACrF,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxB,SAAS,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;IAED,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAEpC,GAAG,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAClC,SAAS,CAAC,8BAA8B,CAAC,CAAC;QAC1C,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC;gBACP,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY;gBACtC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;gBACpC,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa;gBACxC,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,MAAM;gBAC9C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,MAAM;aAC5C,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,sCAAsC,KAAK,CAAC,OAAO,EAAE,CAAC;YAClE,SAAS,CAAC,GAAG,CAAC,CAAC;YACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC9C,SAAS,CAAC,oCAAoC,CAAC,CAAC;QAChD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;YACvC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,SAAS,CAAC,kDAAkD,CAAC,CAAC;gBAC9D,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC,CAAC;YACvE,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAE7C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACzD,SAAS,CAAC,2BAA2B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAExD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC;gBACjE,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,GAAG;aACd,CAAC,CAAC;YAEH,+DAA+D;YAC/D,MAAM,eAAe,GAAG,EAAE,CAAC;YAC3B,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;gBACxB,IAAI,CAAC;oBACH,oDAAoD;oBACpD,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;wBACpC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;wBACvB,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,QAAQ,EAAE,CAAC;qBACZ,CAAC,CAAC;oBACH,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACvC,CAAC;gBAAC,OAAO,KAAU,EAAE,CAAC;oBACpB,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;wBACzB,SAAS,CAAC,mCAAmC,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBACnF,CAAC;gBACH,CAAC;YACH,CAAC;YAED,SAAS,CAAC,qBAAqB,eAAe,CAAC,MAAM,mBAAmB,CAAC,CAAC;YAC1E,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,uCAAuC,KAAK,CAAC,OAAO,EAAE,CAAC;YACnE,SAAS,CAAC,GAAG,CAAC,CAAC;YACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC1C,SAAS,CAAC,gCAAgC,CAAC,CAAC;QAC5C,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAc,CAAC;YACtC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;YAEvC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,SAAS,CAAC,kDAAkD,CAAC,CAAC;gBAC9D,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC,CAAC;YACpE,CAAC;YAED,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,SAAS,CAAC,8CAA8C,CAAC,CAAC;gBAC1D,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC,CAAC;YACvE,CAAC;YAED,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACxB,SAAS,CAAC,kDAAkD,CAAC,CAAC;gBAC9D,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,sCAAsC,EAAE,CAAC,CAAC;YACjF,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;gBACrD,KAAK;gBACL,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,GAAG;aACd,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YAC7D,SAAS,CAAC,4BAA4B,QAAQ,CAAC,MAAM,6BAA6B,IAAI,EAAE,CAAC,CAAC;YAC1F,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,mCAAmC,KAAK,CAAC,OAAO,EAAE,CAAC;YAC/D,SAAS,CAAC,GAAG,CAAC,CAAC;YACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACnC,SAAS,CAAC,+BAA+B,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC;QAE3B,IAAI,CAAC;YACH,6BAA6B;YAC7B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAEtC,kEAAkE;YAClE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrD,aAAa,CAAC,GAAG,EAAE,KAAe,CAAC,CAAC;YACtC,CAAC;YAED,yCAAyC;YACzC,SAAS,CAAC,gDAAgD,CAAC,CAAC;YAC5D,QAAQ,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YAExD,SAAS,CAAC,iDAAiD,CAAC,CAAC;YAC7D,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC;YAC1D,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,SAAS,CAAC,GAAG,CAAC,CAAC;YACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACpC,SAAS,CAAC,2CAA2C,CAAC,CAAC;QACvD,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC,CAAC;YAEzD,UAAU,CAAC,GAAG,EAAE;gBACd,SAAS,CAAC,gDAAgD,CAAC,CAAC;gBAC5D,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;oBACnC,SAAS,CAAC,mDAAmD,CAAC,CAAC;oBAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,4BAA4B,KAAK,CAAC,OAAO,EAAE,CAAC;YACxD,SAAS,CAAC,GAAG,CAAC,CAAC;YACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACjC,SAAS,CAAC,wCAAwC,CAAC,CAAC;QACpD,IAAI,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC,CAAC;YAEvD,UAAU,CAAC,GAAG,EAAE;gBACd,SAAS,CAAC,6CAA6C,CAAC,CAAC;gBACzD,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;oBAChC,SAAS,CAAC,mDAAmD,CAAC,CAAC;oBAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,yBAAyB,KAAK,CAAC,OAAO,EAAE,CAAC;YACrD,SAAS,CAAC,GAAG,CAAC,CAAC;YACf,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACvC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,SAAS,CAAC,sCAAsC,IAAI,KAAK,CAAC,CAAC;QAC3D,MAAM,cAAc,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;YAC3C,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,cAAc,SAAS,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,iBAAiB,CAAC;YACnF,MAAM,GAAG,GAAG,oDAAoD,IAAI,MAAM,IAAI,EAAE,CAAC;YACjF,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,SAAS,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE;YACtC,IAAI,GAAG,GAAG,+BAA+B,IAAI,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC;YACjE,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBAC9B,GAAG,GAAG,6BAA6B,IAAI,wCAAwC,CAAC;YAClF,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,SAAS,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAC9B,SAAS,CAAC,4CAA4C,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;IAEL,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,iDAAiD,KAAK,CAAC,OAAO,EAAE,CAAC;QAC7E,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnB,SAAS,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;AACH,CAAC"}
package/dist/gui.js CHANGED
@@ -4,7 +4,7 @@ import * as dotenv from "dotenv";
4
4
  import { logToFile } from "./logger.js";
5
5
  // On s'assure que même la GUI ne pollue pas stdout au cas où
6
6
  console.log = console.error;
7
- dotenv.config();
7
+ dotenv.config({ override: true });
8
8
  logToFile(`[GUI-PROCESS] Starting standalone GUI process (PID: ${process.pid})`);
9
9
  // 1. Intercepter l'événement d'erreur global pour l'IPC
10
10
  process.on("error", (err) => {
package/dist/gui.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"gui.js","sourceRoot":"","sources":["../src/gui.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,6DAA6D;AAC7D,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;AAE5B,MAAM,CAAC,MAAM,EAAE,CAAC;AAEhB,SAAS,CAAC,uDAAuD,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;AAEjF,wDAAwD;AACxD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE;IAC/B,IAAI,GAAG,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;QAC1C,SAAS,CAAC,oCAAoC,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IACD,SAAS,CAAC,qCAAqC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC;AAEH,yDAAyD;AACzD,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;IAC5B,SAAS,CAAC,oDAAoD,CAAC,CAAC;IAChE,uDAAuD;IACvD,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,EAAE,GAAG,CAAC,CAAC;AACV,CAAC,CAAC,CAAC;AAEH,4DAA4D;AAC5D,KAAK,UAAU,gBAAgB,CAAC,MAAc;IAC5C,SAAS,CAAC,0BAA0B,MAAM,oBAAoB,CAAC,CAAC;IAChE,MAAM,mBAAmB,EAAE,CAAC;IAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;AACzD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEvD,iBAAiB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IAC9B,MAAM,GAAG,GAAG,8BAA8B,GAAG,CAAC,OAAO,EAAE,CAAC;IACxD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,SAAS,CAAC,GAAG,CAAC,CAAC;IACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"gui.js","sourceRoot":"","sources":["../src/gui.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,6DAA6D;AAC7D,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;AAE5B,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAElC,SAAS,CAAC,uDAAuD,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;AAEjF,wDAAwD;AACxD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAQ,EAAE,EAAE;IAC/B,IAAI,GAAG,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;QAC1C,SAAS,CAAC,oCAAoC,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IACD,SAAS,CAAC,qCAAqC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC;AAEH,yDAAyD;AACzD,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;IAC5B,SAAS,CAAC,oDAAoD,CAAC,CAAC;IAChE,uDAAuD;IACvD,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,EAAE,GAAG,CAAC,CAAC;AACV,CAAC,CAAC,CAAC;AAEH,4DAA4D;AAC5D,KAAK,UAAU,gBAAgB,CAAC,MAAc;IAC5C,SAAS,CAAC,0BAA0B,MAAM,oBAAoB,CAAC,CAAC;IAChE,MAAM,mBAAmB,EAAE,CAAC;IAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;AACzD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEvD,iBAAiB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IAC9B,MAAM,GAAG,GAAG,8BAA8B,GAAG,CAAC,OAAO,EAAE,CAAC;IACxD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,SAAS,CAAC,GAAG,CAAC,CAAC;IACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/dist/index.js CHANGED
@@ -10,10 +10,12 @@ import fs from "fs";
10
10
  import os from "os";
11
11
  import { fileURLToPath } from "url";
12
12
  import { fork } from "child_process";
13
- import { logToFile } from "./logger.js";
13
+ import { logToFile, updateEnvFile } from "./logger.js";
14
14
  import { startConfigServer } from "./config-server.js";
15
15
  const __filename = fileURLToPath(import.meta.url);
16
16
  const __dirname = path.dirname(__filename);
17
+ // On force la lecture du .env dès le début
18
+ dotenv.config({ override: true });
17
19
  /**
18
20
  * État du processus GUI
19
21
  */
@@ -21,14 +23,18 @@ let currentGuiProcess = null;
21
23
  /**
22
24
  * Accès dynamique à la configuration
23
25
  */
24
- const getConfig = () => ({
25
- GITHUB_TOKEN: process.env.GITHUB_TOKEN,
26
- TARGET_BRANCH: process.env.TARGET_BRANCH,
27
- BASE_BRANCH: process.env.BASE_BRANCH || "main",
28
- TARGET_REPO: process.env.TARGET_REPO,
29
- REPO_PATH: process.env.REPO_PATH,
30
- READ_ONLY: process.env.READ_ONLY === "true"
31
- });
26
+ const getConfig = () => {
27
+ // On re-charge le .env à chaque appel pour synchroniser plusieurs instances
28
+ dotenv.config({ override: true });
29
+ return {
30
+ GITHUB_TOKEN: process.env.GITHUB_TOKEN,
31
+ TARGET_BRANCH: process.env.TARGET_BRANCH,
32
+ BASE_BRANCH: process.env.BASE_BRANCH || "main",
33
+ TARGET_REPO: process.env.TARGET_REPO,
34
+ REPO_PATH: process.env.REPO_PATH,
35
+ READ_ONLY: process.env.READ_ONLY === "true"
36
+ };
37
+ };
32
38
  /**
33
39
  * Instance Octokit dynamique
34
40
  */
@@ -80,26 +86,6 @@ function spawnGuiProcess() {
80
86
  });
81
87
  return currentGuiProcess;
82
88
  }
83
- /**
84
- * Met à jour durablement une variable dans le fichier .env
85
- */
86
- function updateEnvFile(key, value) {
87
- try {
88
- const envPath = path.join(process.cwd(), ".env");
89
- let content = "";
90
- if (fs.existsSync(envPath)) {
91
- content = fs.readFileSync(envPath, "utf8");
92
- }
93
- const lines = content.split(/\r?\n/);
94
- const newLines = lines.filter(line => !line.startsWith(`${key}=`));
95
- newLines.push(`${key}=${value}`);
96
- fs.writeFileSync(envPath, newLines.join("\n").trim() + "\n");
97
- logToFile(`[ENV] Fichier .env mis à jour : ${key}=${value}`);
98
- }
99
- catch (error) {
100
- logToFile(`[ENV] Erreur lors de la mise à jour du .env : ${error.message}`);
101
- }
102
- }
103
89
  /**
104
90
  * Sécurise un nom de branche pour l'utiliser comme nom de dossier
105
91
  */
@@ -152,7 +138,6 @@ if (process.argv.includes("--version") || process.argv.includes("-v")) {
152
138
  // Some libraries might log to stdout on initialization.
153
139
  // We redirect all console.log to console.error to avoid polluting stdout.
154
140
  console.log = console.error;
155
- dotenv.config();
156
141
  // Global error handlers to catch silent crashes
157
142
  process.on('uncaughtException', (error) => {
158
143
  const msg = `FATAL UNCAUGHT EXCEPTION [PID ${process.pid}]: ${error.message}\nStack: ${error.stack}`;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/logger.d.ts CHANGED
@@ -1,3 +1,7 @@
1
+ /**
2
+ * Met à jour durablement une variable dans le fichier .env
3
+ */
4
+ export declare function updateEnvFile(key: string, value: string): void;
1
5
  /**
2
6
  * Log a message to a file at the root of the disk.
3
7
  * @param message The message to log
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,QAuBxC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAiBvD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,QAuBxC"}
package/dist/logger.js CHANGED
@@ -1,5 +1,25 @@
1
1
  import fs from "fs";
2
2
  import path from "path";
3
+ /**
4
+ * Met à jour durablement une variable dans le fichier .env
5
+ */
6
+ export function updateEnvFile(key, value) {
7
+ try {
8
+ const envPath = path.join(process.cwd(), ".env");
9
+ let content = "";
10
+ if (fs.existsSync(envPath)) {
11
+ content = fs.readFileSync(envPath, "utf8");
12
+ }
13
+ const lines = content.split(/\r?\n/);
14
+ const newLines = lines.filter(line => !line.startsWith(`${key}=`));
15
+ newLines.push(`${key}=${value}`);
16
+ fs.writeFileSync(envPath, newLines.join("\n").trim() + "\n");
17
+ logToFile(`[ENV] Fichier .env mis à jour : ${key}=${value}`);
18
+ }
19
+ catch (error) {
20
+ logToFile(`[ENV] Erreur lors de la mise à jour du .env : ${error.message}`);
21
+ }
22
+ }
3
23
  /**
4
24
  * Log a message to a file at the root of the disk.
5
25
  * @param message The message to log
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO;QACzC,CAAC,CAAC,qCAAqC;QACvC,CAAC,CAAC,gCAAgC,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE;QAC7C,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,IAAI,GAAG,UAAU,OAAO,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC;IAE9D,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,KAAa;IACtD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;QACjD,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;QACnE,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;QAEjC,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;QAC7D,SAAS,CAAC,mCAAmC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,SAAS,CAAC,iDAAiD,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO;QACzC,CAAC,CAAC,qCAAqC;QACvC,CAAC,CAAC,gCAAgC,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE;QAC7C,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,SAAS;KAClB,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,IAAI,GAAG,UAAU,OAAO,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC;IAE9D,IAAI,CAAC;QACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "restricted-github-mcp",
3
- "version": "1.1.28",
3
+ "version": "1.1.31",
4
4
  "main": "index.js",
5
5
  "type": "module",
6
6
  "files": [
package/public/index.html CHANGED
@@ -1,217 +1,452 @@
1
- <!DOCTYPE html>
2
- <html lang="fr" class="dark">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>GitHub MCP</title>
7
- <script src="https://cdn.tailwindcss.com"></script>
8
- <style>
9
- body {
10
- background-color: #0f172a;
11
- color: #f8fafc;
12
- }
13
- </style>
14
- </head>
15
- <body class="min-h-screen p-8">
16
- <div class="max-w-2xl mx-auto bg-slate-800 rounded-xl shadow-2xl p-8 border border-slate-700">
17
- <h1 class="text-3xl font-bold mb-6 text-blue-400 flex items-center">
18
- <svg class="w-8 h-8 mr-3" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
19
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"></path>
20
- </svg>
21
- Configuration MCP GitHub
22
- </h1>
23
-
24
- <form id="configForm" class="space-y-6">
25
- <div class="space-y-4" id="inputs">
26
- <!-- Inputs will be injected here -->
27
- <div class="flex justify-center p-8">
28
- <div class="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-400"></div>
29
- </div>
30
- </div>
31
-
32
- <div class="pt-4 space-y-3">
33
- <button type="submit" class="w-full bg-blue-600 hover:bg-blue-700 text-white font-bold py-3 px-4 rounded-lg transition duration-200 shadow-lg flex justify-center items-center">
34
- <span>Enregistrer la configuration</span>
35
- </button>
36
-
37
- <button type="button" id="restartBtn" class="w-full bg-amber-600 hover:bg-amber-700 text-white font-bold py-3 px-4 rounded-lg transition duration-200 shadow-lg flex justify-center items-center">
38
- <svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
39
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"></path>
40
- </svg>
41
- <span>Redémarrer le serveur MCP</span>
42
- </button>
43
-
44
- <button type="button" id="stopBtn" class="w-full bg-red-600 hover:bg-red-700 text-white font-bold py-3 px-4 rounded-lg transition duration-200 shadow-lg flex justify-center items-center">
45
- <svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
46
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path>
47
- </svg>
48
- <span>Arrêter le serveur MCP</span>
49
- </button>
50
- </div>
51
- </form>
52
-
53
- <div id="status" class="mt-6 p-4 rounded-lg hidden"></div>
54
-
55
- <div class="mt-8 text-sm text-slate-400 border-t border-slate-700 pt-4 italic">
56
- Note: Le serveur MCP doit être redémarré pour appliquer les changements.
57
- </div>
58
- </div>
59
-
60
- <script>
61
- // Détection automatique du base path pour fonctionner via proxy
62
- const pathname = window.location.pathname;
63
- const BASE_PATH = pathname.includes('.')
64
- ? pathname.replace(/\/[^/]*$/, '') // /github-mcp/index.html -> /github-mcp
65
- : pathname.endsWith('/')
66
- ? pathname.slice(0, -1) // /github-mcp/ -> /github-mcp
67
- : pathname === '/' ? '' : pathname; // /github-mcp -> /github-mcp, / -> ''
68
-
69
- // Helper pour construire les URLs d'API
70
- const api = (endpoint) => `${BASE_PATH}/${endpoint}`.replace(/\/+/g, '/');
71
-
72
- const form = document.getElementById('configForm');
73
- const status = document.getElementById('status');
74
- const inputsContainer = document.getElementById('inputs');
75
- const restartBtn = document.getElementById('restartBtn');
76
- const stopBtn = document.getElementById('stopBtn');
77
-
78
- const fields = [
79
- { id: 'GITHUB_TOKEN', label: 'GitHub Token', type: 'password', placeholder: 'ghp_...' },
80
- { id: 'TARGET_REPO', label: 'Target Repository', type: 'text', placeholder: 'owner/repo' },
81
- { id: 'TARGET_BRANCH', label: 'Target Branch', type: 'text', placeholder: 'feature-branch' },
82
- { id: 'BASE_BRANCH', label: 'Base Branch', type: 'text', placeholder: 'main' },
83
- { id: 'READ_ONLY', label: 'Read Only Mode', type: 'checkbox' }
84
- ];
85
-
86
- // Fetch current config
87
- async function fetchConfig() {
88
- try {
89
- const response = await fetch(api('api/config'));
90
- if (!response.ok) {
91
- const data = await response.json().catch(() => ({ error: 'Erreur lors du chargement' }));
92
- throw new Error(data.error || 'Erreur lors du chargement');
93
- }
94
- const config = await response.json();
95
-
96
- inputsContainer.innerHTML = fields.map(field => {
97
- if (field.type === 'checkbox') {
98
- return `
99
- <div class="flex items-center space-x-3 p-3 bg-slate-700/50 rounded-lg">
100
- <input type="checkbox" id="${field.id}" ${config[field.id] === 'true' || config[field.id] === true ? 'checked' : ''} class="w-5 h-5 text-blue-600 rounded focus:ring-blue-500 bg-slate-900 border-slate-600">
101
- <label for="${field.id}" class="text-sm font-medium text-slate-200">${field.label}</label>
102
- </div>
103
- `;
104
- }
105
- return `
106
- <div class="space-y-1">
107
- <label for="${field.id}" class="block text-sm font-medium text-slate-300">${field.label}</label>
108
- <input type="${field.type}" id="${field.id}" value="${config[field.id] || ''}" placeholder="${field.placeholder}" class="w-full px-4 py-2 bg-slate-900 border border-slate-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent outline-none transition duration-200 text-slate-100">
109
- </div>
110
- `;
111
- }).join('');
112
- } catch (error) {
113
- showStatus(error.message || 'Erreur lors du chargement de la configuration', 'error');
114
- }
115
- }
116
-
117
- function showStatus(message, type) {
118
- status.textContent = message;
119
- status.className = `mt-6 p-4 rounded-lg font-medium text-center ${type === 'success' ? 'bg-green-900/50 text-green-300 border border-green-700' : 'bg-red-900/50 text-red-300 border border-red-700'}`;
120
- status.classList.remove('hidden');
121
- setTimeout(() => status.classList.add('hidden'), 5000);
122
- }
123
-
124
- form.onsubmit = async (e) => {
125
- e.preventDefault();
126
- const config = {};
127
- fields.forEach(field => {
128
- const input = document.getElementById(field.id);
129
- config[field.id] = field.type === 'checkbox' ? input.checked : input.value;
130
- });
131
-
132
- try {
133
- const response = await fetch(api('api/config'), {
134
- method: 'POST',
135
- headers: { 'Content-Type': 'application/json' },
136
- body: JSON.stringify(config)
137
- });
138
-
139
- if (response.ok) {
140
- showStatus('Configuration enregistrée avec succès !', 'success');
141
- } else {
142
- const data = await response.json().catch(() => ({ error: 'Erreur inconnue' }));
143
- throw new Error(data.error || 'Erreur lors de l\'enregistrement');
144
- }
145
- } catch (error) {
146
- showStatus(error.message, 'error');
147
- }
148
- };
149
-
150
- restartBtn.onclick = async () => {
151
- if (!confirm('Êtes-vous sûr de vouloir redémarrer le serveur MCP ? Cela coupera la connexion actuelle pour appliquer les changements.')) {
152
- return;
153
- }
154
-
155
- try {
156
- restartBtn.disabled = true;
157
- restartBtn.innerHTML = '<span>Redémarrage en cours...</span>';
158
-
159
- const response = await fetch(api('api/restart'), {
160
- method: 'POST'
161
- });
162
-
163
- if (response.ok) {
164
- showStatus('Signal de redémarrage envoyé. Le serveur va se relancer...', 'success');
165
- // On attend un peu que le serveur s'arrête
166
- setTimeout(() => {
167
- window.location.reload();
168
- }, 3000);
169
- } else {
170
- throw new Error('Erreur lors de la demande de redémarrage');
171
- }
172
- } catch (error) {
173
- showStatus(error.message, 'error');
174
- restartBtn.disabled = false;
175
- restartBtn.innerHTML = `
176
- <svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
177
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"></path>
178
- </svg>
179
- <span>Redémarrer le serveur MCP</span>
180
- `;
181
- }
182
- };
183
-
184
- stopBtn.onclick = async () => {
185
- if (!confirm('Êtes-vous sûr de vouloir arrêter COMPLÈTEMENT le serveur MCP ?')) {
186
- return;
187
- }
188
-
189
- try {
190
- stopBtn.disabled = true;
191
- stopBtn.innerHTML = '<span>Arrêt en cours...</span>';
192
-
193
- const response = await fetch(api('api/stop'), {
194
- method: 'POST'
195
- });
196
-
197
- if (response.ok) {
198
- showStatus('Le serveur s\'arrête. Cette page ne sera plus disponible.', 'success');
199
- } else {
200
- throw new Error('Erreur lors de la demande d\'arrêt');
201
- }
202
- } catch (error) {
203
- showStatus(error.message, 'error');
204
- stopBtn.disabled = false;
205
- stopBtn.innerHTML = `
206
- <svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
207
- <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path>
208
- </svg>
209
- <span>Arrêter le serveur MCP</span>
210
- `;
211
- }
212
- };
213
-
214
- fetchConfig();
215
- </script>
216
- </body>
217
- </html>
1
+ <!DOCTYPE html>
2
+ <html lang="fr" class="dark">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>GitHub MCP</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <style>
9
+ body {
10
+ background-color: #0f172a;
11
+ color: #f8fafc;
12
+ }
13
+ </style>
14
+ </head>
15
+ <body class="min-h-screen p-8">
16
+ <div class="max-w-2xl mx-auto bg-slate-800 rounded-xl shadow-2xl p-8 border border-slate-700">
17
+ <h1 class="text-3xl font-bold mb-6 text-blue-400 flex items-center">
18
+ <svg class="w-8 h-8 mr-3" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
19
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"></path>
20
+ </svg>
21
+ Configuration MCP GitHub
22
+ </h1>
23
+
24
+ <form id="configForm" class="space-y-6">
25
+ <div class="space-y-4" id="inputs">
26
+ <!-- Inputs will be injected here -->
27
+ <div class="flex justify-center p-8">
28
+ <div class="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-400"></div>
29
+ </div>
30
+ </div>
31
+
32
+ <div class="pt-4 space-y-3">
33
+ <button type="submit" class="w-full bg-blue-600 hover:bg-blue-700 text-white font-bold py-3 px-4 rounded-lg transition duration-200 shadow-lg flex justify-center items-center">
34
+ <span>Enregistrer la configuration</span>
35
+ </button>
36
+
37
+ <button type="button" id="restartBtn" class="w-full bg-amber-600 hover:bg-amber-700 text-white font-bold py-3 px-4 rounded-lg transition duration-200 shadow-lg flex justify-center items-center">
38
+ <svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
39
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"></path>
40
+ </svg>
41
+ <span>Redémarrer le serveur MCP</span>
42
+ </button>
43
+
44
+ <button type="button" id="stopBtn" class="w-full bg-red-600 hover:bg-red-700 text-white font-bold py-3 px-4 rounded-lg transition duration-200 shadow-lg flex justify-center items-center">
45
+ <svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
46
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path>
47
+ </svg>
48
+ <span>Arrêter le serveur MCP</span>
49
+ </button>
50
+ </div>
51
+ </form>
52
+
53
+ <div id="status" class="mt-6 p-4 rounded-lg hidden"></div>
54
+
55
+ <div class="mt-8 text-sm text-slate-400 border-t border-slate-700 pt-4 italic">
56
+ Note: Le serveur MCP doit être redémarré pour appliquer les changements.
57
+ </div>
58
+ </div>
59
+
60
+ <script>
61
+ // Détection automatique du base path pour fonctionner via proxy
62
+ const pathname = window.location.pathname;
63
+ const BASE_PATH = pathname.includes('.')
64
+ ? pathname.replace(/\/[^/]*$/, '') // /github-mcp/index.html -> /github-mcp
65
+ : pathname.endsWith('/')
66
+ ? pathname.slice(0, -1) // /github-mcp/ -> /github-mcp
67
+ : pathname === '/' ? '' : pathname; // /github-mcp -> /github-mcp, / -> ''
68
+
69
+ // Helper pour construire les URLs d'API
70
+ const api = (endpoint) => `${BASE_PATH}/${endpoint}`.replace(/\/+/g, '/');
71
+
72
+ const form = document.getElementById('configForm');
73
+ const status = document.getElementById('status');
74
+ const inputsContainer = document.getElementById('inputs');
75
+ const restartBtn = document.getElementById('restartBtn');
76
+ const stopBtn = document.getElementById('stopBtn');
77
+
78
+ const fields = [
79
+ { id: 'GITHUB_TOKEN', label: 'GitHub Token', type: 'password', placeholder: 'ghp_...' },
80
+ { id: 'TARGET_REPO', label: 'Target Repository', type: 'select', placeholder: 'owner/repo' },
81
+ { id: 'BASE_BRANCH', label: 'Base Branch', type: 'select', placeholder: 'main' },
82
+ { id: 'TARGET_BRANCH', label: 'Target Branch', type: 'select', placeholder: 'feature-branch' },
83
+ { id: 'READ_ONLY', label: 'Read Only Mode', type: 'checkbox' }
84
+ ];
85
+
86
+ // État de l'application
87
+ let currentConfig = {};
88
+ const selectState = {
89
+ repos: [],
90
+ branches: {},
91
+ loadingRepos: false,
92
+ loadingBranches: {}
93
+ };
94
+
95
+ // Fetch repositories
96
+ async function fetchRepositories(token) {
97
+ if (!token || token.length < 10) return [];
98
+
99
+ selectState.loadingRepos = true;
100
+ updateSelectUI();
101
+
102
+ try {
103
+ const response = await fetch(api('api/repositories'));
104
+ if (response.ok) {
105
+ selectState.repos = await response.json();
106
+ }
107
+ } catch (error) {
108
+ console.warn('Error fetching repositories:', error);
109
+ } finally {
110
+ selectState.loadingRepos = false;
111
+ updateSelectUI();
112
+ }
113
+ }
114
+
115
+ // Fetch branches for a repository
116
+ async function fetchBranches(repo, token) {
117
+ if (!repo || !token) return [];
118
+
119
+ selectState.loadingBranches[repo] = true;
120
+ updateSelectUI();
121
+
122
+ try {
123
+ const url = api(`api/branches?repo=${encodeURIComponent(repo)}`);
124
+ const response = await fetch(url);
125
+ if (response.ok) {
126
+ selectState.branches[repo] = await response.json();
127
+ }
128
+ } catch (error) {
129
+ console.error('[fetchBranches] Fetch error:', error);
130
+ selectState.branches[repo] = [];
131
+ } finally {
132
+ selectState.loadingBranches[repo] = false;
133
+ updateSelectUI();
134
+ }
135
+ }
136
+
137
+ // Render select field
138
+ function renderSelectField(field, value, config) {
139
+ let options = '<option value="">-- Sélectionner une option --</option>';
140
+
141
+ if (field.id === 'TARGET_REPO') {
142
+ if (selectState.loadingRepos) {
143
+ return `
144
+ <div class="space-y-1">
145
+ <label for="${field.id}" class="block text-sm font-medium text-slate-300">${field.label}</label>
146
+ <div id="${field.id}_loading" class="w-full px-4 py-2 bg-slate-900 border border-slate-600 rounded-lg text-slate-400 flex items-center">
147
+ <div class="animate-spin rounded-full h-4 w-4 border-b-2 border-blue-400 mr-2"></div>
148
+ Chargement des dépôts...
149
+ </div>
150
+ </div>
151
+ `;
152
+ }
153
+
154
+ options += selectState.repos.map(repo =>
155
+ `<option value="${repo}" ${value === repo ? 'selected' : ''}>${repo}</option>`
156
+ ).join('');
157
+
158
+ if (value && !selectState.repos.includes(value)) {
159
+ options += `<option value="${value}" selected>${value}</option>`;
160
+ }
161
+ } else if (field.id === 'BASE_BRANCH') {
162
+ const currentRepo = config.TARGET_REPO;
163
+ const branches = selectState.branches[currentRepo] || [];
164
+
165
+ if (selectState.loadingBranches[currentRepo]) {
166
+ return `
167
+ <div class="space-y-1">
168
+ <label for="${field.id}" class="block text-sm font-medium text-slate-300">${field.label}</label>
169
+ <div id="${field.id}_loading" class="w-full px-4 py-2 bg-slate-900 border border-slate-600 rounded-lg text-slate-400 flex items-center">
170
+ <div class="animate-spin rounded-full h-4 w-4 border-b-2 border-blue-400 mr-2"></div>
171
+ Chargement des branches...
172
+ </div>
173
+ </div>
174
+ `;
175
+ }
176
+
177
+ options += branches.map(branch =>
178
+ `<option value="${branch}" ${value === branch ? 'selected' : ''}>${branch}</option>`
179
+ ).join('');
180
+
181
+ // Préserver la valeur actuelle si elle n'est pas dans la liste (pendant le chargement ou si elle est custom)
182
+ if (value && !branches.includes(value)) {
183
+ options += `<option value="${value}" selected>${value}</option>`;
184
+ }
185
+ } else if (field.id === 'TARGET_BRANCH') {
186
+ const currentRepo = config.TARGET_REPO;
187
+ const branches = selectState.branches[currentRepo] || [];
188
+
189
+ if (selectState.loadingBranches[currentRepo]) {
190
+ return `
191
+ <div class="space-y-1">
192
+ <label for="${field.id}" class="block text-sm font-medium text-slate-300">${field.label}</label>
193
+ <div id="${field.id}_loading" class="w-full px-4 py-2 bg-slate-900 border border-slate-600 rounded-lg text-slate-400 flex items-center">
194
+ <div class="animate-spin rounded-full h-4 w-4 border-b-2 border-blue-400 mr-2"></div>
195
+ Chargement des branches...
196
+ </div>
197
+ </div>
198
+ `;
199
+ }
200
+
201
+ let selectOptions = '<option value="">-- Créer une nouvelle branche --</option>';
202
+ selectOptions += branches.map(branch =>
203
+ `<option value="${branch}" ${value === branch ? 'selected' : ''}>${branch}</option>`
204
+ ).join('');
205
+
206
+ const isCustom = value && !branches.includes(value);
207
+ const shouldShowCustom = isCustom || value === '';
208
+
209
+ return `
210
+ <div class="space-y-1">
211
+ <label for="${field.id}" class="block text-sm font-medium text-slate-300">${field.label}</label>
212
+ <div class="space-y-2">
213
+ <select id="${field.id}" class="w-full px-4 py-2 bg-slate-900 border border-slate-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent outline-none transition duration-200 text-slate-100">
214
+ ${selectOptions}
215
+ </select>
216
+ <input type="text" id="${field.id}_custom" placeholder="Entrez le nom de la nouvelle branche" value="${isCustom ? value : ''}" class="w-full px-4 py-2 bg-slate-900 border border-slate-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent outline-none transition duration-200 text-slate-100 ${shouldShowCustom ? '' : 'hidden'}">
217
+ </div>
218
+ </div>
219
+ `;
220
+ }
221
+
222
+ return `
223
+ <div class="space-y-1">
224
+ <label for="${field.id}" class="block text-sm font-medium text-slate-300">${field.label}</label>
225
+ <select id="${field.id}" class="w-full px-4 py-2 bg-slate-900 border border-slate-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent outline-none transition duration-200 text-slate-100">
226
+ ${options}
227
+ </select>
228
+ </div>
229
+ `;
230
+ }
231
+
232
+ // Fetch current config
233
+ async function fetchConfig() {
234
+ try {
235
+ const response = await fetch(api('api/config'));
236
+ if (!response.ok) {
237
+ const data = await response.json().catch(() => ({ error: 'Erreur lors du chargement' }));
238
+ throw new Error(data.error || 'Erreur lors du chargement');
239
+ }
240
+ currentConfig = await response.json();
241
+
242
+ if (currentConfig.GITHUB_TOKEN) {
243
+ await fetchRepositories(currentConfig.GITHUB_TOKEN);
244
+ if (currentConfig.TARGET_REPO) {
245
+ await fetchBranches(currentConfig.TARGET_REPO, currentConfig.GITHUB_TOKEN);
246
+ }
247
+ }
248
+
249
+ renderInputs(currentConfig);
250
+ } catch (error) {
251
+ showStatus(error.message || 'Erreur lors du chargement de la configuration', 'error');
252
+ }
253
+ }
254
+
255
+ // Render inputs
256
+ function renderInputs(config) {
257
+ inputsContainer.innerHTML = fields.map(field => {
258
+ if (field.type === 'checkbox') {
259
+ return `
260
+ <div class="flex items-center space-x-3 p-3 bg-slate-700/50 rounded-lg">
261
+ <input type="checkbox" id="${field.id}" ${config[field.id] === 'true' || config[field.id] === true ? 'checked' : ''} class="w-5 h-5 text-blue-600 rounded focus:ring-blue-500 bg-slate-900 border-slate-600">
262
+ <label for="${field.id}" class="text-sm font-medium text-slate-200">${field.label}</label>
263
+ </div>
264
+ `;
265
+ }
266
+ if (field.type === 'select') {
267
+ return renderSelectField(field, config[field.id] || '', config);
268
+ }
269
+ return `
270
+ <div class="space-y-1">
271
+ <label for="${field.id}" class="block text-sm font-medium text-slate-300">${field.label}</label>
272
+ <input type="${field.type}" id="${field.id}" value="${config[field.id] || ''}" placeholder="${field.placeholder}" class="w-full px-4 py-2 bg-slate-900 border border-slate-600 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-transparent outline-none transition duration-200 text-slate-100">
273
+ </div>
274
+ `;
275
+ }).join('');
276
+
277
+ setupEventListeners();
278
+ }
279
+
280
+ // Update select UI
281
+ function updateSelectUI() {
282
+ // Mettre à jour currentConfig à partir du DOM pour les éléments qui existent
283
+ fields.forEach(field => {
284
+ const input = document.getElementById(field.id);
285
+ if (input) {
286
+ if (field.type === 'checkbox') {
287
+ currentConfig[field.id] = input.checked;
288
+ } else if (field.id === 'TARGET_BRANCH') {
289
+ const customInput = document.getElementById('TARGET_BRANCH_custom');
290
+ currentConfig[field.id] = (input.value === '' && customInput && customInput.value) ? customInput.value : input.value;
291
+ } else {
292
+ currentConfig[field.id] = input.value;
293
+ }
294
+ }
295
+ });
296
+ renderInputs(currentConfig);
297
+ }
298
+
299
+ // Setup event listeners - utilise la délégation d'événements pour éviter les problèmes de re-render
300
+ function setupEventListeners() {
301
+ const tokenInput = document.getElementById('GITHUB_TOKEN');
302
+ const repoSelect = document.getElementById('TARGET_REPO');
303
+ const targetBranchSelect = document.getElementById('TARGET_BRANCH');
304
+
305
+ if (tokenInput) {
306
+ // Utiliser 'input' avec debounce serait mieux, mais 'change' suffit ici
307
+ tokenInput.addEventListener('change', async () => {
308
+ const token = tokenInput.value;
309
+ if (token && token.length > 10) {
310
+ selectState.branches = {}; // Reset branches avant de charger les repos
311
+ await fetchRepositories(token);
312
+ }
313
+ });
314
+ }
315
+
316
+ if (repoSelect) {
317
+ repoSelect.addEventListener('change', async () => {
318
+ const repo = repoSelect.value;
319
+ const token = document.getElementById('GITHUB_TOKEN')?.value;
320
+ if (repo && token) {
321
+ await fetchBranches(repo, token);
322
+
323
+ const newBranches = selectState.branches[repo] || [];
324
+
325
+ // Reset des branches invalides
326
+ if (currentConfig.BASE_BRANCH && !newBranches.includes(currentConfig.BASE_BRANCH)) {
327
+ currentConfig.BASE_BRANCH = '';
328
+ }
329
+
330
+ if (currentConfig.TARGET_BRANCH && !newBranches.includes(currentConfig.TARGET_BRANCH)) {
331
+ const targetSelect = document.getElementById('TARGET_BRANCH');
332
+ if (targetSelect && targetSelect.value !== '') {
333
+ currentConfig.TARGET_BRANCH = '';
334
+ }
335
+ }
336
+
337
+ updateSelectUI();
338
+ }
339
+ });
340
+ }
341
+
342
+ if (targetBranchSelect) {
343
+ targetBranchSelect.addEventListener('change', () => {
344
+ const customInput = document.getElementById('TARGET_BRANCH_custom');
345
+ if (!customInput) return;
346
+
347
+ const isNewBranch = targetBranchSelect.value === '';
348
+ customInput.classList.toggle('hidden', !isNewBranch);
349
+ if (isNewBranch) {
350
+ customInput.focus();
351
+ } else {
352
+ customInput.value = '';
353
+ }
354
+ });
355
+ }
356
+ }
357
+
358
+ function showStatus(message, type) {
359
+ status.textContent = message;
360
+ status.className = `mt-6 p-4 rounded-lg font-medium text-center ${type === 'success' ? 'bg-green-900/50 text-green-300 border border-green-700' : 'bg-red-900/50 text-red-300 border border-red-700'}`;
361
+ status.classList.remove('hidden');
362
+ setTimeout(() => status.classList.add('hidden'), 5000);
363
+ }
364
+
365
+ // Uniformisation: addEventListener au lieu de onsubmit/onclick
366
+ form.addEventListener('submit', async (e) => {
367
+ e.preventDefault();
368
+ const config = {};
369
+ fields.forEach(field => {
370
+ const input = document.getElementById(field.id);
371
+ if (!input) return; // Protection contre les éléments manquants
372
+ if (field.type === 'checkbox') {
373
+ config[field.id] = input.checked;
374
+ } else if (field.id === 'TARGET_BRANCH') {
375
+ const customInput = document.getElementById(`${field.id}_custom`);
376
+ config[field.id] = customInput && customInput.value ? customInput.value : input.value;
377
+ } else {
378
+ config[field.id] = input.value;
379
+ }
380
+ });
381
+
382
+ try {
383
+ const response = await fetch(api('api/config'), {
384
+ method: 'POST',
385
+ headers: { 'Content-Type': 'application/json' },
386
+ body: JSON.stringify(config)
387
+ });
388
+
389
+ if (response.ok) {
390
+ showStatus('Configuration enregistrée avec succès !', 'success');
391
+ } else {
392
+ const data = await response.json().catch(() => ({ error: 'Erreur inconnue' }));
393
+ throw new Error(data.error || 'Erreur lors de l\'enregistrement');
394
+ }
395
+ } catch (error) {
396
+ showStatus(error.message, 'error');
397
+ }
398
+ });
399
+
400
+ restartBtn.addEventListener('click', async () => {
401
+ if (!confirm('Êtes-vous sûr de vouloir redémarrer le serveur MCP ? Cela coupera la connexion actuelle pour appliquer les changements.')) {
402
+ return;
403
+ }
404
+
405
+ const originalHTML = restartBtn.innerHTML; // Sauvegarder le HTML original
406
+ try {
407
+ restartBtn.disabled = true;
408
+ restartBtn.innerHTML = '<span>Redémarrage en cours...</span>';
409
+
410
+ const response = await fetch(api('api/restart'), { method: 'POST' });
411
+
412
+ if (response.ok) {
413
+ showStatus('Signal de redémarrage envoyé. Le serveur va se relancer...', 'success');
414
+ setTimeout(() => window.location.reload(), 3000);
415
+ } else {
416
+ throw new Error('Erreur lors de la demande de redémarrage');
417
+ }
418
+ } catch (error) {
419
+ showStatus(error.message, 'error');
420
+ restartBtn.disabled = false;
421
+ restartBtn.innerHTML = originalHTML; // Restaurer le HTML original
422
+ }
423
+ });
424
+
425
+ stopBtn.addEventListener('click', async () => {
426
+ if (!confirm('Êtes-vous sûr de vouloir arrêter COMPLÈTEMENT le serveur MCP ?')) {
427
+ return;
428
+ }
429
+
430
+ const originalHTML = stopBtn.innerHTML; // Sauvegarder le HTML original
431
+ try {
432
+ stopBtn.disabled = true;
433
+ stopBtn.innerHTML = '<span>Arrêt en cours...</span>';
434
+
435
+ const response = await fetch(api('api/stop'), { method: 'POST' });
436
+
437
+ if (response.ok) {
438
+ showStatus('Le serveur s\'arrête. Cette page ne sera plus disponible.', 'success');
439
+ } else {
440
+ throw new Error('Erreur lors de la demande d\'arrêt');
441
+ }
442
+ } catch (error) {
443
+ showStatus(error.message, 'error');
444
+ stopBtn.disabled = false;
445
+ stopBtn.innerHTML = originalHTML; // Restaurer le HTML original
446
+ }
447
+ });
448
+
449
+ fetchConfig();
450
+ </script>
451
+ </body>
452
+ </html>