| |
| |
| |
| |
| |
| |
|
|
| |
| |
| |
| type TodoStatus = 'pending' | 'in_progress' | 'completed'; |
|
|
| |
| |
| |
| const VALID_STATUSES = new Set<TodoStatus>(['pending', 'in_progress', 'completed']); |
|
|
| |
| |
| |
| interface ProviderTodo { |
| description?: string; |
| content?: string; |
| status?: string; |
| } |
|
|
| |
| |
| |
| interface NormalizedTodo { |
| content: string; |
| status: TodoStatus; |
| activeForm: string; |
| } |
|
|
| |
| |
| |
| function normalizeStatus(status: string | undefined): TodoStatus { |
| if (!status) return 'pending'; |
| if (status === 'cancelled' || status === 'canceled') return 'completed'; |
| if (VALID_STATUSES.has(status as TodoStatus)) return status as TodoStatus; |
| return 'pending'; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| export function normalizeTodos(todos: ProviderTodo[] | null | undefined): NormalizedTodo[] { |
| if (!todos) return []; |
| return todos.map((todo) => ({ |
| content: todo.content || todo.description || '', |
| status: normalizeStatus(todo.status), |
| |
| activeForm: todo.content || todo.description || '', |
| })); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| export function normalizeFilePathInput(input: Record<string, unknown>): Record<string, unknown> { |
| const normalized = { ...input }; |
| if (!normalized.file_path) { |
| if (input.path) normalized.file_path = input.path; |
| else if (input.file) normalized.file_path = input.file; |
| else if (input.filename) normalized.file_path = input.filename; |
| else if (input.filePath) normalized.file_path = input.filePath; |
| } |
| return normalized; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| export function normalizeCommandInput(input: Record<string, unknown>): Record<string, unknown> { |
| const normalized = { ...input }; |
| if (!normalized.command) { |
| if (input.cmd) normalized.command = input.cmd; |
| else if (input.script) normalized.command = input.script; |
| } |
| return normalized; |
| } |
|
|
| |
| |
| |
| |
| |
| |
| export function normalizePatternInput(input: Record<string, unknown>): Record<string, unknown> { |
| const normalized = { ...input }; |
| if (!normalized.pattern) { |
| if (input.query) normalized.pattern = input.query; |
| else if (input.search) normalized.pattern = input.search; |
| else if (input.regex) normalized.pattern = input.regex; |
| } |
| return normalized; |
| } |
|
|