overmind-mcp 2.5.0 → 2.5.1

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.
Files changed (217) hide show
  1. package/.mcp.json.example +21 -0
  2. package/README.md +107 -80
  3. package/assets/overmind.png +0 -0
  4. package/bin/.gitkeep +0 -0
  5. package/bin/README.md +34 -0
  6. package/bin/install-overmind-unix.sh +412 -0
  7. package/bin/install-overmind-windows.bat +407 -0
  8. package/dist/bin/cli.js +438 -7
  9. package/dist/bin/cli.js.map +1 -1
  10. package/dist/index.d.ts +2 -2
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +3 -2
  13. package/dist/index.js.map +1 -1
  14. package/dist/lib/InstallHelper.d.ts +14 -0
  15. package/dist/lib/InstallHelper.d.ts.map +1 -0
  16. package/dist/lib/InstallHelper.js +113 -0
  17. package/dist/lib/InstallHelper.js.map +1 -0
  18. package/dist/lib/config.d.ts +31 -1
  19. package/dist/lib/config.d.ts.map +1 -1
  20. package/dist/lib/config.js +19 -27
  21. package/dist/lib/config.js.map +1 -1
  22. package/dist/lib/envUtils.d.ts +10 -0
  23. package/dist/lib/envUtils.d.ts.map +1 -0
  24. package/dist/lib/envUtils.js +24 -0
  25. package/dist/lib/envUtils.js.map +1 -0
  26. package/dist/lib/loadEnv.d.ts +2 -0
  27. package/dist/lib/loadEnv.d.ts.map +1 -0
  28. package/dist/lib/loadEnv.js +26 -0
  29. package/dist/lib/loadEnv.js.map +1 -0
  30. package/dist/lib/logger.d.ts +8 -0
  31. package/dist/lib/logger.d.ts.map +1 -0
  32. package/dist/lib/logger.js +81 -0
  33. package/dist/lib/logger.js.map +1 -0
  34. package/dist/lib/modelMapping.d.ts +18 -0
  35. package/dist/lib/modelMapping.d.ts.map +1 -0
  36. package/dist/lib/modelMapping.js +90 -0
  37. package/dist/lib/modelMapping.js.map +1 -0
  38. package/dist/lib/orchestration/dispatcher.d.ts +32 -0
  39. package/dist/lib/orchestration/dispatcher.d.ts.map +1 -0
  40. package/dist/lib/orchestration/dispatcher.js +113 -0
  41. package/dist/lib/orchestration/dispatcher.js.map +1 -0
  42. package/dist/lib/orchestration/swarm.d.ts +75 -0
  43. package/dist/lib/orchestration/swarm.d.ts.map +1 -0
  44. package/dist/lib/orchestration/swarm.js +238 -0
  45. package/dist/lib/orchestration/swarm.js.map +1 -0
  46. package/dist/lib/sessions.d.ts +3 -2
  47. package/dist/lib/sessions.d.ts.map +1 -1
  48. package/dist/lib/sessions.js +94 -25
  49. package/dist/lib/sessions.js.map +1 -1
  50. package/dist/lib/telemetry.d.ts +21 -0
  51. package/dist/lib/telemetry.d.ts.map +1 -0
  52. package/dist/lib/telemetry.js +30 -0
  53. package/dist/lib/telemetry.js.map +1 -0
  54. package/dist/memory/MemoryFactory.d.ts +15 -1
  55. package/dist/memory/MemoryFactory.d.ts.map +1 -1
  56. package/dist/memory/MemoryFactory.js +53 -3
  57. package/dist/memory/MemoryFactory.js.map +1 -1
  58. package/dist/memory/PostgresMemoryProvider.d.ts +7 -0
  59. package/dist/memory/PostgresMemoryProvider.d.ts.map +1 -1
  60. package/dist/memory/PostgresMemoryProvider.js +180 -105
  61. package/dist/memory/PostgresMemoryProvider.js.map +1 -1
  62. package/dist/server.d.ts +41 -0
  63. package/dist/server.d.ts.map +1 -1
  64. package/dist/server.js +145 -41
  65. package/dist/server.js.map +1 -1
  66. package/dist/services/AgentManager.d.ts.map +1 -1
  67. package/dist/services/AgentManager.js +67 -11
  68. package/dist/services/AgentManager.js.map +1 -1
  69. package/dist/services/ClaudeRunner.d.ts +8 -0
  70. package/dist/services/ClaudeRunner.d.ts.map +1 -1
  71. package/dist/services/ClaudeRunner.js +510 -281
  72. package/dist/services/ClaudeRunner.js.map +1 -1
  73. package/dist/services/ClineRunner.d.ts +7 -0
  74. package/dist/services/ClineRunner.d.ts.map +1 -1
  75. package/dist/services/ClineRunner.js +76 -22
  76. package/dist/services/ClineRunner.js.map +1 -1
  77. package/dist/services/GeminiRunner.d.ts +6 -0
  78. package/dist/services/GeminiRunner.d.ts.map +1 -1
  79. package/dist/services/GeminiRunner.js +283 -69
  80. package/dist/services/GeminiRunner.js.map +1 -1
  81. package/dist/services/KiloRunner.d.ts +12 -0
  82. package/dist/services/KiloRunner.d.ts.map +1 -1
  83. package/dist/services/KiloRunner.js +439 -70
  84. package/dist/services/KiloRunner.js.map +1 -1
  85. package/dist/services/{QwenRunner.d.ts → NousHermesRunner.d.ts} +12 -3
  86. package/dist/services/NousHermesRunner.d.ts.map +1 -0
  87. package/dist/services/NousHermesRunner.js +460 -0
  88. package/dist/services/NousHermesRunner.js.map +1 -0
  89. package/dist/services/OpenClawRunner.d.ts +7 -0
  90. package/dist/services/OpenClawRunner.d.ts.map +1 -1
  91. package/dist/services/OpenClawRunner.js +75 -22
  92. package/dist/services/OpenClawRunner.js.map +1 -1
  93. package/dist/services/OpenCodeRunner.d.ts +7 -0
  94. package/dist/services/OpenCodeRunner.d.ts.map +1 -1
  95. package/dist/services/OpenCodeRunner.js +75 -22
  96. package/dist/services/OpenCodeRunner.js.map +1 -1
  97. package/dist/services/{TraeRunner.d.ts → QwenCliRunner.d.ts} +9 -2
  98. package/dist/services/QwenCliRunner.d.ts.map +1 -0
  99. package/dist/services/QwenCliRunner.js +155 -0
  100. package/dist/services/QwenCliRunner.js.map +1 -0
  101. package/dist/tools/agent_control.d.ts +2 -2
  102. package/dist/tools/config_example.d.ts +7 -4
  103. package/dist/tools/config_example.d.ts.map +1 -1
  104. package/dist/tools/config_example.js +191 -86
  105. package/dist/tools/config_example.js.map +1 -1
  106. package/dist/tools/create_agent.d.ts +13 -7
  107. package/dist/tools/create_agent.d.ts.map +1 -1
  108. package/dist/tools/create_agent.js +8 -9
  109. package/dist/tools/create_agent.js.map +1 -1
  110. package/dist/tools/get_agent_configs.d.ts +10 -4
  111. package/dist/tools/get_agent_configs.d.ts.map +1 -1
  112. package/dist/tools/get_agent_configs.js.map +1 -1
  113. package/dist/tools/initialization_check.d.ts +2 -0
  114. package/dist/tools/initialization_check.d.ts.map +1 -0
  115. package/dist/tools/initialization_check.js +23 -0
  116. package/dist/tools/initialization_check.js.map +1 -0
  117. package/dist/tools/manage_agents.d.ts +34 -16
  118. package/dist/tools/manage_agents.d.ts.map +1 -1
  119. package/dist/tools/manage_agents.js +2 -2
  120. package/dist/tools/manage_agents.js.map +1 -1
  121. package/dist/tools/manage_prompts.d.ts +13 -8
  122. package/dist/tools/manage_prompts.d.ts.map +1 -1
  123. package/dist/tools/manage_prompts.js.map +1 -1
  124. package/dist/tools/memory_runs.d.ts +3 -4
  125. package/dist/tools/memory_runs.d.ts.map +1 -1
  126. package/dist/tools/memory_runs.js.map +1 -1
  127. package/dist/tools/memory_search.d.ts +3 -4
  128. package/dist/tools/memory_search.d.ts.map +1 -1
  129. package/dist/tools/memory_search.js.map +1 -1
  130. package/dist/tools/memory_store.d.ts +11 -5
  131. package/dist/tools/memory_store.d.ts.map +1 -1
  132. package/dist/tools/memory_store.js.map +1 -1
  133. package/dist/tools/run_agent.d.ts +13 -14
  134. package/dist/tools/run_agent.d.ts.map +1 -1
  135. package/dist/tools/run_agent.js +128 -160
  136. package/dist/tools/run_agent.js.map +1 -1
  137. package/dist/tools/run_agent_cli.d.ts +21 -0
  138. package/dist/tools/run_agent_cli.d.ts.map +1 -0
  139. package/dist/tools/run_agent_cli.js +129 -0
  140. package/dist/tools/run_agent_cli.js.map +1 -0
  141. package/dist/tools/run_agents_parallel.d.ts +34 -0
  142. package/dist/tools/run_agents_parallel.d.ts.map +1 -0
  143. package/dist/tools/run_agents_parallel.js +28 -0
  144. package/dist/tools/run_agents_parallel.js.map +1 -0
  145. package/dist/tools/run_claude.d.ts +8 -3
  146. package/dist/tools/run_claude.d.ts.map +1 -1
  147. package/dist/tools/run_claude.js +59 -41
  148. package/dist/tools/run_claude.js.map +1 -1
  149. package/dist/tools/run_cline.d.ts +13 -4
  150. package/dist/tools/run_cline.d.ts.map +1 -1
  151. package/dist/tools/run_cline.js +55 -43
  152. package/dist/tools/run_cline.js.map +1 -1
  153. package/dist/tools/run_gemini.d.ts +13 -4
  154. package/dist/tools/run_gemini.d.ts.map +1 -1
  155. package/dist/tools/run_gemini.js +53 -33
  156. package/dist/tools/run_gemini.js.map +1 -1
  157. package/dist/tools/run_hermes.d.ts +25 -0
  158. package/dist/tools/run_hermes.d.ts.map +1 -0
  159. package/dist/tools/run_hermes.js +93 -0
  160. package/dist/tools/run_hermes.js.map +1 -0
  161. package/dist/tools/run_kilo.d.ts +17 -7
  162. package/dist/tools/run_kilo.d.ts.map +1 -1
  163. package/dist/tools/run_kilo.js +68 -41
  164. package/dist/tools/run_kilo.js.map +1 -1
  165. package/dist/tools/run_openclaw.d.ts +13 -4
  166. package/dist/tools/run_openclaw.d.ts.map +1 -1
  167. package/dist/tools/run_openclaw.js +52 -44
  168. package/dist/tools/run_openclaw.js.map +1 -1
  169. package/dist/tools/run_opencode.d.ts +13 -4
  170. package/dist/tools/run_opencode.d.ts.map +1 -1
  171. package/dist/tools/run_opencode.js +52 -39
  172. package/dist/tools/run_opencode.js.map +1 -1
  173. package/dist/tools/run_qwencli.d.ts +24 -0
  174. package/dist/tools/run_qwencli.d.ts.map +1 -0
  175. package/dist/tools/run_qwencli.js +59 -0
  176. package/dist/tools/run_qwencli.js.map +1 -0
  177. package/docs/README.md +128 -0
  178. package/docs/agent_control.md +656 -0
  179. package/docs/index.html +493 -0
  180. package/docs/library.html +239 -0
  181. package/docs/prompt.html +1212 -0
  182. package/docs/script.js +428 -0
  183. package/docs/styles.css +2816 -0
  184. package/package.json +114 -83
  185. package/scripts/auto-changelog.mjs +132 -0
  186. package/scripts/auto-install.mjs +322 -0
  187. package/scripts/install-dependencies.mjs +462 -0
  188. package/scripts/postgres-manager.mjs +219 -0
  189. package/scripts/postinstall.mjs +538 -0
  190. package/scripts/setup-overmind-db.mjs +199 -0
  191. package/scripts/setup-windows.js +266 -0
  192. package/scripts/setup.mjs +397 -0
  193. package/scripts/test-installation.mjs +158 -0
  194. package/scripts/uninstall.mjs +238 -0
  195. package/assets/overmind_mcp_pro_banner_v3.png +0 -0
  196. package/dist/services/QwenRunner.d.ts.map +0 -1
  197. package/dist/services/QwenRunner.js +0 -102
  198. package/dist/services/QwenRunner.js.map +0 -1
  199. package/dist/services/TraeRunner.d.ts.map +0 -1
  200. package/dist/services/TraeRunner.js +0 -103
  201. package/dist/services/TraeRunner.js.map +0 -1
  202. package/dist/tools/run_qwen.d.ts +0 -15
  203. package/dist/tools/run_qwen.d.ts.map +0 -1
  204. package/dist/tools/run_qwen.js +0 -61
  205. package/dist/tools/run_qwen.js.map +0 -1
  206. package/dist/tools/run_trae.d.ts +0 -15
  207. package/dist/tools/run_trae.d.ts.map +0 -1
  208. package/dist/tools/run_trae.js +0 -66
  209. package/dist/tools/run_trae.js.map +0 -1
  210. package/dist/tools/shell_execute.d.ts +0 -10
  211. package/dist/tools/shell_execute.d.ts.map +0 -1
  212. package/dist/tools/shell_execute.js +0 -24
  213. package/dist/tools/shell_execute.js.map +0 -1
  214. package/dist/tools/test_agent_control.d.ts +0 -2
  215. package/dist/tools/test_agent_control.d.ts.map +0 -1
  216. package/dist/tools/test_agent_control.js +0 -92
  217. package/dist/tools/test_agent_control.js.map +0 -1
