overmind-mcp 0.0.2-alpha

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 (191) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +137 -0
  3. package/assets/overmind_core_closeup.png +0 -0
  4. package/assets/overmind_mcp_banner.png +0 -0
  5. package/assets/overmind_mcp_banner_slim.png +0 -0
  6. package/assets/overmind_mcp_final_banner.png +0 -0
  7. package/assets/overmind_mcp_pro_banner.png +0 -0
  8. package/assets/overmind_mcp_pro_banner_v2.png +0 -0
  9. package/assets/overmind_mcp_pro_banner_v3.png +0 -0
  10. package/assets/terminal_preview.png +0 -0
  11. package/dist/bin/cli.d.ts +3 -0
  12. package/dist/bin/cli.d.ts.map +1 -0
  13. package/dist/bin/cli.js +481 -0
  14. package/dist/bin/cli.js.map +1 -0
  15. package/dist/index.d.ts +8 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +8 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/lib/InstallHelper.d.ts +14 -0
  20. package/dist/lib/InstallHelper.d.ts.map +1 -0
  21. package/dist/lib/InstallHelper.js +113 -0
  22. package/dist/lib/InstallHelper.js.map +1 -0
  23. package/dist/lib/config.d.ts +58 -0
  24. package/dist/lib/config.d.ts.map +1 -0
  25. package/dist/lib/config.js +110 -0
  26. package/dist/lib/config.js.map +1 -0
  27. package/dist/lib/envUtils.d.ts +10 -0
  28. package/dist/lib/envUtils.d.ts.map +1 -0
  29. package/dist/lib/envUtils.js +24 -0
  30. package/dist/lib/envUtils.js.map +1 -0
  31. package/dist/lib/loadEnv.d.ts +2 -0
  32. package/dist/lib/loadEnv.d.ts.map +1 -0
  33. package/dist/lib/loadEnv.js +26 -0
  34. package/dist/lib/loadEnv.js.map +1 -0
  35. package/dist/lib/logger.d.ts +8 -0
  36. package/dist/lib/logger.d.ts.map +1 -0
  37. package/dist/lib/logger.js +81 -0
  38. package/dist/lib/logger.js.map +1 -0
  39. package/dist/lib/modelMapping.d.ts +18 -0
  40. package/dist/lib/modelMapping.d.ts.map +1 -0
  41. package/dist/lib/modelMapping.js +88 -0
  42. package/dist/lib/modelMapping.js.map +1 -0
  43. package/dist/lib/sessions.d.ts +4 -0
  44. package/dist/lib/sessions.d.ts.map +1 -0
  45. package/dist/lib/sessions.js +108 -0
  46. package/dist/lib/sessions.js.map +1 -0
  47. package/dist/memory/MemoryFactory.d.ts +11 -0
  48. package/dist/memory/MemoryFactory.d.ts.map +1 -0
  49. package/dist/memory/MemoryFactory.js +19 -0
  50. package/dist/memory/MemoryFactory.js.map +1 -0
  51. package/dist/memory/PostgresMemoryProvider.d.ts +29 -0
  52. package/dist/memory/PostgresMemoryProvider.d.ts.map +1 -0
  53. package/dist/memory/PostgresMemoryProvider.js +372 -0
  54. package/dist/memory/PostgresMemoryProvider.js.map +1 -0
  55. package/dist/memory/types.d.ts +70 -0
  56. package/dist/memory/types.d.ts.map +1 -0
  57. package/dist/memory/types.js +2 -0
  58. package/dist/memory/types.js.map +1 -0
  59. package/dist/prompts/agent_prompts.d.ts +2 -0
  60. package/dist/prompts/agent_prompts.d.ts.map +1 -0
  61. package/dist/prompts/agent_prompts.js +21 -0
  62. package/dist/prompts/agent_prompts.js.map +1 -0
  63. package/dist/server.d.ts +3 -0
  64. package/dist/server.d.ts.map +1 -0
  65. package/dist/server.js +174 -0
  66. package/dist/server.js.map +1 -0
  67. package/dist/services/AgentManager.d.ts +28 -0
  68. package/dist/services/AgentManager.d.ts.map +1 -0
  69. package/dist/services/AgentManager.js +393 -0
  70. package/dist/services/AgentManager.js.map +1 -0
  71. package/dist/services/ClaudeRunner.d.ts +27 -0
  72. package/dist/services/ClaudeRunner.d.ts.map +1 -0
  73. package/dist/services/ClaudeRunner.js +426 -0
  74. package/dist/services/ClaudeRunner.js.map +1 -0
  75. package/dist/services/ClineRunner.d.ts +23 -0
  76. package/dist/services/ClineRunner.d.ts.map +1 -0
  77. package/dist/services/ClineRunner.js +95 -0
  78. package/dist/services/ClineRunner.js.map +1 -0
  79. package/dist/services/GeminiRunner.d.ts +23 -0
  80. package/dist/services/GeminiRunner.d.ts.map +1 -0
  81. package/dist/services/GeminiRunner.js +236 -0
  82. package/dist/services/GeminiRunner.js.map +1 -0
  83. package/dist/services/KiloRunner.d.ts +32 -0
  84. package/dist/services/KiloRunner.d.ts.map +1 -0
  85. package/dist/services/KiloRunner.js +413 -0
  86. package/dist/services/KiloRunner.js.map +1 -0
  87. package/dist/services/NousHermesRunner.d.ts +24 -0
  88. package/dist/services/NousHermesRunner.d.ts.map +1 -0
  89. package/dist/services/NousHermesRunner.js +318 -0
  90. package/dist/services/NousHermesRunner.js.map +1 -0
  91. package/dist/services/OpenClawRunner.d.ts +22 -0
  92. package/dist/services/OpenClawRunner.d.ts.map +1 -0
  93. package/dist/services/OpenClawRunner.js +89 -0
  94. package/dist/services/OpenClawRunner.js.map +1 -0
  95. package/dist/services/OpenCodeRunner.d.ts +22 -0
  96. package/dist/services/OpenCodeRunner.d.ts.map +1 -0
  97. package/dist/services/OpenCodeRunner.js +91 -0
  98. package/dist/services/OpenCodeRunner.js.map +1 -0
  99. package/dist/services/PromptManager.d.ts +16 -0
  100. package/dist/services/PromptManager.d.ts.map +1 -0
  101. package/dist/services/PromptManager.js +54 -0
  102. package/dist/services/PromptManager.js.map +1 -0
  103. package/dist/services/QwenCliRunner.d.ts +22 -0
  104. package/dist/services/QwenCliRunner.d.ts.map +1 -0
  105. package/dist/services/QwenCliRunner.js +90 -0
  106. package/dist/services/QwenCliRunner.js.map +1 -0
  107. package/dist/tools/config_example.d.ts +18 -0
  108. package/dist/tools/config_example.d.ts.map +1 -0
  109. package/dist/tools/config_example.js +253 -0
  110. package/dist/tools/config_example.js.map +1 -0
  111. package/dist/tools/create_agent.d.ts +41 -0
  112. package/dist/tools/create_agent.d.ts.map +1 -0
  113. package/dist/tools/create_agent.js +75 -0
  114. package/dist/tools/create_agent.js.map +1 -0
  115. package/dist/tools/get_agent_configs.d.ts +18 -0
  116. package/dist/tools/get_agent_configs.d.ts.map +1 -0
  117. package/dist/tools/get_agent_configs.js +43 -0
  118. package/dist/tools/get_agent_configs.js.map +1 -0
  119. package/dist/tools/initialization_check.d.ts +2 -0
  120. package/dist/tools/initialization_check.d.ts.map +1 -0
  121. package/dist/tools/initialization_check.js +23 -0
  122. package/dist/tools/initialization_check.js.map +1 -0
  123. package/dist/tools/manage_agents.d.ts +80 -0
  124. package/dist/tools/manage_agents.d.ts.map +1 -0
  125. package/dist/tools/manage_agents.js +161 -0
  126. package/dist/tools/manage_agents.js.map +1 -0
  127. package/dist/tools/manage_prompts.d.ts +30 -0
  128. package/dist/tools/manage_prompts.d.ts.map +1 -0
  129. package/dist/tools/manage_prompts.js +64 -0
  130. package/dist/tools/manage_prompts.js.map +1 -0
  131. package/dist/tools/memory_runs.d.ts +14 -0
  132. package/dist/tools/memory_runs.d.ts.map +1 -0
  133. package/dist/tools/memory_runs.js +77 -0
  134. package/dist/tools/memory_runs.js.map +1 -0
  135. package/dist/tools/memory_search.d.ts +14 -0
  136. package/dist/tools/memory_search.d.ts.map +1 -0
  137. package/dist/tools/memory_search.js +46 -0
  138. package/dist/tools/memory_search.js.map +1 -0
  139. package/dist/tools/memory_store.d.ts +26 -0
  140. package/dist/tools/memory_store.d.ts.map +1 -0
  141. package/dist/tools/memory_store.js +46 -0
  142. package/dist/tools/memory_store.js.map +1 -0
  143. package/dist/tools/metadata.d.ts +20 -0
  144. package/dist/tools/metadata.d.ts.map +1 -0
  145. package/dist/tools/metadata.js +240 -0
  146. package/dist/tools/metadata.js.map +1 -0
  147. package/dist/tools/run_agent.d.ts +30 -0
  148. package/dist/tools/run_agent.d.ts.map +1 -0
  149. package/dist/tools/run_agent.js +80 -0
  150. package/dist/tools/run_agent.js.map +1 -0
  151. package/dist/tools/run_agent_cli.d.ts +21 -0
  152. package/dist/tools/run_agent_cli.d.ts.map +1 -0
  153. package/dist/tools/run_agent_cli.js +129 -0
  154. package/dist/tools/run_agent_cli.js.map +1 -0
  155. package/dist/tools/run_agents_parallel.d.ts +34 -0
  156. package/dist/tools/run_agents_parallel.d.ts.map +1 -0
  157. package/dist/tools/run_agents_parallel.js +104 -0
  158. package/dist/tools/run_agents_parallel.js.map +1 -0
  159. package/dist/tools/run_claude.d.ts +19 -0
  160. package/dist/tools/run_claude.d.ts.map +1 -0
  161. package/dist/tools/run_claude.js +99 -0
  162. package/dist/tools/run_claude.js.map +1 -0
  163. package/dist/tools/run_cline.d.ts +28 -0
  164. package/dist/tools/run_cline.d.ts.map +1 -0
  165. package/dist/tools/run_cline.js +77 -0
  166. package/dist/tools/run_cline.js.map +1 -0
  167. package/dist/tools/run_gemini.d.ts +24 -0
  168. package/dist/tools/run_gemini.d.ts.map +1 -0
  169. package/dist/tools/run_gemini.js +81 -0
  170. package/dist/tools/run_gemini.js.map +1 -0
  171. package/dist/tools/run_hermes.d.ts +25 -0
  172. package/dist/tools/run_hermes.d.ts.map +1 -0
  173. package/dist/tools/run_hermes.js +93 -0
  174. package/dist/tools/run_hermes.js.map +1 -0
  175. package/dist/tools/run_kilo.d.ts +32 -0
  176. package/dist/tools/run_kilo.d.ts.map +1 -0
  177. package/dist/tools/run_kilo.js +92 -0
  178. package/dist/tools/run_kilo.js.map +1 -0
  179. package/dist/tools/run_openclaw.d.ts +24 -0
  180. package/dist/tools/run_openclaw.d.ts.map +1 -0
  181. package/dist/tools/run_openclaw.js +74 -0
  182. package/dist/tools/run_openclaw.js.map +1 -0
  183. package/dist/tools/run_opencode.d.ts +24 -0
  184. package/dist/tools/run_opencode.d.ts.map +1 -0
  185. package/dist/tools/run_opencode.js +74 -0
  186. package/dist/tools/run_opencode.js.map +1 -0
  187. package/dist/tools/run_qwencli.d.ts +24 -0
  188. package/dist/tools/run_qwencli.d.ts.map +1 -0
  189. package/dist/tools/run_qwencli.js +59 -0
  190. package/dist/tools/run_qwencli.js.map +1 -0
  191. package/package.json +86 -0
