overmind-mcp 2.8.51 → 2.8.53

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 (79) hide show
  1. package/dist/bridge/ScenarioLoader.d.ts +20 -1
  2. package/dist/bridge/ScenarioLoader.d.ts.map +1 -1
  3. package/dist/bridge/ScenarioLoader.js +42 -0
  4. package/dist/bridge/ScenarioLoader.js.map +1 -1
  5. package/dist/index.d.ts +4 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +3 -2
  8. package/dist/index.js.map +1 -1
  9. package/dist/lib/agent_lifecycle.d.ts +19 -0
  10. package/dist/lib/agent_lifecycle.d.ts.map +1 -1
  11. package/dist/lib/agent_lifecycle.js +92 -1
  12. package/dist/lib/agent_lifecycle.js.map +1 -1
  13. package/dist/lib/orchestration/dispatcher.d.ts +13 -0
  14. package/dist/lib/orchestration/dispatcher.d.ts.map +1 -1
  15. package/dist/lib/orchestration/dispatcher.js +100 -0
  16. package/dist/lib/orchestration/dispatcher.js.map +1 -1
  17. package/dist/services/AgentManager.d.ts +4 -4
  18. package/dist/services/AgentManager.d.ts.map +1 -1
  19. package/dist/services/AgentManager.js +139 -191
  20. package/dist/services/AgentManager.js.map +1 -1
  21. package/dist/services/ClaudeRunner.d.ts.map +1 -1
  22. package/dist/services/ClaudeRunner.js +38 -0
  23. package/dist/services/ClaudeRunner.js.map +1 -1
  24. package/dist/services/HermesProfileManager.d.ts +99 -0
  25. package/dist/services/HermesProfileManager.d.ts.map +1 -0
  26. package/dist/services/HermesProfileManager.js +356 -0
  27. package/dist/services/HermesProfileManager.js.map +1 -0
  28. package/dist/services/HermesRunner.d.ts +53 -0
  29. package/dist/services/HermesRunner.d.ts.map +1 -0
  30. package/dist/services/HermesRunner.js +313 -0
  31. package/dist/services/HermesRunner.js.map +1 -0
  32. package/dist/services/KanbanAdapter.d.ts +135 -0
  33. package/dist/services/KanbanAdapter.d.ts.map +1 -0
  34. package/dist/services/KanbanAdapter.js +320 -0
  35. package/dist/services/KanbanAdapter.js.map +1 -0
  36. package/dist/tools/manage_agents.js +4 -4
  37. package/dist/tools/manage_agents.js.map +1 -1
  38. package/dist/tools/memory_store.d.ts +1 -1
  39. package/dist/tools/run_hermes.d.ts +1 -0
  40. package/dist/tools/run_hermes.d.ts.map +1 -1
  41. package/dist/tools/run_hermes.js +12 -6
  42. package/dist/tools/run_hermes.js.map +1 -1
  43. package/docs/PLAN_MIGRATION_V3.md +339 -0
  44. package/package.json +2 -2
  45. package/scripts/migrate-to-profiles.mjs +205 -0
  46. package/dist/lib/orchestration/swarm.d.ts +0 -76
  47. package/dist/lib/orchestration/swarm.d.ts.map +0 -1
  48. package/dist/lib/orchestration/swarm.js +0 -241
  49. package/dist/lib/orchestration/swarm.js.map +0 -1
  50. package/dist/prompts/agent_prompts.d.ts +0 -2
  51. package/dist/prompts/agent_prompts.d.ts.map +0 -1
  52. package/dist/prompts/agent_prompts.js +0 -21
  53. package/dist/prompts/agent_prompts.js.map +0 -1
  54. package/dist/services/NousHermesRunner.d.ts +0 -83
  55. package/dist/services/NousHermesRunner.d.ts.map +0 -1
  56. package/dist/services/NousHermesRunner.js +0 -1241
  57. package/dist/services/NousHermesRunner.js.map +0 -1
  58. package/dist/services/hermes/binaryFinder.d.ts +0 -8
  59. package/dist/services/hermes/binaryFinder.d.ts.map +0 -1
  60. package/dist/services/hermes/binaryFinder.js +0 -92
  61. package/dist/services/hermes/binaryFinder.js.map +0 -1
  62. package/dist/services/hermes/configYamlFilter.d.ts +0 -12
  63. package/dist/services/hermes/configYamlFilter.d.ts.map +0 -1
  64. package/dist/services/hermes/configYamlFilter.js +0 -70
  65. package/dist/services/hermes/configYamlFilter.js.map +0 -1
  66. package/dist/services/hermes/providerConfig.d.ts +0 -19
  67. package/dist/services/hermes/providerConfig.d.ts.map +0 -1
  68. package/dist/services/hermes/providerConfig.js +0 -53
  69. package/dist/services/hermes/providerConfig.js.map +0 -1
  70. package/dist/services/hermesTokenResolver.d.ts +0 -74
  71. package/dist/services/hermesTokenResolver.d.ts.map +0 -1
  72. package/dist/services/hermesTokenResolver.js +0 -140
  73. package/dist/services/hermesTokenResolver.js.map +0 -1
  74. package/dist/tools/initialization_check.d.ts +0 -2
  75. package/dist/tools/initialization_check.d.ts.map +0 -1
  76. package/dist/tools/initialization_check.js +0 -23
  77. package/dist/tools/initialization_check.js.map +0 -1
  78. /package/bin/{launch.js → launch.cjs} +0 -0
  79. /package/dist/bin/{launch.js → launch.cjs} +0 -0
