overmind-mcp 2.8.6 → 2.8.8

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 (83) hide show
  1. package/bin/launch.bat +40 -0
  2. package/bin/launch.js +78 -0
  3. package/bin/launch.sh +46 -0
  4. package/bin/restart_mcp.bat +3 -0
  5. package/bin/start_server.bat +3 -0
  6. package/bin/test_mcp.bat +4 -0
  7. package/dist/bin/cli.js +13 -0
  8. package/dist/bin/cli.js.map +1 -1
  9. package/dist/bin/launch.js +78 -0
  10. package/dist/bridge/BridgeProxy.d.ts +52 -0
  11. package/dist/bridge/BridgeProxy.d.ts.map +1 -0
  12. package/dist/bridge/BridgeProxy.js +265 -0
  13. package/dist/bridge/BridgeProxy.js.map +1 -0
  14. package/dist/bridge/OverBridgeService.d.ts +96 -0
  15. package/dist/bridge/OverBridgeService.d.ts.map +1 -0
  16. package/dist/bridge/OverBridgeService.js +334 -0
  17. package/dist/bridge/OverBridgeService.js.map +1 -0
  18. package/dist/bridge/index.d.ts +11 -0
  19. package/dist/bridge/index.d.ts.map +1 -0
  20. package/dist/bridge/index.js +11 -0
  21. package/dist/bridge/index.js.map +1 -0
  22. package/dist/bridge/types.d.ts +132 -0
  23. package/dist/bridge/types.d.ts.map +1 -0
  24. package/dist/bridge/types.js +19 -0
  25. package/dist/bridge/types.js.map +1 -0
  26. package/dist/bridge/utils.d.ts +48 -0
  27. package/dist/bridge/utils.d.ts.map +1 -0
  28. package/dist/bridge/utils.js +128 -0
  29. package/dist/bridge/utils.js.map +1 -0
  30. package/dist/lib/config.d.ts.map +1 -1
  31. package/dist/lib/config.js +11 -4
  32. package/dist/lib/config.js.map +1 -1
  33. package/dist/lib/envUtils.d.ts +2 -0
  34. package/dist/lib/envUtils.d.ts.map +1 -1
  35. package/dist/lib/envUtils.js +13 -2
  36. package/dist/lib/envUtils.js.map +1 -1
  37. package/dist/lib/logger.js +1 -1
  38. package/dist/lib/processRegistry.d.ts.map +1 -1
  39. package/dist/lib/processRegistry.js +34 -21
  40. package/dist/lib/processRegistry.js.map +1 -1
  41. package/dist/memory/PostgresMemoryProvider.d.ts.map +1 -1
  42. package/dist/memory/PostgresMemoryProvider.js +14 -3
  43. package/dist/memory/PostgresMemoryProvider.js.map +1 -1
  44. package/dist/server.d.ts.map +1 -1
  45. package/dist/server.js +2 -1
  46. package/dist/server.js.map +1 -1
  47. package/dist/services/AgentManager.d.ts.map +1 -1
  48. package/dist/services/AgentManager.js +473 -97
  49. package/dist/services/AgentManager.js.map +1 -1
  50. package/dist/services/GeminiRunner.d.ts +18 -16
  51. package/dist/services/GeminiRunner.d.ts.map +1 -1
  52. package/dist/services/GeminiRunner.js +112 -126
  53. package/dist/services/GeminiRunner.js.map +1 -1
  54. package/dist/services/NousHermesRunner.d.ts.map +1 -1
  55. package/dist/services/NousHermesRunner.js +172 -56
  56. package/dist/services/NousHermesRunner.js.map +1 -1
  57. package/dist/tools/agent_control.d.ts +1 -1
  58. package/dist/tools/agent_control.d.ts.map +1 -1
  59. package/dist/tools/agent_control.js +4 -3
  60. package/dist/tools/agent_control.js.map +1 -1
  61. package/dist/tools/config_example.d.ts +1 -1
  62. package/dist/tools/create_agent.d.ts +1 -1
  63. package/dist/tools/manage_agents.d.ts +1 -1
  64. package/dist/tools/run_agent.d.ts +1 -1
  65. package/dist/tools/run_agent.d.ts.map +1 -1
  66. package/dist/tools/run_agent.js +3 -0
  67. package/dist/tools/run_agent.js.map +1 -1
  68. package/dist/tools/run_agents_parallel.d.ts +1 -1
  69. package/dist/tools/run_hermes.d.ts +1 -0
  70. package/dist/tools/run_hermes.d.ts.map +1 -1
  71. package/dist/tools/run_hermes.js +22 -15
  72. package/dist/tools/run_hermes.js.map +1 -1
  73. package/docs/provider-config-map.md +170 -105
  74. package/package.json +8 -10
  75. package/scripts/_db_check.py +10 -0
  76. package/scripts/postgres-manager.mjs +1 -1
  77. package/scripts/postinstall.mjs +10 -20
  78. package/scripts/setup.mjs +14 -16
  79. package/scripts/status_check.py +20 -0
  80. package/dist/services/AntigravityRunner.d.ts +0 -42
  81. package/dist/services/AntigravityRunner.d.ts.map +0 -1
  82. package/dist/services/AntigravityRunner.js +0 -404
  83. package/dist/services/AntigravityRunner.js.map +0 -1
