oh-my-claude-sisyphus 3.5.7 → 3.6.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.
Files changed (112) hide show
  1. package/agents/executor-high.md +2 -0
  2. package/agents/executor-low.md +2 -0
  3. package/agents/executor.md +2 -0
  4. package/agents/templates/base-agent.md +9 -0
  5. package/commands/cancel.md +8 -8
  6. package/commands/swarm.md +350 -148
  7. package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts +7 -0
  8. package/dist/__tests__/hooks/auto-slash-command/executor.test.d.ts.map +1 -0
  9. package/dist/__tests__/hooks/auto-slash-command/executor.test.js +374 -0
  10. package/dist/__tests__/hooks/auto-slash-command/executor.test.js.map +1 -0
  11. package/dist/__tests__/hooks/learner/bridge.test.d.ts +11 -0
  12. package/dist/__tests__/hooks/learner/bridge.test.d.ts.map +1 -0
  13. package/dist/__tests__/hooks/learner/bridge.test.js +199 -0
  14. package/dist/__tests__/hooks/learner/bridge.test.js.map +1 -0
  15. package/dist/__tests__/hooks.test.js +10 -9
  16. package/dist/__tests__/hooks.test.js.map +1 -1
  17. package/dist/__tests__/installer.test.js +1 -1
  18. package/dist/agents/codex-agents.d.ts +20 -0
  19. package/dist/agents/codex-agents.d.ts.map +1 -0
  20. package/dist/agents/codex-agents.js +36 -0
  21. package/dist/agents/codex-agents.js.map +1 -0
  22. package/dist/agents/preamble.d.ts +14 -0
  23. package/dist/agents/preamble.d.ts.map +1 -0
  24. package/dist/agents/preamble.js +26 -0
  25. package/dist/agents/preamble.js.map +1 -0
  26. package/dist/hooks/autopilot/__tests__/cancel.test.js +14 -4
  27. package/dist/hooks/autopilot/__tests__/cancel.test.js.map +1 -1
  28. package/dist/hooks/autopilot/__tests__/state.test.js +1 -0
  29. package/dist/hooks/autopilot/__tests__/state.test.js.map +1 -1
  30. package/dist/hooks/autopilot/__tests__/summary.test.js +38 -3
  31. package/dist/hooks/autopilot/__tests__/summary.test.js.map +1 -1
  32. package/dist/hooks/autopilot/state.d.ts +1 -1
  33. package/dist/hooks/autopilot/state.d.ts.map +1 -1
  34. package/dist/hooks/autopilot/state.js +15 -8
  35. package/dist/hooks/autopilot/state.js.map +1 -1
  36. package/dist/hooks/index.d.ts +2 -0
  37. package/dist/hooks/index.d.ts.map +1 -1
  38. package/dist/hooks/index.js +7 -0
  39. package/dist/hooks/index.js.map +1 -1
  40. package/dist/hooks/learner/bridge.d.ts +71 -0
  41. package/dist/hooks/learner/bridge.d.ts.map +1 -0
  42. package/dist/hooks/learner/bridge.js +426 -0
  43. package/dist/hooks/learner/bridge.js.map +1 -0
  44. package/dist/hooks/mode-registry/index.d.ts +135 -0
  45. package/dist/hooks/mode-registry/index.d.ts.map +1 -0
  46. package/dist/hooks/mode-registry/index.js +445 -0
  47. package/dist/hooks/mode-registry/index.js.map +1 -0
  48. package/dist/hooks/mode-registry/types.d.ts +31 -0
  49. package/dist/hooks/mode-registry/types.d.ts.map +1 -0
  50. package/dist/hooks/mode-registry/types.js +7 -0
  51. package/dist/hooks/mode-registry/types.js.map +1 -0
  52. package/dist/hooks/ralph/loop.js +6 -6
  53. package/dist/hooks/ralph/loop.js.map +1 -1
  54. package/dist/hooks/skill-bridge.cjs +349 -0
  55. package/dist/hooks/swarm/__tests__/claiming.test.d.ts +2 -0
  56. package/dist/hooks/swarm/__tests__/claiming.test.d.ts.map +1 -0
  57. package/dist/hooks/swarm/__tests__/claiming.test.js +170 -0
  58. package/dist/hooks/swarm/__tests__/claiming.test.js.map +1 -0
  59. package/dist/hooks/swarm/__tests__/index.test.d.ts +2 -0
  60. package/dist/hooks/swarm/__tests__/index.test.d.ts.map +1 -0
  61. package/dist/hooks/swarm/__tests__/index.test.js +157 -0
  62. package/dist/hooks/swarm/__tests__/index.test.js.map +1 -0
  63. package/dist/hooks/swarm/__tests__/mode-registry.test.d.ts +2 -0
  64. package/dist/hooks/swarm/__tests__/mode-registry.test.d.ts.map +1 -0
  65. package/dist/hooks/swarm/__tests__/mode-registry.test.js +177 -0
  66. package/dist/hooks/swarm/__tests__/mode-registry.test.js.map +1 -0
  67. package/dist/hooks/swarm/claiming.d.ts +101 -0
  68. package/dist/hooks/swarm/claiming.d.ts.map +1 -0
  69. package/dist/hooks/swarm/claiming.js +460 -0
  70. package/dist/hooks/swarm/claiming.js.map +1 -0
  71. package/dist/hooks/swarm/index.d.ts +221 -0
  72. package/dist/hooks/swarm/index.d.ts.map +1 -0
  73. package/dist/hooks/swarm/index.js +413 -0
  74. package/dist/hooks/swarm/index.js.map +1 -0
  75. package/dist/hooks/swarm/state.d.ts +94 -0
  76. package/dist/hooks/swarm/state.d.ts.map +1 -0
  77. package/dist/hooks/swarm/state.js +530 -0
  78. package/dist/hooks/swarm/state.js.map +1 -0
  79. package/dist/hooks/swarm/types.d.ts +116 -0
  80. package/dist/hooks/swarm/types.d.ts.map +1 -0
  81. package/dist/hooks/swarm/types.js +22 -0
  82. package/dist/hooks/swarm/types.js.map +1 -0
  83. package/dist/hooks/ultrapilot/decomposer.d.ts +141 -0
  84. package/dist/hooks/ultrapilot/decomposer.d.ts.map +1 -0
  85. package/dist/hooks/ultrapilot/decomposer.js +377 -0
  86. package/dist/hooks/ultrapilot/decomposer.js.map +1 -0
  87. package/dist/hooks/ultrapilot/index.d.ts +31 -0
  88. package/dist/hooks/ultrapilot/index.d.ts.map +1 -1
  89. package/dist/hooks/ultrapilot/index.js +43 -2
  90. package/dist/hooks/ultrapilot/index.js.map +1 -1
  91. package/dist/hooks/ultrapilot/state.d.ts +1 -1
  92. package/dist/hooks/ultrapilot/state.d.ts.map +1 -1
  93. package/dist/hooks/ultrapilot/state.js +7 -0
  94. package/dist/hooks/ultrapilot/state.js.map +1 -1
  95. package/dist/hooks/ultraqa/index.js +5 -5
  96. package/dist/hooks/ultraqa/index.js.map +1 -1
  97. package/dist/hooks/ultrawork/index.js +3 -3
  98. package/dist/hooks/ultrawork/index.js.map +1 -1
  99. package/dist/installer/index.d.ts +1 -1
  100. package/dist/installer/index.js +1 -1
  101. package/package.json +6 -2
  102. package/scripts/build-skill-bridge.mjs +32 -0
  103. package/scripts/skill-injector.mjs +77 -26
  104. package/skills/autopilot/SKILL.md +18 -0
  105. package/skills/cancel/SKILL.md +166 -141
  106. package/skills/ecomode/SKILL.md +14 -0
  107. package/skills/pipeline/SKILL.md +13 -0
  108. package/skills/ralph/SKILL.md +22 -1
  109. package/skills/swarm/SKILL.md +521 -197
  110. package/skills/ultrapilot/SKILL.md +82 -13
  111. package/skills/ultraqa/SKILL.md +13 -0
  112. package/skills/ultrawork/SKILL.md +14 -0