@@ -0,0 +1,53 @@
1
+ /**
2
+ * HermesRunner — Thin wrapper around the native Hermes Agent CLI.
3
+ *
4
+ * ╔════════════════════════════════════════════════════════════════════════╗
5
+ * ║ ARCHITECTURE (v3.0 — Refactored) ║
6
+ * ║ ║
7
+ * ║ This runner replaces the 1391-line NousHermesRunner. It does NOT: ║
8
+ * ║ - Resolve tokens (Hermes .env per-profile does that) ║
9
+ * ║ - Detect providers (Hermes config.yaml does that) ║
10
+ * ║ - Manage HERMES_HOME custom paths (Hermes ~/.hermes native) ║
11
+ * ║ - Filter config.yaml (1 config per profile now) ║
12
+ * ║ - Find the hermes binary (it's in PATH) ║
13
+ * ║ ║
14
+ * ║ It DOES: ║
15
+ * ║ - Spawn: hermes -p <profile> chat -q "<prompt>" -Q --yolo ║
16
+ * ║ - Capture stdout (response) + stderr (session_id + diagnostics) ║
17
+ * ║ - Handle timeout + abort signal ║
18
+ * ║ - Register with agent_lifecycle + processRegistry (UI parity) ║
19
+ * ║ ║
20
+ * ║ Profile management is handled by AgentManager via: ║
21
+ * ║ hermes profile create / delete / list / show ║
22
+ * ║ ║
23
+ * ║ Session resume is handled by: ║
24
+ * ║ hermes -p <name> chat -q "<prompt>" --resume <sessionId> ║
25
+ * ╚════════════════════════════════════════════════════════════════════════╝
26
+ */
27
+ export interface RunAgentOptions {
28
+ prompt: string;
29
+ agentName?: string;
30
+ sessionId?: string;
31
+ autoResume?: boolean;
32
+ cwd?: string;
33
+ configPath?: string;
34
+ silent?: boolean;
35
+ model?: string;
36
+ provider?: string;
37
+ signal?: AbortSignal;
38
+ }
39
+ export interface RunAgentResult {
40
+ result: string;
41
+ sessionId?: string;
42
+ error?: string;
43
+ rawOutput?: string;
44
+ model?: string;
45
+ }
46
+ export declare class HermesRunner {
47
+ private timeoutMs;
48
+ private MAX_BUF;
49
+ constructor();
50
+ runAgent(options: RunAgentOptions): Promise<RunAgentResult>;
51
+ private runAgentInternal;
52
+ }
53
+ //# sourceMappingURL=HermesRunner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HermesRunner.d.ts","sourceRoot":"","sources":["../../src/services/HermesRunner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAsBH,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;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,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;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAkCD,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAoB;;IAM7B,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;YA6CnD,gBAAgB;CAiP/B"}
@@ -0,0 +1,313 @@
1
+ /**
2
+ * HermesRunner — Thin wrapper around the native Hermes Agent CLI.
3
+ *
4
+ * ╔════════════════════════════════════════════════════════════════════════╗
5
+ * ║ ARCHITECTURE (v3.0 — Refactored) ║
6
+ * ║ ║
7
+ * ║ This runner replaces the 1391-line NousHermesRunner. It does NOT: ║
8
+ * ║ - Resolve tokens (Hermes .env per-profile does that) ║
9
+ * ║ - Detect providers (Hermes config.yaml does that) ║
10
+ * ║ - Manage HERMES_HOME custom paths (Hermes ~/.hermes native) ║
11
+ * ║ - Filter config.yaml (1 config per profile now) ║
12
+ * ║ - Find the hermes binary (it's in PATH) ║
13
+ * ║ ║
14
+ * ║ It DOES: ║
15
+ * ║ - Spawn: hermes -p <profile> chat -q "<prompt>" -Q --yolo ║
16
+ * ║ - Capture stdout (response) + stderr (session_id + diagnostics) ║
17
+ * ║ - Handle timeout + abort signal ║
18
+ * ║ - Register with agent_lifecycle + processRegistry (UI parity) ║
19
+ * ║ ║
20
+ * ║ Profile management is handled by AgentManager via: ║
21
+ * ║ hermes profile create / delete / list / show ║
22
+ * ║ ║
23
+ * ║ Session resume is handled by: ║
24
+ * ║ hermes -p <name> chat -q "<prompt>" --resume <sessionId> ║
25
+ * ╚════════════════════════════════════════════════════════════════════════╝
26
+ */
27
+ import { spawn } from 'child_process';
28
+ import { CONFIG, getWorkspaceDir } from '../lib/config.js';
29
+ import { getLastSessionId, saveSessionId } from '../lib/sessions.js';
30
+ import { linkSessionToPid } from '../lib/processRegistry.js';
31
+ import { withSpan } from '../lib/telemetry.js';
32
+ import { rootLogger } from '../lib/logger.js';
33
+ import { registerProcess, updateProcessStatus, } from '../lib/processRegistry.js';
34
+ import { registerLiveAgent, appendLiveOutput, setLiveStatus, unregisterLiveAgent, } from '../lib/agent_lifecycle.js';
35
+ import { killProcessTree } from './hermes/processUtils.js';
36
+ const logger = rootLogger.child({ module: 'HermesRunner' });
37
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
38
+ /** Kill a child process tree, cross-platform. */
39
+ function killChildTree(child) {
40
+ return killProcessTree(child);
41
+ }
42
+ /** Extract session_id from Hermes stderr output. */
43
+ function extractSessionId(stderr) {
44
+ // Hermes outputs: "session_id: 20260628_114351_3fa469"
45
+ const match = stderr.match(/session_id:\s*(\S+)/i);
46
+ return match?.[1];
47
+ }
48
+ /** Check if an error output indicates a retryable failure. */
49
+ function isRetryableError(stderr, stdout) {
50
+ const combined = (stderr + ' ' + stdout).toLowerCase();
51
+ return (combined.includes('401') ||
52
+ combined.includes('unauthorized') ||
53
+ combined.includes('invalid api key') ||
54
+ combined.includes('authentication failed') ||
55
+ combined.includes('429') ||
56
+ combined.includes('rate limit') ||
57
+ combined.includes('quota') ||
58
+ combined.includes('503') ||
59
+ combined.includes('service unavailable'));
60
+ }
61
+ // ─── Main Class ───────────────────────────────────────────────────────────────
62
+ export class HermesRunner {
63
+ timeoutMs;
64
+ MAX_BUF = 10 * 1024 * 1024; // 10MB buffer limit
65
+ constructor() {
66
+ this.timeoutMs = CONFIG.TIMEOUT_MS || 900000; // 15 min default
67
+ }
68
+ async runAgent(options) {
69
+ if (options.agentName) {
70
+ if (!/^[a-zA-Z0-9_-]+$/.test(options.agentName)) {
71
+ return {
72
+ result: '',
73
+ error: `INVALID_AGENT_NAME: '${options.agentName}' contains invalid characters. Only [a-zA-Z0-9_-] allowed.`,
74
+ };
75
+ }
76
+ }
77
+ logger.info({ agentName: options.agentName, model: options.model, sessionId: options.sessionId }, '[RUN_AGENT] Starting Hermes thin-wrapper run.');
78
+ try {
79
+ const result = await withSpan('hermes.runAgent', async (span) => {
80
+ span.setAttribute('agentName', options.agentName || '');
81
+ span.setAttribute('model', options.model || '');
82
+ span.setAttribute('runner', 'hermes');
83
+ return await this.runAgentInternal(options);
84
+ }, {
85
+ agentName: options.agentName || '',
86
+ model: options.model || '',
87
+ runner: 'hermes',
88
+ });
89
+ if (options.agentName && result.sessionId) {
90
+ await saveSessionId(options.agentName, result.sessionId, options.configPath, 'hermes');
91
+ }
92
+ return result;
93
+ }
94
+ catch (error) {
95
+ logger.error({ error: error instanceof Error ? error.message : String(error), agentName: options.agentName }, '[RUN_AGENT] Hermes runner threw.');
96
+ throw error;
97
+ }
98
+ }
99
+ async runAgentInternal(options) {
100
+ const { prompt, agentName, silent } = options;
101
+ let { sessionId } = options;
102
+ const cwd = options.cwd || process.cwd();
103
+ const configPath = options.configPath || getWorkspaceDir();
104
+ // ─── Auto Resume ─────────────────────────────────────────────────────────
105
+ if (options.autoResume && agentName && !sessionId) {
106
+ const lastId = await getLastSessionId(agentName, configPath, 'hermes');
107
+ if (lastId) {
108
+ sessionId = lastId;
109
+ logger.info({ sessionId }, '[RUN_AGENT] Auto-resume session.');
110
+ }
111
+ }
112
+ // ─── Build CLI args ──────────────────────────────────────────────────────
113
+ // Global flags come BEFORE the subcommand; subcommand flags come AFTER.
114
+ //
115
+ // hermes -p <profile> chat -q "<prompt>" -Q --yolo --pass-session-id
116
+ // ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
117
+ // profile quiet query
118
+ //
119
+ const cleanArgs = [];
120
+ // Profile selection — agentName maps to a Hermes profile
121
+ if (agentName) {
122
+ cleanArgs.push('-p', agentName);
123
+ }
124
+ // Subcommand
125
+ cleanArgs.push('chat');
126
+ // Query (non-interactive mode)
127
+ cleanArgs.push('-q', prompt);
128
+ // Quiet mode: suppress banner, spinner, tool previews
129
+ cleanArgs.push('-Q');
130
+ // Bypass all approval prompts (yolo mode — no human-in-the-loop)
131
+ cleanArgs.push('--yolo');
132
+ // Include session ID in output for extraction
133
+ cleanArgs.push('--pass-session-id');
134
+ // Tag as third-party integration (not shown in user session lists)
135
+ cleanArgs.push('--source', 'tool');
136
+ // Model override (optional — profile config.yaml is the default)
137
+ if (options.model) {
138
+ cleanArgs.push('--model', options.model);
139
+ }
140
+ // Provider override (optional — profile config.yaml is the default)
141
+ if (options.provider) {
142
+ cleanArgs.push('--provider', options.provider);
143
+ }
144
+ // Resume a previous session
145
+ if (sessionId) {
146
+ cleanArgs.push('--resume', sessionId);
147
+ }
148
+ // ─── Spawn ───────────────────────────────────────────────────────────────
149
+ const timeoutMs = this.timeoutMs;
150
+ const HARD_TIMEOUT_MS = 60000;
151
+ let currentChildRef = null;
152
+ return new Promise((resolve) => {
153
+ let resolved = false;
154
+ let currentSessionId = sessionId;
155
+ const abortListener = () => {
156
+ if (currentChildRef) {
157
+ killChildTree(currentChildRef).then(() => {
158
+ safeResolve({ result: '', error: 'ABORTED', rawOutput: '' });
159
+ });
160
+ }
161
+ else {
162
+ safeResolve({ result: '', error: 'ABORTED', rawOutput: '' });
163
+ }
164
+ };
165
+ const safeResolve = (v) => {
166
+ if (!resolved) {
167
+ resolved = true;
168
+ if (options.signal) {
169
+ options.signal.removeEventListener('abort', abortListener);
170
+ }
171
+ resolve(v);
172
+ }
173
+ };
174
+ // ─── Spawn the Hermes process ──────────────────────────────────────────
175
+ const child = spawn('hermes', cleanArgs, {
176
+ cwd,
177
+ shell: false,
178
+ windowsHide: true,
179
+ env: {
180
+ ...process.env,
181
+ // Ensure Python uses UTF-8 (avoids Windows encoding crashes)
182
+ PYTHONIOENCODING: 'utf-8',
183
+ PYTHONUNBUFFERED: '1',
184
+ TERM: 'emacs',
185
+ // Disable interactive prompt_toolkit
186
+ PROMPT_TOOLKIT_NO_INTERACTIVE: '1',
187
+ },
188
+ });
189
+ currentChildRef = child;
190
+ if (child.pid) {
191
+ void registerProcess(child.pid, { agentName: agentName || '', runner: 'hermes', configPath });
192
+ void registerLiveAgent({
193
+ pid: child.pid,
194
+ runner: 'hermes',
195
+ agentName: agentName || '',
196
+ sessionId: currentSessionId || '',
197
+ cleanupFn: async () => { await killChildTree(child); },
198
+ childRef: child,
199
+ });
200
+ child.once('exit', (code) => {
201
+ setLiveStatus(child.pid, code === 0 ? 'done' : 'failed', code ?? null);
202
+ void unregisterLiveAgent(child.pid);
203
+ });
204
+ }
205
+ // ─── Capture output ────────────────────────────────────────────────────
206
+ let stdout = '';
207
+ let stderr = '';
208
+ child.stdout?.on('data', (d) => {
209
+ const chunk = d.toString();
210
+ if (child.pid) {
211
+ void appendLiveOutput(child.pid, chunk);
212
+ }
213
+ if (stdout.length + chunk.length > this.MAX_BUF) {
214
+ stdout = stdout.slice(-this.MAX_BUF);
215
+ }
216
+ else {
217
+ stdout += chunk;
218
+ }
219
+ if (!silent && agentName) {
220
+ process.stderr.write(`[Hermes:${agentName}] ${chunk}`);
221
+ }
222
+ });
223
+ child.stderr?.on('data', (d) => {
224
+ const chunk = d.toString();
225
+ if (stderr.length + chunk.length > this.MAX_BUF) {
226
+ stderr = stderr.slice(-this.MAX_BUF);
227
+ }
228
+ else {
229
+ stderr += chunk;
230
+ }
231
+ if (!silent && agentName) {
232
+ process.stderr.write(`[Hermes:${agentName}:ERR] ${chunk}`);
233
+ }
234
+ });
235
+ // ─── Timeout ───────────────────────────────────────────────────────────
236
+ const timer = setTimeout(() => {
237
+ if (child.stdin && !child.stdin.destroyed) {
238
+ try {
239
+ child.stdin.write('\n');
240
+ }
241
+ catch { /* ignore */ }
242
+ }
243
+ setTimeout(async () => {
244
+ await killChildTree(child);
245
+ safeResolve({ result: '', error: 'HARD_TIMEOUT', rawOutput: stdout + stderr });
246
+ }, HARD_TIMEOUT_MS);
247
+ }, timeoutMs);
248
+ // ─── Process exit ──────────────────────────────────────────────────────
249
+ child.on('close', async (code) => {
250
+ clearTimeout(timer);
251
+ if (child.pid) {
252
+ void updateProcessStatus(child.pid, code === 0 ? 'done' : 'failed', code, configPath);
253
+ }
254
+ // Extract session_id from stderr
255
+ const extractedSid = extractSessionId(stderr);
256
+ if (extractedSid) {
257
+ currentSessionId = extractedSid;
258
+ }
259
+ // Save session linkage
260
+ if (currentSessionId && agentName) {
261
+ await saveSessionId(agentName, currentSessionId, configPath, 'hermes');
262
+ if (child.pid) {
263
+ void linkSessionToPid(currentSessionId, child.pid, configPath);
264
+ }
265
+ }
266
+ // ─── Error handling ──────────────────────────────────────────────────
267
+ if (code !== 0) {
268
+ const retryable = isRetryableError(stderr, stdout);
269
+ if (retryable) {
270
+ // Surface the error — the caller (run_hermes.ts) handles session cleanup + retry
271
+ logger.warn({ agentName, code, retryable, sessionId: currentSessionId }, '[RUN_AGENT] Hermes exited with retryable error.');
272
+ }
273
+ if (!stdout.trim()) {
274
+ safeResolve({
275
+ result: '',
276
+ error: `EXIT_CODE_${code}`,
277
+ rawOutput: stderr || stdout,
278
+ sessionId: currentSessionId,
279
+ });
280
+ return;
281
+ }
282
+ }
283
+ // ─── Success ─────────────────────────────────────────────────────────
284
+ safeResolve({
285
+ result: stdout.trim(),
286
+ sessionId: currentSessionId,
287
+ rawOutput: stdout,
288
+ });
289
+ });
290
+ child.on('error', (err) => {
291
+ clearTimeout(timer);
292
+ killChildTree(child).then(() => {
293
+ safeResolve({
294
+ result: '',
295
+ error: `SPAWN_ERROR: ${err.message}`,
296
+ rawOutput: '',
297
+ });
298
+ });
299
+ });
300
+ // ─── Abort signal ──────────────────────────────────────────────────────
301
+ if (options.signal) {
302
+ if (options.signal.aborted) {
303
+ killChildTree(child).then(() => {
304
+ safeResolve({ result: '', error: 'ABORTED', rawOutput: '' });
305
+ });
306
+ return;
307
+ }
308
+ options.signal.addEventListener('abort', abortListener);
309
+ }
310
+ });
311
+ }
312
+ }
313
+ //# sourceMappingURL=HermesRunner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HermesRunner.js","sourceRoot":"","sources":["../../src/services/HermesRunner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,135 @@
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
+ export declare const YOLO_CONFIG: {
22
+ readonly autoReclaim: true;
23
+ readonly maxRetries: 5;
24
+ readonly autoUnblock: true;
25
+ readonly reclaimStaleMs: 900000;
26
+ readonly dispatcherTickSeconds: 30;
27
+ readonly goalModeMaxTurns: 20;
28
+ };
29
+ export interface CreateTaskOptions {
30
+ title: string;
31
+ assignee: string;
32
+ body?: string;
33
+ tenant?: string;
34
+ parents?: string[];
35
+ priority?: number;
36
+ workspace?: 'scratch' | `dir:${string}` | 'worktree';
37
+ idempotencyKey?: string;
38
+ maxRuntime?: string;
39
+ goalMode?: boolean;
40
+ goalMaxTurns?: number;
41
+ skills?: string[];
42
+ }
43
+ export interface TaskStatus {
44
+ id: string;
45
+ title: string;
46
+ assignee: string;
47
+ status: string;
48
+ body?: string;
49
+ tenant?: string;
50
+ workspace?: string;
51
+ }
52
+ export interface TaskResult {
53
+ id: string;
54
+ status: string;
55
+ summary?: string;
56
+ metadata?: Record<string, unknown>;
57
+ error?: string;
58
+ durationMs?: number;
59
+ }
60
+ export interface TaskSummary {
61
+ id: string;
62
+ title: string;
63
+ assignee: string;
64
+ status: string;
65
+ tenant?: string;
66
+ }
67
+ export declare class KanbanAdapter {
68
+ private board?;
69
+ constructor(board?: string);
70
+ private get boardArgs();
71
+ /**
72
+ * Initialize the kanban board (idempotent).
73
+ */
74
+ init(): Promise<void>;
75
+ /**
76
+ * Force a dispatcher tick immediately (don't wait for the 60s loop).
77
+ */
78
+ nudge(): Promise<void>;
79
+ /**
80
+ * Create a single task.
81
+ */
82
+ createTask(opts: CreateTaskOptions): Promise<{
83
+ taskId: string;
84
+ }>;
85
+ /**
86
+ * Create multiple independent tasks in parallel (fan-out).
87
+ */
88
+ createParallelTasks(tasks: CreateTaskOptions[]): Promise<string[]>;
89
+ /**
90
+ * Create a pipeline (sequential chain: task[0] → task[1] → task[2]...).
91
+ * Each task has the previous one as parent.
92
+ */
93
+ createPipeline(tasks: CreateTaskOptions[]): Promise<string[]>;
94
+ /**
95
+ * Get the status of a task.
96
+ */
97
+ getStatus(taskId: string): Promise<TaskStatus>;
98
+ /**
99
+ * Wait for a task to complete (polling loop).
100
+ * YOLO: auto-reclaim on stale claims.
101
+ */
102
+ wait(taskId: string, timeoutMs?: number): Promise<TaskResult>;
103
+ /**
104
+ * Reclaim a task (abort running worker, reset to ready).
105
+ */
106
+ reclaim(taskId: string): Promise<void>;
107
+ /**
108
+ * Unblock a blocked task.
109
+ */
110
+ unblock(taskId: string): Promise<void>;
111
+ /**
112
+ * Archive a task.
113
+ */
114
+ archive(taskId: string): Promise<void>;
115
+ /**
116
+ * List tasks with optional filter.
117
+ */
118
+ listTasks(filter?: {
119
+ status?: string;
120
+ assignee?: string;
121
+ tenant?: string;
122
+ }): Promise<TaskSummary[]>;
123
+ /**
124
+ * Add a comment to a task (inter-agent protocol).
125
+ */
126
+ comment(taskId: string, body: string): Promise<void>;
127
+ /**
128
+ * Create a board for a specific project/workstream.
129
+ */
130
+ createBoard(slug: string, name: string, opts?: {
131
+ description?: string;
132
+ switch?: boolean;
133
+ }): Promise<void>;
134
+ }
135
+ //# sourceMappingURL=KanbanAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KanbanAdapter.d.ts","sourceRoot":"","sources":["../../src/services/KanbanAdapter.ts"],"names":[],"mappings":"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"}