| 17 | return `${year}-${month}-${day}-${hours}${minutes}${seconds}`; |
| 18 | } |
| 19 | export function extractFirstPrompt(messages: Message[]): string { |
| 20 | const firstUserMessage = messages.find(msg => msg.type === 'user'); |
| 21 | if (!firstUserMessage || firstUserMessage.type !== 'user') { |
| 22 | return ''; |
| 23 | } |
| 24 | const content = firstUserMessage.message?.content; |
| 25 | let result = ''; |
| 26 | if (typeof content === 'string') { |
| 27 | result = content.trim(); |
| 28 | } else if (Array.isArray(content)) { |
| 29 | const textContent = content.find(item => item.type === 'text'); |
| 30 | if (textContent && 'text' in textContent) { |
| 31 | result = textContent.text.trim(); |
| 32 | } |
| 33 | } |
| 34 | |
| 35 | // Take first line only and limit length |
| 36 | result = result.split('\n')[0] || ''; |
| 37 | if (result.length > 50) { |
| 38 | result = result.substring(0, 49) + '…'; |
| 39 | } |
| 40 | return result; |
| 41 | } |
| 42 | export function sanitizeFilename(text: string): string { |
| 43 | // Replace special characters with hyphens |
| 44 | return text.toLowerCase().replace(/[^a-z0-9\s-]/g, '') // Remove special chars |