overmind-mcp 3.4.3 → 3.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.
@@ -0,0 +1,82 @@
1
+ /**
2
+ * HermesGatewayRunner — HTTP-based runner for the Hermes API Server.
3
+ *
4
+ * ╔══════════════════════════════════════════════════════════════════════╗
5
+ * ║ ARCHITECTURE (v3.5 — Gateway Integration) ║
6
+ * ║ ║
7
+ * ║ Replaces the subprocess spawn in HermesRunner with HTTP+SSE calls ║
8
+ * ║ to the Hermes API Server (gateway/platforms/api_server.py). ║
9
+ * ║ ║
10
+ * ║ BENEFITS over HermesRunner (spawn): ║
11
+ * ║ - No Python startup per call (~5-10s saved) ║
12
+ * ║ - SSE streaming output in real-time ║
13
+ * ║ - Native session management via X-Hermes-Session-Id header ║
14
+ * ║ - Proper abort via fetch AbortController ║
15
+ * ║ - Model/provider swap via config, not CLI flags ║
16
+ * ║ ║
17
+ * ║ ENDPOINTS USED: ║
18
+ * ║ POST /v1/chat/completions → main chat (streaming SSE or JSON) ║
19
+ * ║ GET /health → connectivity check ║
20
+ * ║ ║
21
+ * ║ FALLBACK: ║
22
+ * ║ If the API server is not running, falls back to HermesRunner ║
23
+ * ║ (subprocess spawn) for backward compatibility. ║
24
+ * ╚══════════════════════════════════════════════════════════════════════╝
25
+ */
26
+ export interface GatewayRunOptions {
27
+ prompt: string;
28
+ agentName?: string;
29
+ sessionId?: string;
30
+ autoResume?: boolean;
31
+ model?: string;
32
+ provider?: string;
33
+ signal?: AbortSignal;
34
+ silent?: boolean;
35
+ /** Profile name for Hermes (maps to -p flag in spawn mode) */
36
+ profile?: string;
37
+ }
38
+ export interface GatewayRunResult {
39
+ result: string;
40
+ sessionId?: string;
41
+ error?: string;
42
+ rawOutput?: string;
43
+ model?: string;
44
+ /** How the run was executed */
45
+ transport: 'gateway-http' | 'fallback-spawn';
46
+ }
47
+ /**
48
+ * Runner that talks to the Hermes API Server via HTTP+SSE.
49
+ *
50
+ * Falls back to HermesRunner (subprocess spawn) if the API server is not
51
+ * available — ensuring zero downtime during the migration.
52
+ */
53
+ export declare class HermesGatewayRunner {
54
+ private manager;
55
+ constructor();
56
+ /**
57
+ * Run a prompt against the Hermes API Server.
58
+ *
59
+ * If the server is not reachable, returns an error with transport='fallback-spawn'
60
+ * so the caller can decide to use the old HermesRunner.
61
+ */
62
+ runAgent(options: GatewayRunOptions): Promise<GatewayRunResult>;
63
+ /**
64
+ * Execute a chat completion against the API server.
65
+ *
66
+ * Uses streaming SSE to get real-time output, assembling the final
67
+ * text from delta chunks.
68
+ */
69
+ private executeChat;
70
+ /**
71
+ * Parse the SSE stream from /v1/chat/completions.
72
+ *
73
+ * Format (OpenAI-compatible):
74
+ * data: {"choices":[{"delta":{"content":"hello"}}]}
75
+ * data: {"choices":[{"delta":{"content":" world"}}]}
76
+ * data: [DONE]
77
+ *
78
+ * Assembles full text, streams chunks to agent_lifecycle in real-time.
79
+ */
80
+ private parseSSEStream;
81
+ }
82
+ //# sourceMappingURL=HermesGatewayRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HermesGatewayRunner.d.ts","sourceRoot":"","sources":["../../src/services/HermesGatewayRunner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAiBH,MAAM,WAAW,iBAAiB;IAChC,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,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,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,+BAA+B;IAC/B,SAAS,EAAE,cAAc,GAAG,gBAAgB,CAAC;CAC9C;AAQD;;;;;GAKG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,OAAO,CAAuB;;IAMtC;;;;;OAKG;IACG,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuFrE;;;;;OAKG;YACW,WAAW;IAwEzB;;;;;;;;;OASG;YACW,cAAc;CA8D7B"}
@@ -0,0 +1,249 @@
1
+ /**
2
+ * HermesGatewayRunner — HTTP-based runner for the Hermes API Server.
3
+ *
4
+ * ╔══════════════════════════════════════════════════════════════════════╗
5
+ * ║ ARCHITECTURE (v3.5 — Gateway Integration) ║
6
+ * ║ ║
7
+ * ║ Replaces the subprocess spawn in HermesRunner with HTTP+SSE calls ║
8
+ * ║ to the Hermes API Server (gateway/platforms/api_server.py). ║
9
+ * ║ ║
10
+ * ║ BENEFITS over HermesRunner (spawn): ║
11
+ * ║ - No Python startup per call (~5-10s saved) ║
12
+ * ║ - SSE streaming output in real-time ║
13
+ * ║ - Native session management via X-Hermes-Session-Id header ║
14
+ * ║ - Proper abort via fetch AbortController ║
15
+ * ║ - Model/provider swap via config, not CLI flags ║
16
+ * ║ ║
17
+ * ║ ENDPOINTS USED: ║
18
+ * ║ POST /v1/chat/completions → main chat (streaming SSE or JSON) ║
19
+ * ║ GET /health → connectivity check ║
20
+ * ║ ║
21
+ * ║ FALLBACK: ║
22
+ * ║ If the API server is not running, falls back to HermesRunner ║
23
+ * ║ (subprocess spawn) for backward compatibility. ║
24
+ * ╚══════════════════════════════════════════════════════════════════════╝
25
+ */
26
+ import { HermesGatewayManager } from './HermesGatewayManager.js';
27
+ import { registerLiveAgent, appendLiveOutput, setLiveStatus, unregisterLiveAgent, } from '../lib/agent_lifecycle.js';
28
+ import { registerProcess } from '../lib/processRegistry.js';
29
+ import { withSpan } from '../lib/telemetry.js';
30
+ import { rootLogger } from '../lib/logger.js';
31
+ import { saveSessionId, getLastSessionId } from '../lib/sessions.js';
32
+ import { getWorkspaceDir } from '../lib/config.js';
33
+ const logger = rootLogger.child({ module: 'HermesGatewayRunner' });
34
+ /** Pseudo-PID for gateway runs (no real OS process to track) */
35
+ let gatewayPidCounter = 70000;
36
+ /** In-memory session map for gateway runs: agentName → sessionId */
37
+ const gatewaySessions = new Map();
38
+ /**
39
+ * Runner that talks to the Hermes API Server via HTTP+SSE.
40
+ *
41
+ * Falls back to HermesRunner (subprocess spawn) if the API server is not
42
+ * available — ensuring zero downtime during the migration.
43
+ */
44
+ export class HermesGatewayRunner {
45
+ manager;
46
+ constructor() {
47
+ this.manager = HermesGatewayManager.getInstance();
48
+ }
49
+ /**
50
+ * Run a prompt against the Hermes API Server.
51
+ *
52
+ * If the server is not reachable, returns an error with transport='fallback-spawn'
53
+ * so the caller can decide to use the old HermesRunner.
54
+ */
55
+ async runAgent(options) {
56
+ const { agentName } = options;
57
+ let { sessionId } = options;
58
+ // ─── Resolve session ──────────────────────────────────────────────────
59
+ if (options.autoResume && agentName && !sessionId) {
60
+ // Try in-memory gateway sessions first
61
+ const gwSession = gatewaySessions.get(agentName);
62
+ if (gwSession) {
63
+ sessionId = gwSession;
64
+ }
65
+ else {
66
+ // Fall back to persisted sessions (from spawn mode)
67
+ const lastId = await getLastSessionId(agentName, getWorkspaceDir(), 'hermes');
68
+ if (lastId) {
69
+ sessionId = lastId;
70
+ logger.info({ sessionId }, '[GatewayRunner] Auto-resume from persisted sessions.');
71
+ }
72
+ }
73
+ }
74
+ return withSpan('hermes.gateway.runAgent', async (span) => {
75
+ span.setAttribute('agentName', agentName || '');
76
+ span.setAttribute('transport', 'gateway-http');
77
+ // ─── Ensure gateway is ready ──────────────────────────────────────
78
+ const gw = await this.manager.ensureReady();
79
+ if (!gw) {
80
+ return {
81
+ result: '',
82
+ error: 'GATEWAY_NOT_READY',
83
+ transport: 'fallback-spawn',
84
+ };
85
+ }
86
+ // ─── Register a pseudo-agent for lifecycle tracking ───────────────
87
+ const pseudoPid = ++gatewayPidCounter;
88
+ const abortController = new AbortController();
89
+ registerLiveAgent({
90
+ pid: pseudoPid,
91
+ runner: 'hermes-gateway',
92
+ agentName: agentName || 'anonymous',
93
+ sessionId: sessionId || '',
94
+ abortController,
95
+ cleanupFn: async () => {
96
+ abortController.abort();
97
+ },
98
+ childRef: null, // No child process — HTTP-based
99
+ });
100
+ // Also register in processRegistry for cross-system visibility
101
+ void registerProcess(pseudoPid, {
102
+ agentName: agentName || '',
103
+ runner: 'hermes-gateway',
104
+ configPath: getWorkspaceDir(),
105
+ });
106
+ try {
107
+ const result = await this.executeChat(gw, options, sessionId, pseudoPid, abortController.signal);
108
+ // Save session linkage
109
+ if (result.sessionId && agentName) {
110
+ gatewaySessions.set(agentName, result.sessionId);
111
+ await saveSessionId(agentName, result.sessionId, getWorkspaceDir(), 'hermes');
112
+ }
113
+ setLiveStatus(pseudoPid, result.error ? 'failed' : 'done', result.error ? 1 : 0);
114
+ return result;
115
+ }
116
+ catch (error) {
117
+ const errMsg = error instanceof Error ? error.message : String(error);
118
+ logger.error({ error: errMsg, agentName }, '[GatewayRunner] Run failed.');
119
+ setLiveStatus(pseudoPid, 'failed', 1);
120
+ return {
121
+ result: '',
122
+ error: `GATEWAY_ERROR: ${errMsg}`,
123
+ transport: 'gateway-http',
124
+ };
125
+ }
126
+ finally {
127
+ unregisterLiveAgent(pseudoPid);
128
+ }
129
+ }, { agentName: agentName || '', transport: 'gateway-http' });
130
+ }
131
+ /**
132
+ * Execute a chat completion against the API server.
133
+ *
134
+ * Uses streaming SSE to get real-time output, assembling the final
135
+ * text from delta chunks.
136
+ */
137
+ async executeChat(gw, options, sessionId, pseudoPid, externalSignal) {
138
+ const { prompt, agentName, silent } = options;
139
+ // Build request headers
140
+ const headers = {
141
+ 'Content-Type': 'application/json',
142
+ Authorization: `Bearer ${gw.apiKey}`,
143
+ };
144
+ // Session management via header
145
+ if (sessionId) {
146
+ headers['X-Hermes-Session-Id'] = sessionId;
147
+ }
148
+ // Profile selection via header (maps to -p <profile>)
149
+ const profile = options.profile || agentName;
150
+ if (profile && profile !== 'default') {
151
+ headers['X-Hermes-Profile'] = profile;
152
+ }
153
+ // Build request body (OpenAI chat completions format)
154
+ const body = {
155
+ model: options.model || 'hermes-agent',
156
+ messages: [{ role: 'user', content: prompt }],
157
+ stream: true, // Always stream — we assemble the final text
158
+ };
159
+ // Combine abort signals
160
+ const combinedSignal = externalSignal;
161
+ logger.info({ url: gw.url, agentName, sessionId: sessionId?.slice(0, 20), profile }, '[GatewayRunner] POST /v1/chat/completions (streaming)');
162
+ const response = await fetch(`${gw.url}/v1/chat/completions`, {
163
+ method: 'POST',
164
+ headers,
165
+ body: JSON.stringify(body),
166
+ signal: combinedSignal,
167
+ });
168
+ if (!response.ok) {
169
+ const errText = await response.text().catch(() => '(no body)');
170
+ return {
171
+ result: '',
172
+ error: `HTTP_${response.status}: ${errText.slice(0, 500)}`,
173
+ transport: 'gateway-http',
174
+ };
175
+ }
176
+ // ─── Parse SSE stream ────────────────────────────────────────────────
177
+ const fullText = await this.parseSSEStream(response, pseudoPid, silent, agentName);
178
+ // Extract session ID from response headers
179
+ const responseSessionId = response.headers.get('x-hermes-session-id') || undefined;
180
+ return {
181
+ result: fullText.trim(),
182
+ sessionId: responseSessionId || sessionId,
183
+ rawOutput: fullText,
184
+ model: options.model,
185
+ transport: 'gateway-http',
186
+ };
187
+ }
188
+ /**
189
+ * Parse the SSE stream from /v1/chat/completions.
190
+ *
191
+ * Format (OpenAI-compatible):
192
+ * data: {"choices":[{"delta":{"content":"hello"}}]}
193
+ * data: {"choices":[{"delta":{"content":" world"}}]}
194
+ * data: [DONE]
195
+ *
196
+ * Assembles full text, streams chunks to agent_lifecycle in real-time.
197
+ */
198
+ async parseSSEStream(response, pseudoPid, silent, agentName) {
199
+ let fullText = '';
200
+ const reader = response.body?.getReader();
201
+ if (!reader) {
202
+ throw new Error('No response body for SSE stream');
203
+ }
204
+ const decoder = new TextDecoder();
205
+ let buffer = '';
206
+ try {
207
+ while (true) {
208
+ const { done, value } = await reader.read();
209
+ if (done)
210
+ break;
211
+ buffer += decoder.decode(value, { stream: true });
212
+ // Process complete SSE events (separated by \n\n)
213
+ const events = buffer.split('\n\n');
214
+ buffer = events.pop() || ''; // Keep incomplete chunk in buffer
215
+ for (const event of events) {
216
+ const line = event.trim();
217
+ if (!line.startsWith('data: '))
218
+ continue;
219
+ const data = line.slice(6); // Remove "data: " prefix
220
+ // End of stream
221
+ if (data === '[DONE]')
222
+ continue;
223
+ try {
224
+ const parsed = JSON.parse(data);
225
+ const delta = parsed.choices?.[0]?.delta;
226
+ if (delta?.content) {
227
+ const chunk = delta.content;
228
+ fullText += chunk;
229
+ // Stream to agent_lifecycle for real-time output
230
+ appendLiveOutput(pseudoPid, chunk);
231
+ // Also write to stderr for live monitoring (matching HermesRunner pattern)
232
+ if (!silent && agentName) {
233
+ process.stderr.write(`[HermesGW:${agentName}] ${chunk}`);
234
+ }
235
+ }
236
+ }
237
+ catch {
238
+ // Non-JSON line (e.g., comments) — skip
239
+ }
240
+ }
241
+ }
242
+ }
243
+ finally {
244
+ reader.releaseLock?.();
245
+ }
246
+ return fullText;
247
+ }
248
+ }
249
+ //# sourceMappingURL=HermesGatewayRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HermesGatewayRunner.js","sourceRoot":"","sources":["../../src/services/HermesGatewayRunner.ts"],"names":[],"mappings":"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"}
@@ -76,7 +76,13 @@ export declare class HermesProfileManager {
76
76
  static delete(name: string): Promise<void>;
77
77
  /**
78
78
  * Get the filesystem path for a profile.
79
- * v3.1: ~/.overmind/hermes/profiles/<name>/
79
+ *
80
+ * Queries `hermes profile show <name>` to get the real path from Hermes itself.
81
+ * This is the ONLY reliable way — Hermes controls where profiles live, and the
82
+ * location depends on HERMES_HOME (Windows: AppData\Local\hermes, Linux: ~/.hermes).
83
+ *
84
+ * Falls back to the canonical layout under the shared Hermes home if the CLI
85
+ * call fails (e.g. profile doesn't exist yet).
80
86
  */
81
87
  static getProfilePath(name: string): Promise<string | null>;
82
88
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"HermesProfileManager.d.ts","sourceRoot":"","sources":["../../src/services/HermesProfileManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAaH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA0BD,qBAAa,oBAAoB;IAC/B;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAUpC;;OAEG;WACU,IAAI,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAUjD;;;;;;;;OAQG;IACH,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAyB/D;;;;;;;;;;OAUG;WACU,MAAM,CACjB,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAkErD;;OAEG;WACU,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAahD;;;OAGG;WACU,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAajE;;;;;OAKG;WACU,aAAa,CACxB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EAAE,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IA2FhB,4DAA4D;IAC5D,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAkB/B,6DAA6D;IAC7D,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAQjC,wCAAwC;IACxC,OAAO,CAAC,MAAM,CAAC,WAAW;IAgB1B;;OAEG;WACU,MAAM,CACjB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,GACA,OAAO,CAAC,IAAI,CAAC;CAqDjB"}
1
+ {"version":3,"file":"HermesProfileManager.d.ts","sourceRoot":"","sources":["../../src/services/HermesProfileManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAcH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA0BD,qBAAa,oBAAoB;IAC/B;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAUpC;;OAEG;WACU,IAAI,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAUjD;;;;;;;;OAQG;IACH,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,EAAE;IAyB/D;;;;;;;;;;OAUG;WACU,MAAM,CACjB,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAkErD;;OAEG;WACU,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAahD;;;;;;;;;OASG;WACU,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAyBjE;;;;;OAKG;WACU,aAAa,CACxB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EAAE,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IA2FhB,4DAA4D;IAC5D,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAkB/B,6DAA6D;IAC7D,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAQjC,wCAAwC;IACxC,OAAO,CAAC,MAAM,CAAC,WAAW;IAgB1B;;OAEG;WACU,MAAM,CACjB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;KACvB,GACA,OAAO,CAAC,IAAI,CAAC;CAqDjB"}
@@ -24,6 +24,7 @@ import { exec, execSync } from 'child_process';
24
24
  import { promisify } from 'util';
25
25
  import fs from 'fs';
26
26
  import path from 'path';
27
+ import os from 'os';
27
28
  import { rootLogger } from '../lib/logger.js';
28
29
  const execAsync = promisify(exec);
29
30
  const logger = rootLogger.child({ module: 'HermesProfileManager' });
@@ -36,8 +37,8 @@ function detectProviderFromModel(model) {
36
37
  const lower = model.toLowerCase();
37
38
  if (lower.includes('minimax') || lower.includes('m3'))
38
39
  return 'minimax-cn';
39
- if (lower.includes('glm') || lower.includes('zai'))
40
- return 'zai';
40
+ if (lower.includes('glm') || lower.includes('zai') || lower.includes('z-ai'))
41
+ return 'z-ai';
41
42
  if (lower.includes('claude') ||
42
43
  lower.includes('sonnet') ||
43
44
  lower.includes('opus') ||
@@ -50,7 +51,7 @@ function detectProviderFromModel(model) {
50
51
  if (lower.includes('deepseek'))
51
52
  return 'deepseek';
52
53
  if (lower.includes('kimi') || lower.includes('moonshot'))
53
- return 'kimi-coding';
54
+ return 'kimi';
54
55
  if (lower.includes('qwen') || lower.includes('dashscope'))
55
56
  return 'alibaba';
56
57
  if (lower.includes('grok') || lower.includes('xai'))
@@ -196,19 +197,37 @@ export class HermesProfileManager {
196
197
  }
197
198
  /**
198
199
  * Get the filesystem path for a profile.
199
- * v3.1: ~/.overmind/hermes/profiles/<name>/
200
+ *
201
+ * Queries `hermes profile show <name>` to get the real path from Hermes itself.
202
+ * This is the ONLY reliable way — Hermes controls where profiles live, and the
203
+ * location depends on HERMES_HOME (Windows: AppData\Local\hermes, Linux: ~/.hermes).
204
+ *
205
+ * Falls back to the canonical layout under the shared Hermes home if the CLI
206
+ * call fails (e.g. profile doesn't exist yet).
200
207
  */
201
208
  static async getProfilePath(name) {
209
+ // 1. Try `hermes profile show <name>` — the authoritative source
202
210
  try {
203
- const overmindBase = process.env.LOCALAPPDATA || process.env.HOME || '';
204
- const v31Path = process.platform === 'win32'
205
- ? path.join(overmindBase, 'overmind', 'hermes', 'profiles', name)
206
- : path.join(overmindBase, '.overmind', 'hermes', 'profiles', name);
207
- return v31Path;
211
+ const { stdout } = await execAsync(`hermes profile show "${name}"`);
212
+ const match = stdout.match(/Path:\s*(.+)/);
213
+ if (match?.[1]) {
214
+ const resolved = match[1].trim();
215
+ if (fs.existsSync(resolved))
216
+ return resolved;
217
+ }
208
218
  }
209
219
  catch {
210
- return null;
220
+ // Profile may not exist yet, or hermes CLI unavailable — fall through
211
221
  }
222
+ // 2. Fallback: construct canonical path under shared Hermes home
223
+ // Hermes default: HERMES_HOME/profiles/<name>/
224
+ // On Windows official: AppData\Local\hermes\profiles\<name>\
225
+ // On Linux: ~/.hermes/profiles/<name>/
226
+ const hermesHome = process.env.HERMES_HOME
227
+ || (process.platform === 'win32'
228
+ ? path.join(process.env.LOCALAPPDATA || process.env.USERPROFILE || os.homedir(), 'hermes')
229
+ : path.join(os.homedir(), '.hermes'));
230
+ return path.join(hermesHome, 'profiles', name);
212
231
  }
213
232
  /**
214
233
  * Set MCP servers in a profile's config.yaml.
@@ -1 +1 @@
1
- {"version":3,"file":"HermesProfileManager.js","sourceRoot":"","sources":["../../src/services/HermesProfileManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HermesProfileManager.js","sourceRoot":"","sources":["../../src/services/HermesProfileManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAClC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC;AAEpE,MAAM,YAAY,GAAG,kBAAkB,CAAC;AAoBxC;;;GAGG;AACH,SAAS,uBAAuB,CAAC,KAAa;IAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,YAAY,CAAC;IAC3E,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IAC5F,IACE,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACxB,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACxB,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;QACtB,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;QAEvB,OAAO,WAAW,CAAC;IACrB,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC3C,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC9C,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC;IAClD,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,MAAM,CAAC;IACxE,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5E,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAClE,OAAO,YAAY,CAAC,CAAC,eAAe;AACtC,CAAC;AAED,MAAM,OAAO,oBAAoB;IAC/B;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,IAAY;QACxB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,QAAQ,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACtF,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI;QACf,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,qBAAqB,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,gCAAgC,CAAC,CAAC;YAC5D,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,gBAAgB,CAAC,SAAiB;QACvC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAwB,EAAE,CAAC;QAEzC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,0DAA0D;YAC1D,yDAAyD;YACzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;YAC1E,IAAI,CAAC,KAAK;gBAAE,SAAS;YAErB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;YAChC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,+DAA+D;YAE/D,oBAAoB;YACpB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAEzD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,IAA0B;QAE1B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAErC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,gCAAgC,CAAC,CAAC;QAClF,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,uBAAuB,CAAC,KAAK,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,mBAAmB,IAAI,EAAE,CAAC;QAElE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,mCAAmC,CAAC,CAAC;QAE5E,uDAAuD;QACvD,MAAM,SAAS,GAAG,0BAA0B,IAAI,+BAA+B,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;QACnH,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,qDAAqD;YACrD,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,MAAM,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9E,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,6DAA6D,CAAC,CAAC;QACvF,CAAC;QAED,yCAAyC;QACzC,MAAM,SAAS,CAAC,cAAc,IAAI,gCAAgC,QAAQ,GAAG,CAAC,CAAC;QAC/E,MAAM,SAAS,CAAC,cAAc,IAAI,6BAA6B,KAAK,GAAG,CAAC,CAAC;QAEzE,sBAAsB;QACtB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uCAAuC,IAAI,GAAG,CAAC,CAAC;QAClE,CAAC;QAED,iCAAiC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAa,CAAC,mDAAmD,CAAC,CAAC;QACjF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5D,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;QAE/D,mCAAmC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACnD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE5C,gCAAgC;QAChC,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAC/D,CAAC;QAED,0DAA0D;QAC1D,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QAE7D,6BAA6B;QAC7B,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAEnD,wBAAwB;QACxB,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QAEjD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,wCAAwC,CAAC,CAAC;QAE7E,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAY;QAC9B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,GAAG,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,0BAA0B,IAAI,SAAS,CAAC,CAAC;YACzD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,2BAA2B,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,oCAAoC,CAAC,CAAC;YACtE,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,IAAY;QACtC,iEAAiE;QACjE,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,wBAAwB,IAAI,GAAG,CAAC,CAAC;YACpE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAC3C,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACf,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBACjC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;oBAAE,OAAO,QAAQ,CAAC;YAC/C,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;QACxE,CAAC;QAED,iEAAiE;QACjE,kDAAkD;QAClD,gEAAgE;QAChE,0CAA0C;QAC1C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW;eACrC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;gBAC9B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC;gBAC1F,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;QAE1C,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,aAAa,CACxB,WAAmB,EACnB,OAAiB,EACjB,WAAmB;QAEnB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAEzD,sCAAsC;QACtC,IAAI,aAAqB,CAAC;QAC1B,IAAI,CAAC;YACH,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACvD,CAAC;QAAC,MAAM,CAAC;YACP,aAAa,GAAG,EAAE,CAAC;QACrB,CAAC;QAED,4DAA4D;QAC5D,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC7D,IAAI,UAGH,CAAC;QACF,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,WAAW,CAAC,CAAC;YAC9D,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACzD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACtC,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,IAAI,CACT,oFAAoF,CACrF,CAAC;YACF,OAAO;QACT,CAAC;QAED,mCAAmC;QACnC,gDAAgD;QAChD,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACxC,oCAAoC;YACpC,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;gBAAE,OAAO,KAAK,CAAC;YAC9C,2EAA2E;YAC3E,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAChC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC;oBACpC,wDAAwD;oBACxD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC5C,OAAO,GAAG,IAAI,CAAC;oBACjB,CAAC;oBACD,MAAM;gBACR,CAAC;gBACD,gFAAgF;gBAChF,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;oBAAE,MAAM;YACvD,CAAC;YACD,OAAO,CAAC,OAAO,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,aAAa,GAAG,QAAQ;aACrB,IAAI,CAAC,IAAI,CAAC;aACV,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;aAC1B,OAAO,EAAE,CAAC;QAEb,8CAA8C;QAC9C,MAAM,SAAS,GAAa,CAAC,kBAAkB,CAAC,CAAC;QACjD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,UAAU,IAAI,OAAO,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;YACnC,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;gBACnB,SAAS,CAAC,IAAI,CAAC,KAAK,UAAU,GAAG,CAAC,CAAC;gBACnC,SAAS,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;gBACtC,KAAK,EAAE,CAAC;YACV,CAAC;iBAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;gBAC9B,SAAS,CAAC,IAAI,CAAC,KAAK,UAAU,GAAG,CAAC,CAAC;gBACnC,SAAS,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC9C,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACpC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC5B,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;wBAC3B,SAAS,CAAC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC;oBACjC,CAAC;gBACH,CAAC;gBACD,KAAK,EAAE,CAAC;YACV,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,EAAE,qDAAqD,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;QAED,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,aAAa,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YACpD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,kDAAkD,CAAC,CAAC;QAC1F,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,EAAE,+CAA+C,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAED,4EAA4E;IAE5E,4DAA4D;IACpD,MAAM,CAAC,gBAAgB,CAC7B,WAAmB,EACnB,IAAY,EACZ,WAAmB,EACnB,KAAa;QAEb,MAAM,IAAI,GAAG;YACX,mDAAmD;YACnD,UAAU,IAAI,GAAG;YACjB,iBAAiB,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG;YACpD,WAAW,KAAK,GAAG;YACnB,uBAAuB;YACvB,YAAY,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;YACtC,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1E,CAAC;IAED,6DAA6D;IACrD,MAAM,CAAC,kBAAkB,CAC/B,WAAmB,EACnB,IAAyC;QAEzC,MAAM,IAAI,GAAG,CAAC,SAAS,IAAI,EAAE,EAAE,SAAS,WAAW,EAAE,EAAE,oBAAoB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5F,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;IAED,wCAAwC;IAChC,MAAM,CAAC,WAAW,CAAC,WAAmB,EAAE,IAAY,EAAE,WAAmB;QAC/E,MAAM,EAAE,GAAG;YACT,KAAK,IAAI,EAAE;YACX,EAAE;YACF,aAAa,WAAW,EAAE;YAC1B,EAAE;YACF,yBAAyB;YACzB,gBAAgB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE;YAC1C,EAAE;YACF,KAAK;YACL,gCAAgC;YAChC,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,IAAY,EACZ,OAMC;QAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,GAAG,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,cAAc,CAAC,CAAC;QAClD,CAAC;QAED,0BAA0B;QAC1B,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,uBAAuB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC5E,MAAM,SAAS,CAAC,cAAc,IAAI,gCAAgC,QAAQ,GAAG,CAAC,CAAC;YAC/E,MAAM,SAAS,CAAC,cAAc,IAAI,6BAA6B,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;QACnF,CAAC;QAED,qBAAqB;QACrB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YAC/C,IAAI,UAAkB,CAAC;YACvB,IAAI,CAAC;gBACH,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACjD,CAAC;YAAC,MAAM,CAAC;gBACP,UAAU,GAAG,EAAE,CAAC;YAClB,CAAC;YAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/D,iCAAiC;gBACjC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC;gBAC7C,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC3B,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;gBAC5D,CAAC;qBAAM,CAAC;oBACN,UAAU,IAAI,GAAG,GAAG,IAAI,KAAK,IAAI,CAAC;gBACpC,CAAC;YACH,CAAC;YAED,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;QAED,iBAAiB;QACjB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YACnD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC;QAED,qBAAqB;QACrB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,2BAA2B,CAAC,CAAC;IACpF,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"run_hermes.d.ts","sourceRoot":"","sources":["../../src/tools/run_hermes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,eAAe;;;;;;;;;;;;iBAqBZ,CAAC;AAIjB,wBAAsB,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC;;;;;;;;;;;;GA8FzE"}
1
+ {"version":3,"file":"run_hermes.d.ts","sourceRoot":"","sources":["../../src/tools/run_hermes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,eAAe;;;;;;;;;;;;iBAqBZ,CAAC;AAIjB,wBAAsB,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC;;;;;;;;;;;;GAsHzE"}
@@ -1,5 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { HermesRunner } from '../services/HermesRunner.js';
3
+ import { HermesGatewayRunner } from '../services/HermesGatewayRunner.js';
3
4
  import { storeRun } from '../memory/MemoryFactory.js';
4
5
  import { getWorkspaceDir } from '../lib/config.js';
5
6
  import { deleteSessionId } from '../lib/sessions.js';
@@ -35,32 +36,34 @@ export async function runHermesAgent(args) {
35
36
  isError: true,
36
37
  };
37
38
  }
38
- const runner = new HermesRunner();
39
39
  const { prompt, agentName, autoResume, sessionId, path: argPath, config: argConfig, silent, model, provider, signal, overmindMode, } = args;
40
40
  const finalPath = argPath || getWorkspaceDir();
41
41
  const finalConfig = argConfig || getWorkspaceDir();
42
42
  const start = Date.now();
43
- let result = await runner.runAgent({
43
+ // ─── Try Gateway HTTP first, fall back to subprocess spawn ────────────────
44
+ // The Hermes API Server (port 8642) provides HTTP+SSE chat without the
45
+ // ~5-10s Python startup overhead per call. If it's not running, we
46
+ // transparently fall back to the old HermesRunner (subprocess spawn).
47
+ const gatewayRunner = new HermesGatewayRunner();
48
+ const gwResult = await gatewayRunner.runAgent({
44
49
  prompt,
45
50
  agentName,
46
51
  autoResume,
47
52
  sessionId,
48
- cwd: finalPath,
49
- configPath: finalConfig,
50
- silent,
51
53
  model,
52
54
  provider,
53
55
  signal,
56
+ silent,
54
57
  });
55
- // Retry if session invalid
56
- if (result.error?.includes('session') || result.error?.includes('EXIT_CODE_1')) {
57
- if (agentName)
58
- await deleteSessionId(agentName, finalConfig, 'hermes');
59
- result = await runner.runAgent({
58
+ let result;
59
+ // If gateway returned GATEWAY_NOT_READY, fall back to subprocess spawn
60
+ if (gwResult.transport === 'fallback-spawn' || gwResult.error === 'GATEWAY_NOT_READY') {
61
+ const spawnRunner = new HermesRunner();
62
+ result = await spawnRunner.runAgent({
60
63
  prompt,
61
64
  agentName,
62
- autoResume: false,
63
- sessionId: undefined,
65
+ autoResume,
66
+ sessionId,
64
67
  cwd: finalPath,
65
68
  configPath: finalConfig,
66
69
  silent,
@@ -68,6 +71,26 @@ export async function runHermesAgent(args) {
68
71
  provider,
69
72
  signal,
70
73
  });
74
+ // Retry if session invalid (spawn mode only — gateway handles sessions natively)
75
+ if (result.error?.includes('session') || result.error?.includes('EXIT_CODE_1')) {
76
+ if (agentName)
77
+ await deleteSessionId(agentName, finalConfig, 'hermes');
78
+ result = await spawnRunner.runAgent({
79
+ prompt,
80
+ agentName,
81
+ autoResume: false,
82
+ sessionId: undefined,
83
+ cwd: finalPath,
84
+ configPath: finalConfig,
85
+ silent,
86
+ model,
87
+ provider,
88
+ signal,
89
+ });
90
+ }
91
+ }
92
+ else {
93
+ result = gwResult;
71
94
  }
72
95
  const durationMs = Date.now() - start;
73
96
  // En mode Overmind (appel MCP), le run est déjà stocké par le MCP Server via memory_runs
@@ -1 +1 @@
1
- {"version":3,"file":"run_hermes.js","sourceRoot":"","sources":["../../src/tools/run_hermes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run_hermes.js","sourceRoot":"","sources":["../../src/tools/run_hermes.ts"],"names":[],"mappings":"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"}