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
@@ -0,0 +1,460 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { spawn } from 'child_process';
4
+ import { exec } from 'child_process';
5
+ import { promisify } from 'util';
6
+ import { CONFIG, resolveConfigPath } from '../lib/config.js';
7
+ import { getLastSessionId, saveSessionId } from '../lib/sessions.js';
8
+ import { interpolateEnvVars } from '../lib/envUtils.js';
9
+ import { resolveKiloModel } from '../lib/modelMapping.js';
10
+ import { withSpan } from '../lib/telemetry.js';
11
+ import pino from 'pino';
12
+ import { registerProcess, appendOutput, updateProcessStatus, } from '../lib/processRegistry.js';
13
+ const execAsync = promisify(exec);
14
+ const logger = pino({ name: 'NousHermesRunner' });
15
+ /**
16
+ * Find hermes binary across platforms (Windows, Linux, macOS)
17
+ * Priority: HERMES_BIN_PATH env > PATH > platform-specific paths > pip show
18
+ */
19
+ async function findHermesBinary() {
20
+ const isWin = process.platform === 'win32';
21
+ // 1. Check environment variable first (allows users to override)
22
+ if (process.env.HERMES_BIN_PATH) {
23
+ if (fs.existsSync(process.env.HERMES_BIN_PATH)) {
24
+ logger.info({ path: process.env.HERMES_BIN_PATH }, 'Using HERMES_BIN_PATH');
25
+ return process.env.HERMES_BIN_PATH;
26
+ }
27
+ }
28
+ // 2. Try to find via PATH
29
+ try {
30
+ const command = isWin ? 'where hermes' : 'which hermes';
31
+ const { stdout } = await execAsync(command);
32
+ const hermesPath = stdout.trim().split('\n')[0];
33
+ if (hermesPath && fs.existsSync(hermesPath)) {
34
+ logger.info({ path: hermesPath }, 'Found hermes in PATH');
35
+ return hermesPath;
36
+ }
37
+ }
38
+ catch {
39
+ // Not found in PATH
40
+ }
41
+ // 3. Platform-specific paths
42
+ const platformPaths = isWin
43
+ ? [
44
+ path.join(process.env.LOCALAPPDATA || '', 'Programs', 'Python', 'Python312', 'Scripts', 'hermes.exe'),
45
+ path.join(process.env.APPDATA || '', 'Python', 'Python312', 'Scripts', 'hermes.exe'),
46
+ path.join(process.env.LOCALAPPDATA || '', 'Programs', 'Python', 'Python311', 'Scripts', 'hermes.exe'),
47
+ path.join(process.env.APPDATA || '', 'Python', 'Python311', 'Scripts', 'hermes.exe'),
48
+ 'C:\\Python312\\Scripts\\hermes.exe',
49
+ 'C:\\Python311\\Scripts\\hermes.exe',
50
+ 'C:\\Program Files\\Hermes\\hermes.exe',
51
+ ]
52
+ : [
53
+ path.join(process.env.HOME || '', '.local', 'bin', 'hermes'),
54
+ path.join(process.env.HOME || '', 'miniconda3', 'bin', 'hermes'),
55
+ path.join(process.env.HOME || '', 'anaconda3', 'bin', 'hermes'),
56
+ '/usr/local/bin/hermes',
57
+ '/usr/bin/hermes',
58
+ '/opt/homebrew/bin/hermes',
59
+ ];
60
+ for (const p of platformPaths) {
61
+ if (fs.existsSync(p)) {
62
+ logger.info({ path: p }, 'Found hermes at platform path');
63
+ return p;
64
+ }
65
+ }
66
+ // 4. Try pip show to find installation
67
+ try {
68
+ const { stdout } = await execAsync('pip show hermes-agent 2>/dev/null || pip3 show hermes-agent');
69
+ const match = stdout.match(/Location:\s*(.+)/);
70
+ if (match) {
71
+ const sitePackages = match[1].trim();
72
+ const hermesPath = isWin
73
+ ? path.join(sitePackages, 'Scripts', 'hermes.exe')
74
+ : path.join(sitePackages, 'bin', 'hermes');
75
+ if (fs.existsSync(hermesPath)) {
76
+ logger.info({ path: hermesPath }, 'Found hermes via pip show');
77
+ return hermesPath;
78
+ }
79
+ }
80
+ }
81
+ catch {
82
+ // pip show failed
83
+ }
84
+ // 5. Fallback to 'hermes' and let spawn fail with proper error
85
+ logger.warn('hermes binary not found, using "hermes" command');
86
+ return 'hermes';
87
+ }
88
+ export class NousHermesRunner {
89
+ timeoutMs;
90
+ tempFiles = [];
91
+ MAX_BUF = 10 * 1024 * 1024; // 10MB buffer limit
92
+ constructor() {
93
+ this.timeoutMs = CONFIG.TIMEOUT_MS || 900000; // 15 min default
94
+ }
95
+ cleanupTempFiles() {
96
+ for (const tempFile of this.tempFiles) {
97
+ try {
98
+ if (fs.existsSync(tempFile)) {
99
+ fs.unlinkSync(tempFile);
100
+ logger.debug({ tempFile }, 'Cleaned up temp file');
101
+ }
102
+ }
103
+ catch (err) {
104
+ logger.warn({ tempFile, error: err }, 'Failed to cleanup temp file');
105
+ }
106
+ }
107
+ this.tempFiles = [];
108
+ }
109
+ async runAgent(options) {
110
+ return runAgentWrapper.call(this, options);
111
+ }
112
+ async runAgentInternal(options) {
113
+ const { prompt, agentName, autoResume, silent } = options;
114
+ let { sessionId } = options;
115
+ // --- Auto Resume ---
116
+ if (autoResume && agentName && !sessionId) {
117
+ const lastId = await getLastSessionId(agentName, options.configPath, 'hermes');
118
+ if (lastId) {
119
+ sessionId = lastId;
120
+ }
121
+ }
122
+ const agentCustomEnv = {
123
+ ...process.env,
124
+ PYTHONIOENCODING: 'utf-8',
125
+ PYTHONUTF8: '1',
126
+ PYTHONUNBUFFERED: '1',
127
+ PYTHONLEGACYWINDOWSSTDIO: '1',
128
+ TERM: 'emacs',
129
+ PROMPT_TOOLKIT_NO_INTERACTIVE: '1',
130
+ // Force non-interactive for prompt_toolkit
131
+ ANSICON: '1',
132
+ // Map OpenRouter key if needed
133
+ OPENROUTER_API_KEY: process.env.OPENROUTER_API_KEY || process.env.OVERMIND_EMBEDDING_KEY,
134
+ // Map NVIDIA NIM key
135
+ NVIDIA_API_KEY: process.env.NVIDIA_API_KEY || process.env.NVAPI_KEY,
136
+ NVIDIA_API_BASE: process.env.NVIDIA_API_BASE || 'https://integrate.api.nvidia.com/v1',
137
+ ...(agentName ? { OVERMIND_AGENT_NAME: agentName } : {}),
138
+ };
139
+ // --- Isolation / Settings / Prompt ---
140
+ const overmindHermesPath = path.resolve(process.cwd(), '.overmind', 'hermes', agentName ? `agent_${agentName}` : 'central');
141
+ const overmindHermesSubPath = path.join(overmindHermesPath, '.hermes');
142
+ if (!fs.existsSync(overmindHermesSubPath)) {
143
+ fs.mkdirSync(overmindHermesSubPath, { recursive: true });
144
+ }
145
+ // On définit l'environnement pour Hermes
146
+ // IMPORTANT: HERMES_HOME doit pointer vers le dossier contenant config.yaml
147
+ agentCustomEnv.HERMES_HOME = overmindHermesSubPath;
148
+ if (process.platform === 'win32') {
149
+ agentCustomEnv.USERPROFILE = overmindHermesPath;
150
+ }
151
+ else {
152
+ agentCustomEnv.HOME = overmindHermesPath;
153
+ }
154
+ let systemPrompt = '';
155
+ if (agentName) {
156
+ try {
157
+ const settingsDir = path.dirname(CONFIG.CLAUDE.PATHS.SETTINGS);
158
+ const agentSettingsPath = resolveConfigPath(path.join(settingsDir, `settings_${agentName}.json`), options.configPath);
159
+ if (!fs.existsSync(agentSettingsPath)) {
160
+ // Lister les agents disponibles pour aider au debugging
161
+ let availableAgents = [];
162
+ try {
163
+ const files = fs.readdirSync(settingsDir);
164
+ availableAgents = files
165
+ .filter((f) => f.startsWith('settings_') && f.endsWith('.json'))
166
+ .map((f) => f.replace('settings_', '').replace('.json', ''));
167
+ }
168
+ catch (e) {
169
+ logger.warn({ settingsDir, error: e }, 'Error reading settings directory');
170
+ }
171
+ return {
172
+ result: '',
173
+ error: `INVALID_AGENT: Agent Hermes "${agentName}" non trouvé.
174
+ Veuillez utiliser 'create_agent' au préalable.
175
+ Fichier attendu: ${agentSettingsPath}
176
+ ${availableAgents.length > 0 ? `Agents disponibles: ${availableAgents.join(', ')}` : 'Aucun agent disponible'}
177
+ `
178
+ .replace(/\s+/g, ' ')
179
+ .trim(),
180
+ };
181
+ }
182
+ const settings = JSON.parse(fs.readFileSync(agentSettingsPath, 'utf8'));
183
+ if (!options.model && settings.model) {
184
+ options.model = settings.model;
185
+ }
186
+ if (!options.model && settings.env?.ANTHROPIC_MODEL) {
187
+ options.model = settings.env.ANTHROPIC_MODEL;
188
+ }
189
+ if (settings.env) {
190
+ // Fusion intelligente : préserver les clés critiques (API keys)
191
+ const criticalKeys = [
192
+ 'OPENROUTER_API_KEY',
193
+ 'NVIDIA_API_KEY',
194
+ 'NVIDIA_API_BASE',
195
+ 'OVERMIND_EMBEDDING_KEY',
196
+ 'OPENAI_API_KEY',
197
+ 'OPENAI_API_BASE',
198
+ 'OPENAI_BASE_URL',
199
+ 'MISTRAL_API_KEY',
200
+ 'MISTRAL_API_KEY_2',
201
+ 'MISTRAL_API_KEY_3',
202
+ 'MISTRAL_API_KEY_4',
203
+ 'MISTRAL_API_KEY_5',
204
+ 'MISTRAL_API_KEY_6',
205
+ 'MISTRAL_API_KEY_7',
206
+ ];
207
+ let envCopy = { ...settings.env };
208
+ // --- ENV VARIABLE SUBSTITUTION ($VAR_NAME) ---
209
+ envCopy = interpolateEnvVars(envCopy);
210
+ for (const key of criticalKeys) {
211
+ if (agentCustomEnv[key] && !envCopy[key]) {
212
+ envCopy[key] = agentCustomEnv[key];
213
+ }
214
+ }
215
+ Object.assign(agentCustomEnv, envCopy);
216
+ }
217
+ // --- Load System Prompt (agents/agentName.md) ---
218
+ const agentPromptPath = resolveConfigPath(path.join(path.dirname(settingsDir), 'agents', `${agentName}.md`), options.configPath);
219
+ if (fs.existsSync(agentPromptPath)) {
220
+ systemPrompt = fs.readFileSync(agentPromptPath, 'utf8');
221
+ }
222
+ // --- MCP Config Translation (JSON -> YAML for Hermes) ---
223
+ const agentMcpPath = resolveConfigPath(path.join(path.dirname(settingsDir), `.mcp.${agentName}.json`), options.configPath);
224
+ if (fs.existsSync(agentMcpPath)) {
225
+ try {
226
+ const mcpConfig = JSON.parse(fs.readFileSync(agentMcpPath, 'utf8'));
227
+ const hermesConfigDir = overmindHermesSubPath;
228
+ if (!fs.existsSync(hermesConfigDir))
229
+ fs.mkdirSync(hermesConfigDir, { recursive: true });
230
+ const mcpJsonPath = path.join(hermesConfigDir, 'mcp.json');
231
+ const configYamlPath = path.join(hermesConfigDir, 'config.yaml');
232
+ // Helper pour convertir le format MCP JSON vers le format mcp.json Hermes (identique à Claude Desktop)
233
+ fs.writeFileSync(mcpJsonPath, JSON.stringify(mcpConfig, null, 2), 'utf8');
234
+ // Generer aussi config.yaml (format snake_case attendu par Hermes)
235
+ let yamlContent = 'mcp_servers:\n';
236
+ for (const [name, server] of Object.entries(mcpConfig.mcpServers || {})) {
237
+ const s = server;
238
+ yamlContent += ` ${name}:\n`;
239
+ if (s.command)
240
+ yamlContent += ` command: "${s.command}"\n`;
241
+ if (s.args && Array.isArray(s.args)) {
242
+ yamlContent += ` args:\n`;
243
+ for (const arg of s.args) {
244
+ yamlContent += ` - "${String(arg).replace(/"/g, '\\"')}"\n`;
245
+ }
246
+ }
247
+ if (s.env && typeof s.env === 'object') {
248
+ yamlContent += ` env:\n`;
249
+ for (const [k, v] of Object.entries(s.env)) {
250
+ yamlContent += ` ${k}: "${String(v).replace(/"/g, '\\"')}"\n`;
251
+ }
252
+ }
253
+ if (s.url)
254
+ yamlContent += ` url: "${s.url}"\n`;
255
+ }
256
+ fs.writeFileSync(configYamlPath, yamlContent, 'utf8');
257
+ if (!silent)
258
+ console.error(`[NousHermesRunner] 🛠️ Hermes configs (mcp.json & config.yaml) generated in ${hermesConfigDir}`);
259
+ }
260
+ catch (err) {
261
+ logger.error({ error: err }, 'Error translating MCP config');
262
+ }
263
+ }
264
+ }
265
+ catch (e) {
266
+ if (e instanceof Error && e.message?.includes('INVALID_AGENT'))
267
+ throw e;
268
+ logger.warn({ agentName, error: e }, 'Error processing agent settings');
269
+ }
270
+ }
271
+ // --- CLI Arguments & Prompt Handling ---
272
+ const finalPrompt = systemPrompt ? `${systemPrompt}\n\n[USER QUERY]:\n${prompt}` : prompt;
273
+ // Tronquer si nécessaire pour éviter les limites Windows (8191)
274
+ const MAX_PROMPT_LEN = 7000;
275
+ let cliPrompt = finalPrompt;
276
+ if (cliPrompt.length > MAX_PROMPT_LEN) {
277
+ console.warn(`[NousHermesRunner] ⚠️ Prompt tronqué de ${cliPrompt.length} à ${MAX_PROMPT_LEN} chars`);
278
+ cliPrompt = cliPrompt.substring(0, MAX_PROMPT_LEN);
279
+ }
280
+ // En version 0.11.0, on simplifie pour éviter les erreurs d'arguments
281
+ const cleanArgs = ['chat', '-q', cliPrompt, '--source', 'tool', '-Q'];
282
+ if (!silent)
283
+ cleanArgs.push('-v');
284
+ // --- Model & Provider selection ---
285
+ const DEFAULT_MODEL = 'tencent/hy3-preview:free'; // Modèle OpenRouter gratuit
286
+ const originalModel = options.model || DEFAULT_MODEL;
287
+ const model = resolveKiloModel(originalModel);
288
+ const isNvidiaModel = model.includes('deepseek') || model.includes('nvidia');
289
+ const hasNvidiaKey = !!(agentCustomEnv.NVIDIA_API_KEY || agentCustomEnv.NVAPI_KEY);
290
+ const lowModel = model.toLowerCase();
291
+ const isOpenAIModel = lowModel.includes('gpt') ||
292
+ lowModel.includes('o1') ||
293
+ lowModel.includes('o3') ||
294
+ lowModel.includes('minimax') ||
295
+ lowModel.includes('glm');
296
+ const hasOpenAIKey = !!agentCustomEnv.OPENAI_API_KEY;
297
+ const isMistralModel = model.includes('mistral') || model.includes('codestral') || model.includes('devstral');
298
+ const hasMistralKey = !!agentCustomEnv.MISTRAL_API_KEY;
299
+ cleanArgs.push('--model', model);
300
+ if (isOpenAIModel && hasOpenAIKey) {
301
+ logger.info({ model, provider: 'openai' }, 'Using OpenAI provider');
302
+ cleanArgs.push('--provider', 'openai');
303
+ // Nettoyage des clés conflictuelles
304
+ delete agentCustomEnv.OPENROUTER_API_KEY;
305
+ delete agentCustomEnv.NVIDIA_API_KEY;
306
+ delete agentCustomEnv.NVAPI_KEY;
307
+ }
308
+ else if (isMistralModel && hasMistralKey) {
309
+ logger.info({ model, provider: 'mistral' }, 'Using Mistral provider');
310
+ cleanArgs.push('--provider', 'mistral');
311
+ // Nettoyage des clés conflictuelles
312
+ delete agentCustomEnv.OPENROUTER_API_KEY;
313
+ delete agentCustomEnv.NVIDIA_API_KEY;
314
+ delete agentCustomEnv.NVAPI_KEY;
315
+ delete agentCustomEnv.OPENAI_API_KEY;
316
+ }
317
+ else if (isNvidiaModel && hasNvidiaKey) {
318
+ logger.info({ model, provider: 'nvidia' }, 'Using NVIDIA NIM provider');
319
+ cleanArgs.push('--provider', 'nvidia');
320
+ }
321
+ else {
322
+ // Fallback OpenRouter pour tout le reste ou si clé NIM manquante
323
+ logger.info({ model, provider: 'openrouter' }, 'Using OpenRouter provider');
324
+ cleanArgs.push('--provider', 'openrouter');
325
+ }
326
+ // --- Find Hermes Binary (cross-platform) ---
327
+ const spawnCommand = await findHermesBinary();
328
+ if (!silent) {
329
+ logger.info({ command: spawnCommand, args: cleanArgs }, 'Starting Hermes Agent');
330
+ }
331
+ // Track temp files for MCP config
332
+ const mcpJsonPath = path.join(overmindHermesSubPath, 'mcp.json');
333
+ const configYamlPath = path.join(overmindHermesSubPath, 'config.yaml');
334
+ this.tempFiles.push(mcpJsonPath, configYamlPath);
335
+ return new Promise((resolve) => {
336
+ let resolved = false;
337
+ const safeResolve = (value) => {
338
+ if (!resolved) {
339
+ resolved = true;
340
+ resolve(value);
341
+ }
342
+ };
343
+ const child = spawn(spawnCommand, cleanArgs, {
344
+ cwd: options.cwd || process.cwd(),
345
+ shell: true, // TRUE: permet de résoudre via PATH et gère les wrappers Python/Scripts sur Windows
346
+ windowsHide: true,
347
+ env: agentCustomEnv,
348
+ });
349
+ if (child.pid) {
350
+ void registerProcess(child.pid, { agentName: agentName || '', runner: 'hermes', configPath: options.configPath });
351
+ }
352
+ let stdout = '';
353
+ let stderr = '';
354
+ child.stdout?.on('data', (d) => {
355
+ const chunk = d.toString();
356
+ if (child.pid)
357
+ void appendOutput(child.pid, chunk, options.configPath);
358
+ if (stdout.length + chunk.length > this.MAX_BUF) {
359
+ stdout = stdout.slice(-this.MAX_BUF);
360
+ }
361
+ stdout += chunk;
362
+ if (!silent) {
363
+ process.stderr.write(`[Hermes] ${chunk}`);
364
+ }
365
+ });
366
+ child.stderr?.on('data', (d) => {
367
+ const chunk = d.toString();
368
+ if (stderr.length + chunk.length > this.MAX_BUF) {
369
+ stderr = stderr.slice(-this.MAX_BUF);
370
+ }
371
+ stderr += chunk;
372
+ if (!silent) {
373
+ process.stderr.write(`[Hermes:ERR] ${chunk}`);
374
+ }
375
+ });
376
+ const timeout = setTimeout(() => {
377
+ child.kill();
378
+ // Fallback to SIGKILL after 5 seconds if process still running
379
+ setTimeout(() => {
380
+ if (!child.killed) {
381
+ child.kill('SIGKILL');
382
+ }
383
+ }, 5000);
384
+ if (child.pid)
385
+ void updateProcessStatus(child.pid, 'failed', null, options.configPath);
386
+ safeResolve({
387
+ result: stdout.trim(),
388
+ error: 'TIMEOUT',
389
+ rawOutput: stdout + '\n\n' + stderr,
390
+ model,
391
+ nickname: originalModel !== model ? originalModel : undefined,
392
+ });
393
+ }, this.timeoutMs);
394
+ child.on('close', async (code) => {
395
+ clearTimeout(timeout);
396
+ if (child.pid)
397
+ void updateProcessStatus(child.pid, code === 0 ? 'done' : 'failed', code, options.configPath);
398
+ if (code !== 0 && !stdout) {
399
+ return safeResolve({
400
+ result: '',
401
+ error: `EXIT_CODE_${code}`,
402
+ rawOutput: stderr || stdout,
403
+ model,
404
+ nickname: originalModel !== model ? originalModel : undefined,
405
+ });
406
+ }
407
+ safeResolve({
408
+ result: stdout.trim(),
409
+ sessionId: sessionId,
410
+ rawOutput: stdout,
411
+ model,
412
+ nickname: originalModel !== model ? originalModel : undefined,
413
+ });
414
+ });
415
+ child.on('error', (err) => {
416
+ clearTimeout(timeout);
417
+ if (child.pid)
418
+ void updateProcessStatus(child.pid, 'failed', null, options.configPath);
419
+ safeResolve({ result: '', error: `SPAWN_ERROR: ${err.message}`, rawOutput: '' });
420
+ });
421
+ if (child.stdin) {
422
+ child.stdin.end();
423
+ }
424
+ });
425
+ }
426
+ }
427
+ /**
428
+ * Run agent with proper cleanup and telemetry
429
+ */
430
+ async function runAgentWrapper(options) {
431
+ try {
432
+ const result = await withSpan('hermes.runAgent', async (span) => {
433
+ span.setAttribute('agentName', options.agentName || '');
434
+ span.setAttribute('model', options.model || '');
435
+ span.setAttribute('runner', 'hermes');
436
+ return await this.runAgentInternal(options);
437
+ }, {
438
+ agentName: options.agentName || '',
439
+ model: options.model || '',
440
+ runner: 'hermes',
441
+ });
442
+ // Cleanup on success
443
+ this.cleanupTempFiles();
444
+ // Save session if needed
445
+ if (options.agentName && result.sessionId) {
446
+ await saveSessionId(options.agentName, result.sessionId, options.configPath, 'hermes');
447
+ }
448
+ return result;
449
+ }
450
+ catch (error) {
451
+ // Cleanup on error
452
+ this.cleanupTempFiles();
453
+ logger.error({
454
+ error: error instanceof Error ? error.message : String(error),
455
+ agentName: options.agentName,
456
+ }, 'Hermes runner failed');
457
+ throw error;
458
+ }
459
+ }
460
+ //# sourceMappingURL=NousHermesRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NousHermesRunner.js","sourceRoot":"","sources":["../../src/services/NousHermesRunner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,KAAK,EAAgB,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EACL,eAAe,EACf,YAAY,EACZ,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAsBlD;;;GAGG;AACH,KAAK,UAAU,gBAAgB;IAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;IAE3C,iEAAiE;IACjE,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAChC,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,EAAE,uBAAuB,CAAC,CAAC;YAC5E,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QACrC,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC;QACxD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,UAAU,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,sBAAsB,CAAC,CAAC;YAC1D,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,oBAAoB;IACtB,CAAC;IAED,6BAA6B;IAC7B,MAAM,aAAa,GAAG,KAAK;QACzB,CAAC,CAAC;YACE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC;YACrG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC;YACpF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC;YACrG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC;YACpF,oCAAoC;YACpC,oCAAoC;YACpC,uCAAuC;SACxC;QACH,CAAC,CAAC;YACE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC;YAC5D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC;YAChE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC;YAC/D,uBAAuB;YACvB,iBAAiB;YACjB,0BAA0B;SAC3B,CAAC;IAEN,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;QAC9B,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,+BAA+B,CAAC,CAAC;YAC1D,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,6DAA6D,CAAC,CAAC;QAClG,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC/C,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACrC,MAAM,UAAU,GAAG,KAAK;gBACtB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,YAAY,CAAC;gBAClD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC7C,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,2BAA2B,CAAC,CAAC;gBAC/D,OAAO,UAAU,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,kBAAkB;IACpB,CAAC;IAED,+DAA+D;IAC/D,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IAC/D,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,OAAO,gBAAgB;IACnB,SAAS,CAAS;IAClB,SAAS,GAAa,EAAE,CAAC;IACzB,OAAO,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,oBAAoB;IAExD;QACE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,CAAC,iBAAiB;IACjE,CAAC;IAED,gBAAgB;QACd,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5B,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACxB,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,sBAAsB,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,6BAA6B,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAwB;QACrC,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,OAAwB;QAC7C,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAC1D,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;QAE5B,sBAAsB;QACtB,IAAI,UAAU,IAAI,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC/E,IAAI,MAAM,EAAE,CAAC;gBACX,SAAS,GAAG,MAAM,CAAC;YACrB,CAAC;QACH,CAAC;QAED,MAAM,cAAc,GAAuC;YACzD,GAAG,OAAO,CAAC,GAAG;YACd,gBAAgB,EAAE,OAAO;YACzB,UAAU,EAAE,GAAG;YACf,gBAAgB,EAAE,GAAG;YACrB,wBAAwB,EAAE,GAAG;YAC7B,IAAI,EAAE,OAAO;YACb,6BAA6B,EAAE,GAAG;YAClC,2CAA2C;YAC3C,OAAO,EAAE,GAAG;YACZ,+BAA+B;YAC/B,kBAAkB,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB;YACxF,qBAAqB;YACrB,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS;YACnE,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,qCAAqC;YACrF,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzD,CAAC;QAEF,wCAAwC;QACxC,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CACrC,OAAO,CAAC,GAAG,EAAE,EACb,WAAW,EACX,QAAQ,EACR,SAAS,CAAC,CAAC,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAC7C,CAAC;QACF,MAAM,qBAAqB,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;QAEvE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;YAC1C,EAAE,CAAC,SAAS,CAAC,qBAAqB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,yCAAyC;QACzC,4EAA4E;QAC5E,cAAc,CAAC,WAAW,GAAG,qBAAqB,CAAC;QAEnD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,cAAc,CAAC,WAAW,GAAG,kBAAkB,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC3C,CAAC;QAED,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC/D,MAAM,iBAAiB,GAAG,iBAAiB,CACzC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,SAAS,OAAO,CAAC,EACpD,OAAO,CAAC,UAAU,CACnB,CAAC;gBAEF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;oBACtC,wDAAwD;oBACxD,IAAI,eAAe,GAAa,EAAE,CAAC;oBACnC,IAAI,CAAC;wBACH,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;wBAC1C,eAAe,GAAG,KAAK;6BACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;6BAC/D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;oBACjE,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,kCAAkC,CAAC,CAAC;oBAC7E,CAAC;oBAED,OAAO;wBACL,MAAM,EAAE,EAAE;wBACV,KAAK,EAAE,gCAAgC,SAAS;;iCAE3B,iBAAiB;gBAClC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAuB,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB;aAC9G;6BACE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;6BACpB,IAAI,EAAE;qBACV,CAAC;gBACJ,CAAC;gBAED,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;gBACxE,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;oBACrC,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;gBACjC,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC,GAAG,EAAE,eAAe,EAAE,CAAC;oBACpD,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC;gBAC/C,CAAC;gBACD,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC;oBACjB,gEAAgE;oBAChE,MAAM,YAAY,GAAG;wBACnB,oBAAoB;wBACpB,gBAAgB;wBAChB,iBAAiB;wBACjB,wBAAwB;wBACxB,gBAAgB;wBAChB,iBAAiB;wBACjB,iBAAiB;wBACjB,iBAAiB;wBACjB,mBAAmB;wBACnB,mBAAmB;wBACnB,mBAAmB;wBACnB,mBAAmB;wBACnB,mBAAmB;wBACnB,mBAAmB;qBACpB,CAAC;oBACF,IAAI,OAAO,GAAG,EAAE,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;oBAElC,gDAAgD;oBAChD,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;oBAEtC,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;wBAC/B,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;4BACzC,OAAO,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;wBACrC,CAAC;oBACH,CAAC;oBACD,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;gBACzC,CAAC;gBAED,mDAAmD;gBACnD,MAAM,eAAe,GAAG,iBAAiB,CACvC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,GAAG,SAAS,KAAK,CAAC,EACjE,OAAO,CAAC,UAAU,CACnB,CAAC;gBAEF,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;oBACnC,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;gBAC1D,CAAC;gBAED,2DAA2D;gBAC3D,MAAM,YAAY,GAAG,iBAAiB,CACpC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,QAAQ,SAAS,OAAO,CAAC,EAC9D,OAAO,CAAC,UAAU,CACnB,CAAC;gBAEF,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;oBAChC,IAAI,CAAC;wBACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;wBACpE,MAAM,eAAe,GAAG,qBAAqB,CAAC;wBAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC;4BAAE,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;wBAExF,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;wBAC3D,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;wBAEjE,uGAAuG;wBACvG,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;wBAE1E,mEAAmE;wBACnE,IAAI,WAAW,GAAG,gBAAgB,CAAC;wBACnC,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;4BACxE,MAAM,CAAC,GAAG,MAAiC,CAAC;4BAC5C,WAAW,IAAI,KAAK,IAAI,KAAK,CAAC;4BAC9B,IAAI,CAAC,CAAC,OAAO;gCAAE,WAAW,IAAI,iBAAiB,CAAC,CAAC,OAAO,KAAK,CAAC;4BAC9D,IAAI,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gCACpC,WAAW,IAAI,aAAa,CAAC;gCAC7B,KAAK,MAAM,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;oCACzB,WAAW,IAAI,YAAY,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC;gCACnE,CAAC;4BACH,CAAC;4BACD,IAAI,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;gCACvC,WAAW,IAAI,YAAY,CAAC;gCAC5B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;oCAC3C,WAAW,IAAI,SAAS,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC;gCACrE,CAAC;4BACH,CAAC;4BACD,IAAI,CAAC,CAAC,GAAG;gCAAE,WAAW,IAAI,aAAa,CAAC,CAAC,GAAG,KAAK,CAAC;wBACpD,CAAC;wBACD,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;wBAEtD,IAAI,CAAC,MAAM;4BACT,OAAO,CAAC,KAAK,CACX,gFAAgF,eAAe,EAAE,CAClG,CAAC;oBACN,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,8BAA8B,CAAC,CAAC;oBAC/D,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC;oBAAE,MAAM,CAAC,CAAC;gBACxE,MAAM,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,iCAAiC,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QAED,0CAA0C;QAC1C,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,sBAAsB,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAE1F,gEAAgE;QAChE,MAAM,cAAc,GAAG,IAAI,CAAC;QAC5B,IAAI,SAAS,GAAG,WAAW,CAAC;QAC5B,IAAI,SAAS,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;YACtC,OAAO,CAAC,IAAI,CACV,4CAA4C,SAAS,CAAC,MAAM,MAAM,cAAc,QAAQ,CACzF,CAAC;YACF,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;QACrD,CAAC;QAED,sEAAsE;QACtE,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM;YAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAElC,qCAAqC;QACrC,MAAM,aAAa,GAAG,0BAA0B,CAAC,CAAC,4BAA4B;QAC9E,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,IAAI,aAAa,CAAC;QACrD,MAAM,KAAK,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;QAE9C,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC7E,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,cAAc,IAAI,cAAc,CAAC,SAAS,CAAC,CAAC;QAEnF,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,aAAa,GACjB,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;YACxB,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YACvB,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC;YACvB,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC5B,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,YAAY,GAAG,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC;QAErD,MAAM,cAAc,GAClB,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACzF,MAAM,aAAa,GAAG,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC;QAEvD,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAEjC,IAAI,aAAa,IAAI,YAAY,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,uBAAuB,CAAC,CAAC;YACpE,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACvC,oCAAoC;YACpC,OAAO,cAAc,CAAC,kBAAkB,CAAC;YACzC,OAAO,cAAc,CAAC,cAAc,CAAC;YACrC,OAAO,cAAc,CAAC,SAAS,CAAC;QAClC,CAAC;aAAM,IAAI,cAAc,IAAI,aAAa,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,wBAAwB,CAAC,CAAC;YACtE,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;YACxC,oCAAoC;YACpC,OAAO,cAAc,CAAC,kBAAkB,CAAC;YACzC,OAAO,cAAc,CAAC,cAAc,CAAC;YACrC,OAAO,cAAc,CAAC,SAAS,CAAC;YAChC,OAAO,cAAc,CAAC,cAAc,CAAC;QACvC,CAAC;aAAM,IAAI,aAAa,IAAI,YAAY,EAAE,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,2BAA2B,CAAC,CAAC;YACxE,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACN,iEAAiE;YACjE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,2BAA2B,CAAC,CAAC;YAC5E,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAC7C,CAAC;QAED,8CAA8C;QAC9C,MAAM,YAAY,GAAG,MAAM,gBAAgB,EAAE,CAAC;QAE9C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,uBAAuB,CAAC,CAAC;QACnF,CAAC;QAED,kCAAkC;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC;QACjE,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,aAAa,CAAC,CAAC;QACvE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAEjD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,MAAM,WAAW,GAAG,CAAC,KAAqB,EAAE,EAAE;gBAC5C,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,QAAQ,GAAG,IAAI,CAAC;oBAChB,OAAO,CAAC,KAAK,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC,CAAC;YAEF,MAAM,KAAK,GAAiB,KAAK,CAAC,YAAY,EAAE,SAAS,EAAE;gBACzD,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;gBACjC,KAAK,EAAE,IAAI,EAAE,oFAAoF;gBACjG,WAAW,EAAE,IAAI;gBACjB,GAAG,EAAE,cAAmC;aACzC,CAAC,CAAC;YAEH,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC;gBACd,KAAK,eAAe,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,SAAS,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;YACpH,CAAC;YAED,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,MAAM,GAAG,EAAE,CAAC;YAEhB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE;gBACrC,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC3B,IAAI,KAAK,CAAC,GAAG;oBAAE,KAAK,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;gBACvE,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;oBAChD,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvC,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC;gBAChB,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE;gBACrC,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC3B,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;oBAChD,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvC,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC;gBAChB,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC9B,KAAK,CAAC,IAAI,EAAE,CAAC;gBACb,+DAA+D;gBAC/D,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;wBAClB,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACxB,CAAC;gBACH,CAAC,EAAE,IAAI,CAAC,CAAC;gBACT,IAAI,KAAK,CAAC,GAAG;oBAAE,KAAK,mBAAmB,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;gBACvF,WAAW,CAAC;oBACV,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;oBACrB,KAAK,EAAE,SAAS;oBAChB,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;oBACnC,KAAK;oBACL,QAAQ,EAAE,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;iBAC9D,CAAC,CAAC;YACL,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAEnB,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAmB,EAAE,EAAE;gBAC9C,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,IAAI,KAAK,CAAC,GAAG;oBAAE,KAAK,mBAAmB,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;gBAE7G,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBAC1B,OAAO,WAAW,CAAC;wBACjB,MAAM,EAAE,EAAE;wBACV,KAAK,EAAE,aAAa,IAAI,EAAE;wBAC1B,SAAS,EAAE,MAAM,IAAI,MAAM;wBAC3B,KAAK;wBACL,QAAQ,EAAE,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;qBAC9D,CAAC,CAAC;gBACL,CAAC;gBAED,WAAW,CAAC;oBACV,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;oBACrB,SAAS,EAAE,SAAS;oBACpB,SAAS,EAAE,MAAM;oBACjB,KAAK;oBACL,QAAQ,EAAE,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;iBAC9D,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;gBAC/B,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,IAAI,KAAK,CAAC,GAAG;oBAAE,KAAK,mBAAmB,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;gBACvF,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,gBAAgB,GAAG,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;YACnF,CAAC,CAAC,CAAC;YAEH,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChB,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YACpB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAE5B,OAAwB;IAExB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC9D,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAChD,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACtC,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC9C,CAAC,EAAE;YACD,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;YAClC,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;YAC1B,MAAM,EAAE,QAAQ;SACjB,CAAC,CAAC;QAEH,qBAAqB;QACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,yBAAyB;QACzB,IAAI,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YAC1C,MAAM,aAAa,CACjB,OAAO,CAAC,SAAS,EACjB,MAAM,CAAC,SAAS,EAChB,OAAO,CAAC,UAAU,EAClB,QAAQ,CACT,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,mBAAmB;QACnB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,MAAM,CAAC,KAAK,CAAC;YACX,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YAC7D,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,EAAE,sBAAsB,CAAC,CAAC;QAE3B,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -3,6 +3,9 @@ export interface RunAgentOptions {
3
3
  agentName?: string;
4
4
  sessionId?: string;
5
5
  autoResume?: boolean;
6
+ cwd?: string;
7
+ configPath?: string;
8
+ silent?: boolean;
6
9
  }
7
10
  export interface RunAgentResult {
8
11
  result: string;
@@ -13,7 +16,11 @@ export interface RunAgentResult {
13
16
  export declare class OpenClawRunner {
14
17
  private config;
15
18
  private timeoutMs;
19
+ private tempFiles;
20
+ private MAX_BUF;
16
21
  constructor();
22
+ private cleanupTempFiles;
17
23
  runAgent(options: RunAgentOptions): Promise<RunAgentResult>;
24
+ private runAgentInternal;
18
25
  }
19
26
  //# sourceMappingURL=OpenClawRunner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OpenClawRunner.d.ts","sourceRoot":"","sources":["../../src/services/OpenClawRunner.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;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;CACpB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAS;;IAOpB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;CAoGlE"}
1
+ {"version":3,"file":"OpenClawRunner.d.ts","sourceRoot":"","sources":["../../src/services/OpenClawRunner.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,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,cAAc;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,OAAO,CAAoB;;IAOnC,OAAO,CAAC,gBAAgB;IAclB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;YAgBnD,gBAAgB;CAsH/B"}