@@ -0,0 +1,265 @@
1
+ /**
2
+ * ╔══════════════════════════════════════════════════════════════════════╗
3
+ * ║ OVERMIND BRIDGE — BridgeProxy (Daemon RPC Layer) ║
4
+ * ║ ║
5
+ * ║ Couche basse : transport JSON-RPC 2.0 vers Overmind MCP Server. ║
6
+ * ║ Gère : reconnexion, health checks, circuit breaker, SSE streaming.║
7
+ * ║ ║
8
+ * ║ ARCHITECTURE ║
9
+ * ║ ───────────── ║
10
+ * ║ OverBridgeService → BridgeProxy → HTTP localhost:3099/mcp ║
11
+ * ║ → Overmind MCP Server ║
12
+ * ╚══════════════════════════════════════════════════════════════════════╝
13
+ */
14
+ import { DEFAULT_BRIDGE_CONFIG, DEFAULT_CIRCUIT_CONFIG } from './types.js';
15
+ import { createBridgeLogger, parseMcpResponseBody, withRetry, } from './utils.js';
16
+ // ─── Circuit Breaker ───────────────────────────────────────────────────────
17
+ class CircuitBreaker {
18
+ config;
19
+ state = 'closed';
20
+ failureCount = 0;
21
+ successCount = 0;
22
+ lastFailureAt = 0;
23
+ constructor(config) {
24
+ this.config = config;
25
+ }
26
+ get currentState() {
27
+ // Auto-transition open → half-open après resetTimeout
28
+ if (this.state === 'open' && Date.now() - this.lastFailureAt > this.config.resetTimeoutMs) {
29
+ this.state = 'half-open';
30
+ }
31
+ return this.state;
32
+ }
33
+ recordSuccess() {
34
+ if (this.state === 'half-open') {
35
+ this.successCount++;
36
+ if (this.successCount >= this.config.successThreshold) {
37
+ this.state = 'closed';
38
+ this.failureCount = 0;
39
+ this.successCount = 0;
40
+ }
41
+ }
42
+ else {
43
+ this.failureCount = 0;
44
+ }
45
+ }
46
+ recordFailure() {
47
+ this.failureCount++;
48
+ this.lastFailureAt = Date.now();
49
+ this.successCount = 0;
50
+ if (this.failureCount >= this.config.failureThreshold) {
51
+ this.state = 'open';
52
+ }
53
+ }
54
+ canExecute() {
55
+ return this.currentState !== 'open';
56
+ }
57
+ }
58
+ // ─── BridgeProxy ───────────────────────────────────────────────────────────
59
+ export class BridgeProxy {
60
+ rpcId = 1;
61
+ config;
62
+ circuit;
63
+ log;
64
+ constructor(config, circuitConfig, logger) {
65
+ this.config = { ...DEFAULT_BRIDGE_CONFIG, ...config };
66
+ this.circuit = new CircuitBreaker({ ...DEFAULT_CIRCUIT_CONFIG, ...circuitConfig });
67
+ this.log = logger ?? createBridgeLogger('bridge-proxy');
68
+ }
69
+ get mcpUrl() {
70
+ return this.config.mcpUrl;
71
+ }
72
+ get agentTimeout() {
73
+ return this.config.agentTimeoutMs;
74
+ }
75
+ get circuitState() {
76
+ return this.circuit.currentState;
77
+ }
78
+ // ─── Core RPC Call ───────────────────────────────────────────────────────
79
+ /**
80
+ * Appelle un tool MCP via JSON-RPC 2.0 sur HTTP.
81
+ *
82
+ * TIMEOUT STRATEGY (3 couches) :
83
+ * 1. AbortController sur le fetch initial
84
+ * 2. Body reader avec deadline absolue
85
+ * 3. Promise.race per-chunk (sécurité si le serveur ne produit plus)
86
+ *
87
+ * @param toolName Nom de l'outil MCP (ex: 'run_agent', 'memory_search')
88
+ * @param args Arguments de l'outil
89
+ * @param timeoutMs Timeout en ms (default: config.defaultTimeoutMs)
90
+ */
91
+ async call(toolName, args, timeoutMs) {
92
+ const timeout = timeoutMs ?? this.config.defaultTimeoutMs;
93
+ // Circuit breaker gate
94
+ if (!this.circuit.canExecute()) {
95
+ throw Object.assign(new Error(`Circuit breaker OPEN — too many failures. Retry after ${this.config.retryDelayMs}ms`), { code: 'ECIRCUITOPEN' });
96
+ }
97
+ const request = {
98
+ jsonrpc: '2.0',
99
+ id: this.rpcId++,
100
+ method: 'tools/call',
101
+ params: { name: toolName, arguments: args },
102
+ };
103
+ this.log.info(`→ MCP ${toolName} (timeout: ${timeout / 1000}s)`);
104
+ const startTime = Date.now();
105
+ try {
106
+ const response = await this._fetch(request, timeout);
107
+ const elapsed = Date.now() - startTime;
108
+ this.circuit.recordSuccess();
109
+ this.log.info(`← MCP ${toolName} OK (${elapsed}ms)`);
110
+ return response;
111
+ }
112
+ catch (err) {
113
+ const error = err;
114
+ this.circuit.recordFailure();
115
+ // Erreurs transitoires → retry automatique
116
+ const retryable = ['ETIMEDOUT', 'EBODYREAD', 'ECONNRESET', 'ECONNREFUSED'];
117
+ if (retryable.includes(error?.code ?? '')) {
118
+ this.log.warn(`🔁 ${error.code} on ${toolName}, retrying...`);
119
+ return withRetry(() => this._fetch(request, timeout), {
120
+ maxAttempts: this.config.maxRetries,
121
+ delayMs: this.config.retryDelayMs,
122
+ }, this.log);
123
+ }
124
+ throw err;
125
+ }
126
+ }
127
+ // ─── JSON-RPC Protocol Ping ──────────────────────────────────────────────
128
+ /**
129
+ * Envoie une requête de ping JSON-RPC standard légère au serveur.
130
+ */
131
+ async ping(timeoutMs) {
132
+ const timeout = timeoutMs ?? 5_000;
133
+ const request = {
134
+ jsonrpc: '2.0',
135
+ id: this.rpcId++,
136
+ method: 'ping',
137
+ params: {},
138
+ };
139
+ try {
140
+ const controller = new AbortController();
141
+ const timer = setTimeout(() => controller.abort(), timeout);
142
+ const response = await fetch(this.config.mcpUrl, {
143
+ method: 'POST',
144
+ headers: {
145
+ 'Content-Type': 'application/json',
146
+ 'Accept': 'application/json',
147
+ },
148
+ body: JSON.stringify(request),
149
+ signal: controller.signal,
150
+ });
151
+ clearTimeout(timer);
152
+ if (!response.ok)
153
+ return false;
154
+ const bodyText = await response.text();
155
+ const parsed = JSON.parse(bodyText.trim());
156
+ return parsed && parsed.jsonrpc === '2.0' && !parsed.error;
157
+ }
158
+ catch {
159
+ return false;
160
+ }
161
+ }
162
+ // ─── Health Check ────────────────────────────────────────────────────────
163
+ async healthCheck() {
164
+ const startTime = Date.now();
165
+ const isOnline = await this.ping(5_000);
166
+ if (isOnline) {
167
+ return {
168
+ status: 'online',
169
+ mcpUrl: this.config.mcpUrl,
170
+ circuitState: this.circuit.currentState,
171
+ latencyMs: Date.now() - startTime,
172
+ checkedAt: Date.now(),
173
+ };
174
+ }
175
+ else {
176
+ return {
177
+ status: this.circuit.currentState === 'open' ? 'offline' : 'degraded',
178
+ mcpUrl: this.config.mcpUrl,
179
+ circuitState: this.circuit.currentState,
180
+ checkedAt: Date.now(),
181
+ };
182
+ }
183
+ }
184
+ // ─── Internal Fetch ──────────────────────────────────────────────────────
185
+ async _fetch(request, timeoutMs) {
186
+ const controller = new AbortController();
187
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
188
+ let response;
189
+ try {
190
+ response = await fetch(this.config.mcpUrl, {
191
+ method: 'POST',
192
+ headers: {
193
+ 'Content-Type': 'application/json',
194
+ 'Accept': 'application/json, text/event-stream',
195
+ },
196
+ body: JSON.stringify(request),
197
+ signal: controller.signal,
198
+ });
199
+ }
200
+ catch (err) {
201
+ clearTimeout(timer);
202
+ const error = err;
203
+ if (error.name === 'TimeoutError' || error.type === 'TimeoutError' || error.name === 'AbortError') {
204
+ throw Object.assign(new Error(`TIMEOUT: ${request.params.name} no response after ${timeoutMs / 1000}s`), { code: 'ETIMEDOUT', toolName: request.params.name, timeoutMs });
205
+ }
206
+ throw err;
207
+ }
208
+ finally {
209
+ clearTimeout(timer);
210
+ }
211
+ if (!response.ok) {
212
+ throw Object.assign(new Error(`MCP HTTP ${response.status}: ${response.statusText}`), { code: 'EHTTPSTATUS', status: response.status });
213
+ }
214
+ // Lecture du body avec timeout effectif (3 couches)
215
+ const text = await this._readBody(response, timeoutMs);
216
+ return parseMcpResponseBody(text);
217
+ }
218
+ /**
219
+ * Lecture du body response avec 3 couches de timeout :
220
+ * 1. Deadline absolue (startRead + timeoutMs)
221
+ * 2. Promise.race per-chunk
222
+ * 3. reader.cancel() sur timeout
223
+ */
224
+ async _readBody(response, timeoutMs) {
225
+ if (!response.body) {
226
+ throw Object.assign(new Error('Response body is null'), { code: 'EBODYREAD' });
227
+ }
228
+ const reader = response.body.getReader();
229
+ const decoder = new TextDecoder();
230
+ const chunks = [];
231
+ const startRead = Date.now();
232
+ try {
233
+ while (true) {
234
+ // Couche 1 — deadline absolue
235
+ if (Date.now() - startRead > timeoutMs) {
236
+ reader.cancel();
237
+ throw Object.assign(new Error(`Body read timeout after ${timeoutMs / 1000}s`), { code: 'EBODYREAD' });
238
+ }
239
+ // Couche 2+3 — Promise.race per-chunk (avec cleanup du timeout)
240
+ let raceTimer;
241
+ const { done, value } = await Promise.race([
242
+ reader.read(),
243
+ new Promise((_, reject) => {
244
+ raceTimer = setTimeout(() => reject(Object.assign(new Error(`Chunk read timeout after ${timeoutMs / 1000}s`), { code: 'EBODYREAD' })), timeoutMs);
245
+ }),
246
+ ]);
247
+ if (raceTimer) {
248
+ clearTimeout(raceTimer);
249
+ }
250
+ if (done)
251
+ break;
252
+ chunks.push(decoder.decode(value, { stream: true }));
253
+ }
254
+ chunks.push(decoder.decode());
255
+ return chunks.join('');
256
+ }
257
+ catch (err) {
258
+ const error = err;
259
+ if (error?.code === 'EBODYREAD')
260
+ throw err;
261
+ throw Object.assign(new Error(`Body read failed: ${error.message}`), { code: 'EBODYREAD' });
262
+ }
263
+ }
264
+ }
265
+ //# sourceMappingURL=BridgeProxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BridgeProxy.js","sourceRoot":"","sources":["../../src/bridge/BridgeProxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * ╔══════════════════════════════════════════════════════════════════════╗
3
+ * ║ OVERMIND BRIDGE — OverBridgeService (High-Level API) ║
4
+ * ║ ║
5
+ * ║ API haut niveau : agents, memory, cron, runs, sessions. ║
6
+ * ║ Wrappe BridgeProxy pour fournir des méthodes métier claires. ║
7
+ * ║ ║
8
+ * ║ ARCHITECTURE ║
9
+ * ║ ───────────── ║
10
+ * ║ App/Route → OverBridgeService → BridgeProxy → Overmind MCP ║
11
+ * ╚══════════════════════════════════════════════════════════════════════╝
12
+ */
13
+ import type { AgentResult, RunAgentOptions, AgentControlOptions, MemorySearchOptions, MemoryStoreOptions, MemoryRunsOptions, UpdateAgentConfigOptions, CreatePromptOptions, EditPromptOptions, BridgeConfig, SessionState, RunnerType, HealthStatus } from './types.js';
14
+ import { BridgeProxy } from './BridgeProxy.js';
15
+ import { type BridgeLogger } from './utils.js';
16
+ export declare class OverBridgeService {
17
+ private readonly proxy;
18
+ private session;
19
+ private heartbeatInterval;
20
+ constructor(config?: Partial<BridgeConfig>, logger?: BridgeLogger, initialSessionId?: string);
21
+ get proxyAccess(): BridgeProxy;
22
+ get sessionId(): string | undefined;
23
+ get sessionInfo(): SessionState;
24
+ /**
25
+ * Initialise la connexion au serveur MCP, vérifie la santé initiale
26
+ * et configure éventuellement un heartbeat périodique.
27
+ */
28
+ connect(healthCheckIntervalMs?: number): Promise<HealthStatus>;
29
+ /**
30
+ * Ferme proprement le service en annulant le heartbeat actif.
31
+ */
32
+ disconnect(): void;
33
+ /** Force un reset de session — le prochain appel démarre une nouvelle session */
34
+ resetSession(): void;
35
+ /** Force un sessionId spécifique (ex: reçu d'un env var) */
36
+ setSession(id: string): void;
37
+ private updateSession;
38
+ /**
39
+ * Exécute un agent via `run_agent`.
40
+ * Gère automatiquement la session continuity.
41
+ */
42
+ runAgent(options: RunAgentOptions): Promise<AgentResult>;
43
+ /**
44
+ * Raccourci : run agent avec contexte Discord auto-formaté.
45
+ */
46
+ runAgentForDiscord(agentName: string, runner: RunnerType, message: string, discordContext: {
47
+ channelId?: string;
48
+ userId?: string;
49
+ username?: string;
50
+ }): Promise<AgentResult>;
51
+ private _processAgentResponse;
52
+ /** Status d'un agent en cours */
53
+ agentStatus(options: AgentControlOptions): Promise<AgentResult>;
54
+ /** Kill un agent */
55
+ killAgent(agentName: string, runner?: RunnerType): Promise<AgentResult>;
56
+ /** Recherche sémantique dans la mémoire Overmind */
57
+ memorySearch(options: MemorySearchOptions): Promise<AgentResult>;
58
+ /** Stocke une connaissance dans la mémoire Overmind */
59
+ memoryStore(options: MemoryStoreOptions): Promise<AgentResult>;
60
+ /** Historique et statistiques des runs en mémoire */
61
+ memoryRuns(options?: MemoryRunsOptions): Promise<AgentResult>;
62
+ /** Liste tous les agents disponibles */
63
+ listAgents(details?: boolean): Promise<AgentResult>;
64
+ /** Crée un nouvel agent */
65
+ createAgent(name: string, runner: RunnerType, prompt: string, model?: string, copyEnvFrom?: string, mode?: string, cliPath?: string): Promise<AgentResult>;
66
+ /** Supprime un agent */
67
+ deleteAgent(name: string): Promise<AgentResult>;
68
+ /** Récupère la configuration détaillée d'un agent */
69
+ getAgentConfigs(name: string): Promise<AgentResult>;
70
+ /** Met à jour la configuration d'un agent */
71
+ updateAgentConfig(options: UpdateAgentConfigOptions): Promise<AgentResult>;
72
+ /** Crée ou écrase un fichier prompt */
73
+ createPrompt(options: CreatePromptOptions): Promise<AgentResult>;
74
+ /** Modifie un prompt par recherche-remplacement */
75
+ editPrompt(options: EditPromptOptions): Promise<AgentResult>;
76
+ /** Lance plusieurs agents en parallèle via run_agents_parallel */
77
+ runParallel(agents: Array<{
78
+ taskId?: string;
79
+ runner: RunnerType;
80
+ prompt: string;
81
+ agentName: string;
82
+ path?: string;
83
+ model?: string;
84
+ mode?: string;
85
+ }>, waitAll?: boolean): Promise<AgentResult>;
86
+ /** Recherche séquentielle groupée en mémoire */
87
+ batchSearch(queries: string[], agentName?: string, limit?: number): Promise<AgentResult[]>;
88
+ /** Stockage séquentiel groupé en mémoire */
89
+ batchStore(texts: Array<{
90
+ text: string;
91
+ source?: 'user' | 'agent' | 'pattern' | 'error' | 'decision';
92
+ }>, agentName?: string): Promise<AgentResult[]>;
93
+ /** Appel MCP raw — pour les tools non wrappés */
94
+ rawCall(toolName: string, args: Record<string, unknown>, timeoutMs?: number): Promise<AgentResult>;
95
+ }
96
+ //# sourceMappingURL=OverBridgeService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OverBridgeService.d.ts","sourceRoot":"","sources":["../../src/bridge/OverBridgeService.ts"],"names":[],"mappings":"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"}