UNPKG

gemini-code-flow

Version:

AI-powered development orchestration for Gemini CLI - adapted from Claude Code Flow by ruvnet

88 lines 2.48 kB
"use strict"; /** * Task Queue for Gemini Code Flow * Adapted from Claude Code Flow by ruvnet */ Object.defineProperty(exports, "__esModule", { value: true }); exports.TaskQueue = void 0; class TaskQueue { tasks = new Map(); priorityQueue = []; /** * Add a task to the queue */ add(task) { this.tasks.set(task.id, task); this.priorityQueue.push(task); this.sortByPriority(); } /** * Get the next available task */ async getNext() { // Find the highest priority task with met dependencies for (let i = 0; i < this.priorityQueue.length; i++) { const task = this.priorityQueue[i]; if (task.status === 'pending' && this.areDependenciesMet(task)) { // Remove from queue and return this.priorityQueue.splice(i, 1); task.status = 'running'; return task; } } return null; } /** * Get task by ID */ getById(id) { return this.tasks.get(id); } /** * Get queue size */ size() { return this.priorityQueue.filter(t => t.status === 'pending').length; } /** * Check if dependencies are met */ areDependenciesMet(task) { return task.dependencies.every(depId => { const depTask = this.tasks.get(depId); return depTask && depTask.status === 'completed'; }); } /** * Sort queue by priority */ sortByPriority() { const priorityOrder = { high: 3, medium: 2, low: 1 }; this.priorityQueue.sort((a, b) => { return priorityOrder[b.priority] - priorityOrder[a.priority]; }); } /** * Get all tasks */ getAllTasks() { return Array.from(this.tasks.values()); } /** * Remove completed tasks older than specified time */ cleanup(maxAge = 24 * 60 * 60 * 1000) { const cutoff = Date.now() - maxAge; for (const [id, task] of this.tasks.entries()) { if (task.status === 'completed' && Date.now() - cutoff > maxAge) { this.tasks.delete(id); const index = this.priorityQueue.findIndex(t => t.id === id); if (index !== -1) { this.priorityQueue.splice(index, 1); } } } } } exports.TaskQueue = TaskQueue; //# sourceMappingURL=task-queue.js.map