overmind-mcp 2.8.52 → 2.9.0
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.
- package/dist/bridge/ScenarioLoader.d.ts +20 -1
- package/dist/bridge/ScenarioLoader.d.ts.map +1 -1
- package/dist/bridge/ScenarioLoader.js +42 -0
- package/dist/bridge/ScenarioLoader.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/agent_lifecycle.d.ts +19 -0
- package/dist/lib/agent_lifecycle.d.ts.map +1 -1
- package/dist/lib/agent_lifecycle.js +92 -1
- package/dist/lib/agent_lifecycle.js.map +1 -1
- package/dist/lib/config.d.ts +21 -49
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +40 -94
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/orchestration/dispatcher.d.ts +13 -0
- package/dist/lib/orchestration/dispatcher.d.ts.map +1 -1
- package/dist/lib/orchestration/dispatcher.js +100 -0
- package/dist/lib/orchestration/dispatcher.js.map +1 -1
- package/dist/lib/processRegistry.js +1 -1
- package/dist/lib/processRegistry.js.map +1 -1
- package/dist/lib/sessions.js +1 -1
- package/dist/lib/sessions.js.map +1 -1
- package/dist/services/AgentManager.d.ts +4 -4
- package/dist/services/AgentManager.d.ts.map +1 -1
- package/dist/services/AgentManager.js +151 -201
- package/dist/services/AgentManager.js.map +1 -1
- package/dist/services/HermesProfileManager.d.ts +106 -0
- package/dist/services/HermesProfileManager.d.ts.map +1 -0
- package/dist/services/HermesProfileManager.js +401 -0
- package/dist/services/HermesProfileManager.js.map +1 -0
- package/dist/services/HermesRunner.d.ts +53 -0
- package/dist/services/HermesRunner.d.ts.map +1 -0
- package/dist/services/HermesRunner.js +313 -0
- package/dist/services/HermesRunner.js.map +1 -0
- package/dist/services/KanbanAdapter.d.ts +135 -0
- package/dist/services/KanbanAdapter.d.ts.map +1 -0
- package/dist/services/KanbanAdapter.js +320 -0
- package/dist/services/KanbanAdapter.js.map +1 -0
- package/dist/tools/manage_agents.js +4 -4
- package/dist/tools/manage_agents.js.map +1 -1
- package/dist/tools/memory_store.d.ts +1 -1
- package/dist/tools/run_hermes.d.ts +1 -0
- package/dist/tools/run_hermes.d.ts.map +1 -1
- package/dist/tools/run_hermes.js +12 -6
- package/dist/tools/run_hermes.js.map +1 -1
- package/docs/MIGRATION_V3.1.md +143 -0
- package/docs/PLAN_MIGRATION_V3.md +339 -0
- package/package.json +2 -2
- package/scripts/migrate-to-profiles.mjs +205 -0
- package/dist/lib/orchestration/swarm.d.ts +0 -76
- package/dist/lib/orchestration/swarm.d.ts.map +0 -1
- package/dist/lib/orchestration/swarm.js +0 -241
- package/dist/lib/orchestration/swarm.js.map +0 -1
- package/dist/prompts/agent_prompts.d.ts +0 -2
- package/dist/prompts/agent_prompts.d.ts.map +0 -1
- package/dist/prompts/agent_prompts.js +0 -21
- package/dist/prompts/agent_prompts.js.map +0 -1
- package/dist/services/NousHermesRunner.d.ts +0 -83
- package/dist/services/NousHermesRunner.d.ts.map +0 -1
- package/dist/services/NousHermesRunner.js +0 -1241
- package/dist/services/NousHermesRunner.js.map +0 -1
- package/dist/services/hermes/binaryFinder.d.ts +0 -8
- package/dist/services/hermes/binaryFinder.d.ts.map +0 -1
- package/dist/services/hermes/binaryFinder.js +0 -92
- package/dist/services/hermes/binaryFinder.js.map +0 -1
- package/dist/services/hermes/configYamlFilter.d.ts +0 -12
- package/dist/services/hermes/configYamlFilter.d.ts.map +0 -1
- package/dist/services/hermes/configYamlFilter.js +0 -70
- package/dist/services/hermes/configYamlFilter.js.map +0 -1
- package/dist/services/hermes/providerConfig.d.ts +0 -19
- package/dist/services/hermes/providerConfig.d.ts.map +0 -1
- package/dist/services/hermes/providerConfig.js +0 -53
- package/dist/services/hermes/providerConfig.js.map +0 -1
- package/dist/services/hermesTokenResolver.d.ts +0 -74
- package/dist/services/hermesTokenResolver.d.ts.map +0 -1
- package/dist/services/hermesTokenResolver.js +0 -140
- package/dist/services/hermesTokenResolver.js.map +0 -1
- package/dist/tools/initialization_check.d.ts +0 -2
- package/dist/tools/initialization_check.d.ts.map +0 -1
- package/dist/tools/initialization_check.js +0 -23
- package/dist/tools/initialization_check.js.map +0 -1
- /package/bin/{launch.js → launch.cjs} +0 -0
- /package/dist/bin/{launch.js → launch.cjs} +0 -0
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KanbanAdapter — Thin wrapper around `hermes kanban` CLI.
|
|
3
|
+
*
|
|
4
|
+
* ╔════════════════════════════════════════════════════════════════════════╗
|
|
5
|
+
* ║ PURPOSE (v3.0 — Refactored) ║
|
|
6
|
+
* ║ ║
|
|
7
|
+
* ║ Replaces the old swarm.ts (368 lines) and the parallel orchestration ║
|
|
8
|
+
* ║ in dispatcher.ts with native Hermes Kanban tasks. ║
|
|
9
|
+
* ║ ║
|
|
10
|
+
* ║ Kanban = durable SQLite-backed task board shared across all Hermes ║
|
|
11
|
+
* ║ profiles. The dispatcher loop (60s default) atomically claims ready ║
|
|
12
|
+
* ║ tasks and spawns the assigned profile as its own OS process. ║
|
|
13
|
+
* ║ ║
|
|
14
|
+
* ║ YOLO CONFIG (no human-in-the-loop): ║
|
|
15
|
+
* ║ - autoReclaim on crash/timeout ║
|
|
16
|
+
* ║ - maxRetries: 5 (vs default 2) before block ║
|
|
17
|
+
* ║ - autoUnblock via admin API (no manual human intervention) ║
|
|
18
|
+
* ║ - dispatcherTick: 30s (vs default 60s — faster pickup) ║
|
|
19
|
+
* ╚════════════════════════════════════════════════════════════════════════╝
|
|
20
|
+
*/
|
|
21
|
+
import { exec } from 'child_process';
|
|
22
|
+
import { promisify } from 'util';
|
|
23
|
+
import { rootLogger } from '../lib/logger.js';
|
|
24
|
+
const execAsync = promisify(exec);
|
|
25
|
+
const logger = rootLogger.child({ module: 'KanbanAdapter' });
|
|
26
|
+
// ─── YOLO Config ──────────────────────────────────────────────────────────────
|
|
27
|
+
export const YOLO_CONFIG = {
|
|
28
|
+
autoReclaim: true,
|
|
29
|
+
maxRetries: 5,
|
|
30
|
+
autoUnblock: true,
|
|
31
|
+
reclaimStaleMs: 900000, // 15min
|
|
32
|
+
dispatcherTickSeconds: 30,
|
|
33
|
+
goalModeMaxTurns: 20,
|
|
34
|
+
};
|
|
35
|
+
// ─── Helper: run hermes kanban CLI ────────────────────────────────────────────
|
|
36
|
+
async function runKanban(args, opts) {
|
|
37
|
+
const timeout = opts?.timeout ?? 30000;
|
|
38
|
+
const cmd = `hermes kanban ${args.join(' ')}`;
|
|
39
|
+
try {
|
|
40
|
+
const result = await execAsync(cmd, { timeout, maxBuffer: 5 * 1024 * 1024 });
|
|
41
|
+
return { stdout: result.stdout, stderr: result.stderr };
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
const err = e;
|
|
45
|
+
logger.error({ cmd, error: err.message, stdout: err.stdout?.slice(0, 500), stderr: err.stderr?.slice(0, 500) }, '[KANBAN] CLI command failed.');
|
|
46
|
+
throw new Error(`Kanban CLI failed: ${err.message}`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// ─── Main Class ───────────────────────────────────────────────────────────────
|
|
50
|
+
export class KanbanAdapter {
|
|
51
|
+
board;
|
|
52
|
+
constructor(board) {
|
|
53
|
+
this.board = board;
|
|
54
|
+
}
|
|
55
|
+
get boardArgs() {
|
|
56
|
+
return this.board ? ['--board', this.board] : [];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Initialize the kanban board (idempotent).
|
|
60
|
+
*/
|
|
61
|
+
async init() {
|
|
62
|
+
await runKanban([...this.boardArgs, 'init']);
|
|
63
|
+
logger.info({ board: this.board }, '[INIT] Kanban board initialized.');
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Force a dispatcher tick immediately (don't wait for the 60s loop).
|
|
67
|
+
*/
|
|
68
|
+
async nudge() {
|
|
69
|
+
try {
|
|
70
|
+
await runKanban([...this.boardArgs, 'dispatch'], { timeout: 10000 });
|
|
71
|
+
}
|
|
72
|
+
catch (e) {
|
|
73
|
+
logger.warn({ error: e }, '[NUDGE] Dispatcher tick failed — will retry on next interval.');
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Create a single task.
|
|
78
|
+
*/
|
|
79
|
+
async createTask(opts) {
|
|
80
|
+
const args = [...this.boardArgs, 'create'];
|
|
81
|
+
// Title (positional)
|
|
82
|
+
args.push(`"${opts.title.replace(/"/g, '\\"')}"`);
|
|
83
|
+
if (opts.assignee)
|
|
84
|
+
args.push('--assignee', opts.assignee);
|
|
85
|
+
if (opts.body)
|
|
86
|
+
args.push('--body', `"${opts.body.replace(/"/g, '\\"')}"`);
|
|
87
|
+
if (opts.tenant)
|
|
88
|
+
args.push('--tenant', opts.tenant);
|
|
89
|
+
if (opts.priority !== undefined)
|
|
90
|
+
args.push('--priority', String(opts.priority));
|
|
91
|
+
if (opts.workspace)
|
|
92
|
+
args.push('--workspace', opts.workspace);
|
|
93
|
+
if (opts.idempotencyKey)
|
|
94
|
+
args.push('--idempotency-key', opts.idempotencyKey);
|
|
95
|
+
if (opts.maxRuntime)
|
|
96
|
+
args.push('--max-runtime', opts.maxRuntime);
|
|
97
|
+
if (opts.goalMode) {
|
|
98
|
+
args.push('--goal');
|
|
99
|
+
args.push('--goal-max-turns', String(opts.goalMaxTurns || YOLO_CONFIG.goalModeMaxTurns));
|
|
100
|
+
}
|
|
101
|
+
if (opts.skills) {
|
|
102
|
+
for (const skill of opts.skills) {
|
|
103
|
+
args.push('--skill', skill);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (opts.parents && opts.parents.length > 0) {
|
|
107
|
+
for (const p of opts.parents) {
|
|
108
|
+
args.push('--parent', p);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// YOLO: set high retry limit
|
|
112
|
+
args.push('--max-retries', String(YOLO_CONFIG.maxRetries));
|
|
113
|
+
args.push('--json');
|
|
114
|
+
const { stdout } = await runKanban(args);
|
|
115
|
+
const parsed = JSON.parse(stdout.trim());
|
|
116
|
+
const taskId = parsed.id || parsed.task_id || '';
|
|
117
|
+
if (!taskId) {
|
|
118
|
+
throw new Error(`Kanban create did not return a task ID. Output: ${stdout.slice(0, 200)}`);
|
|
119
|
+
}
|
|
120
|
+
logger.info({ taskId, title: opts.title, assignee: opts.assignee }, '[CREATE] Task created.');
|
|
121
|
+
// Nudge dispatcher immediately for faster pickup
|
|
122
|
+
void this.nudge();
|
|
123
|
+
return { taskId };
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Create multiple independent tasks in parallel (fan-out).
|
|
127
|
+
*/
|
|
128
|
+
async createParallelTasks(tasks) {
|
|
129
|
+
const results = await Promise.all(tasks.map(t => this.createTask(t)));
|
|
130
|
+
return results.map(r => r.taskId);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Create a pipeline (sequential chain: task[0] → task[1] → task[2]...).
|
|
134
|
+
* Each task has the previous one as parent.
|
|
135
|
+
*/
|
|
136
|
+
async createPipeline(tasks) {
|
|
137
|
+
const taskIds = [];
|
|
138
|
+
for (let i = 0; i < tasks.length; i++) {
|
|
139
|
+
const taskOpts = { ...tasks[i] };
|
|
140
|
+
if (i > 0 && taskIds[i - 1]) {
|
|
141
|
+
taskOpts.parents = [...(taskOpts.parents || []), taskIds[i - 1]];
|
|
142
|
+
}
|
|
143
|
+
const { taskId } = await this.createTask(taskOpts);
|
|
144
|
+
taskIds.push(taskId);
|
|
145
|
+
}
|
|
146
|
+
return taskIds;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Get the status of a task.
|
|
150
|
+
*/
|
|
151
|
+
async getStatus(taskId) {
|
|
152
|
+
const { stdout } = await runKanban([...this.boardArgs, 'show', taskId, '--json']);
|
|
153
|
+
const parsed = JSON.parse(stdout.trim());
|
|
154
|
+
// Hermes wraps the task in a "task" key
|
|
155
|
+
const t = parsed.task || parsed;
|
|
156
|
+
return {
|
|
157
|
+
id: t.id || taskId,
|
|
158
|
+
title: t.title || '',
|
|
159
|
+
assignee: t.assignee || '',
|
|
160
|
+
status: t.status || 'unknown',
|
|
161
|
+
body: t.body,
|
|
162
|
+
tenant: t.tenant,
|
|
163
|
+
workspace: t.workspace_kind || t.workspace,
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Wait for a task to complete (polling loop).
|
|
168
|
+
* YOLO: auto-reclaim on stale claims.
|
|
169
|
+
*/
|
|
170
|
+
async wait(taskId, timeoutMs = 600000) {
|
|
171
|
+
const startTime = Date.now();
|
|
172
|
+
const pollInterval = 5000; // 5s poll
|
|
173
|
+
let lastReclaimTime = 0;
|
|
174
|
+
while (Date.now() - startTime < timeoutMs) {
|
|
175
|
+
try {
|
|
176
|
+
const status = await this.getStatus(taskId);
|
|
177
|
+
// ─── Terminal states ─────────────────────────────────────────────
|
|
178
|
+
if (status.status === 'done') {
|
|
179
|
+
const { stdout } = await runKanban([...this.boardArgs, 'show', taskId, '--json']);
|
|
180
|
+
const parsed = JSON.parse(stdout.trim());
|
|
181
|
+
const t = parsed.task || parsed;
|
|
182
|
+
const runs = parsed.runs || t.runs || [];
|
|
183
|
+
const lastRun = runs[runs.length - 1];
|
|
184
|
+
return {
|
|
185
|
+
id: taskId,
|
|
186
|
+
status: 'done',
|
|
187
|
+
summary: lastRun?.summary || '',
|
|
188
|
+
metadata: lastRun?.metadata,
|
|
189
|
+
durationMs: lastRun?.started_at && lastRun?.ended_at
|
|
190
|
+
? lastRun.ended_at - lastRun.started_at
|
|
191
|
+
: undefined,
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
if (status.status === 'archived') {
|
|
195
|
+
return {
|
|
196
|
+
id: taskId,
|
|
197
|
+
status: 'archived',
|
|
198
|
+
error: 'Task was archived',
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
// ─── Blocked → YOLO auto-unblock ─────────────────────────────────
|
|
202
|
+
if (status.status === 'blocked' && YOLO_CONFIG.autoUnblock) {
|
|
203
|
+
logger.warn({ taskId }, '[WAIT] Task is blocked — YOLO auto-unblock.');
|
|
204
|
+
try {
|
|
205
|
+
await runKanban([...this.boardArgs, 'unblock', taskId]);
|
|
206
|
+
logger.info({ taskId }, '[WAIT] Task auto-unblocked.');
|
|
207
|
+
}
|
|
208
|
+
catch (e) {
|
|
209
|
+
logger.error({ taskId, error: e }, '[WAIT] Auto-unblock failed.');
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
// ─── Running → check for stale claim ─────────────────────────────
|
|
213
|
+
if (status.status === 'running' && YOLO_CONFIG.autoReclaim) {
|
|
214
|
+
const now = Date.now();
|
|
215
|
+
if (now - lastReclaimTime > YOLO_CONFIG.reclaimStaleMs) {
|
|
216
|
+
// Check if the claim is stale (no heartbeat for 15min)
|
|
217
|
+
const { stdout } = await runKanban([...this.boardArgs, 'show', taskId, '--json']);
|
|
218
|
+
const parsed = JSON.parse(stdout.trim());
|
|
219
|
+
const runs = parsed.runs || [];
|
|
220
|
+
const activeRun = runs.find((r) => r.outcome === 'active');
|
|
221
|
+
if (activeRun && activeRun.started_at) {
|
|
222
|
+
const claimAge = now - activeRun.started_at * 1000;
|
|
223
|
+
if (claimAge > YOLO_CONFIG.reclaimStaleMs) {
|
|
224
|
+
logger.warn({ taskId, claimAgeMs: claimAge }, '[WAIT] Stale claim detected — auto-reclaim.');
|
|
225
|
+
try {
|
|
226
|
+
await runKanban([...this.boardArgs, 'reclaim', taskId]);
|
|
227
|
+
logger.info({ taskId }, '[WAIT] Task reclaimed.');
|
|
228
|
+
}
|
|
229
|
+
catch (e) {
|
|
230
|
+
logger.error({ taskId, error: e }, '[WAIT] Auto-reclaim failed.');
|
|
231
|
+
}
|
|
232
|
+
lastReclaimTime = now;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
catch (e) {
|
|
239
|
+
logger.warn({ taskId, error: e }, '[WAIT] Status check failed — will retry.');
|
|
240
|
+
}
|
|
241
|
+
// Sleep before next poll
|
|
242
|
+
await new Promise(resolve => setTimeout(resolve, pollInterval));
|
|
243
|
+
}
|
|
244
|
+
// Timeout reached
|
|
245
|
+
return {
|
|
246
|
+
id: taskId,
|
|
247
|
+
status: 'timeout',
|
|
248
|
+
error: `Task did not complete within ${timeoutMs}ms`,
|
|
249
|
+
};
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Reclaim a task (abort running worker, reset to ready).
|
|
253
|
+
*/
|
|
254
|
+
async reclaim(taskId) {
|
|
255
|
+
await runKanban([...this.boardArgs, 'reclaim', taskId]);
|
|
256
|
+
logger.info({ taskId }, '[RECLAIM] Task reclaimed.');
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Unblock a blocked task.
|
|
260
|
+
*/
|
|
261
|
+
async unblock(taskId) {
|
|
262
|
+
await runKanban([...this.boardArgs, 'unblock', taskId]);
|
|
263
|
+
logger.info({ taskId }, '[UNBLOCK] Task unblocked.');
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Archive a task.
|
|
267
|
+
*/
|
|
268
|
+
async archive(taskId) {
|
|
269
|
+
await runKanban([...this.boardArgs, 'archive', taskId]);
|
|
270
|
+
logger.info({ taskId }, '[ARCHIVE] Task archived.');
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* List tasks with optional filter.
|
|
274
|
+
*/
|
|
275
|
+
async listTasks(filter) {
|
|
276
|
+
const args = [...this.boardArgs, 'list', '--json'];
|
|
277
|
+
const { stdout } = await runKanban(args);
|
|
278
|
+
let tasks;
|
|
279
|
+
try {
|
|
280
|
+
const parsed = JSON.parse(stdout.trim());
|
|
281
|
+
tasks = Array.isArray(parsed) ? parsed : (parsed.tasks || []);
|
|
282
|
+
}
|
|
283
|
+
catch {
|
|
284
|
+
// Fallback: parse text output
|
|
285
|
+
logger.warn('[LIST] Failed to parse JSON output — returning empty list.');
|
|
286
|
+
return [];
|
|
287
|
+
}
|
|
288
|
+
// Apply filters
|
|
289
|
+
if (filter?.status) {
|
|
290
|
+
tasks = tasks.filter(t => t.status === filter.status);
|
|
291
|
+
}
|
|
292
|
+
if (filter?.assignee) {
|
|
293
|
+
tasks = tasks.filter(t => t.assignee === filter.assignee);
|
|
294
|
+
}
|
|
295
|
+
if (filter?.tenant) {
|
|
296
|
+
tasks = tasks.filter(t => t.tenant === filter.tenant);
|
|
297
|
+
}
|
|
298
|
+
return tasks;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Add a comment to a task (inter-agent protocol).
|
|
302
|
+
*/
|
|
303
|
+
async comment(taskId, body) {
|
|
304
|
+
const args = [...this.boardArgs, 'comment', taskId, '--body', `"${body.replace(/"/g, '\\"')}"`];
|
|
305
|
+
await runKanban(args);
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Create a board for a specific project/workstream.
|
|
309
|
+
*/
|
|
310
|
+
async createBoard(slug, name, opts) {
|
|
311
|
+
const args = ['boards', 'create', slug, '--name', `"${name}"`];
|
|
312
|
+
if (opts?.description)
|
|
313
|
+
args.push('--description', `"${opts.description}"`);
|
|
314
|
+
if (opts?.switch)
|
|
315
|
+
args.push('--switch');
|
|
316
|
+
await runKanban(args);
|
|
317
|
+
logger.info({ slug, name }, '[CREATE_BOARD] Board created.');
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=KanbanAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KanbanAdapter.js","sourceRoot":"","sources":["../../src/services/KanbanAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -110,7 +110,7 @@ export async function updateAgentConfig(args) {
|
|
|
110
110
|
const isUnitUpdate = !!(model || mcpServers || env || mode || cliPath);
|
|
111
111
|
const isFileRewrite = !!(file && content);
|
|
112
112
|
if (isUnitUpdate && !isFileRewrite && !runner) {
|
|
113
|
-
const detected = manager.peekRunner(name); // (b) lecture du runner déjà en place
|
|
113
|
+
const detected = await manager.peekRunner(name); // (b) lecture du runner déjà en place
|
|
114
114
|
const detectedTxt = detected ? `**${detected}**` : '**non défini** (sera initialisé à `claude`)';
|
|
115
115
|
return {
|
|
116
116
|
content: [
|
|
@@ -140,10 +140,10 @@ export async function updateAgentConfig(args) {
|
|
|
140
140
|
content,
|
|
141
141
|
});
|
|
142
142
|
// (b) Validation runtime : on confirme le runner effectif après update
|
|
143
|
-
const effectiveRunner = manager.peekRunner(name);
|
|
143
|
+
const effectiveRunner = await manager.peekRunner(name);
|
|
144
144
|
const runnerNotice = effectiveRunner
|
|
145
|
-
? `\n\n🏃 Runner effectif
|
|
146
|
-
: `\n\n⚠️ Aucun runner détectable
|
|
145
|
+
? `\n\n🏃 Runner effectif : **${effectiveRunner}**`
|
|
146
|
+
: `\n\n⚠️ Aucun runner détectable — un futur run_agent risque d'échouer.`;
|
|
147
147
|
if (changes.length === 0) {
|
|
148
148
|
return {
|
|
149
149
|
content: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manage_agents.js","sourceRoot":"","sources":["../../src/tools/manage_agents.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"manage_agents.js","sourceRoot":"","sources":["../../src/tools/manage_agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,kBAAkB;AAElB,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,OAAO,EAAE,CAAC;SACP,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,yEAAyE,CAAC;CACvF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,kBAAkB,EAAE,qEAAqE,CAAC,CAAC,QAAQ,CAAC,gDAAgD,CAAC;CAC7K,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,kBAAkB,EAAE,qEAAqE,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC;IACvJ,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,2FAA2F,CAC5F;IACH,UAAU,EAAE,CAAC;SACV,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CACP,qGAAqG,CACtG;IACH,GAAG,EAAE,CAAC;SACH,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;SAC9B,QAAQ,EAAE;SACV,QAAQ,CACP,2FAA2F,CAC5F;IACH,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;SACxF,QAAQ,EAAE;SACV,QAAQ,CAAC,+BAA+B,CAAC;IAC5C,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;SAC1E,QAAQ,EAAE;SACV,QAAQ,CAAC,oCAAoC,CAAC;IACjD,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,wDAAwD,CAAC;SACxJ,QAAQ,EAAE;SACV,QAAQ,CAAC,yDAAyD,CAAC;IACtE,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,CAAC,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;SAC7D,QAAQ,EAAE;SACV,QAAQ,CAAC,2CAA2C,CAAC;IACxD,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,6DAA6D,CAAC;CAC3E,CAAC,CAAC;AAEH,gBAAgB;AAEhB,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAsC;IACrE,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE1D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC;aACrE,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,sCAAsC,UAAU,CAAC,MAAM,YAAY,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;iBACnG;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,yCAAyC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;iBAC5F;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAuC;IACvE,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;IACnC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAEtB,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAE/C,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnE,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,aAAa,IAAI,yCAAyC,EAAE;aAC5F;SACF,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,GAAG,iCAAiC,IAAI,OAAO,CAAC;IAC5D,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,QAAQ,IAAI,6BAA6B,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACxH,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,QAAQ,IAAI,oBAAoB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7D,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;KACrD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAA6C;IACnF,MAAM,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;IACnC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAEpF,wFAAwF;IACxF,0FAA0F;IAC1F,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,UAAU,IAAI,GAAG,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC;IACvE,MAAM,aAAa,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC;IAC1C,IAAI,YAAY,IAAI,CAAC,aAAa,IAAI,CAAC,MAAM,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,sCAAsC;QACvF,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,6CAA6C,CAAC;QACjG,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EACF,4CAA4C,IAAI,QAAQ;wBACxD,qFAAqF;wBACrF,uCAAuC,IAAI,+BAA+B;wBAC1E,oCAAoC,WAAW,MAAM;wBACrD,qFAAqF;wBACrF,oDAAoD;wBACpD,8EAA8E;wBAC9E,kDAAkD,IAAI,oCAAoC;iBAC7F;aACF;SACF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE;YACpD,KAAK;YACL,UAAU;YACV,GAAG;YACH,MAAM,EAAE,MAAmE;YAC3E,IAAI,EAAE,IAA+D;YACrE,OAAO;YACP,IAAI;YACJ,OAAO;SACR,CAAC,CAAC;QAEH,uEAAuE;QACvE,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,YAAY,GAAG,eAAe;YAClC,CAAC,CAAC,8BAA8B,eAAe,IAAI;YACnD,CAAC,CAAC,uEAAuE,CAAC;QAE5E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,iDAAiD,IAAI,KAAK,YAAY,EAAE;qBAC/E;iBACF;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,+BAA+B,IAAI,oBAAoB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,YAAY,EAAE;iBACjG;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,KAA4C,CAAC;QACvD,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrE,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,4EAA4E,IAAI,iHAAiH;qBACxM;iBACF;aACF,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,uCAAuC,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;iBACpG;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -3,10 +3,10 @@ export declare const memoryStoreSchema: z.ZodObject<{
|
|
|
3
3
|
text: z.ZodString;
|
|
4
4
|
source: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
5
5
|
error: "error";
|
|
6
|
+
agent: "agent";
|
|
6
7
|
pattern: "pattern";
|
|
7
8
|
user: "user";
|
|
8
9
|
decision: "decision";
|
|
9
|
-
agent: "agent";
|
|
10
10
|
}>>>;
|
|
11
11
|
agent_name: z.ZodOptional<z.ZodString>;
|
|
12
12
|
}, z.core.$strip>;
|
|
@@ -8,6 +8,7 @@ export declare const runHermesSchema: z.ZodObject<{
|
|
|
8
8
|
config: z.ZodOptional<z.ZodString>;
|
|
9
9
|
silent: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
10
10
|
model: z.ZodOptional<z.ZodString>;
|
|
11
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
11
12
|
signal: z.ZodOptional<z.ZodCustom<AbortSignal, AbortSignal>>;
|
|
12
13
|
overmindMode: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
13
14
|
}, z.core.$loose>;
|
|
@@ -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
|
|
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;;;;;;;;;;;;iBAyBZ,CAAC;AAIjB,wBAAsB,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC;;;;;;;;;;;;GA4FzE"}
|
package/dist/tools/run_hermes.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import {
|
|
2
|
+
import { HermesRunner } from '../services/HermesRunner.js';
|
|
3
3
|
import { storeRun } from '../memory/MemoryFactory.js';
|
|
4
4
|
import { getWorkspaceDir } from '../lib/config.js';
|
|
5
5
|
import { deleteSessionId } from '../lib/sessions.js';
|
|
6
6
|
export const runHermesSchema = z
|
|
7
7
|
.object({
|
|
8
|
-
prompt: z.string().describe("Le prompt à envoyer à l'agent
|
|
8
|
+
prompt: z.string().describe("Le prompt à envoyer à l'agent Hermes"),
|
|
9
9
|
sessionId: z.string().optional(),
|
|
10
10
|
agentName: z.string().optional(),
|
|
11
11
|
autoResume: z.boolean().optional().default(false),
|
|
@@ -15,7 +15,11 @@ export const runHermesSchema = z
|
|
|
15
15
|
model: z
|
|
16
16
|
.string()
|
|
17
17
|
.optional()
|
|
18
|
-
.describe('
|
|
18
|
+
.describe('Model override (optional — the profile config.yaml is the default)'),
|
|
19
|
+
provider: z
|
|
20
|
+
.string()
|
|
21
|
+
.optional()
|
|
22
|
+
.describe('Provider override (optional — the profile config.yaml is the default)'),
|
|
19
23
|
signal: z.custom().optional().describe("AbortSignal pour annuler l'agent"),
|
|
20
24
|
/** Quand true, skip storeRun() — utilisé par Overmind MCP (le stockage est fait cote MCP Server) */
|
|
21
25
|
overmindMode: z.boolean().optional().default(false),
|
|
@@ -31,8 +35,8 @@ export async function runHermesAgent(args) {
|
|
|
31
35
|
isError: true,
|
|
32
36
|
};
|
|
33
37
|
}
|
|
34
|
-
const runner = new
|
|
35
|
-
const { prompt, agentName, autoResume, sessionId, path: argPath, config: argConfig, silent, model, signal, overmindMode, } = args;
|
|
38
|
+
const runner = new HermesRunner();
|
|
39
|
+
const { prompt, agentName, autoResume, sessionId, path: argPath, config: argConfig, silent, model, provider, signal, overmindMode, } = args;
|
|
36
40
|
const finalPath = argPath || getWorkspaceDir();
|
|
37
41
|
const finalConfig = argConfig || getWorkspaceDir();
|
|
38
42
|
const start = Date.now();
|
|
@@ -45,6 +49,7 @@ export async function runHermesAgent(args) {
|
|
|
45
49
|
configPath: finalConfig,
|
|
46
50
|
silent,
|
|
47
51
|
model,
|
|
52
|
+
provider,
|
|
48
53
|
signal,
|
|
49
54
|
});
|
|
50
55
|
// Retry if session invalid
|
|
@@ -60,6 +65,7 @@ export async function runHermesAgent(args) {
|
|
|
60
65
|
configPath: finalConfig,
|
|
61
66
|
silent,
|
|
62
67
|
model,
|
|
68
|
+
provider,
|
|
63
69
|
signal,
|
|
64
70
|
});
|
|
65
71
|
}
|
|
@@ -86,7 +92,7 @@ export async function runHermesAgent(args) {
|
|
|
86
92
|
}
|
|
87
93
|
if (result.error)
|
|
88
94
|
return {
|
|
89
|
-
content: [{ type: 'text', text: `❌ Erreur
|
|
95
|
+
content: [{ type: 'text', text: `❌ Erreur Hermes: ${result.error}` }],
|
|
90
96
|
isError: true,
|
|
91
97
|
};
|
|
92
98
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run_hermes.js","sourceRoot":"","sources":["../../src/tools/run_hermes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"run_hermes.js","sourceRoot":"","sources":["../../src/tools/run_hermes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# Migration v3.1 — Guide de mise à jour Overmind MCP
|
|
2
|
+
|
|
3
|
+
> **Version**: 2.8.53 → 2.9.0+
|
|
4
|
+
> **Impact**: Changement de l'arborescence des profils Hermes
|
|
5
|
+
> **Rétrocompatibilité**: Oui (fallback automatique vers l'ancien layout)
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Ce qui change
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
AVANT (v2.8.x) APRÈS (v3.1)
|
|
13
|
+
───────────────────────────── ─────────────────────────────
|
|
14
|
+
~/.hermes/profiles/<name>/ ~/.overmind/hermes/profiles/<name>/
|
|
15
|
+
config.yaml config.yaml
|
|
16
|
+
.env .env
|
|
17
|
+
SOUL.md SOUL.md
|
|
18
|
+
profile.yaml ← NOUVEAU
|
|
19
|
+
workspace.yaml ← NOUVEAU
|
|
20
|
+
README.md ← NOUVEAU
|
|
21
|
+
|
|
22
|
+
.claude/sessions.json → bridge/agents.json
|
|
23
|
+
.claude/process-registry.json → bridge/process-registry.json
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## Étape 1 — Mettre à jour le package
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# Sur le serveur Ubuntu (ou Windows local)
|
|
32
|
+
sudo npm install -g overmind-mcp@latest
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Le postinstall crée `~/.overmind/bridge/` automatiquement.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Étape 2 — Migration des profils existants
|
|
40
|
+
|
|
41
|
+
Le code v3.1 a un **fallback automatique**: si un profil n'existe pas dans
|
|
42
|
+
`~/.overmind/hermes/profiles/`, il le cherche dans `~/.hermes/profiles/`.
|
|
43
|
+
Vos agents **continuent de fonctionner** sans migration.
|
|
44
|
+
|
|
45
|
+
Pour migrer un profil vers le nouveau layout:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# Créer le nouveau répertoire
|
|
49
|
+
mkdir -p ~/.overmind/hermes/profiles
|
|
50
|
+
|
|
51
|
+
# Pour chaque profil existant:
|
|
52
|
+
cp -r ~/.hermes/profiles/sniperbot_analyst ~/.overmind/hermes/profiles/
|
|
53
|
+
cp -r ~/.hermes/profiles/tradingview_analyst ~/.overmind/hermes/profiles/
|
|
54
|
+
cp -r ~/.hermes/profiles/pdf_bon_travail ~/.overmind/hermes/profiles/
|
|
55
|
+
|
|
56
|
+
# Générer les fichiers manquants (profile.yaml, workspace.yaml, README.md)
|
|
57
|
+
# via le tool MCP create_agent ou manuellement:
|
|
58
|
+
hermes profile create <name> --description "..." # régénère si existe déjà
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Étape 3 — Migrer les sessions (bridge)
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# Déplacer l'ancien sessions.json vers le nouveau chemin
|
|
67
|
+
mkdir -p ~/.overmind/bridge
|
|
68
|
+
cp ~/.overmind/.claude/sessions.json ~/.overmind/bridge/agents.json 2>/dev/null
|
|
69
|
+
cp ~/.overmind/.claude/process-registry.json ~/.overmind/bridge/process-registry.json 2>/dev/null
|
|
70
|
+
|
|
71
|
+
# Ou si le workspace est le dossier source:
|
|
72
|
+
cp .claude/sessions.json ~/.overmind/bridge/agents.json 2>/dev/null
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Étape 4 — Symlinks rétrocompat (optionnel)
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
# Ancien layout → nouveau (pour les scripts existants)
|
|
81
|
+
ln -sfn ~/.overmind/hermes/profiles ~/.overmind/hermes/agents
|
|
82
|
+
ln -sfn ~/.overmind/hermes/profiles ~/.overmind/hermes/runs
|
|
83
|
+
ln -sfn ~/.overmind/hermes/profiles ~/.overmind/hermes/sessions
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Étape 5 — Redémarrer les services
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
# Ubuntu (systemd)
|
|
92
|
+
sudo systemctl restart overmind-mcp.service
|
|
93
|
+
sudo systemctl restart discord-llm.service
|
|
94
|
+
sudo systemctl restart tradingview-analyst.service
|
|
95
|
+
|
|
96
|
+
# Vérifier
|
|
97
|
+
systemctl is-active overmind-mcp discord-llm tradingview-analyst
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Étape 6 — Valider
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Lister les agents
|
|
106
|
+
overmind list_agents
|
|
107
|
+
# ou via MCP:
|
|
108
|
+
curl -s -X POST http://localhost:3099/mcp \
|
|
109
|
+
-H "Content-Type: application/json" \
|
|
110
|
+
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_agents","arguments":{}}}'
|
|
111
|
+
|
|
112
|
+
# Tester un agent
|
|
113
|
+
!sniper allo # sur Discord
|
|
114
|
+
!trade BTCUSDT 60
|
|
115
|
+
|
|
116
|
+
# Vérifier les sessions
|
|
117
|
+
cat ~/.overmind/bridge/agents.json
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Rollback (en cas de problème)
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
# Revenir à l'ancienne version
|
|
126
|
+
sudo npm install -g overmind-mcp@2.8.53
|
|
127
|
+
|
|
128
|
+
# Restaurer l'ancien layout
|
|
129
|
+
cp ~/.overmind/bridge/agents.json ~/.overmind/.claude/sessions.json 2>/dev/null
|
|
130
|
+
cp ~/.overmind/bridge/process-registry.json ~/.overmind/.claude/process-registry.json 2>/dev/null
|
|
131
|
+
|
|
132
|
+
sudo systemctl restart overmind-mcp.service
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Note importante
|
|
138
|
+
|
|
139
|
+
Le fallback automatique signifie que **même si vous ne migrez rien**, vos agents
|
|
140
|
+
existentants continueront de fonctionner. La migration est recommandée mais
|
|
141
|
+
pas obligatoire immédiatement. Les nouveaux agents créés après la mise à jour
|
|
142
|
+
seront automatiquement placés dans le nouveau layout avec profile.yaml +
|
|
143
|
+
workspace.yaml + README.md.
|