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
@@ -3,21 +3,53 @@ import path from 'path';
3
3
  import { spawn } from 'child_process';
4
4
  import { CONFIG, resolveConfigPath } from '../lib/config.js';
5
5
  import { getLastSessionId, saveSessionId } from '../lib/sessions.js';
6
- import { registerProcess, appendOutput, updateProcessStatus } from '../lib/processRegistry.js';
6
+ import { interpolateEnvVars } from '../lib/envUtils.js';
7
+ import { withSpan } from '../lib/telemetry.js';
8
+ import pino from 'pino';
9
+ import { registerProcess, appendOutput, updateProcessStatus, } from '../lib/processRegistry.js';
10
+ const logger = pino({ name: 'OpenClawRunner' });
7
11
  export class OpenClawRunner {
8
12
  config;
9
13
  timeoutMs;
14
+ tempFiles = [];
15
+ MAX_BUF = 10 * 1024 * 1024; // 10MB
10
16
  constructor() {
11
17
  this.config = CONFIG.CLAUDE;
12
- this.timeoutMs = CONFIG.TIMEOUT_MS || 30000;
18
+ this.timeoutMs = CONFIG.TIMEOUT_MS || 900000;
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) {
35
+ return withSpan('openclaw.runAgent', async (span) => {
36
+ span.setAttribute('agentName', options.agentName || '');
37
+ span.setAttribute('runner', 'openclaw');
38
+ const result = await this.runAgentInternal(options);
39
+ this.cleanupTempFiles();
40
+ if (options.agentName && result.sessionId) {
41
+ await saveSessionId(options.agentName, result.sessionId, options.configPath, 'openclaw');
42
+ }
43
+ return result;
44
+ }, { agentName: options.agentName || '', runner: 'openclaw' });
45
+ }
46
+ async runAgentInternal(options) {
15
47
  const { prompt, agentName, autoResume } = options;
16
48
  let { sessionId } = options;
17
49
  const { PATHS } = this.config;
18
50
  // --- Auto Resume ---
19
51
  if (autoResume && agentName && !sessionId) {
20
- const lastId = await getLastSessionId(agentName);
52
+ const lastId = await getLastSessionId(agentName, options.configPath, 'openclaw');
21
53
  if (lastId) {
22
54
  sessionId = lastId;
23
55
  }
@@ -26,16 +58,18 @@ export class OpenClawRunner {
26
58
  // --- Isolation ---
27
59
  if (agentName) {
28
60
  try {
29
- const agentSettingsPath = resolveConfigPath(path.join(path.dirname(PATHS.SETTINGS), `settings_${agentName}.json`));
61
+ const agentSettingsPath = resolveConfigPath(path.join(path.dirname(PATHS.SETTINGS), `settings_${agentName}.json`), options.configPath);
30
62
  if (fs.existsSync(agentSettingsPath)) {
31
- const settings = JSON.parse(fs.readFileSync(agentSettingsPath, 'utf8'));
63
+ let settings = JSON.parse(fs.readFileSync(agentSettingsPath, 'utf8'));
64
+ // --- New interpolation logic ---
65
+ settings = interpolateEnvVars(settings);
32
66
  if (settings.env && settings.env.AGENT_TIMEOUT_MS) {
33
67
  customTimeoutMs = parseInt(settings.env.AGENT_TIMEOUT_MS, 10) || customTimeoutMs;
34
68
  }
35
69
  }
36
70
  }
37
- catch (_e) {
38
- // silent
71
+ catch (err) {
72
+ logger.warn({ agentName, error: err }, 'Failed to load agent settings');
39
73
  }
40
74
  }
41
75
  // OpenClaw CLI: `openclaw message send "prompt"` for programmatic invocation
@@ -44,7 +78,7 @@ export class OpenClawRunner {
44
78
  const isWin = process.platform === 'win32';
45
79
  const command = isWin ? 'openclaw.cmd' : 'openclaw';
46
80
  const child = spawn(command, argsSpawn, {
47
- cwd: process.cwd(),
81
+ cwd: options.cwd || process.cwd(),
48
82
  shell: isWin,
49
83
  windowsHide: true,
50
84
  env: {
@@ -53,36 +87,55 @@ export class OpenClawRunner {
53
87
  },
54
88
  });
55
89
  if (child.pid) {
56
- registerProcess(child.pid, { agentName: agentName || 'unknown', runner: 'openclaw' }).catch(() => { });
90
+ void registerProcess(child.pid, { agentName: agentName || '', runner: 'openclaw', configPath: options.configPath });
57
91
  }
58
92
  let stdout = '';
59
93
  let stderr = '';
60
- if (child.stdout) {
94
+ let hardTimeoutTimer = null;
95
+ const cleanup = () => {
96
+ child.stdout?.removeAllListeners();
97
+ child.stderr?.removeAllListeners();
98
+ child.removeAllListeners();
99
+ if (hardTimeoutTimer)
100
+ clearTimeout(hardTimeoutTimer);
101
+ };
102
+ if (child.stdout)
61
103
  child.stdout.on('data', (d) => {
62
- stdout += d.toString();
104
+ const chunk = d.toString();
63
105
  if (child.pid)
64
- appendOutput(child.pid, d.toString()).catch(() => { });
106
+ void appendOutput(child.pid, chunk, options.configPath);
107
+ if (stdout.length + d.length > this.MAX_BUF)
108
+ stdout = stdout.slice(-this.MAX_BUF);
109
+ else
110
+ stdout += chunk;
111
+ });
112
+ if (child.stderr)
113
+ child.stderr.on('data', (d) => {
114
+ if (stderr.length + d.length > this.MAX_BUF)
115
+ stderr = stderr.slice(-this.MAX_BUF);
116
+ else
117
+ stderr += d.toString();
65
118
  });
66
- }
67
- if (child.stderr) {
68
- child.stderr.on('data', (d) => (stderr += d.toString()));
69
- }
70
119
  const timeout = setTimeout(() => {
71
- child.kill();
120
+ child.kill('SIGTERM');
121
+ hardTimeoutTimer = setTimeout(() => {
122
+ if (!child.killed)
123
+ child.kill('SIGKILL');
124
+ }, 5000);
125
+ cleanup();
72
126
  if (child.pid)
73
- updateProcessStatus(child.pid, 'failed', null).catch(() => { });
127
+ void updateProcessStatus(child.pid, 'failed', null, options.configPath);
74
128
  resolve({ result: '', error: 'TIMEOUT', rawOutput: stdout });
75
129
  }, customTimeoutMs);
76
130
  child.on('close', async (code) => {
77
131
  clearTimeout(timeout);
78
- if (child.pid) {
79
- updateProcessStatus(child.pid, code === 0 ? 'done' : 'failed', code).catch(() => { });
80
- }
132
+ if (child.pid)
133
+ void updateProcessStatus(child.pid, code === 0 ? 'done' : 'failed', code, options.configPath);
81
134
  if (code !== 0 && !stdout) {
82
135
  return resolve({ result: '', error: `EXIT_CODE_${code}`, rawOutput: stderr });
83
136
  }
84
137
  if (agentName && sessionId) {
85
- await saveSessionId(agentName, sessionId);
138
+ await saveSessionId(agentName, sessionId, options.configPath, 'openclaw');
86
139
  }
87
140
  resolve({
88
141
  result: stdout.trim(),
@@ -1 +1 @@
1
- {"version":3,"file":"OpenClawRunner.js","sourceRoot":"","sources":["../../src/services/OpenClawRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OpenClawRunner.js","sourceRoot":"","sources":["../../src/services/OpenClawRunner.ts"],"names":[],"mappings":"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"}
@@ -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 OpenCodeRunner {
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=OpenCodeRunner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OpenCodeRunner.d.ts","sourceRoot":"","sources":["../../src/services/OpenCodeRunner.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;CAqGlE"}
1
+ {"version":3,"file":"OpenCodeRunner.d.ts","sourceRoot":"","sources":["../../src/services/OpenCodeRunner.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;CAuH/B"}
@@ -3,21 +3,53 @@ import path from 'path';
3
3
  import { spawn } from 'child_process';
4
4
  import { CONFIG, resolveConfigPath } from '../lib/config.js';
5
5
  import { getLastSessionId, saveSessionId } from '../lib/sessions.js';
6
- import { registerProcess, appendOutput, updateProcessStatus } from '../lib/processRegistry.js';
6
+ import { interpolateEnvVars } from '../lib/envUtils.js';
7
+ import { withSpan } from '../lib/telemetry.js';
8
+ import pino from 'pino';
9
+ import { registerProcess, appendOutput, updateProcessStatus, } from '../lib/processRegistry.js';
10
+ const logger = pino({ name: 'OpenCodeRunner' });
7
11
  export class OpenCodeRunner {
8
12
  config;
9
13
  timeoutMs;
14
+ tempFiles = [];
15
+ MAX_BUF = 10 * 1024 * 1024; // 10MB
10
16
  constructor() {
11
17
  this.config = CONFIG.CLAUDE;
12
- this.timeoutMs = CONFIG.TIMEOUT_MS || 30000;
18
+ this.timeoutMs = CONFIG.TIMEOUT_MS || 900000;
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) {
35
+ return withSpan('opencode.runAgent', async (span) => {
36
+ span.setAttribute('agentName', options.agentName || '');
37
+ span.setAttribute('runner', 'opencode');
38
+ const result = await this.runAgentInternal(options);
39
+ this.cleanupTempFiles();
40
+ if (options.agentName && result.sessionId) {
41
+ await saveSessionId(options.agentName, result.sessionId, options.configPath, 'opencode');
42
+ }
43
+ return result;
44
+ }, { agentName: options.agentName || '', runner: 'opencode' });
45
+ }
46
+ async runAgentInternal(options) {
15
47
  const { prompt, agentName, autoResume } = options;
16
48
  let { sessionId } = options;
17
49
  const { PATHS } = this.config;
18
50
  // --- Auto Resume ---
19
51
  if (autoResume && agentName && !sessionId) {
20
- const lastId = await getLastSessionId(agentName);
52
+ const lastId = await getLastSessionId(agentName, options.configPath, 'opencode');
21
53
  if (lastId) {
22
54
  sessionId = lastId;
23
55
  }
@@ -26,16 +58,18 @@ export class OpenCodeRunner {
26
58
  // --- Isolation ---
27
59
  if (agentName) {
28
60
  try {
29
- const agentSettingsPath = resolveConfigPath(path.join(path.dirname(PATHS.SETTINGS), `settings_${agentName}.json`));
61
+ const agentSettingsPath = resolveConfigPath(path.join(path.dirname(PATHS.SETTINGS), `settings_${agentName}.json`), options.configPath);
30
62
  if (fs.existsSync(agentSettingsPath)) {
31
- const settings = JSON.parse(fs.readFileSync(agentSettingsPath, 'utf8'));
63
+ let settings = JSON.parse(fs.readFileSync(agentSettingsPath, 'utf8'));
64
+ // --- New interpolation logic ---
65
+ settings = interpolateEnvVars(settings);
32
66
  if (settings.env && settings.env.AGENT_TIMEOUT_MS) {
33
67
  customTimeoutMs = parseInt(settings.env.AGENT_TIMEOUT_MS, 10) || customTimeoutMs;
34
68
  }
35
69
  }
36
70
  }
37
- catch (_e) {
38
- // silent
71
+ catch (err) {
72
+ logger.warn({ agentName, error: err }, 'Failed to load agent settings');
39
73
  }
40
74
  }
41
75
  // OpenCode CLI: `opencode run "prompt"` for non-interactive execution
@@ -46,7 +80,7 @@ export class OpenCodeRunner {
46
80
  const isWin = process.platform === 'win32';
47
81
  const command = isWin ? 'opencode.exe' : 'opencode';
48
82
  const child = spawn(command, argsSpawn, {
49
- cwd: process.cwd(),
83
+ cwd: options.cwd || process.cwd(),
50
84
  shell: isWin,
51
85
  windowsHide: true,
52
86
  env: {
@@ -55,36 +89,55 @@ export class OpenCodeRunner {
55
89
  },
56
90
  });
57
91
  if (child.pid) {
58
- registerProcess(child.pid, { agentName: agentName || 'unknown', runner: 'opencode' }).catch(() => { });
92
+ void registerProcess(child.pid, { agentName: agentName || '', runner: 'opencode', configPath: options.configPath });
59
93
  }
60
94
  let stdout = '';
61
95
  let stderr = '';
62
- if (child.stdout) {
96
+ let hardTimeoutTimer = null;
97
+ const cleanup = () => {
98
+ child.stdout?.removeAllListeners();
99
+ child.stderr?.removeAllListeners();
100
+ child.removeAllListeners();
101
+ if (hardTimeoutTimer)
102
+ clearTimeout(hardTimeoutTimer);
103
+ };
104
+ if (child.stdout)
63
105
  child.stdout.on('data', (d) => {
64
- stdout += d.toString();
106
+ const chunk = d.toString();
65
107
  if (child.pid)
66
- appendOutput(child.pid, d.toString()).catch(() => { });
108
+ void appendOutput(child.pid, chunk, options.configPath);
109
+ if (stdout.length + d.length > this.MAX_BUF)
110
+ stdout = stdout.slice(-this.MAX_BUF);
111
+ else
112
+ stdout += chunk;
113
+ });
114
+ if (child.stderr)
115
+ child.stderr.on('data', (d) => {
116
+ if (stderr.length + d.length > this.MAX_BUF)
117
+ stderr = stderr.slice(-this.MAX_BUF);
118
+ else
119
+ stderr += d.toString();
67
120
  });
68
- }
69
- if (child.stderr) {
70
- child.stderr.on('data', (d) => (stderr += d.toString()));
71
- }
72
121
  const timeout = setTimeout(() => {
73
- child.kill();
122
+ child.kill('SIGTERM');
123
+ hardTimeoutTimer = setTimeout(() => {
124
+ if (!child.killed)
125
+ child.kill('SIGKILL');
126
+ }, 5000);
127
+ cleanup();
74
128
  if (child.pid)
75
- updateProcessStatus(child.pid, 'failed', null).catch(() => { });
129
+ void updateProcessStatus(child.pid, 'failed', null, options.configPath);
76
130
  resolve({ result: '', error: 'TIMEOUT', rawOutput: stdout });
77
131
  }, customTimeoutMs);
78
132
  child.on('close', async (code) => {
79
133
  clearTimeout(timeout);
80
- if (child.pid) {
81
- updateProcessStatus(child.pid, code === 0 ? 'done' : 'failed', code).catch(() => { });
82
- }
134
+ if (child.pid)
135
+ void updateProcessStatus(child.pid, code === 0 ? 'done' : 'failed', code, options.configPath);
83
136
  if (code !== 0 && !stdout) {
84
137
  return resolve({ result: '', error: `EXIT_CODE_${code}`, rawOutput: stderr });
85
138
  }
86
139
  if (agentName && sessionId) {
87
- await saveSessionId(agentName, sessionId);
140
+ await saveSessionId(agentName, sessionId, options.configPath, 'opencode');
88
141
  }
89
142
  resolve({
90
143
  result: stdout.trim(),
@@ -1 +1 @@
1
- {"version":3,"file":"OpenCodeRunner.js","sourceRoot":"","sources":["../../src/services/OpenCodeRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OpenCodeRunner.js","sourceRoot":"","sources":["../../src/services/OpenCodeRunner.ts"],"names":[],"mappings":"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"}
@@ -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;
@@ -10,10 +13,14 @@ export interface RunAgentResult {
10
13
  error?: string;
11
14
  rawOutput?: string;
12
15
  }
13
- export declare class TraeRunner {
16
+ export declare class QwenCLIRunner {
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
- //# sourceMappingURL=TraeRunner.d.ts.map
26
+ //# sourceMappingURL=QwenCliRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QwenCliRunner.d.ts","sourceRoot":"","sources":["../../src/services/QwenCliRunner.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,aAAa;IACxB,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;CAuH/B"}
@@ -0,0 +1,155 @@
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 { withSpan } from '../lib/telemetry.js';
8
+ import pino from 'pino';
9
+ import { registerProcess, appendOutput, updateProcessStatus, } from '../lib/processRegistry.js';
10
+ const logger = pino({ name: 'QwenCliRunner' });
11
+ export class QwenCLIRunner {
12
+ config;
13
+ timeoutMs;
14
+ tempFiles = [];
15
+ MAX_BUF = 10 * 1024 * 1024; // 10MB
16
+ constructor() {
17
+ this.config = CONFIG.CLAUDE;
18
+ this.timeoutMs = CONFIG.TIMEOUT_MS || 900000;
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 = [];
33
+ }
34
+ async runAgent(options) {
35
+ return withSpan('qwencli.runAgent', async (span) => {
36
+ span.setAttribute('agentName', options.agentName || '');
37
+ span.setAttribute('runner', 'qwencli');
38
+ const result = await this.runAgentInternal(options);
39
+ this.cleanupTempFiles();
40
+ if (options.agentName && result.sessionId) {
41
+ await saveSessionId(options.agentName, result.sessionId, options.configPath, 'qwencli');
42
+ }
43
+ return result;
44
+ }, { agentName: options.agentName || '', runner: 'qwencli' });
45
+ }
46
+ async runAgentInternal(options) {
47
+ const { prompt, agentName, autoResume } = options;
48
+ let { sessionId } = options;
49
+ const { PATHS } = this.config;
50
+ // --- Auto Resume ---
51
+ if (autoResume && agentName && !sessionId) {
52
+ const lastId = await getLastSessionId(agentName, options.configPath, 'qwencli');
53
+ if (lastId) {
54
+ sessionId = lastId;
55
+ }
56
+ }
57
+ let customTimeoutMs = this.timeoutMs;
58
+ // --- Isolation ---
59
+ if (agentName) {
60
+ try {
61
+ const agentSettingsPath = resolveConfigPath(path.join(path.dirname(PATHS.SETTINGS), `settings_${agentName}.json`), options.configPath);
62
+ if (fs.existsSync(agentSettingsPath)) {
63
+ let settings = JSON.parse(fs.readFileSync(agentSettingsPath, 'utf8'));
64
+ // --- New interpolation logic ---
65
+ settings = interpolateEnvVars(settings);
66
+ if (settings.env && settings.env.AGENT_TIMEOUT_MS) {
67
+ customTimeoutMs = parseInt(settings.env.AGENT_TIMEOUT_MS, 10) || customTimeoutMs;
68
+ }
69
+ }
70
+ }
71
+ catch (err) {
72
+ logger.warn({ agentName, error: err }, 'Failed to load agent settings');
73
+ }
74
+ }
75
+ // qwen-code CLI: `qwen -p "prompt"` (non-interactive mode via stdin)
76
+ const argsSpawn = ['-p', prompt];
77
+ return new Promise((resolve) => {
78
+ const isWin = process.platform === 'win32';
79
+ // `qwen` binary from @qwen-code/qwen-code global install
80
+ const command = isWin ? 'qwen.cmd' : 'qwen';
81
+ const child = spawn(command, argsSpawn, {
82
+ cwd: options.cwd || process.cwd(),
83
+ shell: isWin,
84
+ windowsHide: true,
85
+ env: {
86
+ ...process.env,
87
+ ...(agentName ? { OVERMIND_AGENT_NAME: agentName } : {}),
88
+ },
89
+ });
90
+ if (child.pid) {
91
+ void registerProcess(child.pid, { agentName: agentName || '', runner: 'qwencli', configPath: options.configPath });
92
+ }
93
+ let stdout = '';
94
+ let stderr = '';
95
+ let hardTimeoutTimer = null;
96
+ const cleanup = () => {
97
+ child.stdout?.removeAllListeners();
98
+ child.stderr?.removeAllListeners();
99
+ child.removeAllListeners();
100
+ if (hardTimeoutTimer)
101
+ clearTimeout(hardTimeoutTimer);
102
+ };
103
+ if (child.stdout)
104
+ child.stdout.on('data', (d) => {
105
+ const chunk = d.toString();
106
+ if (child.pid)
107
+ void appendOutput(child.pid, chunk, options.configPath);
108
+ if (stdout.length + d.length > this.MAX_BUF)
109
+ stdout = stdout.slice(-this.MAX_BUF);
110
+ else
111
+ stdout += chunk;
112
+ });
113
+ if (child.stderr)
114
+ child.stderr.on('data', (d) => {
115
+ if (stderr.length + d.length > this.MAX_BUF)
116
+ stderr = stderr.slice(-this.MAX_BUF);
117
+ else
118
+ stderr += d.toString();
119
+ });
120
+ const timeout = setTimeout(() => {
121
+ child.kill('SIGTERM');
122
+ hardTimeoutTimer = setTimeout(() => {
123
+ if (!child.killed)
124
+ child.kill('SIGKILL');
125
+ }, 5000);
126
+ cleanup();
127
+ if (child.pid)
128
+ void updateProcessStatus(child.pid, 'failed', null, options.configPath);
129
+ resolve({ result: '', error: 'TIMEOUT', rawOutput: stdout });
130
+ }, customTimeoutMs);
131
+ child.on('close', async (code) => {
132
+ clearTimeout(timeout);
133
+ if (child.pid)
134
+ void updateProcessStatus(child.pid, code === 0 ? 'done' : 'failed', code, options.configPath);
135
+ if (code !== 0 && !stdout) {
136
+ return resolve({ result: '', error: `EXIT_CODE_${code}`, rawOutput: stderr });
137
+ }
138
+ if (agentName && sessionId) {
139
+ await saveSessionId(agentName, sessionId, options.configPath, 'qwencli');
140
+ }
141
+ resolve({
142
+ result: stdout.trim(),
143
+ sessionId,
144
+ rawOutput: stdout,
145
+ });
146
+ });
147
+ child.on('error', (err) => {
148
+ resolve({ result: '', error: err.message, rawOutput: '' });
149
+ });
150
+ if (child.stdin)
151
+ child.stdin.end();
152
+ });
153
+ }
154
+ }
155
+ //# sourceMappingURL=QwenCliRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QwenCliRunner.js","sourceRoot":"","sources":["../../src/services/QwenCliRunner.ts"],"names":[],"mappings":"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"}
@@ -73,16 +73,16 @@ export declare const agentControlSchema: z.ZodObject<{
73
73
  gemini: "gemini";
74
74
  kilo: "kilo";
75
75
  qwencli: "qwencli";
76
+ hermes: "hermes";
76
77
  openclaw: "openclaw";
77
78
  cline: "cline";
78
79
  opencode: "opencode";
79
- hermes: "hermes";
80
80
  }>>;
81
81
  config: z.ZodOptional<z.ZodString>;
82
82
  action: z.ZodEnum<{
83
83
  status: "status";
84
- stream: "stream";
85
84
  kill: "kill";
85
+ stream: "stream";
86
86
  wait: "wait";
87
87
  }>;
88
88
  timeoutMs: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;