Spaces:
Build error
Build error
| import { type ClassValue, clsx } from "clsx"; | |
| import { twMerge } from "tailwind-merge"; | |
| export function cn(...inputs: ClassValue[]) { | |
| return twMerge(clsx(inputs)); | |
| } | |
| interface EventActionHistory { | |
| args?: { | |
| LLM_API_KEY?: string; | |
| [key: string]: unknown; | |
| }; | |
| extras?: { | |
| open_page_urls: string[]; | |
| active_page_index: number; | |
| dom_object: Record<string, unknown>; | |
| axtree_object: Record<string, unknown>; | |
| extra_element_properties: Record<string, unknown>; | |
| last_browser_action: string; | |
| last_browser_action_error: unknown; | |
| focused_element_bid: string; | |
| }; | |
| [key: string]: unknown; | |
| } | |
| export const removeUnwantedKeys = ( | |
| data: EventActionHistory[], | |
| ): EventActionHistory[] => { | |
| const UNDESIRED_KEYS = [ | |
| "open_page_urls", | |
| "active_page_index", | |
| "dom_object", | |
| "axtree_object", | |
| "extra_element_properties", | |
| "last_browser_action", | |
| "last_browser_action_error", | |
| "focused_element_bid", | |
| ]; | |
| return data | |
| .filter((item) => { | |
| // Skip items that have a status key | |
| if ("status" in item) { | |
| return false; | |
| } | |
| return true; | |
| }) | |
| .map((item) => { | |
| // Create a shallow copy of item | |
| const newItem = { ...item }; | |
| // Check if extras exists and delete it from a new extras object | |
| if (newItem.extras) { | |
| const newExtras = { ...newItem.extras }; | |
| UNDESIRED_KEYS.forEach((key) => { | |
| delete newExtras[key as keyof typeof newExtras]; | |
| }); | |
| newItem.extras = newExtras; | |
| } | |
| return newItem; | |
| }); | |
| }; | |
| export const removeApiKey = ( | |
| data: EventActionHistory[], | |
| ): EventActionHistory[] => | |
| data.map((item) => { | |
| // Create a shallow copy of item | |
| const newItem = { ...item }; | |
| // Check if LLM_API_KEY exists and delete it from a new args object | |
| if (newItem.args?.LLM_API_KEY) { | |
| const newArgs = { ...newItem.args }; | |
| delete newArgs.LLM_API_KEY; | |
| newItem.args = newArgs; | |
| } | |
| return newItem; | |
| }); | |
| export const getExtension = (code: string) => { | |
| if (code.includes(".")) return code.split(".").pop() || ""; | |
| return ""; | |
| }; | |
| /** | |
| * Format a timestamp to a human-readable format | |
| * @param timestamp The timestamp to format (ISO 8601) | |
| * @returns The formatted timestamp | |
| * | |
| * @example | |
| * formatTimestamp("2021-10-10T10:10:10.000") // "10/10/2021, 10:10:10" | |
| * formatTimestamp("2021-10-10T22:10:10.000") // "10/10/2021, 22:10:10" | |
| */ | |
| export const formatTimestamp = (timestamp: string) => | |
| new Date(timestamp).toLocaleString("en-GB", { | |
| day: "2-digit", | |
| month: "2-digit", | |
| year: "numeric", | |
| hour: "2-digit", | |
| minute: "2-digit", | |
| second: "2-digit", | |
| }); | |