Skip to main content
Glama
taskNumbering.js2.99 kB
/** * Task Numbering System Utilities * Generates and manages user-friendly task numbers for display */ /** * Generate task numbers based on creation date * Earlier tasks get lower numbers for consistency * @param {Array} tasks - Array of task objects * @returns {Object} Map of UUID to task number */ export function generateTaskNumbers(tasks) { if (!tasks || !Array.isArray(tasks)) { return {}; } // Sort tasks by creation date (earliest first) const sortedTasks = [...tasks].sort((a, b) => { const dateA = new Date(a.createdAt || 0); const dateB = new Date(b.createdAt || 0); return dateA - dateB; }); // Create mapping of UUID to task number const taskNumberMap = {}; sortedTasks.forEach((task, index) => { if (task.id) { taskNumberMap[task.id] = index + 1; } }); return taskNumberMap; } /** * Get task number for a given UUID * @param {string} uuid - Task UUID * @param {Object} taskNumberMap - Map of UUID to task number * @returns {string} Task number or 'Unknown' if not found */ export function getTaskNumber(uuid, taskNumberMap) { if (!uuid || !taskNumberMap) { return 'Unknown'; } return taskNumberMap[uuid] ? `#${taskNumberMap[uuid]}` : 'Unknown'; } /** * Convert array of dependency UUIDs to task numbers * @param {Array} dependencies - Array of UUID strings * @param {Object} taskNumberMap - Map of UUID to task number * @returns {Array} Array of task number strings */ export function convertDependenciesToNumbers(dependencies, taskNumberMap) { if (!dependencies || !Array.isArray(dependencies)) { return []; } return dependencies.map(uuid => getTaskNumber(uuid, taskNumberMap)); } /** * Get task by number * @param {number} taskNumber - The task number to look up * @param {Array} tasks - Array of task objects * @param {Object} taskNumberMap - Map of UUID to task number * @returns {Object|null} Task object or null if not found */ export function getTaskByNumber(taskNumber, tasks, taskNumberMap) { if (!taskNumber || !tasks || !taskNumberMap) { return null; } // Find UUID with this task number const uuid = Object.keys(taskNumberMap).find( key => taskNumberMap[key] === taskNumber ); if (!uuid) { return null; } // Find and return the task return tasks.find(task => task.id === uuid) || null; } /** * Create a reverse mapping from task number to UUID * @param {Object} taskNumberMap - Map of UUID to task number * @returns {Object} Map of task number to UUID */ export function createReverseMapping(taskNumberMap) { const reverseMap = {}; Object.entries(taskNumberMap).forEach(([uuid, number]) => { reverseMap[number] = uuid; }); return reverseMap; } /** * Format task number for display * @param {number} number - Task number * @returns {string} Formatted task number */ export function formatTaskNumber(number) { if (!number || typeof number !== 'number') { return 'Unknown'; } return `#${number}`; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cjo4m06/mcp-shrimp-task-manager'

If you have feedback or need assistance with the MCP directory API, please join our Discord server