restricted-github-mcp 1.1.39 → 1.1.41

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":"AAyDA;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAczD;AAED,wBAAsB,iBAAiB,kBAqTtC"}
1
+ {"version":3,"file":"config-server.d.ts","sourceRoot":"","sources":["../src/config-server.ts"],"names":[],"mappings":"AAqEA;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAczD;AAED,wBAAsB,iBAAiB,kBAmZtC"}
@@ -4,7 +4,7 @@ import fs from "fs";
4
4
  import { fileURLToPath } from "url";
5
5
  import { Octokit } from "octokit";
6
6
  import { logToFile } from "./logger.js";
7
- import { getConfig, updateEnvFile, safeSend } from "./utils/config.js";
7
+ import { getConfig, updateEnvFile, safeSend, migrateFromLegacyEnv, getAllConfigNames, getConfigByName, saveConfiguration, deleteConfiguration, setCurrentConfiguration, getCurrentConfigName, } from "./utils/config.js";
8
8
  const __filename = fileURLToPath(import.meta.url);
9
9
  const __dirname = path.dirname(__filename);
10
10
  const DEFAULT_PORT = 3000;
@@ -67,6 +67,8 @@ export async function unregisterFromProxy() {
67
67
  }
68
68
  export async function startConfigServer() {
69
69
  logToFile("[GUI] Initializing config server...");
70
+ // Migrate legacy .env to multi-config format on startup
71
+ migrateFromLegacyEnv();
70
72
  // Tentative d'enregistrement auprès du proxy
71
73
  const proxyPort = await tryProxyRegistration();
72
74
  const port = proxyPort ?? DEFAULT_PORT;
@@ -95,7 +97,6 @@ export async function startConfigServer() {
95
97
  try {
96
98
  const config = getConfig();
97
99
  res.json({
98
- GITHUB_TOKEN: config.GITHUB_TOKEN,
99
100
  TARGET_REPO: config.TARGET_REPO,
100
101
  TARGET_BRANCH: config.TARGET_BRANCH,
101
102
  BASE_BRANCH: config.BASE_BRANCH,
@@ -279,6 +280,97 @@ export async function startConfigServer() {
279
280
  res.status(500).json({ error: msg });
280
281
  }
281
282
  });
283
+ // =========================================================================
284
+ // Multi-configuration management endpoints
285
+ // =========================================================================
286
+ app.get("/api/configs", (req, res) => {
287
+ logToFile("[GUI] GET /api/configs called");
288
+ try {
289
+ const names = getAllConfigNames();
290
+ const current = getCurrentConfigName();
291
+ res.json({ names, current });
292
+ }
293
+ catch (error) {
294
+ const msg = `[GUI] Failed to get configs: ${error.message}`;
295
+ logToFile(msg);
296
+ res.status(500).json({ error: msg });
297
+ }
298
+ });
299
+ app.get("/api/configs/:name", (req, res) => {
300
+ logToFile(`[GUI] GET /api/configs/${req.params.name} called`);
301
+ try {
302
+ const config = getConfigByName(req.params.name);
303
+ if (config) {
304
+ res.json(config);
305
+ }
306
+ else {
307
+ res.status(404).json({ error: "Configuration not found" });
308
+ }
309
+ }
310
+ catch (error) {
311
+ const msg = `[GUI] Failed to get config: ${error.message}`;
312
+ logToFile(msg);
313
+ res.status(500).json({ error: msg });
314
+ }
315
+ });
316
+ app.post("/api/configs", async (req, res) => {
317
+ logToFile("[GUI] POST /api/configs called");
318
+ const { name, config } = req.body;
319
+ if (!name || !config) {
320
+ return res.status(400).json({ error: "Name and config are required" });
321
+ }
322
+ try {
323
+ saveConfiguration(name, config);
324
+ // Set as current if no current config
325
+ if (!getCurrentConfigName()) {
326
+ setCurrentConfiguration(name);
327
+ }
328
+ safeSend(process, { type: "CONFIG_UPDATED" });
329
+ res.json({ message: `Configuration "${name}" saved` });
330
+ }
331
+ catch (error) {
332
+ const msg = `[GUI] Failed to save config: ${error.message}`;
333
+ logToFile(msg);
334
+ res.status(500).json({ error: msg });
335
+ }
336
+ });
337
+ app.delete("/api/configs/:name", (req, res) => {
338
+ logToFile(`[GUI] DELETE /api/configs/${req.params.name} called`);
339
+ try {
340
+ const success = deleteConfiguration(req.params.name);
341
+ if (success) {
342
+ safeSend(process, { type: "CONFIG_UPDATED" });
343
+ res.json({ message: `Configuration "${req.params.name}" deleted` });
344
+ }
345
+ else {
346
+ res.status(404).json({ error: "Configuration not found" });
347
+ }
348
+ }
349
+ catch (error) {
350
+ const msg = `[GUI] Failed to delete config: ${error.message}`;
351
+ logToFile(msg);
352
+ res.status(500).json({ error: msg });
353
+ }
354
+ });
355
+ app.post("/api/configs/:name/activate", (req, res) => {
356
+ logToFile(`[GUI] POST /api/configs/${req.params.name}/activate called`);
357
+ try {
358
+ const success = setCurrentConfiguration(req.params.name);
359
+ if (success) {
360
+ safeSend(process, { type: "CONFIG_UPDATED" });
361
+ res.json({ message: `Switched to configuration "${req.params.name}"` });
362
+ }
363
+ else {
364
+ res.status(404).json({ error: "Configuration not found" });
365
+ }
366
+ }
367
+ catch (error) {
368
+ const msg = `[GUI] Failed to activate config: ${error.message}`;
369
+ logToFile(msg);
370
+ res.status(500).json({ error: msg });
371
+ }
372
+ });
373
+ // =========================================================================
282
374
  app.post("/api/restart", (req, res) => {
283
375
  logToFile("[GUI] POST /api/restart called (Full MCP)");
284
376
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"config-server.js","sourceRoot":"","sources":["../src/config-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-server.js","sourceRoot":"","sources":["../src/config-server.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,98 @@
1
1
  /**
2
- * Met à jour ou ajoute une clé dans le fichier .env de manière non-destructive.
2
+ * GitHub-specific configuration data (stored in configs.json)
3
3
  */
4
- export declare function updateEnvFile(key: string, value: string): Promise<void>;
4
+ export interface GitHubConfigData {
5
+ TARGET_REPO: string;
6
+ TARGET_BRANCH: string;
7
+ BASE_BRANCH: string;
8
+ PROJECT_PATH: string;
9
+ READ_ONLY: boolean;
10
+ INCLUDE_PUBLIC: boolean;
11
+ INCLUDE_NOT_OWNED: boolean;
12
+ }
5
13
  /**
6
- * Récupère la configuration actuelle en rechargeant le fichier .env
14
+ * Storage structure for multiple configurations
7
15
  */
8
- export declare function getConfig(): {
9
- GITHUB_TOKEN: string | undefined;
10
- TARGET_BRANCH: string | undefined;
16
+ export interface ConfigsStorage {
17
+ configurations: Record<string, GitHubConfigData>;
18
+ currentConfig: string;
19
+ }
20
+ /**
21
+ * Full configuration (global + GitHub config)
22
+ */
23
+ export interface Config {
24
+ GITHUB_TOKEN: string;
25
+ TARGET_REPO: string;
26
+ TARGET_BRANCH: string;
11
27
  BASE_BRANCH: string;
12
- TARGET_REPO: string | undefined;
13
- REPO_PATH: string | undefined;
28
+ PROJECT_PATH: string;
14
29
  READ_ONLY: boolean;
15
30
  INCLUDE_PUBLIC: boolean;
16
31
  INCLUDE_NOT_OWNED: boolean;
17
- PROXY_URL: string | undefined;
18
- PROJECT_PATH: string | undefined;
32
+ PROXY_URL: string;
19
33
  GUI_PATH: string;
20
34
  GUI_NAME: string;
21
35
  AGENT_NAME: string;
22
- };
36
+ REPO_PATH: string;
37
+ }
38
+ /**
39
+ * Reload global environment variables from root .env
40
+ */
41
+ export declare function reloadGlobalEnv(): void;
42
+ /**
43
+ * Load configs storage file
44
+ */
45
+ export declare function loadConfigsStorage(): ConfigsStorage;
46
+ /**
47
+ * Save configs storage file
48
+ */
49
+ export declare function saveConfigsStorage(storage: ConfigsStorage): void;
50
+ /**
51
+ * Get all configuration names
52
+ */
53
+ export declare function getAllConfigNames(): string[];
54
+ /**
55
+ * Get configuration by name
56
+ */
57
+ export declare function getConfigByName(name: string): GitHubConfigData | null;
58
+ /**
59
+ * Get current configuration name
60
+ */
61
+ export declare function getCurrentConfigName(): string;
62
+ /**
63
+ * Get current active GitHub configuration
64
+ */
65
+ export declare function getCurrentGitHubConfig(): GitHubConfigData | null;
66
+ /**
67
+ * Save a configuration (create or update)
68
+ */
69
+ export declare function saveConfiguration(name: string, config: GitHubConfigData): void;
70
+ /**
71
+ * Delete a configuration
72
+ */
73
+ export declare function deleteConfiguration(name: string): boolean;
74
+ /**
75
+ * Set current configuration (just updates the pointer in configs.json)
76
+ */
77
+ export declare function setCurrentConfiguration(name: string): boolean;
78
+ /**
79
+ * Update GitHub configuration in the current active config
80
+ */
81
+ export declare function updateGitHubConfig(updates: Partial<GitHubConfigData>): void;
82
+ /**
83
+ * Load and return full configuration (global + current GitHub config)
84
+ */
85
+ export declare function getConfig(): Config;
86
+ /**
87
+ * Met à jour ou ajoute une clé dans le fichier .env de manière non-destructive.
88
+ * Pour les clés métier GitHub, met à jour configs.json à la place.
89
+ */
90
+ export declare function updateEnvFile(key: string, value: string | boolean): Promise<void>;
91
+ /**
92
+ * Migrate from legacy .env format to multi-config
93
+ * Creates a "Configuration par défaut" from current root .env GitHub variables
94
+ */
95
+ export declare function migrateFromLegacyEnv(): void;
23
96
  /**
24
97
  * Envoie un message via IPC de manière sécurisée
25
98
  */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoC7E;AAED;;GAEG;AACH,wBAAgB,SAAS;;;;;;;;;;;;;;EAiBxB;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAUxE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,SAapC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAuDA;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACjD,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IAErB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,iBAAiB,EAAE,OAAO,CAAC;IAE3B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IAEnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAItC;AAqBD;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,CAanD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAEhE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAG5C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAGrE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAG7C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,gBAAgB,GAAG,IAAI,CAMhE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAK9E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAazD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAa7D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAsB3E;AAMD;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAqBlC;AASD;;;GAGG;AACH,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAiDvF;AAMD;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CA6B3C;AAMD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,OAAO,CAUxE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,SAapC"}
@@ -4,72 +4,309 @@ import path from "path";
4
4
  import { fileURLToPath } from "url";
5
5
  import dotenv from "dotenv";
6
6
  import { logToFile } from "../logger.js";
7
+ // ============================================================================
8
+ // PATHS & INITIALIZATION
9
+ // ============================================================================
7
10
  const __dirname = path.dirname(fileURLToPath(import.meta.url));
8
11
  const rootDir = path.resolve(__dirname, "../..");
9
- const envPath = path.join(rootDir, ".env");
12
+ // Root .env contains global variables (MCP_DATA_DIR, AGENT_NAME, PROXY_URL, etc.)
13
+ const rootEnvPath = path.join(rootDir, ".env");
14
+ // Load root .env to get global variables
15
+ if (fsSync.existsSync(rootEnvPath)) {
16
+ dotenv.config({ path: rootEnvPath });
17
+ }
10
18
  /**
11
- * Met à jour ou ajoute une clé dans le fichier .env de manière non-destructive.
19
+ * Resolve data path based on MCP_DATA_DIR environment variable
12
20
  */
13
- export async function updateEnvFile(key, value) {
14
- try {
15
- let envContent = "";
16
- if (fsSync.existsSync(envPath)) {
17
- envContent = await fs.readFile(envPath, "utf-8");
18
- }
19
- const lines = envContent.split(/\r?\n/);
20
- let keyFound = false;
21
- const newLines = lines.map((line) => {
22
- if (line.trim().startsWith(`${key}=`)) {
23
- keyFound = true;
24
- return `${key}=${value}`;
21
+ function getDataDir() {
22
+ const persistenceDir = process.env.MCP_DATA_DIR;
23
+ if (persistenceDir) {
24
+ const resolvedPath = path.isAbsolute(persistenceDir)
25
+ ? persistenceDir
26
+ : path.resolve(rootDir, persistenceDir);
27
+ if (!fsSync.existsSync(resolvedPath)) {
28
+ try {
29
+ fsSync.mkdirSync(resolvedPath, { recursive: true });
30
+ logToFile(`[Config] Created persistence directory: ${resolvedPath}`);
25
31
  }
26
- return line;
27
- });
28
- if (!keyFound) {
29
- if (newLines.length > 0) {
30
- const lastLine = newLines[newLines.length - 1];
31
- if (lastLine !== undefined && lastLine.trim() !== "") {
32
- newLines.push("");
33
- }
32
+ catch (err) {
33
+ logToFile(`[Config] Failed to create persistence directory ${resolvedPath}, falling back to root: ${err.message}`);
34
+ return rootDir;
34
35
  }
35
- newLines.push(`${key}=${value}`);
36
36
  }
37
- await fs.writeFile(envPath, newLines.join("\n").trim() + "\n");
38
- logToFile(`[Config] .env mis à jour : ${key}=${value}`);
39
- // Forcer le rechargement immédiat dans le processus courant
40
- dotenv.config({ path: envPath, override: true });
37
+ return resolvedPath;
41
38
  }
42
- catch (error) {
43
- logToFile(`[Config] Erreur lors de la mise à jour de .env: ${error.message}`);
44
- throw error;
39
+ return rootDir;
40
+ }
41
+ const dataDir = getDataDir();
42
+ // configs.json is in the data directory (contains GitHub-specific configurations)
43
+ const configsPath = path.join(dataDir, "configs.json");
44
+ // ============================================================================
45
+ // GLOBAL ENVIRONMENT VARIABLES (from root .env)
46
+ // ============================================================================
47
+ /**
48
+ * Reload global environment variables from root .env
49
+ */
50
+ export function reloadGlobalEnv() {
51
+ if (fsSync.existsSync(rootEnvPath)) {
52
+ dotenv.config({ path: rootEnvPath, override: true });
45
53
  }
46
54
  }
47
55
  /**
48
- * Récupère la configuration actuelle en rechargeant le fichier .env
56
+ * Get global configuration from root .env
49
57
  */
50
- export function getConfig() {
51
- dotenv.config({ path: envPath, override: true });
58
+ function getGlobalConfig() {
59
+ reloadGlobalEnv();
52
60
  return {
53
- GITHUB_TOKEN: process.env.GITHUB_TOKEN,
54
- TARGET_BRANCH: process.env.TARGET_BRANCH,
55
- BASE_BRANCH: process.env.BASE_BRANCH || "main",
56
- TARGET_REPO: process.env.TARGET_REPO,
57
- REPO_PATH: process.env.REPO_PATH,
58
- READ_ONLY: process.env.READ_ONLY === "true",
59
- INCLUDE_PUBLIC: process.env.INCLUDE_PUBLIC === "true",
60
- INCLUDE_NOT_OWNED: process.env.INCLUDE_NOT_OWNED === "true",
61
- PROXY_URL: process.env.PROXY_URL,
62
- PROJECT_PATH: process.env.PROJECT_PATH,
61
+ GITHUB_TOKEN: process.env.GITHUB_TOKEN || "",
62
+ PROXY_URL: process.env.PROXY_URL || "",
63
63
  GUI_PATH: process.env.GUI_PATH || "/github-mcp",
64
64
  GUI_NAME: process.env.GUI_NAME || "GitHub MCP Config",
65
65
  AGENT_NAME: process.env.AGENT_NAME || "",
66
+ REPO_PATH: process.env.REPO_PATH || "",
67
+ };
68
+ }
69
+ // ============================================================================
70
+ // MULTI-CONFIGURATION MANAGEMENT (configs.json)
71
+ // ============================================================================
72
+ /**
73
+ * Load configs storage file
74
+ */
75
+ export function loadConfigsStorage() {
76
+ try {
77
+ if (fsSync.existsSync(configsPath)) {
78
+ const content = fsSync.readFileSync(configsPath, "utf8");
79
+ const parsed = JSON.parse(content);
80
+ if (parsed.configurations && typeof parsed.currentConfig === "string") {
81
+ return parsed;
82
+ }
83
+ }
84
+ }
85
+ catch (error) {
86
+ logToFile(`[Config] Error loading configs storage: ${error.message}`);
87
+ }
88
+ return { configurations: {}, currentConfig: "" };
89
+ }
90
+ /**
91
+ * Save configs storage file
92
+ */
93
+ export function saveConfigsStorage(storage) {
94
+ fsSync.writeFileSync(configsPath, JSON.stringify(storage, null, 2));
95
+ }
96
+ /**
97
+ * Get all configuration names
98
+ */
99
+ export function getAllConfigNames() {
100
+ const storage = loadConfigsStorage();
101
+ return Object.keys(storage.configurations);
102
+ }
103
+ /**
104
+ * Get configuration by name
105
+ */
106
+ export function getConfigByName(name) {
107
+ const storage = loadConfigsStorage();
108
+ return storage.configurations[name] || null;
109
+ }
110
+ /**
111
+ * Get current configuration name
112
+ */
113
+ export function getCurrentConfigName() {
114
+ const storage = loadConfigsStorage();
115
+ return storage.currentConfig;
116
+ }
117
+ /**
118
+ * Get current active GitHub configuration
119
+ */
120
+ export function getCurrentGitHubConfig() {
121
+ const storage = loadConfigsStorage();
122
+ if (storage.currentConfig && storage.configurations[storage.currentConfig]) {
123
+ return storage.configurations[storage.currentConfig] ?? null;
124
+ }
125
+ return null;
126
+ }
127
+ /**
128
+ * Save a configuration (create or update)
129
+ */
130
+ export function saveConfiguration(name, config) {
131
+ const storage = loadConfigsStorage();
132
+ storage.configurations[name] = config;
133
+ saveConfigsStorage(storage);
134
+ logToFile(`[Config] Saved configuration "${name}"`);
135
+ }
136
+ /**
137
+ * Delete a configuration
138
+ */
139
+ export function deleteConfiguration(name) {
140
+ const storage = loadConfigsStorage();
141
+ if (storage.configurations[name]) {
142
+ delete storage.configurations[name];
143
+ // If we deleted the current config, clear it
144
+ if (storage.currentConfig === name) {
145
+ storage.currentConfig = "";
146
+ }
147
+ saveConfigsStorage(storage);
148
+ logToFile(`[Config] Deleted configuration "${name}"`);
149
+ return true;
150
+ }
151
+ return false;
152
+ }
153
+ /**
154
+ * Set current configuration (just updates the pointer in configs.json)
155
+ */
156
+ export function setCurrentConfiguration(name) {
157
+ const storage = loadConfigsStorage();
158
+ const config = storage.configurations[name];
159
+ if (!config) {
160
+ return false;
161
+ }
162
+ storage.currentConfig = name;
163
+ saveConfigsStorage(storage);
164
+ logToFile(`[Config] Switched to configuration "${name}"`);
165
+ return true;
166
+ }
167
+ /**
168
+ * Update GitHub configuration in the current active config
169
+ */
170
+ export function updateGitHubConfig(updates) {
171
+ const storage = loadConfigsStorage();
172
+ if (!storage.currentConfig) {
173
+ logToFile("[Config] No active configuration to update");
174
+ return;
175
+ }
176
+ const currentConfig = storage.configurations[storage.currentConfig];
177
+ if (!currentConfig) {
178
+ logToFile("[Config] Current configuration not found");
179
+ return;
180
+ }
181
+ // Merge updates
182
+ storage.configurations[storage.currentConfig] = {
183
+ ...currentConfig,
184
+ ...updates,
185
+ };
186
+ saveConfigsStorage(storage);
187
+ logToFile(`[Config] Updated configuration "${storage.currentConfig}"`);
188
+ }
189
+ // ============================================================================
190
+ // UNIFIED CONFIG ACCESS
191
+ // ============================================================================
192
+ /**
193
+ * Load and return full configuration (global + current GitHub config)
194
+ */
195
+ export function getConfig() {
196
+ const globalConfig = getGlobalConfig();
197
+ const githubConfig = getCurrentGitHubConfig();
198
+ return {
199
+ // Global (from root .env)
200
+ GITHUB_TOKEN: globalConfig.GITHUB_TOKEN,
201
+ PROXY_URL: globalConfig.PROXY_URL,
202
+ GUI_PATH: globalConfig.GUI_PATH,
203
+ GUI_NAME: globalConfig.GUI_NAME,
204
+ AGENT_NAME: globalConfig.AGENT_NAME,
205
+ REPO_PATH: globalConfig.REPO_PATH,
206
+ // GitHub-specific (from configs.json)
207
+ TARGET_REPO: githubConfig?.TARGET_REPO || "",
208
+ TARGET_BRANCH: githubConfig?.TARGET_BRANCH || "",
209
+ BASE_BRANCH: githubConfig?.BASE_BRANCH || "main",
210
+ PROJECT_PATH: githubConfig?.PROJECT_PATH || "",
211
+ READ_ONLY: githubConfig?.READ_ONLY ?? false,
212
+ INCLUDE_PUBLIC: githubConfig?.INCLUDE_PUBLIC ?? false,
213
+ INCLUDE_NOT_OWNED: githubConfig?.INCLUDE_NOT_OWNED ?? false,
66
214
  };
67
215
  }
216
+ // ============================================================================
217
+ // ENV FILE UPDATES
218
+ // ============================================================================
219
+ // Keys that are stored in .env (global/runtime)
220
+ const GLOBAL_ENV_KEYS = ["PROXY_URL", "GUI_PATH", "GUI_NAME", "AGENT_NAME", "REPO_PATH", "MCP_DATA_DIR"];
221
+ /**
222
+ * Met à jour ou ajoute une clé dans le fichier .env de manière non-destructive.
223
+ * Pour les clés métier GitHub, met à jour configs.json à la place.
224
+ */
225
+ export async function updateEnvFile(key, value) {
226
+ const stringValue = typeof value === "boolean" ? String(value) : value;
227
+ if (GLOBAL_ENV_KEYS.includes(key)) {
228
+ // Write to .env file
229
+ try {
230
+ let envContent = "";
231
+ if (fsSync.existsSync(rootEnvPath)) {
232
+ envContent = await fs.readFile(rootEnvPath, "utf-8");
233
+ }
234
+ const lines = envContent.split(/\r?\n/);
235
+ let keyFound = false;
236
+ const newLines = lines.map((line) => {
237
+ if (line.trim().startsWith(`${key}=`)) {
238
+ keyFound = true;
239
+ return `${key}=${stringValue}`;
240
+ }
241
+ return line;
242
+ });
243
+ if (!keyFound) {
244
+ if (newLines.length > 0) {
245
+ const lastLine = newLines[newLines.length - 1];
246
+ if (lastLine !== undefined && lastLine.trim() !== "") {
247
+ newLines.push("");
248
+ }
249
+ }
250
+ newLines.push(`${key}=${stringValue}`);
251
+ }
252
+ await fs.writeFile(rootEnvPath, newLines.join("\n").trim() + "\n");
253
+ logToFile(`[Config] .env mis à jour : ${key}=${stringValue}`);
254
+ // Force reload in current process
255
+ dotenv.config({ path: rootEnvPath, override: true });
256
+ }
257
+ catch (error) {
258
+ logToFile(`[Config] Erreur lors de la mise à jour de .env: ${error.message}`);
259
+ throw error;
260
+ }
261
+ }
262
+ else {
263
+ // GitHub-specific key -> update configs.json
264
+ const booleanKeys = ["READ_ONLY", "INCLUDE_PUBLIC", "INCLUDE_NOT_OWNED"];
265
+ const updateValue = booleanKeys.includes(key)
266
+ ? stringValue === "true"
267
+ : stringValue;
268
+ updateGitHubConfig({ [key]: updateValue });
269
+ }
270
+ }
271
+ // ============================================================================
272
+ // MIGRATION
273
+ // ============================================================================
274
+ /**
275
+ * Migrate from legacy .env format to multi-config
276
+ * Creates a "Configuration par défaut" from current root .env GitHub variables
277
+ */
278
+ export function migrateFromLegacyEnv() {
279
+ const storage = loadConfigsStorage();
280
+ // Only migrate if no configs exist yet
281
+ if (Object.keys(storage.configurations).length === 0) {
282
+ reloadGlobalEnv();
283
+ const targetRepo = process.env.TARGET_REPO;
284
+ if (targetRepo) {
285
+ const defaultName = "Configuration par défaut";
286
+ const configData = {
287
+ TARGET_REPO: targetRepo || "",
288
+ TARGET_BRANCH: process.env.TARGET_BRANCH || "",
289
+ BASE_BRANCH: process.env.BASE_BRANCH || "main",
290
+ PROJECT_PATH: process.env.PROJECT_PATH || "",
291
+ READ_ONLY: process.env.READ_ONLY === "true",
292
+ INCLUDE_PUBLIC: process.env.INCLUDE_PUBLIC === "true",
293
+ INCLUDE_NOT_OWNED: process.env.INCLUDE_NOT_OWNED === "true",
294
+ };
295
+ storage.configurations[defaultName] = configData;
296
+ storage.currentConfig = defaultName;
297
+ saveConfigsStorage(storage);
298
+ logToFile(`[Config] Migrated legacy .env GitHub config to "${defaultName}"`);
299
+ }
300
+ }
301
+ }
302
+ // ============================================================================
303
+ // IPC UTILITIES
304
+ // ============================================================================
68
305
  /**
69
306
  * Envoie un message via IPC de manière sécurisée
70
307
  */
71
308
  export function safeSend(target, msg) {
72
- if (target && typeof target.send === 'function' && target.connected) {
309
+ if (target && typeof target.send === "function" && target.connected) {
73
310
  try {
74
311
  return target.send(msg);
75
312
  }