@@ -0,0 +1,530 @@
1
+ /**
2
+ * Swarm State Management
3
+ *
4
+ * SQLite-based persistent state for swarm coordination.
5
+ * Uses better-sqlite3 for synchronous operations with transaction support.
6
+ * All state is stored in .omc/state/swarm.db
7
+ */
8
+ import { existsSync, mkdirSync, unlinkSync } from 'fs';
9
+ import { join } from 'path';
10
+ import { DB_SCHEMA_VERSION } from './types.js';
11
+ // Dynamic import for better-sqlite3 to handle environments where it's not installed
12
+ let Database = null;
13
+ let db = null;
14
+ /**
15
+ * Get the database file path
16
+ */
17
+ function getDbPath(cwd) {
18
+ return join(cwd, '.omc', 'state', 'swarm.db');
19
+ }
20
+ /**
21
+ * Ensure the state directory exists
22
+ */
23
+ function ensureStateDir(cwd) {
24
+ const stateDir = join(cwd, '.omc', 'state');
25
+ if (!existsSync(stateDir)) {
26
+ mkdirSync(stateDir, { recursive: true });
27
+ }
28
+ }
29
+ /**
30
+ * Initialize the SQLite database
31
+ * Creates tables if they don't exist
32
+ */
33
+ export async function initDb(cwd) {
34
+ try {
35
+ // Dynamic import of better-sqlite3
36
+ if (!Database) {
37
+ const betterSqlite3 = await import('better-sqlite3');
38
+ Database = betterSqlite3.default;
39
+ }
40
+ ensureStateDir(cwd);
41
+ const dbPath = getDbPath(cwd);
42
+ db = new Database(dbPath);
43
+ // Enable WAL mode for better concurrency
44
+ db.pragma('journal_mode = WAL');
45
+ // Create tables
46
+ db.exec(`
47
+ -- Schema version tracking
48
+ CREATE TABLE IF NOT EXISTS schema_info (
49
+ key TEXT PRIMARY KEY,
50
+ value TEXT NOT NULL
51
+ );
52
+
53
+ -- Swarm session state
54
+ CREATE TABLE IF NOT EXISTS swarm_session (
55
+ id INTEGER PRIMARY KEY CHECK (id = 1),
56
+ session_id TEXT NOT NULL,
57
+ active INTEGER NOT NULL DEFAULT 1,
58
+ agent_count INTEGER NOT NULL,
59
+ started_at INTEGER NOT NULL,
60
+ completed_at INTEGER
61
+ );
62
+
63
+ -- Task pool
64
+ CREATE TABLE IF NOT EXISTS tasks (
65
+ id TEXT PRIMARY KEY,
66
+ description TEXT NOT NULL,
67
+ status TEXT NOT NULL DEFAULT 'pending' CHECK (status IN ('pending', 'claimed', 'done', 'failed')),
68
+ claimed_by TEXT,
69
+ claimed_at INTEGER,
70
+ completed_at INTEGER,
71
+ error TEXT,
72
+ result TEXT
73
+ );
74
+
75
+ -- Agent heartbeats
76
+ CREATE TABLE IF NOT EXISTS heartbeats (
77
+ agent_id TEXT PRIMARY KEY,
78
+ last_heartbeat INTEGER NOT NULL,
79
+ current_task_id TEXT
80
+ );
81
+
82
+ -- Indexes for performance
83
+ CREATE INDEX IF NOT EXISTS idx_tasks_status ON tasks(status);
84
+ CREATE INDEX IF NOT EXISTS idx_tasks_claimed_by ON tasks(claimed_by);
85
+ CREATE INDEX IF NOT EXISTS idx_heartbeats_last ON heartbeats(last_heartbeat);
86
+ `);
87
+ // Set schema version
88
+ const setVersion = db.prepare('INSERT OR REPLACE INTO schema_info (key, value) VALUES (?, ?)');
89
+ setVersion.run('version', String(DB_SCHEMA_VERSION));
90
+ return true;
91
+ }
92
+ catch (error) {
93
+ console.error('Failed to initialize swarm database:', error);
94
+ return false;
95
+ }
96
+ }
97
+ /**
98
+ * Close the database connection
99
+ */
100
+ export function closeDb() {
101
+ if (db) {
102
+ db.close();
103
+ db = null;
104
+ }
105
+ }
106
+ /**
107
+ * Delete the database file (for cleanup)
108
+ */
109
+ export function deleteDb(cwd) {
110
+ try {
111
+ closeDb();
112
+ const dbPath = getDbPath(cwd);
113
+ if (existsSync(dbPath)) {
114
+ unlinkSync(dbPath);
115
+ }
116
+ // Also remove WAL and SHM files
117
+ const walPath = dbPath + '-wal';
118
+ const shmPath = dbPath + '-shm';
119
+ if (existsSync(walPath))
120
+ unlinkSync(walPath);
121
+ if (existsSync(shmPath))
122
+ unlinkSync(shmPath);
123
+ return true;
124
+ }
125
+ catch (error) {
126
+ console.error('Failed to delete swarm database:', error);
127
+ return false;
128
+ }
129
+ }
130
+ /**
131
+ * Check if database is initialized and connected
132
+ */
133
+ export function isDbInitialized() {
134
+ return db !== null;
135
+ }
136
+ /**
137
+ * Initialize a new swarm session
138
+ */
139
+ export function initSession(sessionId, agentCount) {
140
+ if (!db)
141
+ return false;
142
+ try {
143
+ const stmt = db.prepare(`
144
+ INSERT OR REPLACE INTO swarm_session (id, session_id, active, agent_count, started_at, completed_at)
145
+ VALUES (1, ?, 1, ?, ?, NULL)
146
+ `);
147
+ stmt.run(sessionId, agentCount, Date.now());
148
+ return true;
149
+ }
150
+ catch (error) {
151
+ console.error('Failed to initialize session:', error);
152
+ return false;
153
+ }
154
+ }
155
+ /**
156
+ * Load the current swarm state
157
+ */
158
+ export function loadState() {
159
+ if (!db)
160
+ return null;
161
+ try {
162
+ // Get session info
163
+ const sessionStmt = db.prepare('SELECT * FROM swarm_session WHERE id = 1');
164
+ const session = sessionStmt.get();
165
+ if (!session)
166
+ return null;
167
+ // Get all tasks
168
+ const tasksStmt = db.prepare('SELECT * FROM tasks ORDER BY id');
169
+ const taskRows = tasksStmt.all();
170
+ const tasks = taskRows.map(row => ({
171
+ id: row.id,
172
+ description: row.description,
173
+ status: row.status,
174
+ claimedBy: row.claimed_by,
175
+ claimedAt: row.claimed_at,
176
+ completedAt: row.completed_at,
177
+ error: row.error ?? undefined,
178
+ result: row.result ?? undefined
179
+ }));
180
+ return {
181
+ active: session.active === 1,
182
+ sessionId: session.session_id,
183
+ agentCount: session.agent_count,
184
+ tasks,
185
+ startedAt: session.started_at,
186
+ completedAt: session.completed_at
187
+ };
188
+ }
189
+ catch (error) {
190
+ console.error('Failed to load swarm state:', error);
191
+ return null;
192
+ }
193
+ }
194
+ /**
195
+ * Save swarm state (updates session info only, tasks are updated individually)
196
+ */
197
+ export function saveState(state) {
198
+ if (!db)
199
+ return false;
200
+ try {
201
+ if (state.active !== undefined || state.completedAt !== undefined) {
202
+ const updates = [];
203
+ const values = [];
204
+ if (state.active !== undefined) {
205
+ updates.push('active = ?');
206
+ values.push(state.active ? 1 : 0);
207
+ }
208
+ if (state.completedAt !== undefined) {
209
+ updates.push('completed_at = ?');
210
+ values.push(state.completedAt);
211
+ }
212
+ if (updates.length > 0) {
213
+ const stmt = db.prepare(`UPDATE swarm_session SET ${updates.join(', ')} WHERE id = 1`);
214
+ stmt.run(...values);
215
+ }
216
+ }
217
+ return true;
218
+ }
219
+ catch (error) {
220
+ console.error('Failed to save swarm state:', error);
221
+ return false;
222
+ }
223
+ }
224
+ /**
225
+ * Add a task to the pool
226
+ */
227
+ export function addTask(id, description) {
228
+ if (!db)
229
+ return false;
230
+ try {
231
+ const stmt = db.prepare(`
232
+ INSERT INTO tasks (id, description, status, claimed_by, claimed_at, completed_at, error, result)
233
+ VALUES (?, ?, 'pending', NULL, NULL, NULL, NULL, NULL)
234
+ `);
235
+ stmt.run(id, description);
236
+ return true;
237
+ }
238
+ catch (error) {
239
+ console.error('Failed to add task:', error);
240
+ return false;
241
+ }
242
+ }
243
+ /**
244
+ * Add multiple tasks in a transaction
245
+ */
246
+ export function addTasks(tasks) {
247
+ if (!db)
248
+ return false;
249
+ try {
250
+ const stmt = db.prepare(`
251
+ INSERT INTO tasks (id, description, status, claimed_by, claimed_at, completed_at, error, result)
252
+ VALUES (?, ?, 'pending', NULL, NULL, NULL, NULL, NULL)
253
+ `);
254
+ const insertMany = db.transaction((taskList) => {
255
+ for (const task of taskList) {
256
+ stmt.run(task.id, task.description);
257
+ }
258
+ });
259
+ insertMany(tasks);
260
+ return true;
261
+ }
262
+ catch (error) {
263
+ console.error('Failed to add tasks:', error);
264
+ return false;
265
+ }
266
+ }
267
+ /**
268
+ * Get all tasks
269
+ */
270
+ export function getTasks() {
271
+ if (!db)
272
+ return [];
273
+ try {
274
+ const stmt = db.prepare('SELECT * FROM tasks ORDER BY id');
275
+ const rows = stmt.all();
276
+ return rows.map(row => ({
277
+ id: row.id,
278
+ description: row.description,
279
+ status: row.status,
280
+ claimedBy: row.claimed_by,
281
+ claimedAt: row.claimed_at,
282
+ completedAt: row.completed_at,
283
+ error: row.error ?? undefined,
284
+ result: row.result ?? undefined
285
+ }));
286
+ }
287
+ catch (error) {
288
+ console.error('Failed to get tasks:', error);
289
+ return [];
290
+ }
291
+ }
292
+ /**
293
+ * Get tasks by status
294
+ */
295
+ export function getTasksByStatus(status) {
296
+ if (!db)
297
+ return [];
298
+ try {
299
+ const stmt = db.prepare('SELECT * FROM tasks WHERE status = ? ORDER BY id');
300
+ const rows = stmt.all(status);
301
+ return rows.map(row => ({
302
+ id: row.id,
303
+ description: row.description,
304
+ status: row.status,
305
+ claimedBy: row.claimed_by,
306
+ claimedAt: row.claimed_at,
307
+ completedAt: row.completed_at,
308
+ error: row.error ?? undefined,
309
+ result: row.result ?? undefined
310
+ }));
311
+ }
312
+ catch (error) {
313
+ console.error('Failed to get tasks by status:', error);
314
+ return [];
315
+ }
316
+ }
317
+ /**
318
+ * Get a specific task by ID
319
+ */
320
+ export function getTask(taskId) {
321
+ if (!db)
322
+ return null;
323
+ try {
324
+ const stmt = db.prepare('SELECT * FROM tasks WHERE id = ?');
325
+ const row = stmt.get(taskId);
326
+ if (!row)
327
+ return null;
328
+ return {
329
+ id: row.id,
330
+ description: row.description,
331
+ status: row.status,
332
+ claimedBy: row.claimed_by,
333
+ claimedAt: row.claimed_at,
334
+ completedAt: row.completed_at,
335
+ error: row.error ?? undefined,
336
+ result: row.result ?? undefined
337
+ };
338
+ }
339
+ catch (error) {
340
+ console.error('Failed to get task:', error);
341
+ return null;
342
+ }
343
+ }
344
+ /**
345
+ * Update a task's status and metadata
346
+ */
347
+ export function updateTask(taskId, updates) {
348
+ if (!db)
349
+ return false;
350
+ try {
351
+ const setClauses = [];
352
+ const values = [];
353
+ if (updates.status !== undefined) {
354
+ setClauses.push('status = ?');
355
+ values.push(updates.status);
356
+ }
357
+ if (updates.claimedBy !== undefined) {
358
+ setClauses.push('claimed_by = ?');
359
+ values.push(updates.claimedBy);
360
+ }
361
+ if (updates.claimedAt !== undefined) {
362
+ setClauses.push('claimed_at = ?');
363
+ values.push(updates.claimedAt);
364
+ }
365
+ if (updates.completedAt !== undefined) {
366
+ setClauses.push('completed_at = ?');
367
+ values.push(updates.completedAt);
368
+ }
369
+ if (updates.error !== undefined) {
370
+ setClauses.push('error = ?');
371
+ values.push(updates.error ?? null);
372
+ }
373
+ if (updates.result !== undefined) {
374
+ setClauses.push('result = ?');
375
+ values.push(updates.result ?? null);
376
+ }
377
+ if (setClauses.length === 0)
378
+ return true;
379
+ values.push(taskId);
380
+ const stmt = db.prepare(`UPDATE tasks SET ${setClauses.join(', ')} WHERE id = ?`);
381
+ stmt.run(...values);
382
+ return true;
383
+ }
384
+ catch (error) {
385
+ console.error('Failed to update task:', error);
386
+ return false;
387
+ }
388
+ }
389
+ /**
390
+ * Get swarm statistics
391
+ */
392
+ export function getStats() {
393
+ if (!db)
394
+ return null;
395
+ try {
396
+ // Get task counts by status
397
+ const countStmt = db.prepare(`
398
+ SELECT status, COUNT(*) as count FROM tasks GROUP BY status
399
+ `);
400
+ const counts = countStmt.all();
401
+ const statusCounts = {
402
+ pending: 0,
403
+ claimed: 0,
404
+ done: 0,
405
+ failed: 0
406
+ };
407
+ for (const row of counts) {
408
+ statusCounts[row.status] = row.count;
409
+ }
410
+ // Get active agents count
411
+ const agentStmt = db.prepare(`
412
+ SELECT COUNT(*) as count FROM heartbeats
413
+ WHERE last_heartbeat > ?
414
+ `);
415
+ const fiveMinutesAgo = Date.now() - 5 * 60 * 1000;
416
+ const agentCount = agentStmt.get(fiveMinutesAgo).count;
417
+ // Get session start time
418
+ const sessionStmt = db.prepare('SELECT started_at FROM swarm_session WHERE id = 1');
419
+ const session = sessionStmt.get();
420
+ const startedAt = session?.started_at ?? Date.now();
421
+ return {
422
+ totalTasks: statusCounts.pending + statusCounts.claimed + statusCounts.done + statusCounts.failed,
423
+ pendingTasks: statusCounts.pending,
424
+ claimedTasks: statusCounts.claimed,
425
+ doneTasks: statusCounts.done,
426
+ failedTasks: statusCounts.failed,
427
+ activeAgents: agentCount,
428
+ elapsedTime: Date.now() - startedAt
429
+ };
430
+ }
431
+ catch (error) {
432
+ console.error('Failed to get stats:', error);
433
+ return null;
434
+ }
435
+ }
436
+ /**
437
+ * Record an agent heartbeat
438
+ */
439
+ export function recordHeartbeat(agentId, currentTaskId) {
440
+ if (!db)
441
+ return false;
442
+ try {
443
+ const stmt = db.prepare(`
444
+ INSERT OR REPLACE INTO heartbeats (agent_id, last_heartbeat, current_task_id)
445
+ VALUES (?, ?, ?)
446
+ `);
447
+ stmt.run(agentId, Date.now(), currentTaskId);
448
+ return true;
449
+ }
450
+ catch (error) {
451
+ console.error('Failed to record heartbeat:', error);
452
+ return false;
453
+ }
454
+ }
455
+ /**
456
+ * Get all agent heartbeats
457
+ */
458
+ export function getHeartbeats() {
459
+ if (!db)
460
+ return [];
461
+ try {
462
+ const stmt = db.prepare('SELECT * FROM heartbeats ORDER BY agent_id');
463
+ const rows = stmt.all();
464
+ return rows.map(row => ({
465
+ agentId: row.agent_id,
466
+ lastHeartbeat: row.last_heartbeat,
467
+ currentTaskId: row.current_task_id
468
+ }));
469
+ }
470
+ catch (error) {
471
+ console.error('Failed to get heartbeats:', error);
472
+ return [];
473
+ }
474
+ }
475
+ /**
476
+ * Remove an agent's heartbeat record
477
+ */
478
+ export function removeHeartbeat(agentId) {
479
+ if (!db)
480
+ return false;
481
+ try {
482
+ const stmt = db.prepare('DELETE FROM heartbeats WHERE agent_id = ?');
483
+ stmt.run(agentId);
484
+ return true;
485
+ }
486
+ catch (error) {
487
+ console.error('Failed to remove heartbeat:', error);
488
+ return false;
489
+ }
490
+ }
491
+ /**
492
+ * Clear all data (for reset)
493
+ */
494
+ export function clearAllData() {
495
+ if (!db)
496
+ return false;
497
+ try {
498
+ db.exec(`
499
+ DELETE FROM tasks;
500
+ DELETE FROM heartbeats;
501
+ DELETE FROM swarm_session;
502
+ `);
503
+ return true;
504
+ }
505
+ catch (error) {
506
+ console.error('Failed to clear data:', error);
507
+ return false;
508
+ }
509
+ }
510
+ /**
511
+ * Run a function within a transaction
512
+ */
513
+ export function runTransaction(fn) {
514
+ if (!db)
515
+ return null;
516
+ try {
517
+ return db.transaction(fn)();
518
+ }
519
+ catch (error) {
520
+ console.error('Transaction failed:', error);
521
+ return null;
522
+ }
523
+ }
524
+ /**
525
+ * Get the raw database instance (for advanced use)
526
+ */
527
+ export function getDb() {
528
+ return db;
529
+ }
530
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/hooks/swarm/state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Swarm Coordination Types
3
+ *
4
+ * Type definitions for the SQLite-based swarm coordination system.
5
+ * Swarm enables multiple agents to claim and work on tasks atomically
6
+ * with lease-based ownership and heartbeat monitoring.
7
+ */
8
+ /**
9
+ * A task in the swarm task pool
10
+ */
11
+ export interface SwarmTask {
12
+ /** Unique task identifier */
13
+ id: string;
14
+ /** Human-readable task description */
15
+ description: string;
16
+ /** Current task status */
17
+ status: 'pending' | 'claimed' | 'done' | 'failed';
18
+ /** Agent ID that claimed this task (null if unclaimed) */
19
+ claimedBy: string | null;
20
+ /** Unix timestamp when task was claimed (null if unclaimed) */
21
+ claimedAt: number | null;
22
+ /** Unix timestamp when task was completed (null if incomplete) */
23
+ completedAt: number | null;
24
+ /** Error message if task failed */
25
+ error?: string;
26
+ /** Result/output from completed task */
27
+ result?: string;
28
+ }
29
+ /**
30
+ * Overall swarm state
31
+ */
32
+ export interface SwarmState {
33
+ /** Whether swarm is currently active */
34
+ active: boolean;
35
+ /** Unique session identifier */
36
+ sessionId: string;
37
+ /** Number of agents participating in the swarm */
38
+ agentCount: number;
39
+ /** All tasks in the swarm */
40
+ tasks: SwarmTask[];
41
+ /** Timestamp when swarm was started */
42
+ startedAt: number;
43
+ /** Timestamp when swarm completed (null if still running) */
44
+ completedAt: number | null;
45
+ }
46
+ /**
47
+ * Result of attempting to claim a task
48
+ */
49
+ export interface ClaimResult {
50
+ /** Whether the claim was successful */
51
+ success: boolean;
52
+ /** ID of the claimed task (null if claim failed) */
53
+ taskId: string | null;
54
+ /** Task description (for convenience) */
55
+ description?: string;
56
+ /** Reason for failure if claim was unsuccessful */
57
+ reason?: string;
58
+ }
59
+ /**
60
+ * Configuration for swarm initialization
61
+ */
62
+ export interface SwarmConfig {
63
+ /** Number of agents to spawn */
64
+ agentCount: number;
65
+ /** Task descriptions to add to the pool */
66
+ tasks: string[];
67
+ /** Agent type/model to use (default: executor) */
68
+ agentType?: string;
69
+ /** Lease timeout in milliseconds (default: 5 minutes) */
70
+ leaseTimeout?: number;
71
+ /** Heartbeat interval in milliseconds (default: 60 seconds) */
72
+ heartbeatInterval?: number;
73
+ /** Working directory */
74
+ cwd?: string;
75
+ }
76
+ /**
77
+ * Agent heartbeat record
78
+ */
79
+ export interface AgentHeartbeat {
80
+ /** Agent identifier */
81
+ agentId: string;
82
+ /** Unix timestamp of last heartbeat */
83
+ lastHeartbeat: number;
84
+ /** Task currently being worked on (null if idle) */
85
+ currentTaskId: string | null;
86
+ }
87
+ /**
88
+ * Swarm statistics
89
+ */
90
+ export interface SwarmStats {
91
+ /** Total number of tasks */
92
+ totalTasks: number;
93
+ /** Number of pending tasks */
94
+ pendingTasks: number;
95
+ /** Number of claimed/in-progress tasks */
96
+ claimedTasks: number;
97
+ /** Number of completed tasks */
98
+ doneTasks: number;
99
+ /** Number of failed tasks */
100
+ failedTasks: number;
101
+ /** Number of active agents */
102
+ activeAgents: number;
103
+ /** Elapsed time in milliseconds */
104
+ elapsedTime: number;
105
+ }
106
+ /**
107
+ * Default configuration values
108
+ */
109
+ export declare const DEFAULT_SWARM_CONFIG: Required<Omit<SwarmConfig, 'tasks' | 'cwd'>> & {
110
+ tasks: string[];
111
+ };
112
+ /**
113
+ * Database schema version for migrations
114
+ */
115
+ export declare const DB_SCHEMA_VERSION = 1;
116
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hooks/swarm/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,6BAA6B;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,0BAA0B;IAC1B,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;IAClD,0DAA0D;IAC1D,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,+DAA+D;IAC/D,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,kEAAkE;IAClE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,wCAAwC;IACxC,MAAM,EAAE,OAAO,CAAC;IAChB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,oDAAoD;IACpD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,uBAAuB;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,0CAA0C;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,KAAK,CAAC,CAAC,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAA;CAMlG,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,IAAI,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Swarm Coordination Types
3
+ *
4
+ * Type definitions for the SQLite-based swarm coordination system.
5
+ * Swarm enables multiple agents to claim and work on tasks atomically
6
+ * with lease-based ownership and heartbeat monitoring.
7
+ */
8
+ /**
9
+ * Default configuration values
10
+ */
11
+ export const DEFAULT_SWARM_CONFIG = {
12
+ agentCount: 3,
13
+ tasks: [],
14
+ agentType: 'executor',
15
+ leaseTimeout: 5 * 60 * 1000, // 5 minutes
16
+ heartbeatInterval: 60 * 1000 // 60 seconds
17
+ };
18
+ /**
19
+ * Database schema version for migrations
20
+ */
21
+ export const DB_SCHEMA_VERSION = 1;
22
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/hooks/swarm/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA0GH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAuE;IACtG,UAAU,EAAE,CAAC;IACb,KAAK,EAAE,EAAE;IACT,SAAS,EAAE,UAAU;IACrB,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,YAAY;IACzC,iBAAiB,EAAE,EAAE,GAAG,IAAI,CAAC,aAAa;CAC3C,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC"}