export function resolveWorkspaceOrder(definitions, savedOrder) { const defaults = Array.from(definitions || []); const byId = new Map(defaults.map((definition) => [definition.id, definition])); const resolved = []; const seen = new Set(); if (Array.isArray(savedOrder)) { savedOrder.forEach((workspaceId) => { if (seen.has(workspaceId) || !byId.has(workspaceId)) return; seen.add(workspaceId); resolved.push(byId.get(workspaceId)); }); } defaults.forEach((definition) => { if (seen.has(definition.id)) return; seen.add(definition.id); resolved.push(definition); }); return resolved; } export function moveWorkspaceOrder(workspaceIds, index, offset) { if (!Array.isArray(workspaceIds) || !Number.isInteger(index) || !Number.isInteger(offset)) { return null; } const target = index + offset; if (index < 0 || index >= workspaceIds.length || target < 0 || target >= workspaceIds.length) { return null; } const moved = [...workspaceIds]; [moved[index], moved[target]] = [moved[target], moved[index]]; return moved; }