@@ -1,105 +1,319 @@
1
1
  import fs from 'fs';
2
2
  import path from 'path';
3
3
  import { spawn } from 'child_process';
4
+ import { createHash } from 'crypto';
4
5
  import { CONFIG, resolveConfigPath } from '../lib/config.js';
5
- import { getLastSessionId } from '../lib/sessions.js';
6
- import { registerProcess, appendOutput, updateProcessStatus } from '../lib/processRegistry.js';
6
+ import { getLastSessionId, saveSessionId } from '../lib/sessions.js';
7
+ import { interpolateEnvVars } from '../lib/envUtils.js';
8
+ import { withSpan } from '../lib/telemetry.js';
9
+ import pino from 'pino';
10
+ import { registerProcess, linkSessionToPid, appendOutput, updateProcessStatus, } from '../lib/processRegistry.js';
11
+ const logger = pino({ name: 'GeminiRunner' });
7
12
  export class GeminiRunner {
8
- config; // Reusing config structure for isolation
13
+ config;
9
14
  timeoutMs;
15
+ tempFiles = []; // Track temp files for cleanup
10
16
  constructor() {
11
17
  this.config = CONFIG.CLAUDE;
12
- this.timeoutMs = CONFIG.TIMEOUT_MS || 30000;
18
+ this.timeoutMs = CONFIG.TIMEOUT_MS || 900000; // 15 min default
19
+ }
20
+ cleanupTempFiles() {
21
+ for (const tempFile of this.tempFiles) {
22
+ try {
23
+ if (fs.existsSync(tempFile)) {
24
+ fs.unlinkSync(tempFile);
25
+ logger.debug({ tempFile }, 'Cleaned up temp file');
26
+ }
27
+ }
28
+ catch (err) {
29
+ logger.warn({ tempFile, error: err }, 'Failed to cleanup temp file');
30
+ }
31
+ }
32
+ this.tempFiles = [];
13
33
  }
14
34
  async runAgent(options) {
15
35
  const { prompt, agentName, autoResume } = options;
16
36
  let { sessionId } = options;
17
37
  const { PATHS } = this.config;
18
- const agentCustomEnv = {};
38
+ // Initial custom env
39
+ const agentCustomEnv = {
40
+ ...process.env,
41
+ ...(agentName ? { OVERMIND_AGENT_NAME: agentName } : {}),
42
+ };
19
43
  // --- Auto Resume ---
20
44
  if (autoResume && agentName && !sessionId) {
21
- const lastId = await getLastSessionId(agentName);
45
+ const lastId = await getLastSessionId(agentName, options.configPath, 'gemini');
22
46
  if (lastId) {
23
47
  sessionId = lastId;
24
48
  }
25
49
  }
26
- let customTimeoutMs = this.timeoutMs;
27
- // --- Isolation ---
50
+ // --- System Prompt Loading ---
51
+ let finalPrompt = prompt;
28
52
  if (agentName) {
29
53
  try {
30
- const agentSettingsPath = resolveConfigPath(path.join(path.dirname(PATHS.SETTINGS), `settings_${agentName}.json`));
31
- if (fs.existsSync(agentSettingsPath)) {
32
- const settings = JSON.parse(fs.readFileSync(agentSettingsPath, 'utf8'));
33
- if (settings.env) {
34
- Object.assign(agentCustomEnv, settings.env);
35
- if (settings.env.AGENT_TIMEOUT_MS) {
36
- customTimeoutMs = parseInt(settings.env.AGENT_TIMEOUT_MS, 10) || customTimeoutMs;
54
+ const settingsDir = path.dirname(PATHS.SETTINGS);
55
+ let agentPromptPath = resolveConfigPath(path.join(settingsDir, 'agents', `${agentName}.md`), options.configPath);
56
+ if (!fs.existsSync(agentPromptPath)) {
57
+ agentPromptPath = resolveConfigPath(path.join(path.dirname(settingsDir), 'agents', `${agentName}.md`), options.configPath);
58
+ }
59
+ if (fs.existsSync(agentPromptPath)) {
60
+ const systemPrompt = fs.readFileSync(agentPromptPath, 'utf8');
61
+ finalPrompt = `${systemPrompt}\n\n[USER QUERY]:\n${prompt}`;
62
+ }
63
+ }
64
+ catch (err) {
65
+ logger.warn({ agentName, error: err }, 'Failed to load agent prompt, using raw prompt');
66
+ }
67
+ }
68
+ // --- OAuth Sync & Centralization (Recopie) ---
69
+ const userHome = process.env.USERPROFILE || process.env.HOME || '';
70
+ const globalGeminiPath = path.join(userHome, '.gemini');
71
+ // Dossier centralisé Overmind explicite
72
+ const overmindGeminiPath = path.resolve(process.cwd(), '.overmind', 'gemini', agentName ? `agent_${agentName}` : 'central');
73
+ const overmindGeminiSubPath = path.join(overmindGeminiPath, '.gemini');
74
+ // S'assurer que les dossiers existent
75
+ if (!fs.existsSync(overmindGeminiSubPath)) {
76
+ fs.mkdirSync(overmindGeminiSubPath, { recursive: true });
77
+ }
78
+ const filesToSync = [
79
+ 'settings.json',
80
+ 'oauth_creds.json',
81
+ 'google_accounts.json',
82
+ 'projects.json',
83
+ 'state.json',
84
+ ];
85
+ for (const file of filesToSync) {
86
+ const globalFile = path.join(globalGeminiPath, file);
87
+ const localFile = path.join(overmindGeminiSubPath, file);
88
+ if (fs.existsSync(globalFile)) {
89
+ try {
90
+ // Validate file integrity before copying
91
+ const globalContent = fs.readFileSync(globalFile);
92
+ const globalHash = createHash('sha256').update(globalContent).digest('hex');
93
+ // Check if local file exists and has same content
94
+ let needsCopy = true;
95
+ if (fs.existsSync(localFile)) {
96
+ const localContent = fs.readFileSync(localFile);
97
+ const localHash = createHash('sha256').update(localContent).digest('hex');
98
+ needsCopy = globalHash !== localHash;
99
+ }
100
+ if (needsCopy) {
101
+ fs.writeFileSync(localFile, globalContent);
102
+ this.tempFiles.push(localFile); // Track for cleanup
103
+ logger.info({ file, from: globalFile, to: localFile }, 'OAuth file synchronized');
104
+ if (!options.silent) {
105
+ process.stderr.write(`[GeminiRunner] OAuth synchronisé: ${file}\n`);
37
106
  }
38
107
  }
108
+ else {
109
+ logger.debug({ file }, 'OAuth file already up to date');
110
+ }
111
+ }
112
+ catch (err) {
113
+ logger.error({ file, error: err }, 'Failed to synchronize OAuth file');
114
+ if (!options.silent) {
115
+ process.stderr.write(`[GeminiRunner] Échec synchronisation ${file}: ${err}\n`);
116
+ }
39
117
  }
40
- }
41
- catch (_e) {
42
- // Warning
43
118
  }
44
119
  }
45
- const argsSpawn = ['--yes', '@google/gemini-cli'];
46
- // Pass the prompt
47
- argsSpawn.push(prompt);
48
- return new Promise((resolve) => {
49
- const isWin = process.platform === 'win32';
50
- const command = isWin ? 'npx.cmd' : 'npx';
51
- const child = spawn(command, argsSpawn, {
52
- cwd: process.cwd(),
53
- shell: isWin,
54
- windowsHide: true,
55
- env: {
56
- ...process.env,
57
- ...agentCustomEnv,
58
- ...(agentName ? { OVERMIND_AGENT_NAME: agentName } : {}),
59
- },
60
- });
61
- if (child.pid) {
62
- registerProcess(child.pid, { agentName: agentName || 'unknown', runner: 'gemini' }).catch(() => { });
120
+ agentCustomEnv.GEMINI_CLI_HOME = overmindGeminiPath;
121
+ // --- MCP Configuration & Settings Env ---
122
+ const mcpPath = path.join(overmindGeminiPath, 'mcp.json');
123
+ if (agentName) {
124
+ const settingsDir = path.dirname(PATHS.SETTINGS);
125
+ const agentSettingsPath = resolveConfigPath(path.join(settingsDir, `settings_${agentName}.json`), options.configPath);
126
+ if (fs.existsSync(agentSettingsPath)) {
127
+ let settings = JSON.parse(fs.readFileSync(agentSettingsPath, 'utf8'));
128
+ // --- New interpolation logic ---
129
+ settings = interpolateEnvVars(settings);
130
+ if (settings.env) {
131
+ Object.assign(agentCustomEnv, settings.env);
132
+ }
133
+ const originalMcpPath = resolveConfigPath(PATHS.MCP, options.configPath);
134
+ if (fs.existsSync(originalMcpPath)) {
135
+ const fullMcp = JSON.parse(fs.readFileSync(originalMcpPath, 'utf8'));
136
+ let mcpToUse = fullMcp;
137
+ if (settings.enableAllProjectMcpServers === false &&
138
+ Array.isArray(settings.enabledMcpjsonServers)) {
139
+ const filteredMcp = { mcpServers: {} };
140
+ for (const serverName of settings.enabledMcpjsonServers) {
141
+ if (fullMcp.mcpServers && fullMcp.mcpServers[serverName]) {
142
+ filteredMcp.mcpServers[serverName] = fullMcp.mcpServers[serverName];
143
+ }
144
+ }
145
+ mcpToUse = filteredMcp;
146
+ }
147
+ fs.writeFileSync(mcpPath, JSON.stringify(mcpToUse, null, 2));
148
+ this.tempFiles.push(mcpPath); // Track for cleanup
149
+ logger.info({ mcpPath }, 'MCP configuration synchronized');
150
+ if (!options.silent) {
151
+ process.stderr.write(`[GeminiRunner] MCP synchronisé: ${mcpPath}\n`);
152
+ }
153
+ }
63
154
  }
64
- let stdout = '';
65
- let stderr = '';
66
- if (child.stdout) {
67
- child.stdout.on('data', (d) => {
68
- stdout += d.toString();
69
- if (child.pid)
70
- appendOutput(child.pid, d.toString()).catch(() => { });
155
+ }
156
+ // --- SPAWN ---
157
+ const isWin = process.platform === 'win32';
158
+ let command = isWin ? 'gemini.cmd' : 'gemini';
159
+ const argsSpawn = [];
160
+ // On Windows, calling gemini.cmd via shell spawn can split multiline prompts.
161
+ // We bypass gemini.cmd by calling the underlying gemini.js directly with node.
162
+ const userHomeNpm = path.join(process.env.USERPROFILE || '', 'AppData', 'Roaming', 'npm');
163
+ const geminiJsPath = path.join(userHomeNpm, 'node_modules', '@google', 'gemini-cli', 'bundle', 'gemini.js');
164
+ let useNodeDirectly = false;
165
+ if (isWin && fs.existsSync(geminiJsPath)) {
166
+ command = 'node';
167
+ argsSpawn.push(geminiJsPath);
168
+ useNodeDirectly = true;
169
+ }
170
+ argsSpawn.push('--approval-mode', 'yolo');
171
+ argsSpawn.push('--output-format', 'json');
172
+ argsSpawn.push('--prompt', finalPrompt);
173
+ if (sessionId) {
174
+ argsSpawn.push('--resume', sessionId);
175
+ }
176
+ else if (autoResume) {
177
+ argsSpawn.push('--resume', 'latest');
178
+ }
179
+ const runImpl = async (span) => {
180
+ span.setAttribute('agentName', agentName || '');
181
+ span.setAttribute('runner', 'gemini');
182
+ return new Promise((resolve) => {
183
+ let resolved = false;
184
+ const safeResolve = (value) => {
185
+ if (!resolved) {
186
+ resolved = true;
187
+ resolve(value);
188
+ }
189
+ };
190
+ const child = spawn(command, argsSpawn, {
191
+ cwd: options.cwd || process.cwd(),
192
+ shell: useNodeDirectly ? false : isWin,
193
+ windowsHide: true,
194
+ env: agentCustomEnv,
71
195
  });
72
- }
73
- if (child.stderr) {
74
- child.stderr.on('data', (d) => (stderr += d.toString()));
75
- }
76
- const timeout = setTimeout(() => {
77
- child.kill();
78
- if (child.pid)
79
- updateProcessStatus(child.pid, 'failed', null).catch(() => { });
80
- resolve({ result: '', error: `TIMEOUT`, rawOutput: stdout });
81
- }, customTimeoutMs);
82
- child.on('close', async (code) => {
83
- clearTimeout(timeout);
196
+ // Register process immediately after spawn
84
197
  if (child.pid) {
85
- updateProcessStatus(child.pid, code === 0 ? 'done' : 'failed', code).catch(() => { });
86
- }
87
- if (code !== 0 && !stdout) {
88
- return resolve({ result: '', error: `EXIT_CODE_${code}`, rawOutput: stderr });
198
+ void registerProcess(child.pid, {
199
+ agentName: agentName || '',
200
+ runner: 'gemini',
201
+ configPath: options.configPath,
202
+ });
89
203
  }
90
- resolve({
91
- result: stdout.trim(),
92
- sessionId: sessionId,
93
- rawOutput: stdout,
204
+ let stdout = '';
205
+ let stderr = '';
206
+ const MAX_BUF = 10 * 1024 * 1024;
207
+ const cleanup = () => {
208
+ child.stdout?.removeAllListeners();
209
+ child.stderr?.removeAllListeners();
210
+ child.removeAllListeners();
211
+ };
212
+ child.stdout?.on('data', (data) => {
213
+ const d = data.toString();
214
+ if (child.pid && d) {
215
+ void appendOutput(child.pid, d, options.configPath);
216
+ }
217
+ if (stdout.length + d.length > MAX_BUF)
218
+ stdout = stdout.slice(-MAX_BUF);
219
+ else
220
+ stdout += d;
94
221
  });
222
+ child.stderr?.on('data', (data) => {
223
+ const d = data.toString();
224
+ if (child.pid && d) {
225
+ void appendOutput(child.pid, d, options.configPath);
226
+ }
227
+ if (stderr.length + d.length > MAX_BUF)
228
+ stderr = stderr.slice(-MAX_BUF);
229
+ else
230
+ stderr += d;
231
+ });
232
+ const timeout = setTimeout(() => {
233
+ child.kill();
234
+ setTimeout(() => {
235
+ if (!child.killed)
236
+ child.kill('SIGKILL');
237
+ }, 5000);
238
+ if (child.pid) {
239
+ void updateProcessStatus(child.pid, 'failed', null, options.configPath);
240
+ }
241
+ cleanup();
242
+ safeResolve({ result: '', error: 'TIMEOUT', rawOutput: stdout + stderr });
243
+ }, this.timeoutMs);
244
+ child.on('error', (err) => {
245
+ clearTimeout(timeout);
246
+ safeResolve({ result: '', error: `SPAWN_ERROR: ${err.message}`, rawOutput: '' });
247
+ });
248
+ child.on('close', async (code) => {
249
+ clearTimeout(timeout);
250
+ cleanup();
251
+ if (code !== 0 && !stdout) {
252
+ return safeResolve({
253
+ result: '',
254
+ error: code === 41 ? '🔑 Erreur Auth/API Key (OAuth/GCloud)' : `EXIT_CODE_${code}`,
255
+ rawOutput: stderr,
256
+ });
257
+ }
258
+ try {
259
+ let jsonOutput = null;
260
+ const trimmedStdout = stdout.trim();
261
+ try {
262
+ jsonOutput = JSON.parse(trimmedStdout);
263
+ }
264
+ catch (_) {
265
+ const lastBrace = trimmedStdout.lastIndexOf('}');
266
+ const firstBrace = trimmedStdout.lastIndexOf('{', lastBrace);
267
+ if (firstBrace !== -1 && lastBrace !== -1) {
268
+ try {
269
+ jsonOutput = JSON.parse(trimmedStdout.substring(firstBrace, lastBrace + 1));
270
+ }
271
+ catch {
272
+ // Ignore parsing errors for partial extraction
273
+ }
274
+ }
275
+ }
276
+ if (jsonOutput) {
277
+ const resultText = jsonOutput.reply || jsonOutput.result || stdout.trim();
278
+ const newSessionId = jsonOutput.session_id || sessionId;
279
+ if (newSessionId && agentName) {
280
+ await saveSessionId(agentName, newSessionId, options.configPath, 'gemini');
281
+ if (child.pid) {
282
+ void linkSessionToPid(newSessionId, child.pid, options.configPath);
283
+ }
284
+ }
285
+ return safeResolve({
286
+ result: resultText,
287
+ sessionId: newSessionId,
288
+ rawOutput: stdout,
289
+ });
290
+ }
291
+ safeResolve({
292
+ result: stdout.trim(),
293
+ sessionId: sessionId,
294
+ rawOutput: stdout,
295
+ });
296
+ }
297
+ catch {
298
+ safeResolve({
299
+ result: stdout.trim(),
300
+ sessionId: sessionId,
301
+ rawOutput: stdout,
302
+ });
303
+ }
304
+ });
305
+ if (child.stdin) {
306
+ child.stdin.end();
307
+ }
95
308
  });
96
- child.on('error', (err) => {
97
- resolve({ result: '', error: err.message, rawOutput: '' });
98
- });
99
- if (child.stdin) {
100
- child.stdin.end();
101
- }
309
+ };
310
+ const result = await withSpan('gemini.runAgent', runImpl, {
311
+ agentName: agentName || '',
312
+ runner: 'gemini',
102
313
  });
314
+ // Cleanup temp files after execution
315
+ this.cleanupTempFiles();
316
+ return result;
103
317
  }
104
318
  }
105
319
  //# sourceMappingURL=GeminiRunner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GeminiRunner.js","sourceRoot":"","sources":["../../src/services/GeminiRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GeminiRunner.js","sourceRoot":"","sources":["../../src/services/GeminiRunner.ts"],"names":[],"mappings":"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"}
@@ -4,17 +4,29 @@ export interface RunAgentOptions {
4
4
  sessionId?: string;
5
5
  autoResume?: boolean;
6
6
  mode?: 'code' | 'architect' | 'ask' | 'debug' | 'orchestrator';
7
+ model?: string;
8
+ cwd?: string;
9
+ configPath?: string;
10
+ silent?: boolean;
7
11
  }
8
12
  export interface RunAgentResult {
9
13
  result: string;
10
14
  sessionId?: string;
11
15
  error?: string;
12
16
  rawOutput?: string;
17
+ model?: string;
18
+ nickname?: string;
19
+ fallbackUsed?: string;
13
20
  }
14
21
  export declare class KiloRunner {
15
22
  private config;
16
23
  private timeoutMs;
24
+ static INSTALL_INSTRUCTIONS: string;
17
25
  constructor();
26
+ verifyInstallation(): Promise<{
27
+ ok: boolean;
28
+ message?: string;
29
+ }>;
18
30
  runAgent(options: RunAgentOptions): Promise<RunAgentResult>;
19
31
  }
20
32
  //# sourceMappingURL=KiloRunner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"KiloRunner.d.ts","sourceRoot":"","sources":["../../src/services/KiloRunner.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,KAAK,GAAG,OAAO,GAAG,cAAc,CAAC;CAChE;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAS;;IAOpB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;CA6GlE"}
1
+ {"version":3,"file":"KiloRunner.d.ts","sourceRoot":"","sources":["../../src/services/KiloRunner.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,KAAK,GAAG,OAAO,GAAG,cAAc,CAAC;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAGD,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,SAAS,CAAS;IAE1B,MAAM,CAAC,oBAAoB,SAe3B;;IAOM,kBAAkB,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAKhE,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;CA6flE"}