@@ -0,0 +1,27 @@
1
+ export interface RunAgentOptions {
2
+ prompt: string;
3
+ agentName?: string;
4
+ sessionId?: string;
5
+ autoResume?: boolean;
6
+ model?: string;
7
+ cwd?: string;
8
+ configPath?: string;
9
+ silent?: boolean;
10
+ signal?: AbortSignal;
11
+ }
12
+ export interface RunAgentResult {
13
+ result: string;
14
+ sessionId?: string;
15
+ error?: string;
16
+ rawOutput?: string;
17
+ model?: string;
18
+ nickname?: string;
19
+ fallbackUsed?: string;
20
+ }
21
+ export declare class ClaudeRunner {
22
+ private config;
23
+ private timeoutMs;
24
+ constructor();
25
+ runAgent(options: RunAgentOptions): Promise<RunAgentResult>;
26
+ }
27
+ //# sourceMappingURL=ClaudeRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaudeRunner.d.ts","sourceRoot":"","sources":["../../src/services/ClaudeRunner.ts"],"names":[],"mappings":"AAQA,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,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;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;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAS;;IAOpB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;CAwdlE"}
@@ -0,0 +1,426 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { spawn } from 'child_process';
4
+ import { CONFIG, resolveConfigPath } from '../lib/config.js';
5
+ import { getLastSessionId, saveSessionId } from '../lib/sessions.js';
6
+ import { interpolateEnvVars } from '../lib/envUtils.js';
7
+ import { resolveModel } from '../lib/modelMapping.js';
8
+ export class ClaudeRunner {
9
+ config;
10
+ timeoutMs;
11
+ constructor() {
12
+ this.config = CONFIG.CLAUDE;
13
+ this.timeoutMs = CONFIG.TIMEOUT_MS || 900000;
14
+ }
15
+ async runAgent(options) {
16
+ const { prompt, agentName, autoResume } = options;
17
+ let { sessionId } = options;
18
+ const { CORE, PERMISSIONS, PATHS } = this.config;
19
+ const agentCustomEnv = {};
20
+ if (agentName) {
21
+ agentCustomEnv.OVERMIND_AGENT_NAME = agentName;
22
+ }
23
+ // --- Auto Resume ---
24
+ if (autoResume && agentName && !sessionId) {
25
+ const lastId = await getLastSessionId(agentName, options.configPath, 'claude');
26
+ if (lastId) {
27
+ sessionId = lastId;
28
+ if (!options.silent) {
29
+ console.log(`[ClaudeRunner] Auto-resume session: ${sessionId}`);
30
+ }
31
+ }
32
+ }
33
+ let settingsPath = resolveConfigPath(PATHS.SETTINGS, options.configPath);
34
+ if (agentName) {
35
+ const settingsDir = path.dirname(PATHS.SETTINGS);
36
+ const specificSettingsPath = resolveConfigPath(path.join(settingsDir, `settings_${agentName}.json`), options.configPath);
37
+ if (!fs.existsSync(specificSettingsPath)) {
38
+ return {
39
+ result: '',
40
+ error: `INVALID_AGENT: Agent "${agentName}" non trouvé.`,
41
+ };
42
+ }
43
+ settingsPath = specificSettingsPath;
44
+ }
45
+ let mcpPath = resolveConfigPath(PATHS.MCP, options.configPath);
46
+ let tmpMcpPathToDelete = null;
47
+ let tmpSettingsPathToDelete = null;
48
+ let customTimeoutMs = this.timeoutMs;
49
+ if (agentName) {
50
+ try {
51
+ const agentSettingsPath = resolveConfigPath(path.join(path.dirname(PATHS.SETTINGS), `settings_${agentName}.json`), options.configPath);
52
+ if (fs.existsSync(agentSettingsPath)) {
53
+ let settings = JSON.parse(fs.readFileSync(agentSettingsPath, 'utf8'));
54
+ // --- New interpolation logic ---
55
+ settings = interpolateEnvVars(settings);
56
+ // 1. Create a temporary settings file with interpolated values
57
+ const tmpSettingsPath = path.join(path.dirname(agentSettingsPath), `settings_${agentName}_tmp.json`);
58
+ fs.writeFileSync(tmpSettingsPath, JSON.stringify(settings, null, 2));
59
+ settingsPath = tmpSettingsPath;
60
+ tmpSettingsPathToDelete = tmpSettingsPath;
61
+ if (settings.env) {
62
+ Object.assign(agentCustomEnv, settings.env);
63
+ if (settings.env.AGENT_TIMEOUT_MS || settings.env.API_TIMEOUT_MS) {
64
+ const timeoutValue = settings.env.AGENT_TIMEOUT_MS || settings.env.API_TIMEOUT_MS;
65
+ customTimeoutMs = parseInt(timeoutValue, 10) || customTimeoutMs;
66
+ }
67
+ if (!options.model && settings.env.MODEL) {
68
+ agentCustomEnv.ANTHROPIC_MODEL = settings.env.MODEL;
69
+ }
70
+ }
71
+ const agentMcpPath = resolveConfigPath(path.join(path.dirname(PATHS.SETTINGS), `.mcp.${agentName}.json`));
72
+ if (fs.existsSync(agentMcpPath)) {
73
+ mcpPath = agentMcpPath;
74
+ }
75
+ else if (settings.enableAllProjectMcpServers === false &&
76
+ Array.isArray(settings.enabledMcpjsonServers)) {
77
+ if (fs.existsSync(mcpPath)) {
78
+ const fullMcp = JSON.parse(fs.readFileSync(mcpPath, 'utf8'));
79
+ const filteredMcp = { mcpServers: {} };
80
+ for (const serverName of settings.enabledMcpjsonServers) {
81
+ if (fullMcp.mcpServers && fullMcp.mcpServers[serverName]) {
82
+ filteredMcp.mcpServers[serverName] = fullMcp.mcpServers[serverName];
83
+ }
84
+ }
85
+ const tmpMcpPath = path.join(path.dirname(agentSettingsPath), `mcp_${agentName}_tmp.json`);
86
+ fs.writeFileSync(tmpMcpPath, JSON.stringify(filteredMcp, null, 2));
87
+ mcpPath = tmpMcpPath;
88
+ tmpMcpPathToDelete = tmpMcpPath;
89
+ }
90
+ }
91
+ }
92
+ }
93
+ catch (e) {
94
+ console.error(`[ClaudeRunner] [WARN] Error processing agent settings: ${e}`);
95
+ }
96
+ }
97
+ const argsSpawn = [];
98
+ if (CORE)
99
+ argsSpawn.push(...CORE.split(' ').filter(Boolean));
100
+ if (PERMISSIONS)
101
+ argsSpawn.push(...PERMISSIONS.split(' ').filter(Boolean));
102
+ argsSpawn.push('--settings', settingsPath);
103
+ argsSpawn.push('--mcp-config', mcpPath);
104
+ argsSpawn.push('--output-format', 'json');
105
+ let modelUsed = options.model;
106
+ if (!modelUsed && agentCustomEnv.ANTHROPIC_MODEL) {
107
+ modelUsed = agentCustomEnv.ANTHROPIC_MODEL;
108
+ }
109
+ // Remember original value (nickname or raw model) for display
110
+ const originalModel = modelUsed ?? '';
111
+ // Resolve nickname → real model ID before calling the API
112
+ if (modelUsed) {
113
+ modelUsed = resolveModel(modelUsed);
114
+ }
115
+ if (sessionId)
116
+ argsSpawn.push('--resume', sessionId);
117
+ if (modelUsed)
118
+ argsSpawn.push('--model', modelUsed);
119
+ if (agentName)
120
+ argsSpawn.push('--name', agentName);
121
+ // ───────────────────────────────────────────────────────────────────────────
122
+ // 🔄 FALLBACK TOKEN RETRY LOGIC
123
+ //
124
+ // Overmind lit les tokens fallback depuis agentCustomEnv (résolus depuis $VAR).
125
+ // Si une erreur 401 (auth) survient, on tente chaque fallback séquentiellement :
126
+ // AUTH_FALLBACK_1 → AUTH_FALLBACK_2 → AUTH_FALLBACK_3
127
+ //
128
+ // Settings exemple :
129
+ // { "env": { "ANTHROPIC_AUTH_TOKEN": "$ANTHROPIC_AUTH_FALLBACK_1" } }
130
+ // ───────────────────────────────────────────────────────────────────────────
131
+ const FALLBACK_KEYS = ['AUTH_FALLBACK_1', 'AUTH_FALLBACK_2', 'AUTH_FALLBACK_3'];
132
+ const TOKEN_KEYS = ['ANTHROPIC_AUTH_TOKEN', 'ANTHROPIC_AUTH_TOKEN_E'];
133
+ /**
134
+ * Vérifie si le stderr contient une erreur d'authentification (401).
135
+ * Claude CLI affiche des messages explicites en cas d'auth failure.
136
+ */
137
+ const isAuthError = (stderr) => {
138
+ const lower = stderr.toLowerCase();
139
+ return (lower.includes('401') ||
140
+ lower.includes('unauthorized') ||
141
+ lower.includes('invalid api key') ||
142
+ lower.includes('api key invalid') ||
143
+ lower.includes('authentication failed') ||
144
+ lower.includes('auth error') ||
145
+ lower.includes('invalid authentication'));
146
+ };
147
+ /**
148
+ * Extrait les tokens fallback disponibles depuis agentCustomEnv.
149
+ * Retourne un tableau de { key, value } pour chaque fallback non vide.
150
+ */
151
+ const getAvailableFallbacks = () => {
152
+ const fallbacks = [];
153
+ for (const key of FALLBACK_KEYS) {
154
+ const val = agentCustomEnv[key];
155
+ if (val && typeof val === 'string' && val.length > 0 && !val.startsWith('$')) {
156
+ fallbacks.push({ key, value: val });
157
+ }
158
+ }
159
+ return fallbacks;
160
+ };
161
+ /**
162
+ * Détermine quel token utiliser : le fallback à l'index donné,
163
+ * ou le primary token ANTHROPIC_AUTH_TOKEN / ANTHROPIC_AUTH_TOKEN_E.
164
+ */
165
+ const getTokenForIndex = (index) => {
166
+ // Essayer d'abord le primary token
167
+ for (const tk of TOKEN_KEYS) {
168
+ const val = agentCustomEnv[tk];
169
+ if (val && typeof val === 'string' && val.length > 0 && !val.startsWith('$')) {
170
+ return { tokenEnvKey: tk, tokenValue: val };
171
+ }
172
+ }
173
+ // Puis les fallbacks
174
+ const fallbacks = getAvailableFallbacks();
175
+ if (index < fallbacks.length) {
176
+ return { tokenEnvKey: fallbacks[index].key, tokenValue: fallbacks[index].value };
177
+ }
178
+ return null;
179
+ };
180
+ // ─── AbortSignal support ─────────────────────────────────────────────────────
181
+ let currentChildRef = null;
182
+ if (options.signal?.aborted) {
183
+ return Promise.reject(new Error('ABORTED'));
184
+ }
185
+ options.signal?.addEventListener('abort', () => { if (currentChildRef)
186
+ currentChildRef.kill('SIGTERM'); });
187
+ return new Promise((resolve) => {
188
+ let resolved = false;
189
+ let retryCount = 0;
190
+ const maxRetries = getAvailableFallbacks().length + 1; // primary + fallbacks
191
+ currentChildRef = null;
192
+ let currentStderr = '';
193
+ let currentStdout = '';
194
+ let currentSessionId = sessionId;
195
+ const safeResolve = (value) => {
196
+ if (!resolved) {
197
+ resolved = true;
198
+ resolve(value);
199
+ }
200
+ };
201
+ const cleanupTmpFiles = () => {
202
+ if (tmpMcpPathToDelete && fs.existsSync(tmpMcpPathToDelete)) {
203
+ try {
204
+ fs.unlinkSync(tmpMcpPathToDelete);
205
+ }
206
+ catch {
207
+ // Ignored
208
+ }
209
+ }
210
+ if (tmpSettingsPathToDelete && fs.existsSync(tmpSettingsPathToDelete)) {
211
+ try {
212
+ fs.unlinkSync(tmpSettingsPathToDelete);
213
+ }
214
+ catch {
215
+ // Ignored
216
+ }
217
+ }
218
+ };
219
+ let killTimer = null;
220
+ let hardTimeoutTimer = null;
221
+ /**
222
+ * Fonction centrale qui spawn le processus Claude avec le bon token.
223
+ * Appelé initialement et après chaque retry.
224
+ */
225
+ const spawnWithToken = (tokenInfo) => {
226
+ // Nettoyer les listeners/timers de la tentative précédente
227
+ if (hardTimeoutTimer) {
228
+ clearTimeout(hardTimeoutTimer);
229
+ hardTimeoutTimer = null;
230
+ }
231
+ if (killTimer) {
232
+ clearTimeout(killTimer);
233
+ killTimer = null;
234
+ }
235
+ // Construire l'env avec le bon token
236
+ // NOTE: Overmind gère la substitution des variables $VAR dans les settings.
237
+ // Les fallback tokens (AUTH_FALLBACK_1/2/3) sont résolus ici pour le retry 401.
238
+ const spawnEnv = {
239
+ ...process.env,
240
+ ...agentCustomEnv,
241
+ };
242
+ if (tokenInfo) {
243
+ // Remplacer le token actif par celui du fallback
244
+ for (const tk of TOKEN_KEYS) {
245
+ delete spawnEnv[tk];
246
+ }
247
+ spawnEnv[tokenInfo.tokenEnvKey] = tokenInfo.tokenValue;
248
+ }
249
+ currentStderr = '';
250
+ currentStdout = '';
251
+ let command = 'claude';
252
+ let spawnArgs = [];
253
+ if (process.platform === 'win32') {
254
+ command = 'cmd.exe';
255
+ spawnArgs = ['/c', 'claude', ...argsSpawn, '-p'];
256
+ }
257
+ else {
258
+ spawnArgs = [...argsSpawn, '-p'];
259
+ }
260
+ if (!options.silent) {
261
+ const tokenLabel = tokenInfo ? ` (token: ${tokenInfo.tokenEnvKey})` : '';
262
+ process.stderr.write(`\n\x1b[33m[ClaudeRunner]${tokenLabel} Spawning Claude CLI...\x1b[0m\n`);
263
+ }
264
+ currentChildRef = spawn(command, spawnArgs, {
265
+ cwd: options.cwd || process.cwd(),
266
+ windowsHide: true,
267
+ env: spawnEnv,
268
+ shell: false,
269
+ signal: options.signal,
270
+ });
271
+ if (currentChildRef.stdout) {
272
+ currentChildRef.stdout.on('data', (d) => {
273
+ const chunk = d.toString();
274
+ currentStdout += chunk;
275
+ if (agentName && !options.silent) {
276
+ process.stderr.write(`[ClaudeRunner:${agentName}] ${chunk}`);
277
+ }
278
+ });
279
+ }
280
+ if (currentChildRef.stderr) {
281
+ currentChildRef.stderr.on('data', (d) => {
282
+ const chunk = d.toString();
283
+ currentStderr += chunk;
284
+ if (agentName && !options.silent) {
285
+ process.stderr.write(`[ClaudeRunner:${agentName}:ERR] ${chunk}`);
286
+ }
287
+ });
288
+ }
289
+ if (currentChildRef.stdin) {
290
+ currentChildRef.stdin.write(prompt);
291
+ currentChildRef.stdin.end();
292
+ }
293
+ const timeout = setTimeout(() => {
294
+ if (currentChildRef && currentChildRef.stdin && !currentChildRef.stdin.destroyed) {
295
+ try {
296
+ currentChildRef.stdin.write('\n');
297
+ if (!options.silent) {
298
+ process.stderr.write(`\n\x1b[33m[ClaudeRunner] [WARN] Agent stagnant (${customTimeoutMs}ms). Envoi d'un keep-alive (\\n)...\x1b[0m\n`);
299
+ }
300
+ }
301
+ catch (_e) {
302
+ // Ignore
303
+ }
304
+ }
305
+ const hardTimeoutDelay = CONFIG.HARD_TIMEOUT_MS || 60000;
306
+ hardTimeoutTimer = setTimeout(() => {
307
+ if (currentChildRef)
308
+ currentChildRef.kill();
309
+ killTimer = setTimeout(() => {
310
+ if (currentChildRef && !currentChildRef.killed)
311
+ currentChildRef.kill('SIGKILL');
312
+ }, 5000);
313
+ cleanupTmpFiles();
314
+ safeResolve({ result: '', error: 'HARD_TIMEOUT', rawOutput: currentStdout + currentStderr });
315
+ }, hardTimeoutDelay);
316
+ }, customTimeoutMs);
317
+ currentChildRef.on('error', (err) => {
318
+ clearTimeout(timeout);
319
+ if (hardTimeoutTimer)
320
+ clearTimeout(hardTimeoutTimer);
321
+ cleanupTmpFiles();
322
+ safeResolve({ result: '', error: `SPAWN_ERROR: ${err.message}`, rawOutput: '' });
323
+ });
324
+ currentChildRef.on('close', async (code) => {
325
+ clearTimeout(timeout);
326
+ if (hardTimeoutTimer)
327
+ clearTimeout(hardTimeoutTimer);
328
+ const fullRaw = currentStdout + (currentStderr ? `\n\n--- STDERR ---\n${currentStderr}` : '');
329
+ // ─── Parser le JSON en premier (pour extraire api_error_status) ───
330
+ let jsonEnvelope = null;
331
+ const trimmedStdout = currentStdout.trim();
332
+ try {
333
+ jsonEnvelope = JSON.parse(trimmedStdout);
334
+ }
335
+ catch {
336
+ const lastBrace = trimmedStdout.lastIndexOf('}');
337
+ const firstBrace = trimmedStdout.lastIndexOf('{', lastBrace);
338
+ if (firstBrace !== -1 && lastBrace !== -1) {
339
+ try {
340
+ jsonEnvelope = JSON.parse(trimmedStdout.substring(firstBrace, lastBrace + 1));
341
+ }
342
+ catch {
343
+ // Ignored
344
+ }
345
+ }
346
+ }
347
+ // ─── Vérification 401 / Auth Error → Retry avec fallback ───
348
+ // Le 401 peut apparaître dans stderr OU dans le JSON résultat (api_error_status: 401)
349
+ const has401InStderr = isAuthError(currentStderr);
350
+ const has401InResult = jsonEnvelope !== null &&
351
+ ((jsonEnvelope.api_error_status === 401) ||
352
+ (typeof jsonEnvelope.result === 'string' && isAuthError(jsonEnvelope.result)));
353
+ const isAuthFailure = (code !== 0 && has401InStderr) || has401InResult;
354
+ if (isAuthFailure) {
355
+ const tokenInfo = getTokenForIndex(retryCount);
356
+ if (tokenInfo && retryCount < maxRetries) {
357
+ retryCount++;
358
+ if (!options.silent) {
359
+ process.stderr.write(`\n\x1b[41m\x1b[37m[ClaudeRunner] 🔄 Auth error (401). Retry ${retryCount}/${maxRetries} avec ${tokenInfo.tokenEnvKey}...\x1b[0m\n`);
360
+ }
361
+ // Relancer avec le fallback suivant
362
+ spawnWithToken(tokenInfo);
363
+ return;
364
+ }
365
+ else {
366
+ if (!options.silent) {
367
+ process.stderr.write(`\n\x1b[41m\x1b[37m[ClaudeRunner] ❌ Tous les tokens fallback épuisés. Auth error finale.\x1b[0m\n`);
368
+ }
369
+ cleanupTmpFiles();
370
+ safeResolve({
371
+ result: '',
372
+ error: 'AUTH_ERROR_ALL_FALLBACKS_EXHAUSTED',
373
+ rawOutput: fullRaw,
374
+ });
375
+ return;
376
+ }
377
+ }
378
+ cleanupTmpFiles();
379
+ try {
380
+ if (jsonEnvelope) {
381
+ let foundSessionId = currentSessionId;
382
+ if (jsonEnvelope.session_id && agentName) {
383
+ foundSessionId = jsonEnvelope.session_id;
384
+ currentSessionId = foundSessionId;
385
+ await saveSessionId(agentName, jsonEnvelope.session_id, options.configPath, 'claude');
386
+ }
387
+ return safeResolve({
388
+ result: jsonEnvelope.reply ||
389
+ jsonEnvelope.result ||
390
+ currentStdout.trim(),
391
+ sessionId: foundSessionId,
392
+ rawOutput: currentStdout,
393
+ model: modelUsed ?? undefined,
394
+ nickname: originalModel !== modelUsed ? originalModel : undefined,
395
+ });
396
+ }
397
+ if (code === 0) {
398
+ return safeResolve({
399
+ result: currentStdout.trim(),
400
+ sessionId: currentSessionId,
401
+ rawOutput: currentStdout,
402
+ model: modelUsed ?? undefined,
403
+ nickname: originalModel !== modelUsed ? originalModel : undefined,
404
+ });
405
+ }
406
+ safeResolve({
407
+ result: '',
408
+ error: code !== 0 ? `EXIT_CODE_${code}` : 'JSON_PARSE_ERROR',
409
+ rawOutput: fullRaw,
410
+ });
411
+ }
412
+ catch (error) {
413
+ safeResolve({
414
+ result: '',
415
+ error: `INTERNAL_ERROR: ${error instanceof Error ? error.message : String(error)}`,
416
+ rawOutput: fullRaw,
417
+ });
418
+ }
419
+ });
420
+ };
421
+ // ─── Démarrage initial avec le primary token ───
422
+ spawnWithToken(getTokenForIndex(0));
423
+ });
424
+ }
425
+ }
426
+ //# sourceMappingURL=ClaudeRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClaudeRunner.js","sourceRoot":"","sources":["../../src/services/ClaudeRunner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export interface RunAgentOptions {
2
+ prompt: string;
3
+ agentName?: string;
4
+ sessionId?: string;
5
+ autoResume?: boolean;
6
+ mode?: 'plan' | 'act';
7
+ cwd?: string;
8
+ configPath?: string;
9
+ silent?: boolean;
10
+ }
11
+ export interface RunAgentResult {
12
+ result: string;
13
+ sessionId?: string;
14
+ error?: string;
15
+ rawOutput?: string;
16
+ }
17
+ export declare class ClineRunner {
18
+ private config;
19
+ private timeoutMs;
20
+ constructor();
21
+ runAgent(options: RunAgentOptions): Promise<RunAgentResult>;
22
+ }
23
+ //# sourceMappingURL=ClineRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClineRunner.d.ts","sourceRoot":"","sources":["../../src/services/ClineRunner.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,KAAK,CAAC;IACtB,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;CACpB;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAS;;IAOpB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;CA8FlE"}
@@ -0,0 +1,95 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { spawn } from 'child_process';
4
+ import { CONFIG, resolveConfigPath } from '../lib/config.js';
5
+ import { getLastSessionId, saveSessionId } from '../lib/sessions.js';
6
+ import { interpolateEnvVars } from '../lib/envUtils.js';
7
+ export class ClineRunner {
8
+ config;
9
+ timeoutMs;
10
+ constructor() {
11
+ this.config = CONFIG.CLAUDE;
12
+ this.timeoutMs = CONFIG.TIMEOUT_MS || 900000;
13
+ }
14
+ async runAgent(options) {
15
+ const { prompt, agentName, autoResume, mode } = options;
16
+ let { sessionId } = options;
17
+ const { PATHS } = this.config;
18
+ // --- Auto Resume ---
19
+ if (autoResume && agentName && !sessionId) {
20
+ const lastId = await getLastSessionId(agentName, options.configPath, 'cline');
21
+ if (lastId) {
22
+ sessionId = lastId;
23
+ }
24
+ }
25
+ let customTimeoutMs = this.timeoutMs;
26
+ // --- Isolation ---
27
+ if (agentName) {
28
+ try {
29
+ const agentSettingsPath = resolveConfigPath(path.join(path.dirname(PATHS.SETTINGS), `settings_${agentName}.json`), options.configPath);
30
+ if (fs.existsSync(agentSettingsPath)) {
31
+ let settings = JSON.parse(fs.readFileSync(agentSettingsPath, 'utf8'));
32
+ // --- New interpolation logic ---
33
+ settings = interpolateEnvVars(settings);
34
+ if (settings.env && settings.env.AGENT_TIMEOUT_MS) {
35
+ customTimeoutMs = parseInt(settings.env.AGENT_TIMEOUT_MS, 10) || customTimeoutMs;
36
+ }
37
+ }
38
+ }
39
+ catch (_e) {
40
+ // silent
41
+ }
42
+ }
43
+ // Cline CLI: `cline -y "prompt"` (-y = autonomous, no interactive UI)
44
+ // Optionally `--mode plan|act`
45
+ const argsSpawn = ['-y'];
46
+ if (mode)
47
+ argsSpawn.push('--mode', mode);
48
+ if (sessionId)
49
+ argsSpawn.push('--resume', sessionId);
50
+ argsSpawn.push(prompt);
51
+ return new Promise((resolve) => {
52
+ const isWin = process.platform === 'win32';
53
+ const command = isWin ? 'cline.cmd' : 'cline';
54
+ const child = spawn(command, argsSpawn, {
55
+ cwd: options.cwd || process.cwd(),
56
+ shell: isWin,
57
+ windowsHide: true,
58
+ env: {
59
+ ...process.env,
60
+ ...(agentName ? { OVERMIND_AGENT_NAME: agentName } : {}),
61
+ },
62
+ });
63
+ let stdout = '';
64
+ let stderr = '';
65
+ if (child.stdout)
66
+ child.stdout.on('data', (d) => (stdout += d.toString()));
67
+ if (child.stderr)
68
+ child.stderr.on('data', (d) => (stderr += d.toString()));
69
+ const timeout = setTimeout(() => {
70
+ child.kill();
71
+ resolve({ result: '', error: 'TIMEOUT', rawOutput: stdout });
72
+ }, customTimeoutMs);
73
+ child.on('close', async (code) => {
74
+ clearTimeout(timeout);
75
+ if (code !== 0 && !stdout) {
76
+ return resolve({ result: '', error: `EXIT_CODE_${code}`, rawOutput: stderr });
77
+ }
78
+ if (agentName && sessionId) {
79
+ await saveSessionId(agentName, sessionId, options.configPath, 'cline');
80
+ }
81
+ resolve({
82
+ result: stdout.trim(),
83
+ sessionId,
84
+ rawOutput: stdout,
85
+ });
86
+ });
87
+ child.on('error', (err) => {
88
+ resolve({ result: '', error: err.message, rawOutput: '' });
89
+ });
90
+ if (child.stdin)
91
+ child.stdin.end();
92
+ });
93
+ }
94
+ }
95
+ //# sourceMappingURL=ClineRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClineRunner.js","sourceRoot":"","sources":["../../src/services/ClineRunner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ export interface RunAgentOptions {
2
+ prompt: string;
3
+ agentName?: string;
4
+ sessionId?: string;
5
+ autoResume?: boolean;
6
+ cwd?: string;
7
+ configPath?: string;
8
+ silent?: boolean;
9
+ model?: string;
10
+ }
11
+ export interface RunAgentResult {
12
+ result: string;
13
+ sessionId?: string;
14
+ error?: string;
15
+ rawOutput?: string;
16
+ }
17
+ export declare class GeminiRunner {
18
+ private config;
19
+ private timeoutMs;
20
+ constructor();
21
+ runAgent(options: RunAgentOptions): Promise<RunAgentResult>;
22
+ }
23
+ //# sourceMappingURL=GeminiRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GeminiRunner.d.ts","sourceRoot":"","sources":["../../src/services/GeminiRunner.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,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;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,YAAY;IACvB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAS;;IAOpB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;CAqRlE"}