@mastra/playground-ui 3.0.0 → 4.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.mjs","../../../node_modules/.pnpm/tailwind-merge@3.0.2/node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/lib/utils.ts","../src/components/ui/button.tsx","../src/components/ui/tooltip.tsx","../src/components/assistant-ui/tooltip-icon-button.tsx","../src/components/ui/avatar.tsx","../src/components/assistant-ui/markdown-text.tsx","../src/components/assistant-ui/tool-fallback.tsx","../src/components/assistant-ui/assistant-message.tsx","../src/components/assistant-ui/user-message.tsx","../src/hooks/use-autoscroll.tsx","../src/components/assistant-ui/thread.tsx","../src/services/mastra-runtime-provider.tsx","../src/domains/agents/agent/agent-chat.tsx","../src/components/ui/badge.tsx","../src/components/ui/copyable-content.tsx","../src/components/ui/formatted-date.tsx","../src/components/ui/input.tsx","../src/components/ui/score-indicator.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/table.tsx","../src/components/ui/tabs.tsx","../src/hooks/use-evals.tsx","../src/domains/agents/agent/agent-evals.tsx","../src/hooks/use-resize-column.ts","../src/domains/resizable-panel.tsx","../src/components/ui/scroll-area.tsx","../src/domains/traces/context/trace-context.tsx","../src/domains/traces/utils.ts","../src/domains/traces/index.tsx","../src/domains/traces/trace-tree-view.tsx","../src/domains/traces/trace-span-view.tsx","../src/domains/traces/trace-details.tsx","../src/components/syntax-highlighter.tsx","../src/domains/traces/trace-span-details.tsx","../src/lib/polls.ts","../src/hooks/use-traces.tsx","../src/domains/agents/agent/agent-traces.tsx","../src/components/icons/agent-icon.tsx","../src/components/ui/data-table.tsx","../src/domains/agents/agents-table.tsx","../src/services/network-runtime-provider.tsx","../src/hooks/use-copy-to-clipboard.ts","../src/components/ui/copy-button.tsx","../src/components/ui/syntax-highlighter.tsx","../src/components/ui/markdown-renderer.tsx","../src/domains/networks/tool-fallback.tsx","../src/domains/networks/network-chat.tsx","../src/domains/workflows/workflow/workflow-traces.tsx","../src/hooks/use-workflows.ts","../src/domains/workflows/workflow/utils.ts","../src/components/ui/text.tsx","../src/components/ui/collapsible.tsx","../src/components/ui/dialog.tsx","../src/domains/workflows/workflow/workflow-condition-node.tsx","../src/domains/workflows/workflow/workflow-default-node.tsx","../src/domains/workflows/workflow/workflow-after-node.tsx","../src/domains/workflows/workflow/workflow-loop-result-node.tsx","../src/domains/workflows/workflow/workflow-graph-inner.tsx","../src/lib/string.ts","../src/domains/workflows/workflow/workflow-graph.tsx","../src/components/icons/automation-icon.tsx","../src/domains/workflows/workflows-table.tsx","../src/components/dynamic-form/utils.ts","../src/components/dynamic-form/resolvers/index.ts","../src/components/dynamic-form/fields/array-field.tsx","../src/components/ui/switch.tsx","../src/components/dynamic-form/fields/boolean-field.tsx","../src/components/ui/command.tsx","../src/components/ui/popover.tsx","../src/components/dynamic-form/fields/creatable-field.tsx","../src/components/ui/calendar.tsx","../src/components/ui/date-picker.tsx","../src/components/dynamic-form/fields/date-field.tsx","../src/components/ui/select.tsx","../src/components/dynamic-form/fields/enum-field.tsx","../src/components/ui/textarea.tsx","../src/components/dynamic-form/fields/string-field.tsx","../src/components/ui/label.tsx","../src/lib/object.ts","../src/components/dynamic-form/schema.tsx","../src/components/dynamic-form/fields/union-field.tsx","../src/components/dynamic-form/fields/object-field.tsx","../src/components/dynamic-form/fields/number-field.tsx","../src/components/dynamic-form/fields/record-field.tsx","../src/components/dynamic-form/default-field-map.tsx","../src/components/dynamic-form/schema-resolver.tsx","../src/components/dynamic-form/index.tsx","../src/components/ui/code-block.tsx","../src/domains/workflows/context/workflow-run-context.tsx","../src/domains/workflows/workflow/workflow-trigger.tsx"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","const CLASS_PART_SEPARATOR = '-';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift();\n }\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n const conflicts = conflictingClassGroups[classGroupId] || [];\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];\n }\n return conflicts;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, classPartObject) => {\n if (classParts.length === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[0];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart;\n }\n if (classPartObject.validators.length === 0) {\n return undefined;\n }\n const classRest = classParts.join(CLASS_PART_SEPARATOR);\n return classPartObject.validators.find(({\n validator\n }) => validator(classRest))?.classGroupId;\n};\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/;\nconst getGroupIdForArbitraryProperty = className => {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];\n const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property;\n }\n }\n};\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n const classMap = {\n nextPart: new Map(),\n validators: []\n };\n for (const classGroupId in classGroups) {\n processClassesRecursively(classGroups[classGroupId], classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n classGroup.forEach(classDefinition => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n return;\n }\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId\n });\n return;\n }\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);\n });\n });\n};\nconst getPart = (classPartObject, path) => {\n let currentClassPartObject = classPartObject;\n path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: []\n });\n }\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);\n });\n return currentClassPartObject;\n};\nconst isThemeGetter = func => func.isThemeGetter;\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = new Map();\n let previousCache = new Map();\n const update = (key, value) => {\n cache.set(key, value);\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = new Map();\n }\n };\n return {\n get(key) {\n let value = cache.get(key);\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value);\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length;\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + MODIFIER_SEPARATOR_LENGTH;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') {\n bracketDepth++;\n } else if (currentCharacter === ']') {\n bracketDepth--;\n } else if (currentCharacter === '(') {\n parenDepth++;\n } else if (currentCharacter === ')') {\n parenDepth--;\n }\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier);\n const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier;\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n };\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.substring(fullPrefix.length)) : {\n isExternal: true,\n modifiers: [],\n hasImportantModifier: false,\n baseClassName: className,\n maybePostfixModifierPosition: undefined\n };\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\nconst stripImportantModifier = baseClassName => {\n if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(0, baseClassName.length - 1);\n }\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(1);\n }\n return baseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n const orderSensitiveModifiers = Object.fromEntries(config.orderSensitiveModifiers.map(modifier => [modifier, true]));\n const sortModifiers = modifiers => {\n if (modifiers.length <= 1) {\n return modifiers;\n }\n const sortedModifiers = [];\n let unsortedModifiers = [];\n modifiers.forEach(modifier => {\n const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier];\n if (isPositionSensitive) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier);\n unsortedModifiers = [];\n } else {\n unsortedModifiers.push(modifier);\n }\n });\n sortedModifiers.push(...unsortedModifiers.sort());\n return sortedModifiers;\n };\n return sortModifiers;\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n const variantModifier = sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.includes(classId)) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nfunction twJoin() {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < arguments.length) {\n if (argument = arguments[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n}\nconst toValue = mix => {\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nfunction createTailwindMerge(createConfigFirst, ...createConfigRest) {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall = initTailwindMerge;\n function initTailwindMerge(classList) {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n }\n function tailwindMerge(classList) {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n }\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments));\n };\n}\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || [];\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => Boolean(value) && !Number.isNaN(Number(value));\nconst isInteger = value => Boolean(value) && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isNever, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position';\nconst imageLabels = /*#__PURE__*/new Set(['image', 'url']);\nconst isLabelImage = label => imageLabels.has(label);\nconst sizeLabels = /*#__PURE__*/new Set(['length', 'size', 'percentage']);\nconst isLabelSize = label => sizeLabels.has(label);\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['bottom', 'center', 'left', 'left-bottom', 'left-top', 'right', 'right-bottom', 'right-top', 'top'];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleOrigin = () => ['center', 'top', 'top-right', 'right', 'bottom-right', 'bottom', 'bottom-left', 'left', 'top-left', isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: [...scalePosition(), isArbitraryValue, isArbitraryVariable]\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: scaleInset()\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition]\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }]\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize]\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: [themeColor]\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', isArbitraryVariable, isArbitraryValue, themeInsetShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scaleOrigin()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scaleOrigin()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['before', 'after', 'placeholder', 'file', 'marker', 'selection', 'first-line', 'first-letter', 'backdrop', '*', '**']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst buttonVariants = cva(\n 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground shadow hover:bg-primary/90',\n destructive: 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90',\n outline: 'border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground',\n secondary: 'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n },\n size: {\n default: 'h-9 px-4 py-2',\n sm: 'h-8 rounded-md px-3 text-xs',\n lg: 'h-10 rounded-md px-8',\n icon: 'h-9 w-9',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n return <Comp className={cn(buttonVariants({ variant, size, className }))} ref={ref} {...props} />;\n },\n);\nButton.displayName = 'Button';\n\nexport { Button, buttonVariants };\n","import * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst TooltipProvider = TooltipPrimitive.Provider;\n\nconst Tooltip = TooltipPrimitive.Root;\n\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n className,\n )}\n {...props}\n />\n </TooltipPrimitive.Portal>\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","'use client';\n\nimport { forwardRef } from 'react';\n\nimport { Button, ButtonProps } from '@/components/ui/button';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { cn } from '@/lib/utils';\n\nexport type TooltipIconButtonProps = ButtonProps & {\n tooltip: string;\n side?: 'top' | 'bottom' | 'left' | 'right';\n};\n\nexport const TooltipIconButton = forwardRef<HTMLButtonElement, TooltipIconButtonProps>(\n ({ children, tooltip, side = 'bottom', className, ...rest }, ref) => {\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" {...rest} className={cn('size-6 p-1', className)} ref={ref}>\n {children}\n <span className=\"sr-only\">{tooltip}</span>\n </Button>\n </TooltipTrigger>\n <TooltipContent side={side}>{tooltip}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n },\n);\n\nTooltipIconButton.displayName = 'TooltipIconButton';\n","import * as AvatarPrimitive from '@radix-ui/react-avatar';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn('relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full', className)}\n {...props}\n />\n));\nAvatar.displayName = AvatarPrimitive.Root.displayName;\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image ref={ref} className={cn('aspect-square h-full w-full', className)} {...props} />\n));\nAvatarImage.displayName = AvatarPrimitive.Image.displayName;\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn('flex h-full w-full items-center justify-center rounded-full bg-muted', className)}\n {...props}\n />\n));\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;\n\nexport { Avatar, AvatarImage, AvatarFallback };\n","'use client';\n\nimport {\n CodeHeaderProps,\n MarkdownTextPrimitive,\n unstable_memoizeMarkdownComponents as memoizeMarkdownComponents,\n useIsMarkdownCodeBlock,\n} from '@assistant-ui/react-markdown';\nimport '@assistant-ui/react-markdown/styles/dot.css';\nimport { CheckIcon, CopyIcon } from 'lucide-react';\nimport { FC, memo, useState } from 'react';\nimport remarkGfm from 'remark-gfm';\nimport { makePrismAsyncSyntaxHighlighter } from '@assistant-ui/react-syntax-highlighter';\nimport { coldarkDark } from 'react-syntax-highlighter/dist/cjs/styles/prism';\n\nconst SyntaxHighlighter = makePrismAsyncSyntaxHighlighter({\n style: coldarkDark,\n customStyle: {\n margin: 0,\n backgroundColor: 'black',\n },\n});\n\nimport { TooltipIconButton } from '@/components/assistant-ui/tooltip-icon-button';\n\nimport { cn } from '@/lib/utils';\n\nconst MarkdownTextImpl = () => {\n return <MarkdownTextPrimitive remarkPlugins={[remarkGfm]} className=\"aui-md\" components={defaultComponents} />;\n};\n\nexport const MarkdownText = memo(MarkdownTextImpl);\n\nconst CodeHeader: FC<CodeHeaderProps> = ({ language, code }) => {\n const { isCopied, copyToClipboard } = useCopyToClipboard();\n const onCopy = () => {\n if (!code || isCopied) return;\n copyToClipboard(code);\n };\n\n return (\n <div\n style={{\n background: 'hsl(0 0% 100% / 0.06)',\n borderTopRightRadius: '0.5rem',\n borderTopLeftRadius: '0.5rem',\n marginTop: '0.5rem',\n border: '1px solid hsl(0 0% 20.4%)',\n borderBottom: 'none',\n }}\n className=\"flex items-center justify-between gap-4 px-4 py-2 text-sm font-semibold text-white\"\n >\n <span className=\"lowercase [&>span]:text-xs\">{language}</span>\n <TooltipIconButton tooltip=\"Copy\" onClick={onCopy}>\n <span className=\"grid\">\n <span\n key=\"checkmark\"\n style={{\n gridArea: '1/1',\n }}\n className={cn('transition-transform', isCopied ? 'scale-100' : 'scale-0')}\n >\n <CheckIcon size={14} />\n </span>\n <span\n style={{\n gridArea: '1/1',\n }}\n className={cn('transition-transform', isCopied ? 'scale-0' : 'scale-100')}\n key=\"copy\"\n >\n <CopyIcon size={14} />\n </span>\n </span>\n </TooltipIconButton>\n </div>\n );\n};\n\nconst useCopyToClipboard = ({\n copiedDuration = 1500,\n}: {\n copiedDuration?: number;\n} = {}) => {\n const [isCopied, setIsCopied] = useState<boolean>(false);\n\n const copyToClipboard = (value: string) => {\n if (!value) return;\n\n navigator.clipboard.writeText(value).then(() => {\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), copiedDuration);\n });\n };\n\n return { isCopied, copyToClipboard };\n};\n\nconst defaultComponents = memoizeMarkdownComponents({\n h1: ({ className, ...props }) => (\n <h1\n className={cn('mb-8 scroll-m-20 text-4xl font-extrabold tracking-tight last:mb-0', className)}\n {...props}\n style={{\n marginBottom: '2rem',\n }}\n />\n ),\n h2: ({ className, ...props }) => (\n <h2\n className={cn('mb-4 mt-8 scroll-m-20 text-3xl font-semibold tracking-tight first:mt-0 last:mb-0', className)}\n {...props}\n style={{\n marginBottom: '1rem',\n marginTop: '2rem',\n }}\n />\n ),\n h3: ({ className, ...props }) => (\n <h3\n className={cn('scroll-m-20 text-2xl font-semibold tracking-tight first:mt-0 last:mb-0', className)}\n {...props}\n style={{\n marginBottom: '1rem',\n marginTop: '1.5rem',\n }}\n />\n ),\n h4: ({ className, ...props }) => (\n <h4\n className={cn('scroll-m-20 text-xl font-semibold tracking-tight first:mt-0 last:mb-0', className)}\n {...props}\n style={{\n marginBottom: '1rem',\n marginTop: '1.5rem',\n }}\n />\n ),\n h5: ({ className, ...props }) => (\n <h5\n className={cn('font-semibold first:mt-0 last:mb-0', className)}\n {...props}\n style={{\n marginBottom: '1rem',\n marginTop: '1rem',\n }}\n />\n ),\n h6: ({ className, ...props }) => (\n <h6\n className={cn('font-semibold first:mt-0 last:mb-0', className)}\n {...props}\n style={{\n marginBottom: '1rem',\n marginTop: '1rem',\n }}\n />\n ),\n p: ({ className, ...props }) => (\n <p\n className={cn('leading-7 first:mt-0 last:mb-0', className)}\n {...props}\n style={{\n marginBottom: '1.25rem',\n marginTop: '1.25rem',\n }}\n />\n ),\n a: ({ className, ...props }) => (\n <a className={cn('text-primary font-medium underline underline-offset-4', className)} {...props} />\n ),\n blockquote: ({ className, ...props }) => (\n <blockquote className={cn('border-l-2 pl-6 italic', className)} {...props} />\n ),\n ul: ({ className, ...props }) => <ul className={cn('my-5 ml-6 list-disc [&>li]:mt-2', className)} {...props} />,\n ol: ({ className, ...props }) => <ol className={cn('my-5 ml-6 list-decimal [&>li]:mt-2', className)} {...props} />,\n hr: ({ className, ...props }) => <hr className={cn('my-5 border-b', className)} {...props} />,\n table: ({ className, ...props }) => (\n <table className={cn('my-5 w-full border-separate border-spacing-0 overflow-y-auto', className)} {...props} />\n ),\n th: ({ className, ...props }) => (\n <th\n className={cn(\n 'bg-muted px-4 py-2 text-left font-bold first:rounded-tl-lg last:rounded-tr-lg [&[align=center]]:text-center [&[align=right]]:text-right',\n className,\n )}\n {...props}\n />\n ),\n td: ({ className, ...props }) => (\n <td\n className={cn(\n 'border-b border-l px-4 py-2 text-left last:border-r [&[align=center]]:text-center [&[align=right]]:text-right',\n className,\n )}\n {...props}\n />\n ),\n tr: ({ className, ...props }) => (\n <tr\n className={cn(\n 'm-0 border-b p-0 first:border-t [&:last-child>td:first-child]:rounded-bl-lg [&:last-child>td:last-child]:rounded-br-lg',\n className,\n )}\n {...props}\n />\n ),\n sup: ({ className, ...props }) => <sup className={cn('[&>a]:text-xs [&>a]:no-underline', className)} {...props} />,\n pre: ({ className, ...props }) => (\n <pre\n {...props}\n style={{\n borderBottomRightRadius: '0.5rem',\n borderBottomLeftRadius: '0.5rem',\n background: 'transparent',\n fontSize: '0.875rem',\n marginBottom: '0.5rem',\n border: '1px solid hsl(0 0% 20.4%)',\n }}\n className={cn('overflow-x-auto p-4 text-white', className)}\n />\n ),\n code: function Code({ className, ...props }) {\n const isCodeBlock = useIsMarkdownCodeBlock();\n return (\n <pre\n style={{\n fontSize: '0.875rem',\n display: 'inline',\n }}\n >\n <code\n className={cn(!isCodeBlock && 'bg-muted rounded border font-semibold', className)}\n {...props}\n style={{\n fontWeight: '400',\n paddingBlock: !isCodeBlock ? '0.1em' : 0,\n paddingInline: !isCodeBlock ? '0.3em' : 0,\n }}\n />{' '}\n </pre>\n );\n },\n CodeHeader,\n SyntaxHighlighter,\n});\n","import { ToolCallContentPartComponent } from '@assistant-ui/react';\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from 'lucide-react';\nimport { useState } from 'react';\nimport { Button } from '../ui/button';\n\nexport const ToolFallback: ToolCallContentPartComponent = ({ toolName, argsText, result }) => {\n const [isCollapsed, setIsCollapsed] = useState(true);\n return (\n <div className=\"mb-2 flex w-full flex-col gap-3 rounded-lg border py-3 text-sm\">\n <div className=\"flex items-center gap-2 px-4\">\n <CheckIcon className=\"size-4\" />\n <p className=\"\">\n Used tool: <b>{toolName}</b>\n </p>\n <div className=\"flex-grow\" />\n <Button onClick={() => setIsCollapsed(!isCollapsed)}>\n {isCollapsed ? <ChevronUpIcon /> : <ChevronDownIcon />}\n </Button>\n </div>\n {!isCollapsed && (\n <div className=\"flex flex-col gap-2 border-t pt-2\">\n <div className=\"px-4\">\n <pre className=\"whitespace-pre-wrap\">{argsText}</pre>\n </div>\n {result !== undefined && (\n <div className=\"border-t border-dashed px-4 pt-2\">\n <p className=\"font-semibold\">Result:</p>\n <pre className=\"whitespace-pre-wrap\">\n {typeof result === 'string' ? result : JSON.stringify(result, null, 2)}\n </pre>\n </div>\n )}\n </div>\n )}\n </div>\n );\n};\n","import {\n ActionBarPrimitive,\n BranchPickerPrimitive,\n MessagePrimitive,\n ToolCallContentPartComponent,\n} from '@assistant-ui/react';\nimport { CheckIcon, ChevronLeftIcon, ChevronRightIcon, CopyIcon } from 'lucide-react';\nimport { FC } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nimport { MarkdownText } from './markdown-text';\nimport { TooltipIconButton } from './tooltip-icon-button';\nimport { ToolFallback } from '@/components/assistant-ui/tool-fallback';\n\nexport const AssistantMessage: FC<{ ToolFallback?: ToolCallContentPartComponent }> = ({\n ToolFallback: ToolFallbackCustom,\n}) => {\n return (\n <MessagePrimitive.Root className=\"grid group grid-cols-[auto_auto_1fr] grid-rows-[auto_1fr] max-w-[var(--thread-max-width)] relative w-full\">\n <div className=\"text-foreground max-w-[calc(var(--thread-max-width)*0.8)] sm:max-w-[70%] break-words leading-7 col-span-2 py-2 col-start-2 row-start-1\">\n <MessagePrimitive.Content\n components={{ Text: MarkdownText, tools: { Fallback: ToolFallbackCustom || ToolFallback } }}\n />\n </div>\n\n <AssistantActionBar />\n <BranchPicker className=\"col-start-2 row-start-2 -ml-2 mr-2\" />\n </MessagePrimitive.Root>\n );\n};\n\nconst BranchPicker: FC<BranchPickerPrimitive.Root.Props> = ({ className, ...rest }) => {\n return (\n <BranchPickerPrimitive.Root\n hideWhenSingleBranch\n className={cn('text-muted-foreground inline-flex items-center text-xs', className)}\n {...rest}\n >\n <BranchPickerPrimitive.Previous asChild>\n <TooltipIconButton tooltip=\"Previous\">\n <ChevronLeftIcon />\n </TooltipIconButton>\n </BranchPickerPrimitive.Previous>\n <span className=\"font-medium\">\n <BranchPickerPrimitive.Number /> / <BranchPickerPrimitive.Count />\n </span>\n <BranchPickerPrimitive.Next asChild>\n <TooltipIconButton tooltip=\"Next\">\n <ChevronRightIcon />\n </TooltipIconButton>\n </BranchPickerPrimitive.Next>\n </BranchPickerPrimitive.Root>\n );\n};\n\nconst AssistantActionBar: FC = () => {\n return (\n <ActionBarPrimitive.Root\n hideWhenRunning\n autohide=\"not-last\"\n autohideFloat=\"single-branch\"\n className=\"text-muted-foreground flex gap-1 col-start-3 row-start-2 -ml-1\"\n >\n {/* <MessagePrimitive.If speaking={false}>\n <ActionBarPrimitive.Speak asChild>\n <TooltipIconButton tooltip=\"Read aloud\">\n <AudioLinesIcon />\n </TooltipIconButton>\n </ActionBarPrimitive.Speak>\n </MessagePrimitive.If>\n <MessagePrimitive.If speaking>\n <ActionBarPrimitive.StopSpeaking asChild>\n <TooltipIconButton tooltip=\"Stop\">\n <StopCircleIcon />\n </TooltipIconButton>\n </ActionBarPrimitive.StopSpeaking>\n </MessagePrimitive.If> */}\n <ActionBarPrimitive.Copy asChild>\n <TooltipIconButton tooltip=\"Copy\">\n <MessagePrimitive.If copied>\n <CheckIcon />\n </MessagePrimitive.If>\n <MessagePrimitive.If copied={false}>\n <CopyIcon />\n </MessagePrimitive.If>\n </TooltipIconButton>\n </ActionBarPrimitive.Copy>\n {/* <ActionBarPrimitive.Reload asChild>\n <TooltipIconButton tooltip=\"Refresh\">\n <RefreshCwIcon />\n </TooltipIconButton>\n </ActionBarPrimitive.Reload> */}\n </ActionBarPrimitive.Root>\n );\n};\n","import { MessagePrimitive } from '@assistant-ui/react';\nimport { FC } from 'react';\n\nexport const UserMessage: FC = () => {\n return (\n <MessagePrimitive.Root\n style={{\n placeItems: 'end',\n }}\n className=\"grid w-full\"\n >\n {/* <UserActionBar /> */}\n\n <div\n style={{\n maxWidth: '60%',\n }}\n className=\"bg-primary w-fit text-primary-foreground max-w-[calc(var(--thread-max-width)*0.8)] sm:max-w-[60%] break-words rounded-xl px-3 py-2 text-sm col-start-2 row-start-2\"\n >\n <MessagePrimitive.Content />\n </div>\n\n {/* <BranchPicker className=\"col-span-full col-start-1 row-start-3 -mr-1 justify-end\" /> */}\n </MessagePrimitive.Root>\n );\n};\n","import React, { useRef } from 'react';\n\nexport interface UseAutoscrollOptions {\n enabled?: boolean;\n}\n\nexport const useAutoscroll = (ref: React.RefObject<HTMLElement | null>, { enabled = true }: UseAutoscrollOptions) => {\n const shouldScrollRef = useRef(enabled);\n\n React.useEffect(() => {\n if (!enabled) return;\n if (!ref?.current) return;\n\n const area = ref.current;\n\n const observer = new MutationObserver(() => {\n if (shouldScrollRef.current) {\n area.scrollTo({ top: area.scrollHeight, behavior: 'smooth' });\n }\n });\n\n observer.observe(area, {\n childList: true, // observe direct children changes\n subtree: true, // observe all descendants\n characterData: true, // observe text content changes\n });\n\n const handleScroll = (e: Event) => {\n const scrollElement = e.target as HTMLElement;\n const currentPosition = scrollElement.scrollTop + scrollElement.clientHeight;\n const totalHeight = scrollElement.scrollHeight;\n const isAtEnd = currentPosition >= totalHeight - 1;\n\n if (isAtEnd) {\n shouldScrollRef.current = true;\n } else {\n shouldScrollRef.current = false;\n }\n };\n\n area.addEventListener('scroll', handleScroll);\n\n return () => {\n area.removeEventListener('scroll', handleScroll);\n observer.disconnect();\n };\n }, [enabled, ref]);\n};\n","import {\n ActionBarPrimitive,\n ComposerPrimitive,\n MessagePrimitive,\n ThreadPrimitive,\n ToolCallContentPartComponent,\n} from '@assistant-ui/react';\nimport { ArrowDownIcon, ArrowUp, PencilIcon, SendHorizontalIcon } from 'lucide-react';\nimport type { FC } from 'react';\n\nimport { TooltipIconButton } from '@/components/assistant-ui/tooltip-icon-button';\nimport { Avatar, AvatarFallback } from '@/components/ui/avatar';\nimport { Button } from '@/components/ui/button';\n\nimport { AssistantMessage } from './assistant-message';\nimport { UserMessage } from './user-message';\nimport { useRef } from 'react';\nimport { useAutoscroll } from '@/hooks/use-autoscroll';\n\nconst suggestions = ['What capabilities do you have?', 'How can you help me?', 'Tell me about yourself'];\n\nexport const Thread: FC<{ memory?: boolean; ToolFallback?: ToolCallContentPartComponent }> = ({\n memory,\n ToolFallback,\n}) => {\n function WrappedAssistantMessage(props: MessagePrimitive.Root.Props) {\n return <AssistantMessage {...props} ToolFallback={ToolFallback} />;\n }\n const areaRef = useRef<HTMLDivElement>(null);\n useAutoscroll(areaRef, { enabled: true });\n\n return (\n <ThreadPrimitive.Root\n style={{\n margin: '0 auto',\n }}\n className=\"bg-background flex flex-col box-border relative h-full\"\n >\n <ThreadPrimitive.Viewport\n style={{\n paddingTop: '2rem',\n background: 'inherit',\n scrollBehavior: 'smooth',\n overflowY: 'scroll',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n height: memory ? 'calc(100vh - 65px)' : 'calc(100vh - 90px)',\n paddingBottom: '108px',\n }}\n ref={areaRef}\n autoScroll={false}\n >\n <div style={{ width: '100%', maxWidth: '48rem', paddingInline: '1.5rem' }}>\n <ThreadWelcome />\n <ThreadPrimitive.Messages\n components={{\n UserMessage: UserMessage,\n EditComposer: EditComposer,\n AssistantMessage: WrappedAssistantMessage,\n }}\n />\n </div>\n\n <ThreadPrimitive.If empty={false}>\n <div className=\"min-h-8 flex-grow\" />\n </ThreadPrimitive.If>\n </ThreadPrimitive.Viewport>\n <div\n style={{\n width: '100%',\n maxWidth: '48rem',\n position: 'absolute',\n bottom: 0,\n margin: '0 auto',\n zIndex: 10,\n paddingBottom: '0.5em',\n left: '50%',\n transform: 'translate(-50%)',\n background: '#0f0f0f',\n }}\n className=\"px-4\"\n >\n <div className=\"flex flex-col gap-2\">\n <ThreadPrimitive.Empty>\n <ThreadWelcomeSuggestions />\n </ThreadPrimitive.Empty>\n <Composer />\n {!memory && (\n <div className=\"flex items-center gap-1 text-sm text-mastra-el-5\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"text-purple-400\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4\" />\n <path d=\"M12 8h.01\" />\n </svg>\n <span className=\"text-xs text-gray-300/60\">\n Agent will not remember previous messages. To enable memory for agent see{' '}\n <a\n href=\"https://mastra.ai/docs/agents/01-agent-memory\"\n target=\"_blank\"\n rel=\"noopener\"\n className=\"text-gray-300/60 hover:text-gray-100 underline\"\n >\n docs.\n </a>\n </span>\n </div>\n )}\n </div>\n </div>\n </ThreadPrimitive.Root>\n );\n};\n\nconst ThreadScrollToBottom: FC = () => {\n return (\n <ThreadPrimitive.ScrollToBottom asChild>\n <TooltipIconButton\n tooltip=\"Scroll to bottom\"\n variant=\"outline\"\n className=\"absolute -top-8 rounded-full disabled:invisible\"\n >\n <ArrowDownIcon />\n </TooltipIconButton>\n </ThreadPrimitive.ScrollToBottom>\n );\n};\n\nconst ThreadWelcome: FC = () => {\n return (\n <ThreadPrimitive.Empty>\n <div\n style={{\n maxWidth: '48rem',\n margin: '0 auto',\n }}\n className=\"max-w-[48rem] flex w-full flex-grow flex-col\"\n >\n <div className=\"flex w-full flex-grow flex-col items-center justify-center\">\n <Avatar>\n <AvatarFallback>C</AvatarFallback>\n </Avatar>\n <p className=\"mt-4 font-medium\">How can I help you today?</p>\n </div>\n </div>\n </ThreadPrimitive.Empty>\n );\n};\n\nconst ThreadWelcomeSuggestions: FC = () => {\n return (\n <div className=\"mt-3 flex w-full items-stretch justify-center gap-4\">\n {suggestions.map(suggestion => (\n <ThreadPrimitive.Suggestion\n key={suggestion}\n className=\"hover:bg-muted/80 flex max-w-sm grow basis-0 flex-col items-center justify-center rounded-lg border p-3 transition-colors ease-in\"\n prompt={suggestion}\n method=\"replace\"\n autoSend\n >\n <span className=\"line-clamp-2 text-ellipsis text-sm font-medium\">{suggestion}</span>\n </ThreadPrimitive.Suggestion>\n ))}\n </div>\n );\n};\n\nconst Composer: FC = () => {\n return (\n <ComposerPrimitive.Root\n style={{\n borderRadius: '16px',\n background: '#0f0f0f',\n boxShadow: '0px 8px 0px 0px #0f0f0f',\n }}\n className=\"relative focus-within:border-ring/20 flex w-full flex-wrap items-end border bg-inherit px-2.5 shadow-sm transition-colors ease-in\"\n >\n <ComposerPrimitive.Input asChild>\n <textarea\n style={{\n height: '98px',\n }}\n className=\"placeholder:text-muted-foreground max-h-40 w-full flex-grow resize-none border-none bg-transparent px-2 py-4 text-sm outline-none focus:ring-0 disabled:cursor-not-allowed\"\n autoFocus\n placeholder=\"Write a message...\"\n name=\"\"\n id=\"\"\n ></textarea>\n </ComposerPrimitive.Input>\n <ComposerAction />\n </ComposerPrimitive.Root>\n );\n};\n\nconst ComposerAction: FC = () => {\n return (\n <>\n <ThreadPrimitive.If running={false}>\n <ComposerPrimitive.Send asChild>\n <TooltipIconButton\n tooltip=\"Send\"\n variant=\"default\"\n style={{\n marginBottom: '0.625rem',\n position: 'absolute',\n right: '0.75rem',\n height: '2rem',\n width: '2rem',\n borderRadius: '50%',\n padding: '0.5rem',\n transition: 'opacity 0.2s ease-in',\n }}\n >\n <ArrowUp className=\"h-6 w-6\" />\n </TooltipIconButton>\n </ComposerPrimitive.Send>\n </ThreadPrimitive.If>\n <ThreadPrimitive.If running>\n <ComposerPrimitive.Cancel asChild>\n <TooltipIconButton\n tooltip=\"Cancel\"\n variant=\"default\"\n style={{\n marginBottom: '0.625rem',\n position: 'absolute',\n right: '0.75rem',\n height: '2rem',\n width: '2rem',\n padding: '0.5rem',\n transition: 'opacity 0.2s ease-in',\n borderRadius: '50%',\n }}\n >\n <CircleStopIcon />\n </TooltipIconButton>\n </ComposerPrimitive.Cancel>\n </ThreadPrimitive.If>\n </>\n );\n};\n\nconst UserActionBar: FC = () => {\n return (\n <ActionBarPrimitive.Root\n hideWhenRunning\n autohide=\"not-last\"\n className=\"flex flex-col items-end col-start-1 row-start-2 mr-3 mt-2.5\"\n >\n <ActionBarPrimitive.Edit asChild>\n <TooltipIconButton tooltip=\"Edit\">\n <PencilIcon />\n </TooltipIconButton>\n </ActionBarPrimitive.Edit>\n </ActionBarPrimitive.Root>\n );\n};\n\nconst EditComposer: FC = () => {\n return (\n <ComposerPrimitive.Root\n style={{\n maxWidth: '48rem',\n margin: '0 auto',\n }}\n className=\"bg-muted max-w-[48rem] my-4 flex w-full flex-col gap-2 rounded-xl\"\n >\n <ComposerPrimitive.Input className=\"text-foreground flex h-8 w-full resize-none bg-transparent p-4 pb-0 outline-none\" />\n\n <div className=\"mx-3 mb-3 flex items-center justify-center gap-2 self-end\">\n <ComposerPrimitive.Cancel asChild>\n <Button variant=\"ghost\">Cancel</Button>\n </ComposerPrimitive.Cancel>\n <ComposerPrimitive.Send asChild>\n <Button>Send</Button>\n </ComposerPrimitive.Send>\n </div>\n </ComposerPrimitive.Root>\n );\n};\n\nconst CircleStopIcon = () => {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"currentColor\" width=\"16\" height=\"16\">\n <rect width=\"10\" height=\"10\" x=\"3\" y=\"3\" rx=\"2\" />\n </svg>\n );\n};\n","'use client';\n\nimport {\n useExternalStoreRuntime,\n ThreadMessageLike,\n AppendMessage,\n AssistantRuntimeProvider,\n} from '@assistant-ui/react';\nimport { MastraClient } from '@mastra/client-js';\nimport { useState, ReactNode, useEffect, useMemo, useCallback } from 'react';\n\nimport { ChatProps } from '@/types';\n\nconst convertMessage = (message: ThreadMessageLike): ThreadMessageLike => {\n return message;\n};\n\nexport function MastraRuntimeProvider({\n children,\n agentId,\n initialMessages,\n agentName,\n memory,\n threadId,\n baseUrl,\n refreshThreadList,\n}: Readonly<{\n children: ReactNode;\n}> &\n ChatProps) {\n const [isRunning, setIsRunning] = useState(false);\n const [messages, setMessages] = useState<ThreadMessageLike[]>([]);\n const [currentThreadId, setCurrentThreadId] = useState<string | undefined>(threadId);\n\n useEffect(() => {\n const hasNewInitialMessages = initialMessages && initialMessages?.length > messages?.length;\n if (\n messages.length === 0 ||\n currentThreadId !== threadId ||\n (hasNewInitialMessages && currentThreadId === threadId)\n ) {\n if (initialMessages && threadId && memory) {\n const convertedMessages: ThreadMessageLike[] = initialMessages\n ?.map((message: any) => {\n if (message?.toolInvocations?.length > 0) {\n return {\n ...message,\n content: message.toolInvocations.map((toolInvocation: any) => ({\n type: 'tool-call',\n toolCallId: toolInvocation?.toolCallId,\n toolName: toolInvocation?.toolName,\n args: toolInvocation?.args,\n result: toolInvocation?.result,\n })),\n };\n }\n return message;\n })\n .filter(Boolean);\n setMessages(convertedMessages);\n setCurrentThreadId(threadId);\n }\n }\n }, [initialMessages, threadId, memory]);\n\n const mastra = new MastraClient({\n baseUrl: baseUrl || '',\n });\n const agent = mastra.getAgent(agentId);\n\n const onNew = async (message: AppendMessage) => {\n if (message.content[0]?.type !== 'text') throw new Error('Only text messages are supported');\n\n const input = message.content[0].text;\n setMessages(currentConversation => [...currentConversation, { role: 'user', content: input }]);\n setIsRunning(true);\n\n try {\n const response = await agent.stream({\n messages: [\n {\n role: 'user',\n content: input,\n },\n ],\n runId: agentId,\n ...(memory ? { threadId, resourceId: agentId } : {}),\n });\n\n if (!response.body) {\n throw new Error('No response body');\n }\n\n const parts = [];\n let content = '';\n let currentTextPart: { type: 'text'; text: string } | null = null;\n\n let assistantMessageAdded = false;\n\n function updater() {\n setMessages(currentConversation => {\n const message: ThreadMessageLike = {\n role: 'assistant',\n content: [{ type: 'text', text: content }],\n };\n\n if (!assistantMessageAdded) {\n assistantMessageAdded = true;\n return [...currentConversation, message];\n }\n return [...currentConversation.slice(0, -1), message];\n });\n }\n\n await response.processDataStream({\n onTextPart(value) {\n if (currentTextPart == null) {\n currentTextPart = {\n type: 'text',\n text: value,\n };\n parts.push(currentTextPart);\n } else {\n currentTextPart.text += value;\n }\n content += value;\n updater();\n },\n async onToolCallPart(value) {\n // Update the messages state\n setMessages(currentConversation => {\n // Get the last message (should be the assistant's message)\n const lastMessage = currentConversation[currentConversation.length - 1];\n\n // Only process if the last message is from the assistant\n if (lastMessage && lastMessage.role === 'assistant') {\n // Create a new message with the tool call part\n const updatedMessage: ThreadMessageLike = {\n ...lastMessage,\n content: Array.isArray(lastMessage.content)\n ? [\n ...lastMessage.content,\n {\n type: 'tool-call',\n toolCallId: value.toolCallId,\n toolName: value.toolName,\n args: value.args,\n },\n ]\n : [\n ...(typeof lastMessage.content === 'string' ? [{ type: 'text', text: lastMessage.content }] : []),\n {\n type: 'tool-call',\n toolCallId: value.toolCallId,\n toolName: value.toolName,\n args: value.args,\n },\n ],\n };\n\n // Replace the last message with the updated one\n return [...currentConversation.slice(0, -1), updatedMessage];\n }\n\n // If there's no assistant message yet, create one\n const newMessage: ThreadMessageLike = {\n role: 'assistant',\n content: [\n { type: 'text', text: content },\n {\n type: 'tool-call',\n toolCallId: value.toolCallId,\n toolName: value.toolName,\n args: value.args,\n },\n ],\n };\n return [...currentConversation, newMessage];\n });\n },\n async onToolResultPart(value: any) {\n // Update the messages state\n setMessages(currentConversation => {\n // Get the last message (should be the assistant's message)\n const lastMessage = currentConversation[currentConversation.length - 1];\n\n // Only process if the last message is from the assistant and has content array\n if (lastMessage && lastMessage.role === 'assistant' && Array.isArray(lastMessage.content)) {\n // Find the tool call content part that this result belongs to\n const updatedContent = lastMessage.content.map(part => {\n if (typeof part === 'object' && part.type === 'tool-call' && part.toolCallId === value.toolCallId) {\n return {\n ...part,\n result: value.result,\n };\n }\n return part;\n });\n\n // Create a new message with the updated content\n const updatedMessage: ThreadMessageLike = {\n ...lastMessage,\n content: updatedContent,\n };\n // Replace the last message with the updated one\n return [...currentConversation.slice(0, -1), updatedMessage];\n }\n return currentConversation;\n });\n },\n onErrorPart(error) {\n throw new Error(error);\n },\n });\n\n setIsRunning(false);\n setTimeout(() => {\n refreshThreadList?.();\n }, 500);\n } catch (error) {\n console.error('Error occurred in MastraRuntimeProvider', error);\n setIsRunning(false);\n }\n };\n\n const runtime = useExternalStoreRuntime<any>({\n isRunning,\n messages,\n convertMessage,\n onNew,\n });\n\n return <AssistantRuntimeProvider runtime={runtime}> {children} </AssistantRuntimeProvider>;\n}\n","import { Thread } from '@/components/assistant-ui/thread';\n\nimport { MastraRuntimeProvider } from '@/services/mastra-runtime-provider';\nimport { ChatProps } from '@/types';\n\nexport const AgentChat = ({\n agentId,\n agentName,\n threadId,\n initialMessages,\n memory,\n baseUrl,\n refreshThreadList,\n}: ChatProps) => {\n return (\n <MastraRuntimeProvider\n agentId={agentId}\n agentName={agentName}\n threadId={threadId}\n initialMessages={initialMessages}\n memory={memory}\n baseUrl={baseUrl}\n refreshThreadList={refreshThreadList}\n >\n <Thread memory={memory} />\n </MastraRuntimeProvider>\n );\n};\n","import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n {\n variants: {\n variant: {\n default: 'border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80',\n secondary: 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',\n destructive: 'border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80',\n outline: 'text-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return <div className={cn(badgeVariants({ variant }), className)} {...props} />;\n}\n\nexport { Badge, badgeVariants };\n","import { Copy } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\n\nimport { Button } from './button';\n\ninterface CopyableCell {\n content: string;\n label: string;\n multiline?: boolean;\n}\n\nexport function CopyableContent({ content, label, multiline = false }: CopyableCell) {\n const handleCopy = () => {\n navigator.clipboard.writeText(content);\n };\n\n return (\n <div className=\"group relative flex items-start gap-2\">\n <span className={cn('text-sm text-mastra-el-4', multiline ? 'whitespace-pre-wrap' : 'truncate')}>{content}</span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"opacity-0 group-hover:opacity-100 transition-opacity shrink-0 -mt-1\"\n onClick={e => {\n e.stopPropagation();\n handleCopy();\n }}\n aria-label={`Copy ${label}`}\n >\n <Copy className=\"h-3 w-3\" />\n </Button>\n </div>\n );\n}\n","import { format, formatDistanceToNow } from 'date-fns';\n\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './tooltip';\n\nexport function FormattedDate({ date }: { date: string }) {\n const formattedDate = {\n relativeTime: formatDistanceToNow(new Date(date), { addSuffix: true }),\n fullDate: format(new Date(date), 'PPpp'),\n };\n\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger className=\"text-left text-sm text-mastra-el-4\">{formattedDate.relativeTime}</TooltipTrigger>\n <TooltipContent className=\"bg-mastra-bg-1 text-mastra-el-1\">\n <p className=\"text-sm\">{formattedDate.fullDate}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n}\n","import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst inputVariants = cva(\n 'flex w-full text-mastra-el-6 rounded-sm border bg-transparent shadow-sm focus-visible:ring-ring transition-colors focus-visible:outline-none focus-visible:ring-1 disabled:cursor-not-allowed disabled:opacity-50',\n {\n variants: {\n variant: {\n default: 'border-mastra-border-1 border-border-1 placeholder:text-muted-foreground',\n filled: 'bg-inputFill border-border-1 placeholder:text-muted-foreground',\n unstyled:\n 'border-0 bg-transparent placeholder:text-muted-foreground focus-visible:ring-transparent focus-visible:outline-none',\n },\n customSize: {\n default: 'px-[13px] text-[calc(13_/_16_*_1rem)] h-[34px]',\n sm: 'h-[30px] px-[13px] text-xs',\n lg: 'h-10 px-[17px] rounded-md text-[calc(13_/_16_*_1rem)]',\n },\n },\n defaultVariants: {\n variant: 'default',\n customSize: 'default',\n },\n },\n);\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement>, VariantProps<typeof inputVariants> {\n testId?: string;\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, customSize, testId, variant, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(className, inputVariants({ variant, customSize, className }))}\n data-testid={testId}\n ref={ref}\n {...props}\n />\n );\n },\n);\nInput.displayName = 'Input';\n\nexport { Input, inputVariants };\n","import { Badge } from './badge';\n\nexport function ScoreIndicator({ score }: { score: number }) {\n return <Badge variant=\"secondary\">{score.toFixed(2)}</Badge>;\n}\n","import { cn } from '../../lib/utils';\n\nfunction Skeleton({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('animate-pulse rounded-md bg-muted/50', className)} {...props} />;\n}\n\nexport { Skeleton };\n","import * as React from 'react';\n\nimport { motion } from 'motion/react';\n\nimport { cn } from '../../lib/utils';\n\nconst Table = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(\n ({ className, ...props }, ref) => (\n <table ref={ref} className={cn('w-full caption-bottom text-sm border-spacing-0', className)} {...props} />\n ),\n);\nTable.displayName = 'Table';\n\nconst TableHeader = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n ({ className, ...props }, ref) => <thead ref={ref} className={cn('[&_tr]:border-b-[0.5px]', className)} {...props} />,\n);\nTableHeader.displayName = 'TableHeader';\n\nconst TableBody = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n ({ className, ...props }, ref) => (\n <tbody ref={ref} className={cn('[&_tr:last-child]:border-0', className)} {...props} />\n ),\n);\nTableBody.displayName = 'TableBody';\n\nconst TableFooter = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n ({ className, ...props }, ref) => (\n <tfoot ref={ref} className={cn('border-t bg-muted/50 font-medium [&>tr]:last:border-b-0', className)} {...props} />\n ),\n);\nTableFooter.displayName = 'TableFooter';\n\nconst TableRow = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(\n ({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n 'border-b-[0.5px] border-mastra-border-1 transition-colors hover:bg-muted/50 data-[state=selected]:bg-mastra-bg-4/70',\n className,\n )}\n {...props}\n />\n ),\n);\nTableRow.displayName = 'TableRow';\n\nconst TableHead = React.forwardRef<HTMLTableCellElement, React.ThHTMLAttributes<HTMLTableCellElement>>(\n ({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n 'h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0',\n className,\n )}\n {...props}\n />\n ),\n);\nTableHead.displayName = 'TableHead';\n\nconst TableCell = React.forwardRef<HTMLTableCellElement, React.TdHTMLAttributes<HTMLTableCellElement>>(\n ({ className, ...props }, ref) => (\n <td ref={ref} className={cn('p-4 align-middle [&:has([role=checkbox])]:pr-0', className)} {...props} />\n ),\n);\nTableCell.displayName = 'TableCell';\n\nconst TableCaption = React.forwardRef<HTMLTableCaptionElement, React.HTMLAttributes<HTMLTableCaptionElement>>(\n ({ className, ...props }, ref) => (\n <caption ref={ref} className={cn('mt-4 text-sm text-muted-foreground', className)} {...props} />\n ),\n);\nTableCaption.displayName = 'TableCaption';\n\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };\n","'use client';\n\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => <TabsPrimitive.List ref={ref} className={cn(className)} {...props} />);\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => <TabsPrimitive.Trigger ref={ref} className={cn(className)} {...props} />);\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n 'mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className,\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import type { TestInfo, MetricResult } from '@mastra/core/eval';\nimport { useEffect, useState } from 'react';\nimport { toast } from 'sonner';\n\nimport { MastraClient } from '@mastra/client-js';\n\nexport type Evals = {\n input: string;\n output: string;\n result: MetricResult;\n agentName: string;\n createdAt: string;\n metricName: string;\n instructions: string;\n runId: string;\n globalRunId: string;\n testInfo?: TestInfo;\n};\n\nexport const useEvalsByAgentId = (agentId: string, type: 'ci' | 'live', baseUrl?: string) => {\n const [evals, setEvals] = useState<Evals[]>([]);\n const [isLoading, setIsLoading] = useState(true);\n\n const client = new MastraClient({\n baseUrl: baseUrl || '',\n });\n\n const fetchEvals = async (_agentId?: string) => {\n setIsLoading(true);\n const activeAgentId = _agentId ?? agentId;\n try {\n const res =\n type === 'live'\n ? await client.getAgent(activeAgentId).liveEvals()\n : await client.getAgent(activeAgentId).evals();\n\n setEvals(res.evals);\n } catch (error) {\n setEvals([]);\n console.error('Error fetching evals', error);\n toast.error('Error fetching evals');\n } finally {\n setIsLoading(false);\n }\n };\n\n useEffect(() => {\n fetchEvals(agentId);\n }, [agentId]);\n\n return { evals, isLoading, refetchEvals: fetchEvals };\n};\n","import { ChevronRight, RefreshCcwIcon, Search, SortAsc, SortDesc } from 'lucide-react';\nimport React, { createContext, useContext, useState, useEffect } from 'react';\n\nimport { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport { CopyableContent } from '@/components/ui/copyable-content';\nimport { FormattedDate } from '@/components/ui/formatted-date';\nimport { Input } from '@/components/ui/input';\nimport { ScoreIndicator } from '@/components/ui/score-indicator';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { Table, TableHeader, TableHead, TableBody, TableCell, TableRow } from '@/components/ui/table';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';\n\nimport { cn } from '@/lib/utils';\n\nimport type { Evals } from '@/hooks/use-evals';\nimport { useEvalsByAgentId } from '@/hooks/use-evals';\n\nimport { AnimatePresence } from 'motion/react';\n\ntype SortDirection = 'asc' | 'desc';\n\ntype SortConfig = {\n field: keyof GroupedEvals | 'timestamp' | 'score';\n direction: SortDirection;\n};\n\ntype AgentEvalsContextType = {\n handleRefresh: () => void;\n isLoading: boolean;\n};\n\nconst AgentEvalsContext = createContext<AgentEvalsContextType>({ handleRefresh: () => {}, isLoading: true });\n\ntype GroupedEvals = {\n metricName: string;\n averageScore: number;\n evals: Evals[];\n};\n\nconst scrollableContentClass = cn(\n 'relative overflow-y-auto overflow-x-hidden invisible hover:visible focus:visible',\n '[&::-webkit-scrollbar]:w-1',\n '[&::-webkit-scrollbar-track]:bg-transparent',\n '[&::-webkit-scrollbar-thumb]:rounded-full',\n '[&::-webkit-scrollbar-thumb]:bg-mastra-border/20',\n '[&>*]:visible',\n);\n\nconst tabIndicatorClass = cn(\n 'px-4 py-2 text-sm transition-all border-b-2 border-transparent',\n 'data-[state=active]:border-white data-[state=active]:text-white font-medium',\n 'data-[state=inactive]:text-mastra-el-4 hover:data-[state=inactive]:text-mastra-el-2',\n 'focus-visible:outline-none',\n);\n\nconst tabContentClass = cn('data-[state=inactive]:mt-0 min-h-0 h-full grid grid-rows-[1fr]');\n\nexport function AgentEvals({ agentId, baseUrl }: { agentId: string; baseUrl?: string }) {\n const [activeTab, setActiveTab] = useState<'live' | 'ci'>('live');\n const {\n evals: liveEvals,\n isLoading: isLiveLoading,\n refetchEvals: refetchLiveEvals,\n } = useEvalsByAgentId(agentId, 'live', baseUrl);\n const {\n evals: ciEvals,\n isLoading: isCiLoading,\n refetchEvals: refetchCiEvals,\n } = useEvalsByAgentId(agentId, 'ci', baseUrl);\n\n const contextValue = {\n handleRefresh,\n isLoading: activeTab === 'live' ? isLiveLoading : isCiLoading,\n };\n\n function handleRefresh() {\n if (activeTab === 'live') {\n refetchLiveEvals();\n } else {\n refetchCiEvals();\n }\n }\n\n return (\n <AgentEvalsContext.Provider value={contextValue}>\n <Tabs\n value={activeTab}\n onValueChange={value => setActiveTab(value as 'live' | 'ci')}\n className=\"grid grid-rows-[auto_1fr] h-full min-h-0 pb-2\"\n >\n <div className=\"border-b border-mastra-border/10\">\n <TabsList className=\"bg-transparent border-0 h-auto mx-4\">\n <TabsTrigger value=\"live\" className={tabIndicatorClass}>\n Live\n </TabsTrigger>\n <TabsTrigger value=\"ci\" className={tabIndicatorClass}>\n CI\n </TabsTrigger>\n </TabsList>\n </div>\n <TabsContent value=\"live\" className={tabContentClass}>\n <EvalTable evals={liveEvals} isCIMode={false} />\n </TabsContent>\n <TabsContent value=\"ci\" className={tabContentClass}>\n <EvalTable evals={ciEvals} isCIMode={true} />\n </TabsContent>\n </Tabs>\n </AgentEvalsContext.Provider>\n );\n}\n\nfunction EvalTable({ evals, isCIMode = false }: { evals: Evals[]; isCIMode?: boolean }) {\n const { handleRefresh, isLoading: isTableLoading } = useContext(AgentEvalsContext);\n const [expandedMetrics, setExpandedMetrics] = useState<Set<string>>(new Set());\n const [searchTerm, setSearchTerm] = useState('');\n const [sortConfig, setSortConfig] = useState<SortConfig>({ field: 'metricName', direction: 'asc' });\n\n return (\n <div className=\"min-h-0 grid grid-rows-[auto_1fr]\">\n <div className=\"flex items-center gap-4 p-4 rounded-lg\">\n <div className=\"relative flex-1\">\n <Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-mastra-el-3\" />\n <Input\n id=\"search-input\"\n placeholder=\"Search metrics, inputs, or outputs...\"\n value={searchTerm}\n onChange={e => setSearchTerm(e.target.value)}\n className=\"pl-10\"\n />\n </div>\n <Badge variant=\"secondary\" className=\"text-xs\">\n {evals.length} Total Evaluations\n </Badge>\n <Button variant=\"ghost\" size=\"icon\" onClick={handleRefresh} disabled={isTableLoading} className=\"h-9 w-9\">\n {isTableLoading ? (\n <RefreshCcwIcon className=\"h-4 w-4 animate-spin\" />\n ) : (\n <RefreshCcwIcon className=\"h-4 w-4\" />\n )}\n </Button>\n </div>\n\n <div className=\"overflow-auto\">\n <Table className=\"w-full\">\n <TableHeader className=\"bg-mastra-bg-2 h-[var(--table-header-height)] sticky top-0 z-10\">\n <TableRow className=\"border-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableHead className=\"w-12 h-12\"></TableHead>\n <TableHead\n className=\"min-w-[200px] max-w-[30%] text-mastra-el-3 cursor-pointer\"\n onClick={() => toggleSort('metricName')}\n >\n <div className=\"flex items-center\">Metric {getSortIcon('metricName')}</div>\n </TableHead>\n <TableHead className=\"flex-1 text-mastra-el-3\" />\n <TableHead className=\"w-48 text-mastra-el-3 cursor-pointer\" onClick={() => toggleSort('averageScore')}>\n <div className=\"flex items-center\">Average Score {getSortIcon('averageScore')}</div>\n </TableHead>\n <TableHead className=\"w-48 text-mastra-el-3\">Evaluations</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody className=\"border-b border-gray-6 relative\">\n <AnimatePresence mode=\"wait\" presenceAffectsLayout={false}>\n {isTableLoading ? (\n Array.from({ length: 3 }).map((_, i) => (\n <TableRow key={i} className=\"border-b-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableCell className=\"w-12 h-12\">\n <Skeleton className=\"h-8 w-8 rounded-full\" />\n </TableCell>\n <TableCell className=\"min-w-[200px] max-w-[30%]\">\n <Skeleton className=\"h-4 w-3/4\" />\n </TableCell>\n <TableCell className=\"flex-1\">\n <Skeleton className=\"h-4 w-full\" />\n </TableCell>\n <TableCell className=\"w-48\">\n <Skeleton className=\"h-4 w-20\" />\n </TableCell>\n <TableCell className=\"w-48\">\n <Skeleton className=\"h-4 w-20\" />\n </TableCell>\n </TableRow>\n ))\n ) : groupEvals(evals).length === 0 ? (\n <TableRow>\n <TableCell className=\"h-12 w-16\"></TableCell>\n <TableCell colSpan={4} className=\"h-32 px-4 text-center text-mastra-el-3\">\n <div className=\"flex flex-col items-center gap-2\">\n <Search className=\"size-5\" />\n <p>No evaluations found</p>\n {searchTerm && <p className=\"text-sm\">Try adjusting your search terms</p>}\n </div>\n </TableCell>\n </TableRow>\n ) : (\n groupEvals(evals).map(group => (\n <React.Fragment key={group.metricName}>\n <TableRow\n className=\"border-b-gray-6 border-b-[0.1px] text-[0.8125rem] cursor-pointer hover:bg-mastra-bg-3\"\n onClick={() => toggleMetric(group.metricName)}\n >\n <TableCell className=\"w-12\">\n <div className=\"h-8 w-full flex items-center justify-center\">\n <div\n className={cn(\n 'transform transition-transform duration-200',\n expandedMetrics.has(group.metricName) ? 'rotate-90' : '',\n )}\n >\n <ChevronRight className=\"h-4 w-4 text-mastra-el-5\" />\n </div>\n </div>\n </TableCell>\n <TableCell className=\"min-w-[200px] max-w-[30%] font-medium text-mastra-el-5\">\n {group.metricName}\n </TableCell>\n <TableCell className=\"flex-1 text-mastra-el-5\" />\n <TableCell className=\"w-48 text-mastra-el-5\">\n <ScoreIndicator score={group.averageScore} />\n </TableCell>\n <TableCell className=\"w-48 text-mastra-el-5\">\n <Badge variant=\"secondary\">{group.evals.length}</Badge>\n </TableCell>\n </TableRow>\n\n {expandedMetrics.has(group.metricName) && (\n <TableRow>\n <TableCell\n colSpan={5 + (getHasReasons(group.evals) ? 1 : 0) + (isCIMode ? 1 : 0)}\n className=\"p-0\"\n >\n <div className=\"bg-mastra-bg-3 rounded-lg m-2\">\n <div className=\"w-full\">\n <Table className=\"w-full\">\n <TableHeader>\n <TableRow className=\"text-[0.7rem] text-mastra-el-3 hover:bg-transparent\">\n <TableHead className=\"pl-12 w-[120px]\">Timestamp</TableHead>\n <TableHead className=\"w-[300px]\">Instructions</TableHead>\n <TableHead className=\"w-[300px]\">Input</TableHead>\n <TableHead className=\"w-[300px]\">Output</TableHead>\n <TableHead className=\"w-[80px]\">Score</TableHead>\n {getHasReasons(group.evals) && <TableHead className=\"w-[250px]\">Reason</TableHead>}\n {isCIMode && <TableHead className=\"w-[120px]\">Test Name</TableHead>}\n </TableRow>\n </TableHeader>\n <TableBody>\n {group.evals.map((evaluation, index) => (\n <TableRow\n key={`${group.metricName}-${index}`}\n className=\"text-[0.8125rem] hover:bg-mastra-bg-2/50\"\n >\n <TableCell className=\"pl-12 text-mastra-el-4 align-top py-4\">\n <FormattedDate date={evaluation.createdAt} />\n </TableCell>\n <TableCell className=\"text-mastra-el-4 align-top py-4\">\n <div className={cn('max-w-[300px] max-h-[200px]', scrollableContentClass)}>\n <CopyableContent\n content={evaluation.instructions}\n label=\"instructions\"\n multiline\n />\n </div>\n </TableCell>\n <TableCell className=\"text-mastra-el-4 align-top py-4\">\n <div className={cn('max-w-[300px] max-h-[200px]', scrollableContentClass)}>\n <CopyableContent content={evaluation.input} label=\"input\" multiline />\n </div>\n </TableCell>\n <TableCell className=\"text-mastra-el-4 align-top py-4\">\n <div className={cn('max-w-[300px] max-h-[200px]', scrollableContentClass)}>\n <CopyableContent content={evaluation.output} label=\"output\" multiline />\n </div>\n </TableCell>\n <TableCell className=\"text-mastra-el-4 align-top py-4\">\n <ScoreIndicator score={evaluation.result.score} />\n </TableCell>\n {getHasReasons(group.evals) && (\n <TableCell className=\"text-mastra-el-4 align-top py-4\">\n <div className={cn('max-w-[300px] max-h-[200px]', scrollableContentClass)}>\n <CopyableContent\n content={evaluation.result.info?.reason || ''}\n label=\"reason\"\n multiline\n />\n </div>\n </TableCell>\n )}\n {isCIMode && (\n <TableCell className=\"text-mastra-el-4 align-top py-4\">\n {evaluation.testInfo?.testName && (\n <Badge variant=\"secondary\" className=\"text-xs\">\n {evaluation.testInfo.testName}\n </Badge>\n )}\n </TableCell>\n )}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n </div>\n </TableCell>\n </TableRow>\n )}\n </React.Fragment>\n ))\n )}\n </AnimatePresence>\n </TableBody>\n </Table>\n </div>\n </div>\n );\n\n function getHasReasons(groupEvals: Evals[]) {\n return groupEvals.some(eval_ => eval_.result.info?.reason);\n }\n\n function toggleMetric(metricName: string) {\n const newExpanded = new Set(expandedMetrics);\n if (newExpanded.has(metricName)) {\n newExpanded.delete(metricName);\n } else {\n newExpanded.add(metricName);\n }\n setExpandedMetrics(newExpanded);\n }\n\n function toggleSort(field: SortConfig['field']) {\n setSortConfig(prev => ({\n field,\n direction: prev.field === field && prev.direction === 'asc' ? 'desc' : 'asc',\n }));\n }\n\n function getSortIcon(field: SortConfig['field']) {\n if (sortConfig.field !== field) return null;\n return sortConfig.direction === 'asc' ? (\n <SortAsc className=\"h-4 w-4 ml-1\" />\n ) : (\n <SortDesc className=\"h-4 w-4 ml-1\" />\n );\n }\n\n function groupEvals(evaluations: Evals[]): GroupedEvals[] {\n let groups = evaluations.reduce((groups: GroupedEvals[], evaluation) => {\n const existingGroup = groups.find(g => g.metricName === evaluation.metricName);\n if (existingGroup) {\n existingGroup.evals.push(evaluation);\n existingGroup.averageScore =\n existingGroup.evals.reduce((sum, e) => sum + e.result.score, 0) / existingGroup.evals.length;\n } else {\n groups.push({\n metricName: evaluation.metricName,\n averageScore: evaluation.result.score,\n evals: [evaluation],\n });\n }\n return groups;\n }, []);\n\n // Apply search filter\n if (searchTerm) {\n groups = groups.filter(\n group =>\n group.metricName.toLowerCase().includes(searchTerm.toLowerCase()) ||\n group.evals.some(\n metric =>\n metric.input?.toLowerCase().includes(searchTerm.toLowerCase()) ||\n metric.output?.toLowerCase().includes(searchTerm.toLowerCase()) ||\n metric.instructions?.toLowerCase().includes(searchTerm.toLowerCase()),\n ),\n );\n }\n\n // Apply sorting\n groups.sort((a, b) => {\n const direction = sortConfig.direction === 'asc' ? 1 : -1;\n switch (sortConfig.field) {\n case 'metricName':\n return direction * a.metricName.localeCompare(b.metricName);\n case 'averageScore':\n return direction * (a.averageScore - b.averageScore);\n default:\n return 0;\n }\n });\n\n return groups;\n }\n}\n","import { MouseEvent as ReactMouseEvent, useContext, useEffect, useRef, useState } from 'react';\n\nimport { TraceContext } from '@/domains/traces/context/trace-context';\n\nexport const useResizeColumn = ({\n defaultWidth,\n minimumWidth,\n maximumWidth,\n setCurrentWidth,\n}: {\n defaultWidth: number;\n minimumWidth: number;\n maximumWidth: number;\n setCurrentWidth?: (width: number) => void;\n}) => {\n const [isDragging, setIsDragging] = useState(false);\n const [sidebarWidth, setSidebarWidth] = useState<number>(defaultWidth);\n // const { isOpen } = useContext(TraceContext);\n const containerRef = useRef<HTMLDivElement>(null);\n const dragStartXRef = useRef(0);\n const initialWidthRef = useRef(0);\n\n const handleMouseDown = (e: ReactMouseEvent) => {\n e.preventDefault(); // Prevent text selection\n setIsDragging(true);\n dragStartXRef.current = e.clientX;\n initialWidthRef.current = sidebarWidth;\n };\n\n useEffect(() => {\n setSidebarWidth(defaultWidth);\n setCurrentWidth?.(defaultWidth);\n }, [defaultWidth]);\n\n useEffect(() => {\n const handleMouseMove = (e: MouseEvent) => {\n if (!isDragging || !containerRef.current) return;\n\n const containerWidth = containerRef.current.offsetWidth;\n const deltaX = dragStartXRef.current - e.clientX;\n const deltaPercentage = (deltaX / containerWidth) * 100;\n\n // Calculate new width percentage\n const newWidth = Math.min(Math.max(initialWidthRef.current + deltaPercentage, minimumWidth), maximumWidth);\n setSidebarWidth(newWidth);\n setCurrentWidth?.(newWidth);\n };\n\n const handleMouseUp = () => {\n setIsDragging(false);\n };\n\n if (isDragging) {\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n }\n\n return () => {\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n };\n }, [isDragging]);\n\n return { sidebarWidth, isDragging, handleMouseDown, containerRef };\n};\n","import { useResizeColumn } from '@/hooks/use-resize-column';\nimport { cn } from '@/lib/utils';\nimport { ReactNode } from 'react';\n\nexport const MastraResizablePanel = ({\n children,\n defaultWidth,\n minimumWidth,\n maximumWidth,\n className,\n disabled = false,\n setCurrentWidth,\n dividerPosition = 'left',\n}: {\n children: ReactNode;\n defaultWidth: number;\n minimumWidth: number;\n maximumWidth: number;\n className?: string;\n disabled?: boolean;\n setCurrentWidth?: (width: number) => void;\n dividerPosition?: 'left' | 'right';\n}) => {\n const { sidebarWidth, isDragging, handleMouseDown, containerRef } = useResizeColumn({\n defaultWidth: disabled ? 100 : defaultWidth,\n minimumWidth,\n maximumWidth,\n setCurrentWidth,\n });\n return (\n <div className={cn('w-full h-full relative', className)} ref={containerRef} style={{ width: `${sidebarWidth}%` }}>\n {!disabled && dividerPosition === 'left' ? (\n <div\n className={`w-1 bg-mastra-bg-1 bg-[#121212] h-full cursor-col-resize hover:w-1.5 hover:bg-mastra-border-2 hover:bg-[#424242] active:bg-mastra-border-3 active:bg-[#3e3e3e] transition-colors absolute inset-y-0 -left-1 -right-1 z-10\n ${isDragging ? 'bg-mastra-border-2 bg-[#424242] w-1.5 cursor- col-resize' : ''}`}\n onMouseDown={handleMouseDown}\n />\n ) : null}\n {children}\n {!disabled && dividerPosition === 'right' ? (\n <div\n className={`w-1 bg-mastra-bg-1 bg-[#121212] h-full cursor-col-resize hover:w-1.5 hover:bg-mastra-border-2 hover:bg-[#424242] active:bg-mastra-border-3 active:bg-[#3e3e3e] transition-colors absolute inset-y-0 -left-1 -right-1 z-10\n ${isDragging ? 'bg-mastra-border-2 bg-[#424242] w-1.5 cursor- col-resize' : ''}`}\n onMouseDown={handleMouseDown}\n />\n ) : null}\n </div>\n );\n};\n","import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\nimport { useAutoscroll } from '@/hooks/use-autoscroll';\n\ninterface ScrollAreaProps extends React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> {\n viewPortClassName?: string;\n maxHeight?: string;\n autoScroll?: boolean;\n}\n\nconst ScrollArea = React.forwardRef<React.ElementRef<typeof ScrollAreaPrimitive.Root>, ScrollAreaProps>(\n ({ className, children, viewPortClassName, maxHeight, autoScroll = false, ...props }, ref) => {\n const areaRef = React.useRef<HTMLDivElement>(null);\n useAutoscroll(areaRef, { enabled: autoScroll });\n\n return (\n <ScrollAreaPrimitive.Root ref={ref} className={cn('relative overflow-hidden', className)} {...props}>\n <ScrollAreaPrimitive.Viewport\n ref={areaRef}\n className={cn('h-full w-full rounded-[inherit] [&>div]:!block', viewPortClassName)}\n style={maxHeight ? { maxHeight } : undefined}\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n },\n);\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = 'vertical', ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n 'flex touch-none select-none transition-colors',\n orientation === 'vertical' && 'h-full w-2.5 border-l border-l-transparent p-[1px]',\n orientation === 'horizontal' && 'h-2.5 flex-col border-t border-t-transparent p-[1px]',\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\n\nexport { ScrollArea, ScrollBar };\n","import { createContext, useState } from 'react';\n\nimport type { Span, RefinedTrace } from '../types';\n\ntype TraceContextType = {\n isOpen: boolean;\n setIsOpen: React.Dispatch<React.SetStateAction<boolean>>;\n trace: Span[] | null;\n setTrace: React.Dispatch<React.SetStateAction<Span[] | null>>;\n traces: RefinedTrace[];\n setTraces: React.Dispatch<React.SetStateAction<RefinedTrace[]>>;\n currentTraceIndex: number;\n setCurrentTraceIndex: React.Dispatch<React.SetStateAction<number>>;\n nextTrace: () => void;\n prevTrace: () => void;\n span: Span | null;\n setSpan: React.Dispatch<React.SetStateAction<Span | null>>;\n openDetail: boolean;\n setOpenDetail: React.Dispatch<React.SetStateAction<boolean>>;\n clearData: () => void;\n};\n\nexport const TraceContext = createContext<TraceContextType>({} as TraceContextType);\n\nexport function TraceProvider({ children }: { children: React.ReactNode }) {\n const [open, setOpen] = useState(false);\n const [trace, setTrace] = useState<Span[] | null>(null);\n const [traces, setTraces] = useState<RefinedTrace[]>([]);\n const [currentTraceIndex, setCurrentTraceIndex] = useState(0);\n const [span, setSpan] = useState<Span | null>(null);\n const [openDetail, setOpenDetail] = useState(false);\n\n const nextTrace = () => {\n if (currentTraceIndex < traces.length - 1) {\n const nextIndex = currentTraceIndex + 1;\n setCurrentTraceIndex(nextIndex);\n const nextTrace = traces[nextIndex].trace;\n setTrace(nextTrace);\n const parentSpan = nextTrace.find(span => span.parentSpanId === null) || nextTrace[0];\n setSpan(parentSpan);\n }\n };\n\n const prevTrace = () => {\n if (currentTraceIndex > 0) {\n const prevIndex = currentTraceIndex - 1;\n setCurrentTraceIndex(prevIndex);\n const prevTrace = traces[prevIndex].trace;\n setTrace(prevTrace);\n const parentSpan = prevTrace.find(span => span.parentSpanId === null) || prevTrace[0];\n setSpan(parentSpan);\n }\n };\n\n const clearData = () => {\n setOpen(false);\n setTrace(null);\n setSpan(null);\n setOpenDetail(false);\n };\n\n return (\n <TraceContext.Provider\n value={{\n isOpen: open,\n setIsOpen: setOpen,\n trace,\n setTrace,\n traces,\n setTraces,\n currentTraceIndex,\n setCurrentTraceIndex,\n nextTrace,\n prevTrace,\n span,\n setSpan,\n openDetail,\n setOpenDetail,\n clearData,\n }}\n >\n {children}\n </TraceContext.Provider>\n );\n}\n","import type { RefinedTrace, Span } from './types';\n\n/**\n *\n * @param duration duration of the span\n * @param fixedPoint how many fixed point\n * @returns duration in milliseconds in fixed points\n */\nexport function formatDuration(duration: number, fixedPoint = 2) {\n const durationInSecs = duration / 1_000;\n\n return durationInSecs.toFixed(fixedPoint);\n}\n\nexport function formatOtelTimestamp(otelTimestamp: number) {\n const date = new Date(otelTimestamp / 1000);\n\n return new Intl.DateTimeFormat('en-US', {\n month: 'numeric',\n day: 'numeric',\n year: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true,\n }).format(date);\n}\n\nexport function formatOtelTimestamp2(otelTimestamp: number) {\n const date = new Date(otelTimestamp / 1000000);\n\n return new Intl.DateTimeFormat('en-US', {\n month: 'numeric',\n day: 'numeric',\n year: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true,\n }).format(date);\n}\n\nexport function transformKey(key: string) {\n if (key.includes('.argument.')) {\n return `Input`;\n }\n if (key.includes('.result')) {\n return 'Output';\n }\n return key.split('.').join(' ').split('_');\n}\n\nexport function cleanString(string: string) {\n return (\n string\n .replace(/\\\\n/g, '')\n // Also handle any actual newlines\n .replace(/\\n/g, '')\n // Clean up any resulting extra spaces\n .replace(/\\s+/g, ' ')\n .trim()\n );\n}\n\nexport const refineTraces = (traces: Span[], isWorkflow: boolean = false): RefinedTrace[] => {\n const listOfSpanIds = new Set<string>();\n\n const newName = (name: string) => {\n if (name?.startsWith('workflow.') && isWorkflow) {\n return name?.split('.')?.slice(2)?.join('.');\n }\n if (name?.startsWith('agent.') && !isWorkflow) {\n return name?.split('.')?.slice(1)?.join('.');\n }\n return name;\n };\n\n const groupedTraces = traces.reduce<Record<string, Span[]>>((acc, curr) => {\n const newCurr = { ...curr, name: newName(curr.name), duration: curr.endTime - curr.startTime };\n\n listOfSpanIds.add(curr.id);\n\n return { ...acc, [curr.traceId]: [...(acc[curr.traceId] || []), newCurr] };\n }, {});\n\n const tracesData = Object.entries(groupedTraces).map(([key, value]) => {\n const parentSpan = value.find(span => !span.parentSpanId || !listOfSpanIds.has(span.parentSpanId));\n\n const enrichedSpans = value.map(span => ({\n ...span,\n parentSpanId: parentSpan?.id === span.id ? null : span?.parentSpanId,\n relativePercentage: parentSpan ? span.duration / parentSpan.duration : 0,\n }));\n\n const failedStatus = value.find(span => span.status.code !== 0)?.status;\n return {\n traceId: key,\n serviceName: parentSpan?.name || key,\n duration: parentSpan?.duration || value.reduce((acc, curr) => acc + curr.duration, 0),\n status: failedStatus || parentSpan?.status || value[0].status,\n started: value[0].startTime,\n trace: enrichedSpans,\n };\n });\n\n return tracesData;\n};\n\nexport const allowedAiSpanAttributes = [\n 'operation.name',\n 'ai.operationId',\n 'ai.model.provider',\n 'ai.model.id',\n 'ai.prompt.format',\n 'ai.prompt.messages',\n 'ai.prompt.tools',\n 'ai.prompt.toolChoice',\n 'ai.settings.toolChoice',\n 'ai.schema',\n 'ai.settings.output',\n 'ai.response.object',\n 'ai.response.text',\n 'ai.response.timestamp',\n 'componentName',\n 'ai.usage.promptTokens',\n 'ai.usage.completionTokens',\n];\n","import { Braces, Clock1 } from 'lucide-react';\nimport { useContext, useEffect, useState } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport { ScrollArea } from '@/components/ui/scroll-area';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table';\n\nimport { cn } from '@/lib/utils';\n\nimport { TraceContext } from './context/trace-context';\nimport type { RefinedTrace, Span, SpanStatus } from './types';\nimport { formatDuration, formatOtelTimestamp } from './utils';\n\nexport function Traces({ traces }: { traces: RefinedTrace[] }) {\n const { trace: currentTrace } = useContext(TraceContext);\n const [prevTracesId, setPrevTracesId] = useState(new Set());\n\n useEffect(() => {\n if (!prevTracesId.size && traces) {\n setPrevTracesId(new Set(traces.map(trace => trace.traceId)));\n }\n }, [traces]);\n\n const isNew = (traceId: string) => {\n if (!prevTracesId.size) return false;\n return !prevTracesId.has(traceId);\n };\n const currentTraceParentSpan = currentTrace?.find(span => span.parentSpanId === undefined) || currentTrace?.[0];\n\n return (\n <div className=\"h-full w-[calc(100%_-_325px)]\">\n <ScrollArea className=\"h-full\">\n <Table>\n <TableHeader className=\"sticky top-0 z-10 bg-[#0F0F0F]\" style={{ outline: '1px solid 0_0%_20.4%' }}>\n <TableRow className=\"border-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableHead className=\"text-mastra-el-3 h-10\">Trace</TableHead>\n <TableHead className=\"text-mastra-el-3 flex items-center gap-1 h-10\">\n <Braces className=\"h-3 w-3\" /> Trace Id\n </TableHead>\n <TableHead className=\"text-mastra-el-3 h-10\">Started</TableHead>\n <TableHead className=\"text-mastra-el-3 h-10\">Total Duration</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody className=\"border-b border-gray-6\">\n {!traces.length ? (\n <TableRow className=\"border-b-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableCell colSpan={4} className=\"h-24 text-center\">\n No traces found\n </TableCell>\n </TableRow>\n ) : (\n traces.map((trace, index) => (\n <TableRow\n key={trace.traceId}\n className={cn(\n 'border-b-gray-6 border-b-[0.1px] text-[0.8125rem]',\n isNew(trace.traceId) ? 'animate-fade-in' : 'not-new',\n {\n 'bg-muted/50': currentTraceParentSpan?.traceId === trace.traceId,\n },\n )}\n >\n <TableCell>\n <TraceButton\n trace={trace.trace}\n name={trace.serviceName}\n traceIndex={index}\n status={trace.status}\n />\n </TableCell>\n <TableCell className=\"text-mastra-el-5\">{trace.traceId}</TableCell>\n <TableCell className=\"text-mastra-el-5 text-sm\">{formatOtelTimestamp(trace.started)}</TableCell>\n <TableCell>\n <span className=\"inline-flex items-center gap-2 text-[#F1CA5E]\">\n <Clock1 className=\"h-3 w-3\" />\n {formatDuration(trace.duration, 3)}ms\n </span>\n </TableCell>\n </TableRow>\n ))\n )}\n </TableBody>\n </Table>\n </ScrollArea>\n </div>\n );\n}\n\nfunction TraceButton({\n trace,\n name,\n traceIndex,\n status,\n}: {\n trace: Span[];\n name: string;\n traceIndex: number;\n status: SpanStatus;\n}) {\n const {\n setTrace,\n isOpen: open,\n setIsOpen: setOpen,\n trace: currentTrace,\n setSpan,\n setOpenDetail,\n setCurrentTraceIndex,\n } = useContext(TraceContext);\n return (\n <Button\n variant=\"ghost\"\n className=\"flex h-0 items-center gap-2 p-0\"\n onClick={() => {\n setTrace(trace);\n const parentSpan = trace.find(span => span.parentSpanId === null) || trace[0];\n setSpan(parentSpan);\n setCurrentTraceIndex(traceIndex);\n if (open && currentTrace?.[0]?.id !== trace[0].id) return;\n setOpen(prev => !prev);\n setOpenDetail(prev => !prev);\n }}\n >\n {status.code === 0 ? (\n <svg\n className=\"h-3 w-3\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"13\"\n height=\"12\"\n viewBox=\"0 0 13 12\"\n fill=\"none\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.37695 12C9.69067 12 12.377 9.31371 12.377 6C12.377 2.68629 9.69067 0 6.37695 0C3.06325 0 0.376953 2.68629 0.376953 6C0.376953 9.31371 3.06325 12 6.37695 12ZM9.62004 4.65344C9.87907 4.36036 9.8651 3.90005 9.58884 3.6253C9.3125 3.35055 8.87861 3.3654 8.61958 3.65847L5.6477 7.02105L4.08967 5.55197C3.80661 5.28508 3.37319 5.31213 3.12159 5.61237C2.87 5.91262 2.89549 6.37239 3.17854 6.63927L4.90294 8.26517C5.36588 8.70171 6.07235 8.6676 6.49598 8.18829L9.62004 4.65344Z\"\n fill=\"#6CD063\"\n />\n </svg>\n ) : (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"#FF4500\" width=\"13\" height=\"12\">\n <path\n fillRule=\"evenodd\"\n d=\"M12 2.25c-5.385 0-9.75 4.365-9.75 9.75s4.365 9.75 9.75 9.75 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25Zm-1.72 6.97a.75.75 0 1 0-1.06 1.06L10.94 12l-1.72 1.72a.75.75 0 1 0 1.06 1.06L12 13.06l1.72 1.72a.75.75 0 1 0 1.06-1.06L13.06 12l1.72-1.72a.75.75 0 1 0-1.06-1.06L12 10.94l-1.72-1.72Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n )}\n\n <span className=\"truncate max-w-[150px]\">{name}</span>\n </Button>\n );\n}\n","import { useContext, useRef, useState } from 'react';\n\nimport { Button } from '@/components/ui/button';\n\nimport { cn } from '@/lib/utils';\n\nimport { TraceContext } from './context/trace-context';\nimport type { SpanNode } from './types';\nimport { formatDuration } from './utils';\n\nexport function TreeNode({ node, depth = 0 }: { node: SpanNode; depth?: number }) {\n const [isExpanded, setIsExpanded] = useState(true);\n const hasChildren = node.children && node.children.length > 0;\n const { setOpenDetail, setSpan, openDetail, span } = useContext(TraceContext);\n\n const containerRef = useRef<HTMLDivElement>(null);\n\n const widthPercentage = Math.min(node.relativePercentage ? node?.relativePercentage * 100 : 0, 100);\n\n return (\n <div ref={containerRef}>\n <Button\n variant={'ghost'}\n className={cn('relative flex w-full items-center justify-start gap-2 py-3 pr-1 text-sm', {\n 'text-accent-foreground bg-accent': span?.id === node.id,\n })}\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n setSpan(node);\n if (openDetail && node.id !== span?.id) return;\n setOpenDetail(true);\n }}\n style={{ paddingLeft: `${depth > 0 ? depth * 35 + 28 - depth * 3 : 24}px` }}\n >\n {hasChildren ? (\n <div\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"relative grid h-auto flex-shrink-0 place-items-center rounded-sm bg-mastra-bg-3 p-2\"\n >\n <svg\n className={cn('!h-2 !w-2 transition-transform', isExpanded ? '' : '-rotate-90')}\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"7\"\n height=\"6\"\n viewBox=\"0 0 7 6\"\n fill=\"none\"\n >\n <path\n d=\"M3.9338 5.5C3.74135 5.83333 3.26022 5.83333 3.06777 5.5L0.469694 0.999999C0.277244 0.666666 0.517814 0.25 0.902714 0.25L6.09886 0.25C6.48376 0.25 6.72433 0.666666 6.53188 1L3.9338 5.5Z\"\n fill=\"#939393\"\n />\n </svg>\n </div>\n ) : null}\n <div className=\"flex w-full gap-4 pr-4\">\n <p\n className={cn('max-w-[250px] text-sm', {\n 'text-white': node?.status?.code === 0,\n 'text-[#FF4500]': node?.status?.code !== 0,\n 'px-1': depth === 0,\n truncate:\n containerRef.current?.offsetWidth &&\n containerRef.current?.offsetWidth < 450 &&\n depth > 1 &&\n node.name?.length > 16,\n })}\n >\n {node.name}\n </p>\n\n {node.duration > 0 && (\n <div className=\"relative w-full\">\n <div className=\"absolute top-[11px] h-px w-full bg-[hsl(220,14%,19%)]\" />\n <div\n style={{\n width: `${widthPercentage}%`,\n left: 0,\n }}\n className={cn(\n 'absolute top-[9px] z-0 h-[5px] rounded-[5px] bg-white transition-all',\n node.name.includes('agent') && 'left-1/2 bg-green-500',\n node.name.includes('llm') && 'bg-[#5699A8]',\n node.name.includes('ai') && 'left-2/4 w-5 bg-[#F09A56]',\n )}\n ></div>\n <span className=\"absolute left-0 top-3 text-[0.63rem] text-mastra-el-3\">\n {formatDuration(node.duration)}ms\n </span>\n </div>\n )}\n </div>\n </Button>\n\n {hasChildren && isExpanded && (\n <>\n {node.children.map(child => (\n <TreeNode key={child.id} node={child} depth={depth + 1} />\n ))}\n </>\n )}\n </div>\n );\n}\n","import { TreeNode } from './trace-tree-view';\nimport type { Span, SpanNode } from './types';\n\nexport function TreeView({ tree }: { tree: SpanNode[] }) {\n return (\n <ul>\n {tree.map(node => (\n <TreeNode key={node.id} node={node} />\n ))}\n </ul>\n );\n}\n\nfunction buildTree(items: Span[], parentSpanId: string | null = null): SpanNode[] {\n return items\n .filter(item => item.parentSpanId === parentSpanId)\n .map(item => ({\n ...item,\n children: buildTree(items, item.id),\n }));\n}\n\nexport default function SpanView({ trace }: { trace: Span[] }) {\n // SQL query sorts by startTime in descending order, so we need to reverse and copy the array for spans to show in correct order\n const tree = buildTree(trace.concat([])!.reverse());\n\n return (\n <div>\n <TreeView tree={tree} />\n </div>\n );\n}\n","import { ChevronDown, XIcon } from 'lucide-react';\nimport { useContext } from 'react';\n\nimport { Button } from '@/components/ui/button';\n\nimport { TraceContext } from './context/trace-context';\nimport SpanView from './trace-span-view';\n\nexport function TraceDetails() {\n const { trace, currentTraceIndex, prevTrace, nextTrace, traces, clearData } = useContext(TraceContext);\n\n return (\n <div>\n <div className=\"flex items-center justify-between px-6 pt-[1.56rem]\">\n <div className=\"flex items-center gap-2\">\n <h3 className=\"text-[1.125rem]\">Trace Span{trace?.length && trace.length > 1 ? 's' : ''}</h3>\n <span className=\"text-xs text-mastra-el-3\">\n {trace?.length ? trace.length : 0} span{trace?.length && trace.length > 1 ? 's' : ''}\n </span>\n </div>\n <div className=\"flex items-center gap-4\">\n <div className=\"flex items-center gap-2\">\n <Button\n onClick={() => {\n prevTrace();\n }}\n disabled={currentTraceIndex === 0}\n variant={'secondary'}\n size={'icon'}\n className=\"!h-3 !w-3 rotate-180 !px-3 py-3 text-mastra-el-3 transition-colors hover:text-white\"\n >\n <ChevronDown />\n </Button>{' '}\n <Button\n onClick={() => {\n nextTrace();\n }}\n disabled={currentTraceIndex === traces.length - 1}\n variant={'secondary'}\n size={'icon'}\n className=\"!h-3 !w-3 !px-3 py-3 text-mastra-el-3 transition-colors hover:text-white\"\n >\n <ChevronDown />\n </Button>\n </div>\n <span className=\"bg-secondary inline-block h-5 w-px\"></span>\n <Button\n onClick={() => {\n clearData();\n }}\n variant={'secondary'}\n size={'icon'}\n className=\"!h-3 !w-3 !px-3 py-3 text-mastra-el-3 transition-colors hover:text-white\"\n >\n <XIcon />\n </Button>\n </div>\n </div>\n <div className=\"p-6 px-1\"> {trace && <SpanView trace={trace} />}</div>\n </div>\n );\n}\n","import { jsonLanguage } from '@codemirror/lang-json';\nimport { tags as t } from '@lezer/highlight';\nimport { githubDarkInit } from '@uiw/codemirror-theme-github';\nimport CodeMirror from '@uiw/react-codemirror';\nimport { useMemo } from 'react';\n\nexport const useCodemirrorTheme = () => {\n return useMemo(\n () =>\n githubDarkInit({\n settings: {\n fontFamily: 'var(--commit-mono)',\n fontSize: '0.8rem',\n foreground: '#030712',\n background: '#1a1a1a',\n gutterBackground: '#1a1a1a',\n gutterForeground: '#94A3B8',\n gutterBorder: '#1a1a1a',\n lineHighlight: 'transparent',\n },\n styles: [{ tag: [t.className, t.propertyName], color: '#22c5ee' }],\n }),\n [],\n );\n};\n\nexport const SyntaxHighlighter = ({ data }: { data: Record<string, unknown> }) => {\n const formattedCode = JSON.stringify(data, null, 2);\n const theme = useCodemirrorTheme();\n\n return (\n <div className=\"rounded-md bg-[#1a1a1a] p-1 font-mono\">\n <CodeMirror value={formattedCode} theme={theme} extensions={[jsonLanguage]} />\n </div>\n );\n};\n","import { useContext } from 'react';\n\nimport { SyntaxHighlighter } from '@/components/syntax-highlighter';\n\nimport { cn } from '@/lib/utils';\n\nimport { TraceContext } from './context/trace-context';\nimport type { Span } from './types';\nimport {\n allowedAiSpanAttributes,\n cleanString,\n formatDuration,\n formatOtelTimestamp,\n formatOtelTimestamp2,\n transformKey,\n} from './utils';\n\nexport function SpanDetail() {\n const { span } = useContext(TraceContext);\n\n const isAiSpan = span?.name?.startsWith('ai.');\n\n const aiSpanAttributes = Object.entries(span?.attributes || {})\n .filter(([key]) => allowedAiSpanAttributes.includes(key))\n .reduce((acc, [key, value]) => {\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n\n return (\n <div className=\"flex flex-col gap-6 pb-20\">\n <div className=\"flex items-center gap-2 px-6 pt-[1.56rem]\">\n <span className=\"rounded bg-[#314431] p-0.5\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.3726 2.10787C9.99493 1.48554 11.0066 1.48705 11.6274 2.10787L13.1306 3.61106C13.7529 4.23339 13.7514 5.24504 13.1306 5.86586L11.6274 7.36906C11.0051 7.99138 9.99342 7.98988 9.3726 7.36906L7.86941 5.86586C7.24708 5.24354 7.24858 4.23188 7.86941 3.61106L9.3726 2.10787ZM4.11141 7.36906C4.73374 6.74673 5.74539 6.74824 6.36621 7.36906L7.86941 8.87225C8.49173 9.49458 8.49023 10.5062 7.8694 11.127L6.36621 12.6302C5.74388 13.2526 4.73223 13.2511 4.11141 12.6302L2.60822 11.127C1.98589 10.5047 1.9874 9.49307 2.60822 8.87225L4.11141 7.36906ZM14.6338 7.36906C15.2561 6.74673 16.2678 6.74824 16.8886 7.36906L18.3918 8.87225C19.0141 9.49458 19.0126 10.5062 18.3918 11.127L16.8886 12.6302C16.2663 13.2526 15.2546 13.2511 14.6338 12.6302L13.1306 11.127C12.5083 10.5047 12.5098 9.49307 13.1306 8.87225L14.6338 7.36906ZM9.3726 12.6302C9.99493 12.0079 11.0066 12.0094 11.6274 12.6302L13.1306 14.1334C13.7529 14.7558 13.7514 15.7674 13.1306 16.3882L11.6274 17.8914C11.0051 18.5138 9.99342 18.5123 9.3726 17.8914L7.86941 16.3882C7.24708 15.7659 7.24859 14.7543 7.86941 14.1334L9.3726 12.6302Z\"\n fill=\"white\"\n />\n </svg>\n </span>\n <h3 className=\"text-[0.9rem] font-medium\">{span?.name}</h3>\n </div>\n <div className=\"grid grid-cols-3 gap-1 px-6\">\n <div className=\"flex flex-col gap-1\">\n <span className=\"text-xs text-mastra-el-3\">Duration</span>\n <span className=\"font-mono text-xs\"> {span?.duration ? formatDuration(span?.duration) : ''}ms</span>\n </div>\n <div className=\"flex flex-col gap-1\">\n <span className=\"text-xs text-mastra-el-3\">Time</span>\n <span className=\"font-mono text-xs\">{span?.startTime ? formatOtelTimestamp(span?.startTime) : ''}</span>\n </div>\n <div className=\"flex flex-col gap-1\">\n <span className=\"text-xs text-mastra-el-3\">Status</span>\n <span className={cn('font-mono text-xs', span?.status?.code == 0 ? 'text-[#6CD063]' : 'text-[#FF4500]')}>\n {span?.status?.code == 0 ? 'OK' : 'ERROR'}\n </span>\n </div>\n </div>\n {span?.status?.code !== 0 ? (\n <div className=\"border-t-[0.5px] px-6 pt-4\">{span && span?.events?.length > 0 && <Events span={span} />}</div>\n ) : null}\n <div className=\"border-t-[0.5px] px-6 pt-4\">\n {span && <Attributes span={{ ...span, attributes: isAiSpan ? aiSpanAttributes : span?.attributes }} />}\n </div>\n {span?.status?.code === 0 ? (\n <div className=\"border-t-[0.5px] px-6 pt-4\">{span && span?.events?.length > 0 && <Events span={span} />}</div>\n ) : null}\n </div>\n );\n}\n\nfunction Events({ span }: { span: Span }) {\n if (!span.events) return null;\n\n return (\n <div className=\"flex flex-col px-2\">\n <p className=\"text-lg\">Events</p>\n {span.events.map(event => {\n const eventAttributes = event?.attributes?.map(att => ({ [att?.key]: att?.value }));\n return (\n <div\n key={event.name}\n className={cn('flex flex-col gap-2 border-b-[0.5px] last:border-b-0 pt-4 pb-2 first:pb-4')}\n >\n <p className=\"text-xs text-mastra-el-3\">Name</p>\n <p className=\"font-mono text-xs\">{event.name}</p>\n <p className=\"text-xs text-mastra-el-3\">Time</p>\n <p className=\"font-mono text-xs\">\n {event.timeUnixNano ? formatOtelTimestamp2(Number(event.timeUnixNano)) : ''}\n </p>\n {event.attributes?.length > 0 ? <AttributesValues attributes={eventAttributes} /> : null}\n </div>\n );\n })}\n </div>\n );\n}\n\nfunction Attributes({ span }: { span: Span }) {\n if (!span.attributes) return null;\n\n return <AttributesValues attributes={span.attributes} />;\n}\n\nfunction AttributesValues({\n attributes,\n depth = 0,\n keyName,\n}: {\n attributes: unknown;\n depth?: number;\n keyName?: string | string[];\n}) {\n if (attributes === null) return null;\n if (attributes === undefined) return null;\n\n if (typeof attributes === 'string') {\n try {\n const attr = JSON.parse(attributes);\n\n if (typeof attr === 'object' || Array.isArray(attr)) {\n return <SyntaxHighlighter data={attr} />;\n }\n } catch {\n const val = attributes ? cleanString(attributes.toString()) : 'N/A';\n if (keyName === 'Input' && val === '[Not Serializable]') {\n return <span className=\"text-sm overflow-x-scroll\">No input</span>;\n }\n return (\n <span className=\"text-sm overflow-x-scroll\">{attributes ? cleanString(attributes.toString()) : 'N/A'}</span>\n );\n }\n }\n\n const processedValue = attributes;\n\n if (Array.isArray(processedValue)) {\n if (processedValue.length === 0) return null;\n return (\n <div className=\"relative\">\n <div className=\"mt-1 gap-3\">\n {processedValue.map((item, index) => (\n <div key={index} className=\"flex flex-col gap-1\">\n <AttributesValues key={index} attributes={item} depth={depth + 1} />\n </div>\n ))}\n </div>\n </div>\n );\n }\n\n if (typeof processedValue === 'object') {\n const entries = Object.entries(processedValue);\n if (entries.length === 0) return null;\n\n return (\n <div className=\"relative\">\n <div className=\"mt-1\">\n {entries.map(([key, val]) => (\n <div key={key} className=\"flex flex-col gap-2 p-2 pl-0\">\n <span className=\"text-sm capitalize text-mastra-el-3\">{transformKey(key)}</span>\n <AttributesValues attributes={val} depth={depth + 1} keyName={transformKey(key)} />\n </div>\n ))}\n </div>\n </div>\n );\n }\n\n if (typeof processedValue === 'boolean')\n return <span className=\"font-mono text-sm\">{processedValue.toString() || 'N/A'}</span>;\n if (typeof processedValue === 'number') return <span className=\"font-mono text-sm\">{processedValue.toString()}</span>;\n if (typeof processedValue === 'string')\n return <span className=\"font-mono text-sm\">{processedValue ? cleanString(processedValue.toString()) : 'N/A'}</span>;\n\n return <span className=\"text-gray-400\">{String(processedValue)}</span>;\n}\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nexport interface PollingOptions<TData, TError = Error> {\n /** Async function that fetches the data */\n fetchFn: () => Promise<TData>;\n /** Polling interval in milliseconds */\n interval?: number;\n /** Whether polling is enabled initially */\n enabled?: boolean;\n /** Callback function called with new data */\n onSuccess?: (data: TData) => void;\n /** Callback function called on error */\n onError?: (error: TError) => void;\n /** Function to determine if polling should continue */\n shouldContinue?: (data: TData) => boolean;\n /** Restarts the polling when true */\n restartPolling?: boolean;\n}\n\nexport interface PollingResult<TData, TError> {\n /** Current polling status */\n isPolling: boolean;\n /** Loading state for current request */\n isLoading: boolean;\n /** Loading state for first call */\n firstCallLoading: boolean;\n /** Current error state */\n error: TError | null;\n /** Latest data received */\n data: TData | null;\n /** Function to start polling */\n startPolling: () => void;\n /** Function to stop polling */\n stopPolling: () => void;\n\n /** Refetch the data on demand with/without polling. default is false */\n refetch: (withPolling?: boolean) => void;\n}\n\nexport function usePolling<TData, TError = Error>({\n fetchFn,\n interval = 3000,\n enabled = false,\n onSuccess,\n onError,\n shouldContinue = () => true,\n restartPolling = false,\n}: PollingOptions<TData, TError>): PollingResult<TData, TError> {\n const [isPolling, setIsPolling] = useState(enabled);\n const [error, setError] = useState<TError | null>(null);\n const [data, setData] = useState<TData | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [firstCallLoading, setFirstCallLoading] = useState(false);\n const timeoutRef = useRef<NodeJS.Timeout | null>(null);\n const mountedRef = useRef(true);\n const [restart, setRestart] = useState(restartPolling);\n\n const cleanup = useCallback(() => {\n console.log('cleanup');\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n }, []);\n\n const stopPolling = useCallback(() => {\n console.log('stopPolling');\n setIsPolling(false);\n cleanup();\n }, [cleanup]);\n\n const startPolling = useCallback(() => {\n console.log('startPolling');\n setIsPolling(true);\n setError(null);\n }, []);\n\n const executePoll = useCallback(\n async (refetch: boolean = true) => {\n // Check if component is still mounted\n if (!mountedRef.current) return;\n setIsLoading(true);\n\n try {\n const result = await fetchFn();\n\n setData(result);\n setError(null);\n onSuccess?.(result);\n\n // Check if we should continue polling\n if (shouldContinue(result) && refetch) {\n timeoutRef.current = setTimeout(executePoll, interval);\n } else {\n stopPolling();\n }\n } catch (err) {\n if (!mountedRef.current) return;\n setError(err as TError);\n onError?.(err as TError);\n stopPolling();\n } finally {\n if (mountedRef.current) {\n setFirstCallLoading(false);\n setIsLoading(false);\n }\n }\n },\n [fetchFn, interval, onSuccess, onError, shouldContinue, stopPolling],\n );\n\n const refetch = useCallback(\n (withPolling: boolean = false) => {\n console.log('refetch', { withPolling });\n if (withPolling) {\n setIsPolling(true);\n } else {\n executePoll(false);\n }\n setError(null);\n },\n [executePoll],\n );\n\n useEffect(() => {\n mountedRef.current = true;\n\n if (enabled && isPolling) {\n executePoll(true);\n }\n\n return () => {\n console.log('cleanup poll');\n mountedRef.current = false;\n cleanup();\n };\n }, [enabled, isPolling, executePoll, cleanup]);\n\n useEffect(() => {\n setRestart(restartPolling);\n }, [restartPolling]);\n\n useEffect(() => {\n if (restart && !isPolling) {\n setIsPolling(true);\n executePoll();\n setRestart(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [restart]);\n\n return {\n isPolling,\n isLoading,\n error,\n data,\n startPolling,\n stopPolling,\n firstCallLoading,\n refetch,\n };\n}\n\nexport default usePolling;\n","import { useCallback, useContext, useMemo, useState } from 'react';\nimport { toast } from 'sonner';\n\nimport usePolling from '@/lib/polls';\nimport { MastraClient } from '@mastra/client-js';\n\nimport type { RefinedTrace } from '@/domains/traces/types';\nimport { refineTraces } from '@/domains/traces/utils';\nimport { TraceContext } from '@/domains/traces/context/trace-context';\n\nexport const useTraces = (componentName: string, baseUrl: string, isWorkflow: boolean = false) => {\n const [traces, setTraces] = useState<RefinedTrace[]>([]);\n\n const { setTraces: setTraceContextTraces } = useContext(TraceContext);\n\n // Memoize the client instance\n const client = useMemo(\n () =>\n new MastraClient({\n baseUrl: baseUrl || '',\n }),\n [baseUrl],\n );\n\n const fetchFn = useCallback(async () => {\n try {\n const res = await client.getTelemetry({\n attribute: {\n componentName,\n },\n });\n if (!res.traces) {\n throw new Error('Error fetching traces');\n }\n const refinedTraces = refineTraces(res?.traces || [], isWorkflow);\n return refinedTraces;\n } catch (error) {\n throw error;\n }\n }, [client, componentName, isWorkflow]);\n\n const onSuccess = useCallback(\n (newTraces: RefinedTrace[]) => {\n if (newTraces.length > 0) {\n setTraces(() => newTraces);\n setTraceContextTraces(() => newTraces);\n }\n },\n [setTraceContextTraces],\n );\n\n const onError = useCallback((error: { message: string }) => {\n toast.error(error.message);\n }, []);\n\n const shouldContinue = useCallback(() => {\n return true;\n }, []);\n\n const { firstCallLoading, error } = usePolling<RefinedTrace[], { message: string }>({\n fetchFn,\n interval: 3000,\n onSuccess,\n onError,\n shouldContinue,\n enabled: true,\n });\n\n return { traces, firstCallLoading, error };\n};\n","import { Braces } from 'lucide-react';\nimport { ReactNode, useContext, useState } from 'react';\n\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table';\n\nimport { cn } from '@/lib/utils';\n\nimport { MastraResizablePanel } from '@/domains/resizable-panel';\nimport { Traces } from '@/domains/traces';\nimport { TraceContext, TraceProvider } from '@/domains/traces/context/trace-context';\nimport { TraceDetails } from '@/domains/traces/trace-details';\nimport { SpanDetail } from '@/domains/traces/trace-span-details';\nimport { useTraces } from '@/hooks/use-traces';\n\nexport function AgentTraces({\n agentName,\n baseUrl,\n sidebarChild,\n}: {\n agentName: string;\n baseUrl: string;\n sidebarChild: ReactNode;\n}) {\n return (\n <TraceProvider>\n <AgentTracesInner agentName={agentName} baseUrl={baseUrl} sidebarChild={sidebarChild} />\n </TraceProvider>\n );\n}\nfunction AgentTracesInner({\n agentName,\n baseUrl,\n sidebarChild,\n}: {\n agentName: string;\n baseUrl: string;\n sidebarChild: ReactNode;\n}) {\n const { traces, error, firstCallLoading } = useTraces(agentName, baseUrl);\n const { isOpen: open } = useContext(TraceContext);\n\n if (firstCallLoading) {\n return (\n <main className=\"flex-1 relative overflow-hidden h-full\">\n <div className=\"h-full w-[calc(100%_-_325px)]\">\n <Table>\n <TableHeader className=\"sticky top-0 z-10 bg-[#0F0F0F]\">\n <TableRow className=\"border-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableHead className=\"text-mastra-el-3 h-10\">Trace</TableHead>\n <TableHead className=\"text-mastra-el-3 flex items-center gap-1 h-10\">\n <Braces className=\"h-3 w-3\" /> Trace Id\n </TableHead>\n <TableHead className=\"text-mastra-el-3 h-10\">Started</TableHead>\n <TableHead className=\"text-mastra-el-3 h-10\">Total Duration</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody className=\"border-b border-gray-6\">\n <TableRow className=\"border-b-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableCell>\n <Skeleton className=\"h-8 w-full\" />\n </TableCell>\n <TableCell>\n <Skeleton className=\"h-8 w-full\" />\n </TableCell>\n <TableCell>\n <Skeleton className=\"h-8 w-full\" />\n </TableCell>\n <TableCell>\n <Skeleton className=\"h-8 w-full\" />\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </div>\n <SidebarItems sidebarChild={sidebarChild} className=\"min-w-[325px]\" />\n </main>\n );\n }\n\n if (!traces || traces.length === 0) {\n return (\n <main className=\"flex-1 h-full relative overflow-hidden\">\n <div className=\"h-full w-[calc(100%_-_325px)]\">\n <Table>\n <TableHeader className=\"sticky top-0 z-10 bg-[#0F0F0F]\">\n <TableRow className=\"border-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableHead className=\"text-mastra-el-3 h-10\">Trace</TableHead>\n <TableHead className=\"text-mastra-el-3 flex items-center gap-1 h-10\">\n <Braces className=\"h-3 w-3\" /> Trace Id\n </TableHead>\n <TableHead className=\"text-mastra-el-3 h-10\">Started</TableHead>\n <TableHead className=\"text-mastra-el-3 h-10\">Total Duration</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody className=\"border-b border-gray-6\">\n <TableRow className=\"border-b-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableCell colSpan={4} className=\"h-24 text-center\">\n {error?.message || 'No traces found'}\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </div>\n <SidebarItems sidebarChild={sidebarChild} className=\"min-w-[325px]\" />\n </main>\n );\n }\n\n return (\n <main className=\"flex-1 h-full relative overflow-hidden\">\n <Traces traces={traces} />\n <SidebarItems sidebarChild={sidebarChild} className={cn(open ? 'grid grid-cols-2 w-[60%]' : 'min-w-[325px]')} />\n </main>\n );\n}\n\nfunction SidebarItems({ sidebarChild, className }: { sidebarChild: ReactNode; className?: string }) {\n const { openDetail, isOpen: open } = useContext(TraceContext);\n const [rightSidebarWidth, setRightSidebarWidth] = useState(40);\n\n return (\n <MastraResizablePanel\n className={cn(\n 'absolute right-0 top-0 h-full z-20 overflow-x-scroll border-l-[0.5px] bg-mastra-bg-1 bg-[#121212]',\n className,\n )}\n defaultWidth={open ? 60 : 20}\n minimumWidth={open ? 50 : 20}\n maximumWidth={open ? 90 : 60}\n >\n {open && (\n <div\n className=\"h-full overflow-x-scroll px-0 absolute left-0 top-0 min-w-[50%] bg-mastra-bg-1 bg-[#121212]\"\n style={{ width: `${100 - rightSidebarWidth}%` }}\n >\n <TraceDetails />\n </div>\n )}\n <MastraResizablePanel\n defaultWidth={50}\n minimumWidth={30}\n maximumWidth={80}\n className={cn('h-full overflow-y-hidden border-l-[0.5px] right-0 top-0 z-20 bg-mastra-bg-1 bg-[#121212]', {\n absolute: open,\n 'unset-position': !open,\n })}\n disabled={!open}\n setCurrentWidth={setRightSidebarWidth}\n >\n <div className=\"h-full overflow-y-scroll\">{!openDetail ? sidebarChild : <SpanDetail />}</div>\n </MastraResizablePanel>\n </MastraResizablePanel>\n );\n}\n","export const AgentIcon = ({ className }: { className?: string }) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 13 13\"\n fill=\"none\"\n className={className}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.75 11.4875C9.50452 11.4875 11.7375 9.25452 11.7375 6.5C11.7375 3.74548 9.50452 1.5125 6.75 1.5125C3.99548 1.5125 1.7625 3.74548 1.7625 6.5C1.7625 9.25452 3.99548 11.4875 6.75 11.4875ZM6.75 12.625C10.1327 12.625 12.875 9.88274 12.875 6.5C12.875 3.11726 10.1327 0.375 6.75 0.375C3.36726 0.375 0.625 3.11726 0.625 6.5C0.625 9.88274 3.36726 12.625 6.75 12.625Z\"\n fill=\"currentColor\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M12.4851 8.45587C11.668 10.7366 9.4873 12.3682 6.92552 12.3682C6.88211 12.3682 6.83881 12.3677 6.79563 12.3668C6.20679 10.9554 5.94996 9.47004 6.16613 7.85695C6.24097 7.58925 6.34464 7.19828 6.32806 6.8443C6.32047 6.68231 6.14275 6.70194 6.09813 6.85785C6.04374 7.04794 5.96784 7.24722 5.87163 7.42336C5.76132 7.44142 5.62051 7.45405 5.44307 7.44362C4.88421 7.41074 4.47225 7.11911 4.38425 7.02482C4.22438 7.09725 4.21437 7.15094 4.20478 7.2023C4.19876 7.2346 4.1929 7.26597 4.15006 7.30052L4.1369 7.31126C4.0592 7.37515 4.0024 7.42185 3.82397 7.15106C3.66346 6.8363 3.54511 6.37667 4.02775 5.8823C4.31486 5.5882 4.88893 5.34805 4.97072 5.33548C4.97072 4.87028 5.33534 4.03169 6.37911 3.7382C7.48025 3.42859 8.75139 3.74318 9.48574 4.81665C9.94707 5.49103 9.99232 5.88068 10.0269 6.17804C10.0629 6.48794 10.0872 6.69759 10.5588 7.02482C10.6891 7.11521 10.8199 7.20344 10.9519 7.2924C11.4398 7.62134 11.9426 7.96033 12.4851 8.45587ZM6.72628 5.39078C6.90062 5.39078 7.04195 5.24945 7.04195 5.07511C7.04195 4.90077 6.90062 4.75944 6.72628 4.75944C6.55194 4.75944 6.41061 4.90077 6.41061 5.07511C6.41061 5.24945 6.55194 5.39078 6.72628 5.39078Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n","'use client';\n\nimport {\n ColumnDef,\n flexRender,\n getCoreRowModel,\n PaginationState,\n SortingState,\n useReactTable,\n} from '@tanstack/react-table';\nimport { useState } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table';\n\nimport { PaginationResult } from '@/lib/pagination/types';\nimport { cn } from '@/lib/utils';\nimport { Skeleton } from './skeleton';\n\ninterface DataTableProps<TData, TValue> {\n /**\n * table title\n */\n title?: string | React.ReactNode;\n /**\n * table icon\n */\n icon?: React.ReactNode;\n /**\n * disable table border\n * @default false\n */\n withoutBorder?: boolean;\n /**\n * table columns\n */\n columns: ColumnDef<TData, TValue>[];\n /**\n * table data\n */\n data: TData[];\n /**\n * custom className for the table parent container\n */\n className?: string;\n\n pagination?: PaginationResult;\n /**\n * goto next page\n */\n gotoNextPage?: () => void;\n /**\n * goto previous page\n */\n gotoPreviousPage?: () => void;\n /**\n * table max height\n */\n maxHeight?: string;\n /**\n * disable table container radius\n * @default false\n */\n withoutRadius?: boolean;\n /**\n * disable flex container\n * @default false\n */\n disabledFlex?: boolean;\n\n /**\n * height of the table row when there are no results\n * @default '96px'\n */\n emptyStateHeight?: string;\n\n /**\n * get the row id\n */\n getRowId?: (row: TData) => string;\n\n /**\n * selected row id to use for row selection\n */\n selectedRowId?: string;\n\n /**\n * loading state\n */\n isLoading?: boolean;\n\n /**\n * text to display when there are no results\n */\n emptyText?: string;\n}\n\nexport const DataTable = <TData, TValue>({\n title,\n icon,\n withoutBorder = false,\n columns,\n data,\n className,\n pagination,\n gotoNextPage,\n gotoPreviousPage,\n maxHeight,\n withoutRadius = false,\n disabledFlex,\n emptyStateHeight,\n getRowId,\n selectedRowId,\n isLoading,\n emptyText,\n}: DataTableProps<TData, TValue>) => {\n const [sorting, setSorting] = useState<SortingState>([]);\n const [{ pageIndex, pageSize }, setPagination] = useState<PaginationState>({\n pageIndex: pagination ? Math.floor(pagination.offset / pagination.limit) : 0,\n pageSize: pagination?.limit ?? 10,\n });\n const [rowSelection, setRowSelection] = useState({});\n\n const table = useReactTable({\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n manualPagination: true,\n pageCount: pagination ? Math.ceil(pagination.total / pagination.limit) : -1,\n state: {\n sorting,\n pagination: {\n pageIndex,\n pageSize,\n },\n rowSelection,\n },\n getRowId,\n onPaginationChange: setPagination,\n onSortingChange: setSorting,\n enableRowSelection: true,\n enableMultiRowSelection: false,\n onRowSelectionChange: setRowSelection,\n });\n\n return (\n <div className={cn('flex flex-col', disabledFlex ? 'block' : '')}>\n <div className={cn('border', !withoutRadius && 'rounded-md', className)}>\n <Table>\n <TableHeader className=\"sticky top-0\">\n {table.getHeaderGroups().map(headerGroup => (\n <TableRow key={headerGroup.id} className={cn('z-50 bg-[#0f0f0f]', title && 'hover:bg-transparent')}>\n {icon && !title ? <TableHead className=\"w-9 rounded-tl-md\"></TableHead> : null}\n {title ? (\n <TableHead\n className={cn('px-0', !withoutRadius && 'rounded-tl-md rounded-tr-md')}\n colSpan={headerGroup.headers.length + (icon ? 1 : 0)}\n >\n {title}\n </TableHead>\n ) : (\n headerGroup.headers.map(header => {\n return (\n <TableHead\n className={cn(\n 'last:pr-3',\n !icon && 'first:pl-3',\n !withoutBorder && 'border-r last:border-r-0',\n !withoutRadius && 'last:rounded-tr-md',\n !withoutRadius && !icon && 'first:rounded-tl-md',\n )}\n key={header.id}\n >\n {header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext())}\n </TableHead>\n );\n })\n )}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {isLoading ? (\n <>\n {Array.from({ length: 5 }).map((_, index) => (\n <TableRow key={index} className=\"border-b-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableCell className=\"p-2\">\n <Skeleton className=\"h-8 w-full\" />\n </TableCell>\n <TableCell className=\"p-2\">\n <Skeleton className=\"h-8 w-full\" />\n </TableCell>\n <TableCell className=\"p-2\">\n <Skeleton className=\"h-8 w-full\" />\n </TableCell>\n </TableRow>\n ))}\n </>\n ) : table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map(row => (\n <TableRow key={row.id} data-state={(row.getIsSelected() || row.id === selectedRowId) && 'selected'}>\n {icon && <TableCell className=\"w-9 first:pl-3\">{icon}</TableCell>}\n {row.getVisibleCells().map(cell => (\n <TableCell\n className={cn(\n 'p-0 last:pr-3',\n !icon && 'first:pl-3',\n !withoutBorder && 'border-r last:border-r-0',\n )}\n key={cell.id}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell colSpan={columns.length} className={cn('h-24 text-center', emptyStateHeight)}>\n No {emptyText || 'results'}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n {pagination && (\n <div className=\"mt-4 flex items-center justify-between px-2\">\n <div className=\"text-muted-foreground text-sm\">\n Showing {pagination.offset + 1} to {Math.min(pagination.offset + data.length, pagination.total)} of{' '}\n {pagination.total} results\n </div>\n <div className=\"flex items-center space-x-6 lg:space-x-8\">\n <div className=\"flex items-center space-x-2\">\n <Button variant=\"outline\" size=\"sm\" onClick={gotoPreviousPage} disabled={!pagination.offset}>\n Previous\n </Button>\n <Button variant=\"outline\" size=\"sm\" onClick={gotoNextPage} disabled={!pagination.hasMore}>\n Next\n </Button>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n};\n","'use client';\n\nimport { AgentIcon } from '@/components/icons/agent-icon';\nimport { DataTable } from '@/components/ui/data-table';\nimport { ColumnDef } from '@tanstack/react-table';\n\nexport const AgentsTable = ({\n title,\n agentsList,\n columns,\n isLoading,\n}: {\n title?: React.ReactNode;\n agentsList: any[];\n columns: ColumnDef<any>[];\n isLoading?: boolean;\n}) => {\n return (\n <DataTable\n emptyText=\"Agents\"\n title={title}\n isLoading={isLoading}\n withoutBorder\n withoutRadius\n icon={<AgentIcon className=\"h-4 w-4\" />}\n columns={columns}\n data={agentsList}\n className=\"!border-t-0 border-[0.5px] border-x-0\"\n />\n );\n};\n","'use client';\n\nimport {\n useExternalStoreRuntime,\n ThreadMessageLike,\n AppendMessage,\n AssistantRuntimeProvider,\n} from '@assistant-ui/react';\nimport { processDataStream } from '@ai-sdk/ui-utils';\nimport { MastraClient } from '@mastra/client-js';\nimport { useState, ReactNode, useEffect } from 'react';\n\nimport { ChatProps } from '@/types';\n\nconst convertMessage = (message: ThreadMessageLike): ThreadMessageLike => {\n return message;\n};\n\nexport function MastraNetworkRuntimeProvider({\n children,\n agentId,\n initialMessages,\n memory,\n threadId,\n baseUrl,\n refreshThreadList,\n}: Readonly<{\n children: ReactNode;\n}> &\n ChatProps) {\n const [isRunning, setIsRunning] = useState(false);\n const [messages, setMessages] = useState<ThreadMessageLike[]>(initialMessages || []);\n const [currentThreadId, setCurrentThreadId] = useState<string | undefined>(threadId);\n\n useEffect(() => {\n if (messages.length === 0 || currentThreadId !== threadId) {\n if (initialMessages && threadId && memory) {\n setMessages(initialMessages);\n setCurrentThreadId(threadId);\n }\n }\n }, [initialMessages, threadId, memory, messages]);\n\n const mastra = new MastraClient({\n baseUrl: baseUrl || '',\n });\n\n console.log('MastraClient initialized');\n\n console.log(messages, '###');\n\n const network = mastra.getNetwork(agentId);\n\n const onNew = async (message: AppendMessage) => {\n if (message.content[0]?.type !== 'text') throw new Error('Only text messages are supported');\n\n const input = message.content[0].text;\n setMessages(currentConversation => [...currentConversation, { role: 'user', content: input }]);\n setIsRunning(true);\n\n try {\n const response = await network.stream({\n messages: [\n {\n role: 'user',\n content: input,\n },\n ],\n runId: agentId,\n ...(memory ? { threadId, resourceId: agentId } : {}),\n });\n\n if (!response.body) {\n throw new Error('No response body');\n }\n\n const parts = [];\n let content = '';\n let currentTextPart: { type: 'text'; text: string } | null = null;\n\n let assistantMessageAdded = false;\n\n function updater() {\n setMessages(currentConversation => {\n const message: ThreadMessageLike = {\n role: 'assistant',\n content: [{ type: 'text', text: content }],\n };\n\n if (!assistantMessageAdded) {\n assistantMessageAdded = true;\n return [...currentConversation, message];\n }\n return [...currentConversation.slice(0, -1), message];\n });\n }\n\n await processDataStream({\n stream: response.body,\n onTextPart(value) {\n if (currentTextPart == null) {\n currentTextPart = {\n type: 'text',\n text: value,\n };\n parts.push(currentTextPart);\n } else {\n currentTextPart.text += value;\n }\n content += value;\n updater();\n },\n async onToolCallPart(value) {\n console.log('Tool call received:', value);\n\n // Update the messages state\n setMessages(currentConversation => {\n // Get the last message (should be the assistant's message)\n const lastMessage = currentConversation[currentConversation.length - 1];\n\n // Only process if the last message is from the assistant\n if (lastMessage && lastMessage.role === 'assistant') {\n // Create a new message with the tool call part\n const updatedMessage: ThreadMessageLike = {\n ...lastMessage,\n content: Array.isArray(lastMessage.content)\n ? [\n ...lastMessage.content,\n {\n type: 'tool-call',\n toolCallId: value.toolCallId,\n toolName: value.toolName,\n args: value.args,\n },\n ]\n : [\n ...(typeof lastMessage.content === 'string' ? [{ type: 'text', text: lastMessage.content }] : []),\n {\n type: 'tool-call',\n toolCallId: value.toolCallId,\n toolName: value.toolName,\n args: value.args,\n },\n ],\n };\n\n // Replace the last message with the updated one\n return [...currentConversation.slice(0, -1), updatedMessage];\n }\n\n // If there's no assistant message yet, create one\n const newMessage: ThreadMessageLike = {\n role: 'assistant',\n content: [\n { type: 'text', text: content },\n {\n type: 'tool-call',\n toolCallId: value.toolCallId,\n toolName: value.toolName,\n args: value.args,\n },\n ],\n };\n return [...currentConversation, newMessage];\n });\n },\n async onToolResultPart(value: any) {\n console.log('Tool call result received:', value);\n\n // Update the messages state\n setMessages(currentConversation => {\n // Get the last message (should be the assistant's message)\n const lastMessage = currentConversation[currentConversation.length - 1];\n\n // Only process if the last message is from the assistant and has content array\n if (lastMessage && lastMessage.role === 'assistant' && Array.isArray(lastMessage.content)) {\n // Find the tool call content part that this result belongs to\n const updatedContent = lastMessage.content.map(part => {\n if (typeof part === 'object' && part.type === 'tool-call' && part.toolCallId === value.toolCallId) {\n return {\n ...part,\n result: value.result,\n };\n }\n return part;\n });\n\n // Create a new message with the updated content\n const updatedMessage: ThreadMessageLike = {\n ...lastMessage,\n content: updatedContent,\n };\n\n // Replace the last message with the updated one\n return [...currentConversation.slice(0, -1), updatedMessage];\n }\n\n return currentConversation;\n });\n },\n onErrorPart(error) {\n throw new Error(error);\n },\n });\n\n console.log(messages);\n\n setIsRunning(false);\n } catch (error) {\n console.error('Error occured in MastraRuntimeProvider', error);\n setIsRunning(false);\n }\n };\n\n const runtime = useExternalStoreRuntime<ThreadMessageLike>({\n isRunning,\n messages,\n convertMessage,\n onNew,\n });\n\n return <AssistantRuntimeProvider runtime={runtime}> {children} </AssistantRuntimeProvider>;\n}\n","import { useCallback, useRef, useState } from 'react';\nimport { toast } from 'sonner';\n\ntype UseCopyToClipboardProps = {\n text: string;\n copyMessage?: string;\n};\n\nexport function useCopyToClipboard({ text, copyMessage = 'Copied to clipboard!' }: UseCopyToClipboardProps) {\n const [isCopied, setIsCopied] = useState(false);\n const timeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n const handleCopy = useCallback(() => {\n navigator.clipboard\n .writeText(text)\n .then(() => {\n toast.success(copyMessage);\n setIsCopied(true);\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n timeoutRef.current = setTimeout(() => {\n setIsCopied(false);\n }, 2000);\n })\n .catch(() => {\n toast.error('Failed to copy to clipboard.');\n });\n }, [text, copyMessage]);\n\n return { isCopied, handleCopy };\n}\n","'use client';\n\nimport { Check, Copy } from 'lucide-react';\n\nimport { Button } from '../../components/ui/button';\nimport { useCopyToClipboard } from '../../hooks/use-copy-to-clipboard';\nimport { cn } from '../../lib/utils';\n\ntype CopyButtonProps = {\n content: string;\n copyMessage?: string;\n classname?: string;\n};\n\nexport function CopyButton({ content, copyMessage, classname }: CopyButtonProps) {\n const { isCopied, handleCopy } = useCopyToClipboard({\n text: content,\n copyMessage,\n });\n\n return (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={cn('relative h-6 w-6', classname)}\n aria-label=\"Copy to clipboard\"\n onClick={handleCopy}\n >\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <Check className={cn('h-4 w-4 transition-transform ease-in-out', isCopied ? 'scale-100' : 'scale-0')} />\n </div>\n <Copy className={cn('h-4 w-4 transition-transform ease-in-out', isCopied ? 'scale-0' : 'scale-100')} />\n </Button>\n );\n}\n","import { jsonLanguage } from '@codemirror/lang-json';\nimport { tags as t } from '@lezer/highlight';\nimport { githubDarkInit } from '@uiw/codemirror-theme-github';\nimport CodeMirror from '@uiw/react-codemirror';\nimport { useMemo } from 'react';\n\nexport const useCodemirrorTheme = () => {\n return useMemo(\n () =>\n githubDarkInit({\n settings: {\n fontFamily: 'var(--commit-mono)',\n fontSize: '0.8rem',\n foreground: '#030712',\n background: '#1a1a1a',\n gutterBackground: '#1a1a1a',\n gutterForeground: '#94A3B8',\n gutterBorder: '#1a1a1a',\n lineHighlight: 'transparent',\n },\n styles: [{ tag: [t.className, t.propertyName], color: '#22c5ee' }],\n }),\n [],\n );\n};\n\nexport const SyntaxHighlighter = ({ data }: { data: Record<string, unknown> }) => {\n const formattedCode = JSON.stringify(data, null, 2);\n const theme = useCodemirrorTheme();\n\n return (\n <div className=\"rounded-md bg-[#1a1a1a] p-1 font-mono\">\n <CodeMirror value={formattedCode} theme={theme} extensions={[jsonLanguage]} />\n </div>\n );\n};\n\nexport async function highlight(code: string, language: string) {\n const { codeToTokens, bundledLanguages } = await import('shiki');\n\n if (!(language in bundledLanguages)) return null;\n\n const { tokens } = await codeToTokens(code, {\n lang: language as keyof typeof bundledLanguages,\n defaultColor: false,\n themes: {\n light: 'github-light',\n dark: 'github-dark',\n },\n });\n\n return tokens;\n}\n","import React, { Suspense, useState, useEffect } from 'react';\nimport Markdown from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\nimport type { Components } from 'react-markdown';\n\nimport { CopyButton } from '../../components/ui/copy-button';\nimport { cn } from '../../lib/utils';\n\nimport { highlight } from './syntax-highlighter';\n\ninterface MarkdownRendererProps {\n children: string;\n}\n\nexport function MarkdownRenderer({ children }: MarkdownRendererProps) {\n const processedText = children.replace(/\\\\n/g, '\\n');\n\n return (\n <Markdown remarkPlugins={[remarkGfm]} components={COMPONENTS} className=\"space-y-3\">\n {processedText}\n </Markdown>\n );\n}\n\ninterface HighlightedPre extends React.HTMLAttributes<HTMLPreElement> {\n children: string;\n language: string;\n}\n\nconst HighlightedPre = React.memo(({ children, language, ...props }: HighlightedPre) => {\n const [tokens, setTokens] = useState<any[]>([]);\n\n useEffect(() => {\n highlight(children, language).then(tokens => {\n if (tokens) setTokens(tokens);\n });\n }, [children, language]);\n\n if (!tokens.length) {\n return <pre {...props}>{children}</pre>;\n }\n\n return (\n <pre {...props}>\n <code>\n {tokens.map((line, lineIndex) => (\n <>\n <span key={lineIndex}>\n {line.map((token: any, tokenIndex: number) => {\n const style = typeof token.htmlStyle === 'string' ? undefined : token.htmlStyle;\n\n return (\n <span\n key={tokenIndex}\n className=\"text-shiki-light bg-shiki-light-bg dark:text-shiki-dark dark:bg-shiki-dark-bg\"\n style={style}\n >\n {token.content}\n </span>\n );\n })}\n </span>\n {lineIndex !== tokens.length - 1 && '\\n'}\n </>\n ))}\n </code>\n </pre>\n );\n});\nHighlightedPre.displayName = 'HighlightedCode';\n\ninterface CodeBlockProps extends React.HTMLAttributes<HTMLPreElement> {\n children: React.ReactNode;\n className?: string;\n language: string;\n}\n\nconst CodeBlock = ({ children, className, language, ...restProps }: CodeBlockProps) => {\n const code = typeof children === 'string' ? children : childrenTakeAllStringContents(children);\n\n const preClass = cn(\n 'overflow-x-scroll rounded-md border bg-background/50 p-4 font-mono text-sm [scrollbar-width:none]',\n className,\n );\n\n return (\n <div className=\"group/code relative mb-4\">\n <Suspense\n fallback={\n <pre className={preClass} {...restProps}>\n {children}\n </pre>\n }\n >\n <HighlightedPre language={language} className={preClass}>\n {code}\n </HighlightedPre>\n </Suspense>\n\n <div className=\"invisible absolute right-2 top-2 flex space-x-1 rounded-lg p-1 opacity-0 transition-all duration-200 group-hover/code:visible group-hover/code:opacity-100\">\n <CopyButton content={code} copyMessage=\"Copied code to clipboard\" />\n </div>\n </div>\n );\n};\n\nfunction childrenTakeAllStringContents(element: any): string {\n if (typeof element === 'string') {\n return element;\n }\n\n if (element?.props?.children) {\n let children = element.props.children;\n\n if (Array.isArray(children)) {\n return children.map(child => childrenTakeAllStringContents(child)).join('');\n } else {\n return childrenTakeAllStringContents(children);\n }\n }\n\n return '';\n}\n\n// Create component wrappers with className\nconst COMPONENTS: Components = {\n h1: ({ children, ...props }) => (\n <h1 className=\"text-2xl font-semibold\" {...props}>\n {children}\n </h1>\n ),\n h2: ({ children, ...props }) => (\n <h2 className=\"font-semibold text-xl\" {...props}>\n {children}\n </h2>\n ),\n h3: ({ children, ...props }) => (\n <h3 className=\"font-semibold text-lg\" {...props}>\n {children}\n </h3>\n ),\n h4: ({ children, ...props }) => (\n <h4 className=\"font-semibold text-base\" {...props}>\n {children}\n </h4>\n ),\n h5: ({ children, ...props }) => (\n <h5 className=\"font-medium\" {...props}>\n {children}\n </h5>\n ),\n strong: ({ children, ...props }) => (\n <strong className=\"font-semibold\" {...props}>\n {children}\n </strong>\n ),\n a: ({ children, ...props }) => (\n <a className=\"underline underline-offset-2\" {...props}>\n {children}\n </a>\n ),\n blockquote: ({ children, ...props }) => (\n <blockquote className=\"border-l-2 border-primary pl-4\" {...props}>\n {children}\n </blockquote>\n ),\n code: ({ children, className, ...rest }: any) => {\n const match = /language-(\\w+)/.exec(className || '');\n return match ? (\n <CodeBlock className={className} language={match[1]} {...rest}>\n {children}\n </CodeBlock>\n ) : (\n <code\n className={cn(\n 'font-mono [:not(pre)>&]:rounded-md [:not(pre)>&]:bg-background/50 [:not(pre)>&]:px-1 [:not(pre)>&]:py-0.5',\n )}\n {...rest}\n >\n {children}\n </code>\n );\n },\n pre: ({ children }: any) => children,\n ol: ({ children, ...props }) => (\n <ol className=\"list-decimal space-y-2 pl-6\" {...props}>\n {children}\n </ol>\n ),\n ul: ({ children, ...props }) => (\n <ul className=\"list-disc space-y-2 pl-6\" {...props}>\n {children}\n </ul>\n ),\n li: ({ children, ...props }) => (\n <li className=\"my-1.5\" {...props}>\n {children}\n </li>\n ),\n table: ({ children, ...props }) => (\n <table className=\"w-full border-collapse overflow-y-auto rounded-md border border-foreground/20\" {...props}>\n {children}\n </table>\n ),\n th: ({ children, ...props }) => (\n <th\n className=\"border border-foreground/20 px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\"\n {...props}\n >\n {children}\n </th>\n ),\n td: ({ children, ...props }) => (\n <td\n className=\"border border-foreground/20 px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\"\n {...props}\n >\n {children}\n </td>\n ),\n tr: ({ children, ...props }) => (\n <tr className=\"m-0 border-t p-0 even:bg-muted\" {...props}>\n {children}\n </tr>\n ),\n p: ({ children, ...props }) => (\n <p className=\"whitespace-pre-wrap leading-relaxed\" {...props}>\n {children}\n </p>\n ),\n hr: ({ ...props }) => <hr className=\"border-foreground/20\" {...props} />,\n};\n\nexport default MarkdownRenderer;\n","import { MarkdownRenderer } from '../../components/ui/markdown-renderer';\nimport { ToolCallContentPartComponent } from '@assistant-ui/react';\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon, LoaderCircle, ExternalLinkIcon } from 'lucide-react';\nimport { useState } from 'react';\nimport { cn } from '@/lib/utils';\n\n// Define custom color classes with improved contrast\nconst purpleClasses = {\n bg: 'bg-[rgba(124,80,175,0.25)]',\n text: 'text-[rgb(180,140,230)]',\n hover: 'hover:text-[rgb(200,160,250)]',\n border: 'border-[rgba(124,80,175,0.5)]',\n};\n\n// Use a more generic type for the component to avoid TypeScript errors\nexport const ToolFallback: ToolCallContentPartComponent = props => {\n const { toolCallId, toolName, args, argsText, result, status } = props;\n const [expandedAgents, setExpandedAgents] = useState<Record<string, boolean>>({});\n\n // Handle case where args or args.actions is undefined\n const actions = args?.actions || [];\n\n // Skip rendering if no actions\n if (actions.length === 0) {\n return null;\n }\n\n const toggleAgent = (agentId: string) => {\n setExpandedAgents(prev => ({\n ...prev,\n [agentId]: !prev[agentId],\n }));\n };\n\n // Extract URLs from result for optional linking\n const extractUrls = (text: unknown): string[] => {\n if (typeof text !== 'string') return [];\n const urlRegex = /(https?:\\/\\/[^\\s]+)/g;\n return text.match(urlRegex) || [];\n };\n\n return (\n <div className=\"mb-4 w-full rounded-lg border border-gray-700 overflow-hidden shadow-md\">\n {actions.map((action: any, index: number) => {\n const agentId = `${toolCallId || 'tool'}-${action.agent}-${index}`;\n const isExpanded = expandedAgents[agentId] || false;\n const urls = result ? extractUrls(result) : [];\n\n return (\n <div key={agentId} className={`border-b border-gray-700 ${index === actions.length - 1 ? 'border-b-0' : ''}`}>\n <div\n className=\"flex items-center justify-between px-4 py-3 bg-gray-900 hover:bg-gray-800 cursor-pointer\"\n onClick={() => toggleAgent(agentId)}\n >\n <div className=\"flex items-center gap-3\">\n <div className={cn('flex h-6 w-6 items-center justify-center rounded-full', purpleClasses.bg)}>\n {status?.type === 'running' ? (\n <LoaderCircle className={cn('h-4 w-4 animate-spin', purpleClasses.text)} />\n ) : (\n <CheckIcon className={cn('h-4 w-4', purpleClasses.text)} />\n )}\n </div>\n <div>\n <p className=\"font-medium text-sm text-gray-100\">{action.agent?.replaceAll('_', ' ')}</p>\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n <span className={cn('text-xs px-2 py-1 rounded-full', purpleClasses.bg, purpleClasses.text)}>\n {status?.type === 'running' ? 'Processing...' : 'Complete'}\n </span>\n {isExpanded ? (\n <ChevronUpIcon className=\"h-4 w-4 text-gray-300\" />\n ) : (\n <ChevronDownIcon className=\"h-4 w-4 text-gray-300\" />\n )}\n </div>\n </div>\n\n {isExpanded && (\n <div className=\"px-4 py-3 bg-[#111]\">\n <div className=\"mb-3\">\n <p className=\"text-xs font-semibold text-gray-300 mb-1\">Query:</p>\n <div className=\"p-2 bg-gray-900 rounded border border-gray-700\">\n <p className=\"text-sm text-gray-200 whitespace-pre-wrap\">{action.input}</p>\n </div>\n </div>\n\n {result && (\n <div>\n <p className=\"text-xs font-semibold text-gray-300 mb-1\">Result:</p>\n <div className=\"p-2 bg-gray-900 rounded border border-gray-700 max-h-60 overflow-auto\">\n {typeof result === 'string' ? (\n <div className=\"text-sm text-gray-200\">\n <MarkdownRenderer>{result}</MarkdownRenderer>\n </div>\n ) : (\n <p className=\"text-sm text-gray-200 whitespace-pre-wrap\">{JSON.stringify(result, null, 2)}</p>\n )}\n </div>\n\n {urls.length > 0 && (\n <div className=\"mt-2\">\n <p className=\"text-xs font-semibold text-gray-300 mb-1\">Sources:</p>\n <div className=\"flex flex-wrap gap-2\">\n {urls.slice(0, 3).map((url, i) => (\n <a\n key={i}\n href={url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn(\n 'inline-flex items-center gap-1 text-xs hover:underline',\n purpleClasses.text,\n purpleClasses.hover,\n )}\n >\n <span>Source {i + 1}</span>\n <ExternalLinkIcon className=\"h-3 w-3\" />\n </a>\n ))}\n {urls.length > 3 && <span className=\"text-xs text-gray-400\">+{urls.length - 3} more</span>}\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n};\n","import { Thread } from '@/components/assistant-ui/thread';\nimport { MastraNetworkRuntimeProvider } from '@/services/network-runtime-provider';\nimport { ChatProps } from '@/types';\nimport { ToolFallback } from './tool-fallback';\n\nexport const NetworkChat = ({ agentId, memory }: ChatProps) => {\n return (\n <MastraNetworkRuntimeProvider agentId={agentId} memory={memory}>\n <Thread memory={memory} ToolFallback={ToolFallback} />\n </MastraNetworkRuntimeProvider>\n );\n};\n","import { Braces } from 'lucide-react';\nimport { ReactNode, useContext, useState } from 'react';\n\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table';\n\nimport { cn } from '@/lib/utils';\n\nimport { Traces } from '@/domains/traces';\nimport { TraceContext, TraceProvider } from '@/domains/traces/context/trace-context';\nimport { TraceDetails } from '@/domains/traces/trace-details';\nimport { SpanDetail } from '@/domains/traces/trace-span-details';\nimport { useTraces } from '@/hooks/use-traces';\nimport { MastraResizablePanel } from '@/domains/resizable-panel';\n\nexport function WorkflowTraces({\n workflowName,\n baseUrl,\n sidebarChild,\n}: {\n workflowName: string;\n baseUrl: string;\n sidebarChild: ReactNode;\n}) {\n return (\n <TraceProvider>\n <WorkflowTracesInner workflowName={workflowName} baseUrl={baseUrl} sidebarChild={sidebarChild} />\n </TraceProvider>\n );\n}\n\nfunction WorkflowTracesInner({\n workflowName,\n baseUrl,\n sidebarChild,\n}: {\n workflowName: string;\n baseUrl: string;\n sidebarChild: ReactNode;\n}) {\n const { traces, error, firstCallLoading } = useTraces(workflowName, baseUrl, true);\n const { isOpen: open } = useContext(TraceContext);\n\n if (firstCallLoading) {\n return (\n <main className=\"flex-1 h-full relative overflow-hidden\">\n <div className=\"h-full w-[calc(100%_-_325px)]\">\n <Table>\n <TableHeader className=\"sticky top-0 z-10 bg-[#0F0F0F]\">\n <TableRow className=\"border-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableHead className=\"text-mastra-el-3 h-10\">Trace</TableHead>\n <TableHead className=\"text-mastra-el-3 flex items-center gap-1 h-10\">\n <Braces className=\"h-3 w-3\" /> Trace Id\n </TableHead>\n <TableHead className=\"text-mastra-el-3 h-10\">Started</TableHead>\n <TableHead className=\"text-mastra-el-3 h-10\">Total Duration</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody className=\"border-b border-gray-6\">\n <TableRow className=\"border-b-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableCell>\n <Skeleton className=\"h-8 w-full\" />\n </TableCell>\n <TableCell>\n <Skeleton className=\"h-8 w-full\" />\n </TableCell>\n <TableCell>\n <Skeleton className=\"h-8 w-full\" />\n </TableCell>\n <TableCell>\n <Skeleton className=\"h-8 w-full\" />\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </div>\n <SidebarItems sidebarChild={sidebarChild} className=\"min-w-[325px]\" />\n </main>\n );\n }\n\n if (!traces || traces.length === 0) {\n return (\n <main className=\"flex-1 h-full relative overflow-hidden\">\n <div className=\"h-full w-[calc(100%_-_325px)]\">\n <Table>\n <TableHeader className=\"sticky top-0 z-10 bg-[#0F0F0F]\">\n <TableRow className=\"border-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableHead className=\"text-mastra-el-3 h-10\">Trace</TableHead>\n <TableHead className=\"text-mastra-el-3 flex items-center gap-1 h-10\">\n <Braces className=\"h-3 w-3\" /> Trace Id\n </TableHead>\n <TableHead className=\"text-mastra-el-3 h-10\">Started</TableHead>\n <TableHead className=\"text-mastra-el-3 h-10\">Total Duration</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody className=\"border-b border-gray-6\">\n <TableRow className=\"border-b-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableCell colSpan={4} className=\"h-24 text-center\">\n {error?.message || 'No traces found'}\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </div>\n <SidebarItems sidebarChild={sidebarChild} className=\"min-w-[325px]\" />\n </main>\n );\n }\n\n return (\n <main className=\"flex-1 h-full relative overflow-hidden\">\n <Traces traces={traces} />\n <SidebarItems className={cn(open ? 'grid grid-cols-2 w-[60%]' : 'min-w-[325px]')} sidebarChild={sidebarChild} />\n </main>\n );\n}\n\nfunction SidebarItems({ sidebarChild, className }: { sidebarChild: ReactNode; className?: string }) {\n const { openDetail, isOpen: open } = useContext(TraceContext);\n const [rightSidebarWidth, setRightSidebarWidth] = useState(40);\n\n return (\n <MastraResizablePanel\n className={cn(\n 'absolute right-0 top-0 h-full z-20 overflow-x-scroll border-l-[0.5px] bg-mastra-bg-1 bg-[#121212]',\n className,\n )}\n defaultWidth={open ? 60 : 20}\n minimumWidth={open ? 50 : 20}\n maximumWidth={open ? 90 : 60}\n >\n {open && (\n <div\n className=\"h-full overflow-x-scroll px-0 absolute left-0 top-0 min-w-[50%] bg-mastra-bg-1 bg-[#121212]\"\n style={{ width: `${100 - rightSidebarWidth}%` }}\n >\n <TraceDetails />\n </div>\n )}\n <MastraResizablePanel\n defaultWidth={50}\n minimumWidth={30}\n maximumWidth={80}\n className={cn('h-full overflow-y-hidden border-l-[0.5px] right-0 top-0 z-20 bg-mastra-bg-1 bg-[#121212]', {\n absolute: open,\n 'unset-position': !open,\n })}\n disabled={!open}\n setCurrentWidth={setRightSidebarWidth}\n >\n <div className=\"h-full overflow-y-scroll\">{!openDetail ? sidebarChild : <SpanDetail />}</div>\n </MastraResizablePanel>\n </MastraResizablePanel>\n );\n}\n","import type { Workflow } from '@mastra/core/workflows';\nimport { useEffect, useState } from 'react';\nimport { toast } from 'sonner';\nimport { WorkflowRunResult, MastraClient } from '@mastra/client-js';\n\nexport const useWorkflow = (workflowId: string, baseUrl: string) => {\n const [workflow, setWorkflow] = useState<Workflow | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n\n const client = new MastraClient({\n baseUrl: baseUrl || '',\n });\n\n useEffect(() => {\n const fetchWorkflow = async () => {\n setIsLoading(true);\n try {\n if (!workflowId) {\n setWorkflow(null);\n setIsLoading(false);\n return;\n }\n const res = await client.getWorkflow(workflowId).details();\n if (!res) {\n setWorkflow(null);\n console.error('Error fetching workflow');\n toast.error('Error fetching workflow');\n return;\n }\n setWorkflow(res as Workflow);\n } catch (error) {\n setWorkflow(null);\n console.error('Error fetching workflow', error);\n toast.error('Error fetching workflow');\n } finally {\n setIsLoading(false);\n }\n };\n\n fetchWorkflow();\n }, [workflowId]);\n\n return { workflow, isLoading };\n};\n\nexport const useExecuteWorkflow = (baseUrl: string) => {\n const [isExecutingWorkflow, setIsExecutingWorkflow] = useState(false);\n\n const client = new MastraClient({\n baseUrl: baseUrl || '',\n });\n\n const executeWorkflow = async ({ workflowId, input }: { workflowId: string; input: any }) => {\n try {\n setIsExecutingWorkflow(true);\n const response = await client.getWorkflow(workflowId).execute(input || {});\n return response;\n } catch (error) {\n console.error('Error executing workflow:', error);\n throw error;\n } finally {\n setIsExecutingWorkflow(false);\n }\n };\n\n const createWorkflowRun = async ({ workflowId, prevRunId }: { workflowId: string; prevRunId?: string }) => {\n try {\n const workflow = client.getWorkflow(workflowId);\n const { runId: newRunId } = await workflow.createRun({ runId: prevRunId });\n return { runId: newRunId };\n } catch (error) {\n console.error('Error creating workflow run:', error);\n throw error;\n }\n };\n\n const startWorkflowRun = async ({ workflowId, runId, input }: { workflowId: string; runId: string; input: any }) => {\n try {\n const workflow = client.getWorkflow(workflowId);\n await workflow.start({ runId, triggerData: input || {} });\n } catch (error) {\n console.error('Error starting workflow run:', error);\n throw error;\n }\n };\n\n return { executeWorkflow, startWorkflowRun, createWorkflowRun, isExecutingWorkflow };\n};\n\nexport const useWatchWorkflow = (baseUrl: string) => {\n const [isWatchingWorkflow, setIsWatchingWorkflow] = useState(false);\n const [watchResult, setWatchResult] = useState<WorkflowRunResult | null>(null);\n\n const watchWorkflow = async ({ workflowId, runId }: { workflowId: string; runId: string }) => {\n try {\n setIsWatchingWorkflow(true);\n const client = new MastraClient({\n baseUrl,\n });\n\n const workflow = client.getWorkflow(workflowId);\n\n workflow.watch({ runId }, record => {\n setWatchResult(record);\n });\n } catch (error) {\n console.error('Error watching workflow:', error);\n\n throw error;\n } finally {\n setIsWatchingWorkflow(false);\n }\n };\n\n return { watchWorkflow, isWatchingWorkflow, watchResult };\n};\n\nexport const useResumeWorkflow = (baseUrl: string) => {\n const [isResumingWorkflow, setIsResumingWorkflow] = useState(false);\n\n const resumeWorkflow = async ({\n workflowId,\n stepId,\n runId,\n context,\n }: {\n workflowId: string;\n stepId: string;\n runId: string;\n context: any;\n }) => {\n try {\n setIsResumingWorkflow(true);\n const client = new MastraClient({\n baseUrl: baseUrl || '',\n });\n\n const response = await client.getWorkflow(workflowId).resume({ stepId, runId, context });\n\n return response;\n } catch (error) {\n console.error('Error resuming workflow:', error);\n throw error;\n } finally {\n setIsResumingWorkflow(false);\n }\n };\n\n return { resumeWorkflow, isResumingWorkflow };\n};\n","import Dagre from '@dagrejs/dagre';\nimport type { StepCondition } from '@mastra/core/workflows';\nimport type { Node, Edge } from '@xyflow/react';\nimport { MarkerType } from '@xyflow/react';\n\nexport type ConditionConditionType = 'if' | 'else' | 'when' | 'until' | 'while';\n\nexport type Condition =\n | {\n type: ConditionConditionType;\n ref: {\n step:\n | {\n id: string;\n }\n | 'trigger';\n path: string;\n };\n query: Record<string, any>;\n conj?: 'and' | 'or' | 'not';\n fnString?: never;\n }\n | {\n type: ConditionConditionType;\n fnString: string;\n ref?: never;\n query?: never;\n conj?: never;\n };\n\nexport const pathAlphabet = 'abcdefghijklmnopqrstuvwxyz'.toUpperCase().split('');\n\nexport function extractConditions(group: StepCondition<any, any>, type: ConditionConditionType) {\n let result: Condition[] = [];\n if (!group) return result;\n\n function recurse(group: StepCondition<any, any>, conj?: 'and' | 'or' | 'not') {\n if (typeof group === 'string') {\n result.push({ type, fnString: group });\n } else {\n const simpleCondition = Object.entries(group).find(([key]) => key.includes('.'));\n if (simpleCondition) {\n const [key, queryValue] = simpleCondition;\n const [stepId, ...pathParts] = key.split('.');\n const ref = {\n step: {\n id: stepId,\n },\n path: pathParts.join('.'),\n };\n result.push({\n type,\n ref,\n query: { [queryValue === true || queryValue === false ? 'is' : 'eq']: String(queryValue) },\n conj,\n });\n }\n if ('ref' in group) {\n const { ref, query } = group;\n result.push({ type, ref, query, conj });\n }\n if ('and' in group) {\n for (const subGroup of group.and) {\n recurse({ ...subGroup }, 'and');\n }\n }\n if ('or' in group) {\n for (const subGroup of group.or) {\n recurse({ ...subGroup }, 'or');\n }\n }\n if ('not' in group) {\n recurse({ ...group.not }, 'not');\n }\n }\n }\n\n recurse(group);\n return result.reverse();\n}\n\nconst getLayoutedElements = (nodes: Node[], edges: Edge[]) => {\n const g = new Dagre.graphlib.Graph().setDefaultEdgeLabel(() => ({}));\n g.setGraph({ rankdir: 'TB' });\n\n edges.forEach(edge => g.setEdge(edge.source, edge.target));\n nodes.forEach(node =>\n g.setNode(node.id, {\n ...node,\n width: node.measured?.width ?? 274,\n height: node.measured?.height ?? (node?.data?.isLarge ? 260 : 100),\n }),\n );\n\n Dagre.layout(g);\n\n return {\n nodes: nodes.map(node => {\n const position = g.node(node.id);\n // We are shifting the dagre node position (anchor=center center) to the top left\n // so it matches the React Flow node anchor point (top left).\n const x = position.x - (node.measured?.width ?? 274) / 2;\n const y = position.y - (node.measured?.height ?? (node?.data?.isLarge ? 260 : 100)) / 2;\n\n return { ...node, position: { x, y } };\n }),\n edges,\n };\n};\n\nconst defaultEdgeOptions = {\n animated: true,\n markerEnd: {\n type: MarkerType.ArrowClosed,\n width: 20,\n height: 20,\n color: '#8e8e8e',\n },\n};\n\nexport const contructNodesAndEdges = ({\n stepGraph,\n stepSubscriberGraph,\n}: {\n stepGraph: any;\n stepSubscriberGraph: any;\n}): { nodes: Node[]; edges: Edge[] } => {\n if (!stepGraph) {\n return { nodes: [], edges: [] };\n }\n const { initial, ...stepsList } = stepGraph;\n if (!initial.length) {\n return { nodes: [], edges: [] };\n }\n\n let nodes: Node[] = [];\n let edges: Edge[] = [];\n let allSteps: any[] = [];\n\n for (const [_index, _step] of initial.entries()) {\n const step = _step.step;\n const stepId = step.id;\n const steps = [_step, ...(stepsList?.[stepId] || [])]?.reduce((acc, step, i) => {\n let newStep = {\n ...step.step,\n label: step.step.id,\n originalId: step.step.id,\n type: 'default-node',\n id: nodes.some(node => node.id === step.step.id) ? `${step.step.id}-${i}` : step.step.id,\n };\n let conditionType: ConditionConditionType = 'when';\n if (step.config?.serializedWhen) {\n conditionType = step.step.id?.endsWith('_if') ? 'if' : step.step.id?.endsWith('_else') ? 'else' : 'when';\n const conditions = extractConditions(step.config.serializedWhen, conditionType);\n const conditionStep = {\n id: crypto.randomUUID(),\n conditions,\n type: 'condition-node',\n isLarge:\n (conditions?.length > 1 || conditions.some(({ fnString }) => !!fnString)) && conditionType !== 'else',\n };\n\n acc.push(conditionStep);\n }\n if (conditionType === 'if' || conditionType === 'else') {\n newStep = {\n ...newStep,\n label: conditionType === 'if' ? 'start if' : 'start else',\n };\n }\n newStep = {\n ...newStep,\n label: step.config?.loopLabel || newStep.label,\n };\n acc.push(newStep);\n return acc;\n }, []);\n\n allSteps = [...allSteps, ...steps];\n\n const newNodes = [...steps].map((step: any, index: number) => {\n const subscriberGraph = stepSubscriberGraph?.[step.id];\n return {\n id: step.id,\n position: { x: _index * 300, y: index * 100 },\n type: step.type,\n data: {\n conditions: step.conditions,\n label: step.label,\n description: step.description,\n withoutTopHandle: subscriberGraph?.[step.id] ? false : index === 0,\n withoutBottomHandle: subscriberGraph ? false : index === steps.length - 1,\n isLarge: step.isLarge,\n },\n };\n });\n\n nodes = [...nodes, ...newNodes];\n\n const edgeSteps = [...steps].slice(0, -1);\n\n const newEdges = edgeSteps.map((step: any, index: number) => ({\n id: `e${step.id}-${steps[index + 1].id}`,\n source: step.id,\n target: steps[index + 1].id,\n ...defaultEdgeOptions,\n }));\n\n edges = [...edges, ...newEdges];\n }\n\n if (!stepSubscriberGraph || !Object.keys(stepSubscriberGraph).length) {\n const { nodes: layoutedNodes, edges: layoutedEdges } = getLayoutedElements(nodes, edges);\n return { nodes: layoutedNodes, edges: layoutedEdges };\n }\n\n for (const [connectingStepId, stepInfoGraph] of Object.entries(stepSubscriberGraph)) {\n const { initial, ...stepsList } = stepInfoGraph as any;\n\n let untilOrWhileConditionId: string | undefined;\n const loopResultSteps: { id: string; loopType: string }[] = [];\n let finishedLoopStep: any | undefined;\n let otherLoopStep: any | undefined;\n\n if (initial.length) {\n for (const [_index, _step] of initial.entries()) {\n const step = _step.step;\n const stepId = step.id;\n const steps = [_step, ...(stepsList?.[stepId] || [])]?.reduce((acc, step, i) => {\n let newStep = {\n ...step.step,\n originalId: step.step.id,\n label: step.step.id,\n type: 'default-node',\n id: nodes.some(node => node.id === step.step.id) ? `${step.step.id}-${i}` : step.step.id,\n };\n let conditionType: ConditionConditionType = 'when';\n const isFinishedLoop = step.config?.loopLabel?.endsWith('loop finished');\n if (step.config?.serializedWhen && !isFinishedLoop) {\n conditionType = step.step.id?.endsWith('_if')\n ? 'if'\n : step.step.id?.endsWith('_else')\n ? 'else'\n : (step.config?.loopType ?? 'when');\n\n const conditions = extractConditions(step.config.serializedWhen, conditionType);\n const conditionStep = {\n id: crypto.randomUUID(),\n conditions,\n type: 'condition-node',\n isLarge:\n (conditions?.length > 1 || conditions.some(({ fnString }) => !!fnString)) && conditionType !== 'else',\n };\n if (conditionType === 'until' || conditionType === 'while') {\n untilOrWhileConditionId = conditionStep.id;\n }\n\n acc.push(conditionStep);\n }\n if (isFinishedLoop) {\n const loopResultStep = {\n id: crypto.randomUUID(),\n type: 'loop-result-node',\n loopType: 'finished',\n loopResult: step.config.loopType === 'until' ? true : false,\n };\n loopResultSteps.push(loopResultStep);\n acc.push(loopResultStep);\n }\n if (!isFinishedLoop && step.config?.loopType) {\n const loopResultStep = {\n id: crypto.randomUUID(),\n type: 'loop-result-node',\n loopType: step.config.loopType,\n loopResult: step.config.loopType === 'until' ? false : true,\n };\n loopResultSteps.push(loopResultStep);\n acc.push(loopResultStep);\n }\n if (conditionType === 'if' || conditionType === 'else') {\n newStep = {\n ...newStep,\n label: conditionType === 'if' ? 'start if' : 'start else',\n };\n }\n if (step.config.loopType) {\n if (isFinishedLoop) {\n finishedLoopStep = newStep;\n } else {\n otherLoopStep = newStep;\n }\n }\n newStep = {\n ...newStep,\n loopType: isFinishedLoop ? 'finished' : step.config.loopType,\n label: step.config?.loopLabel || newStep.label,\n };\n acc.push(newStep);\n return acc;\n }, []);\n\n let afterStep: any = [];\n let afterStepStepList = connectingStepId?.includes('&&') ? connectingStepId.split('&&') : [];\n if (connectingStepId?.includes('&&')) {\n afterStep = [\n {\n id: connectingStepId,\n label: connectingStepId,\n type: 'after-node',\n steps: afterStepStepList,\n },\n ];\n }\n\n const newNodes = [...steps, ...afterStep].map((step: any, index: number) => {\n const subscriberGraph = stepSubscriberGraph?.[step.id];\n const withBottomHandle = step.originalId === connectingStepId || subscriberGraph;\n return {\n id: step.id,\n position: { x: _index * 300 + 300, y: index * 100 + 100 },\n type: step.type,\n data: {\n conditions: step.conditions,\n label: step.label,\n description: step.description,\n result: step.loopResult,\n loopType: step.loopType,\n steps: step.steps,\n withoutBottomHandle: withBottomHandle ? false : index === steps.length - 1,\n isLarge: step.isLarge,\n },\n };\n });\n\n nodes = [...nodes, ...newNodes].map(node => ({\n ...node,\n data: {\n ...node.data,\n withoutBottomHandle: afterStepStepList.includes(node.id) ? false : node.data.withoutBottomHandle,\n },\n }));\n\n const edgeSteps = [...steps].slice(0, -1);\n\n const afterEdges = afterStepStepList.map((step: any) => ({\n id: `e${step}-${connectingStepId}`,\n source: step,\n target: connectingStepId,\n ...defaultEdgeOptions,\n }));\n\n const finishedLoopResult = loopResultSteps?.find(step => step.loopType === 'finished');\n\n const newEdges = edgeSteps\n .map((step: any, index: number) => ({\n id: `e${step.id}-${steps[index + 1].id}`,\n source: step.id,\n target: steps[index + 1].id,\n remove: finishedLoopResult?.id === steps[index + 1].id, //remove if target is a finished loop result\n ...defaultEdgeOptions,\n }))\n ?.filter((edge: any) => !edge.remove);\n\n const firstEdgeStep = steps[0];\n const lastEdgeStep = steps[steps.length - 1];\n\n const connectingEdge =\n connectingStepId === firstEdgeStep.id\n ? []\n : [\n {\n id: `e${connectingStepId}-${firstEdgeStep.id}`,\n source: connectingStepId,\n target: firstEdgeStep.id,\n remove: finishedLoopResult?.id === firstEdgeStep.id,\n ...defaultEdgeOptions,\n },\n ]?.filter((edge: any) => !edge.remove); //remove if target is a finished loop result\n\n const lastEdge =\n lastEdgeStep.originalId === connectingStepId\n ? [\n {\n id: `e${lastEdgeStep.id}-${connectingStepId}`,\n source: lastEdgeStep.id,\n target: connectingStepId,\n ...defaultEdgeOptions,\n },\n ]\n : [];\n\n edges = [...edges, ...afterEdges, ...connectingEdge, ...newEdges, ...lastEdge];\n\n allSteps = [...allSteps, ...steps];\n }\n if (untilOrWhileConditionId && loopResultSteps.length && finishedLoopStep && otherLoopStep) {\n const loopResultStepsEdges = loopResultSteps.map(step => ({\n id: `e${untilOrWhileConditionId}-${step.id}`,\n source: untilOrWhileConditionId!,\n target: step.id,\n ...defaultEdgeOptions,\n }));\n\n const finishedLoopResult = loopResultSteps?.find(res => res.loopType === 'finished');\n const otherLoopResult = loopResultSteps?.find(res => res.loopType !== 'finished');\n\n const otherLoopEdge = {\n id: `e${otherLoopResult?.id}-${otherLoopStep?.id}`,\n source: otherLoopResult?.id!,\n target: otherLoopStep.id!,\n ...defaultEdgeOptions,\n };\n\n const finishedLoopEdge = {\n id: `e${finishedLoopResult?.id}-${finishedLoopStep?.id}`,\n source: finishedLoopResult?.id!,\n target: finishedLoopStep.id!,\n ...defaultEdgeOptions,\n };\n\n edges = [...edges, ...loopResultStepsEdges, otherLoopEdge, finishedLoopEdge];\n }\n }\n }\n const { nodes: layoutedNodes, edges: layoutedEdges } = getLayoutedElements(nodes, edges);\n\n return { nodes: layoutedNodes, edges: layoutedEdges };\n};\n","import type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\nimport React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst textVariants = cva('block', {\n variants: {\n variant: {\n primary: 'text-text',\n secondary: 'text-text-dim',\n },\n size: {\n default: 'text-base',\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-md',\n lg: 'text-lg',\n xl: 'text-xl',\n '2xl': 'text-2xl',\n },\n weight: {\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'default',\n weight: 'normal',\n },\n});\n\nexport interface TextProps\n extends React.HTMLAttributes<HTMLParagraphElement | HTMLSpanElement | HTMLDivElement>,\n VariantProps<typeof textVariants> {\n as?: 'p' | 'span' | 'div';\n}\n\nexport const Text = ({ className, weight, variant, as: Tag = 'span', size, ...props }: TextProps) => {\n return <Tag className={cn(textVariants({ size, variant, weight, className }))} {...props} />;\n};\n","import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';\n\nconst Collapsible = CollapsiblePrimitive.Root;\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n","import * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n 'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg',\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col space-y-1.5 text-center sm:text-left', className)} {...props} />\n);\nDialogHeader.displayName = 'DialogHeader';\n\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)} {...props} />\n);\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn('text-lg font-semibold leading-none tracking-tight', className)}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description ref={ref} className={cn('text-sm text-muted-foreground', className)} {...props} />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","import { Handle, Position } from '@xyflow/react';\nimport type { NodeProps, Node } from '@xyflow/react';\nimport { Fragment, useState } from 'react';\n\nimport { Text } from '@/components/ui/text';\n\nimport { cn } from '@/lib/utils';\n\nimport type { Condition } from './utils';\nimport { Highlight, themes } from 'prism-react-renderer';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/components/ui/collapsible';\nimport { ChevronDown } from 'lucide-react';\nimport { Dialog, DialogContent } from '@/components/ui/dialog';\nimport { ScrollArea } from '@/components/ui/scroll-area';\n\nexport type ConditionNode = Node<\n {\n conditions: Condition[];\n },\n 'condition-node'\n>;\n\nexport function WorkflowConditionNode({ data }: NodeProps<ConditionNode>) {\n const { conditions } = data;\n const [open, setOpen] = useState(true);\n const [openDialog, setOpenDialog] = useState(false);\n const type = conditions[0]?.type;\n const isCollapsible = (conditions.some(condition => condition.fnString) || conditions?.length > 1) && type !== 'else';\n\n return (\n <Collapsible\n open={!isCollapsible ? true : open}\n onOpenChange={_open => {\n if (isCollapsible) {\n setOpen(_open);\n }\n }}\n className={cn('bg-mastra-bg-3 rounded-md w-[274px] flex flex-col p-2 gap-2')}\n >\n <Handle type=\"target\" position={Position.Top} style={{ visibility: 'hidden' }} />\n\n <CollapsibleTrigger className=\"flex items-center justify-between w-full\">\n <Text\n size={'xs'}\n weight=\"medium\"\n className=\"text-mastra-el-3 bg-mastra-bg-11 my-auto block rounded-[0.125rem] px-2 py-1 text-[10px] w-fit\"\n >\n {type?.toUpperCase()}\n </Text>\n {isCollapsible && (\n <ChevronDown\n className={cn('w-4 h-4 transition-transform', {\n 'transform rotate-180': open,\n })}\n />\n )}\n </CollapsibleTrigger>\n {type === 'else' ? null : (\n <CollapsibleContent className=\"flex flex-col gap-2\">\n {conditions.map((condition, index) => {\n return condition.fnString ? (\n <Fragment key={`${condition.fnString}-${index}`}>\n <Highlight theme={themes.oneDark} code={String(condition.fnString).trim()} language=\"javascript\">\n {({ className, style, tokens, getLineProps, getTokenProps }) => (\n <pre\n className={`${className} relative font-mono text-sm overflow-x-auto p-3 w-full cursor-pointer rounded-lg mt-2`}\n style={{\n ...style,\n backgroundColor: 'transparent',\n border: '1px solid #343434',\n maxHeight: '9.62rem',\n }}\n onClick={() => setOpenDialog(true)}\n >\n {tokens.map((line, i) => (\n <div key={i} {...getLineProps({ line })}>\n <span className=\"inline-block mr-2 text-muted-foreground\">{i + 1}</span>\n {line.map((token, key) => (\n <span key={key} {...getTokenProps({ token })} />\n ))}\n </div>\n ))}\n </pre>\n )}\n </Highlight>\n\n <Dialog open={openDialog} onOpenChange={setOpenDialog}>\n <DialogContent className=\"max-w-[30rem] bg-[#121212] p-[0.5rem]\">\n <ScrollArea className=\"w-full p-2\" maxHeight=\"400px\">\n <Highlight theme={themes.oneDark} code={String(condition.fnString).trim()} language=\"javascript\">\n {({ className, style, tokens, getLineProps, getTokenProps }) => (\n <pre\n className={`${className} relative font-mono text-sm overflow-x-auto p-3 w-full rounded-lg mt-2 dark:bg-zinc-800`}\n style={{\n ...style,\n backgroundColor: '#121212',\n padding: '0 0.75rem 0 0',\n }}\n >\n {tokens.map((line, i) => (\n <div key={i} {...getLineProps({ line })}>\n <span className=\"inline-block mr-2 text-muted-foreground\">{i + 1}</span>\n {line.map((token, key) => (\n <span key={key} {...getTokenProps({ token })} />\n ))}\n </div>\n ))}\n </pre>\n )}\n </Highlight>\n </ScrollArea>\n </DialogContent>\n </Dialog>\n </Fragment>\n ) : (\n <Fragment key={`${condition.ref?.path}-${index}`}>\n {condition.ref?.step ? (\n <div className=\"flex items-center gap-1\">\n {index === 0 ? null : (\n <Text\n size={'xs'}\n weight=\"medium\"\n className=\"text-mastra-el-3 bg-mastra-bg-11 my-auto block rounded-[0.125rem] px-2 py-1 text-[10px]\"\n >\n {condition.conj?.toLocaleUpperCase() || 'WHEN'}\n </Text>\n )}\n\n <Text size={'xs'} className=\" text-mastra-el-3 flex-1\">\n {(condition.ref.step as any).id || condition.ref.step}'s {condition.ref.path}{' '}\n {Object.entries(condition.query).map(([key, value]) => `${key} ${String(value)}`)}\n </Text>\n </div>\n ) : null}\n </Fragment>\n );\n })}\n </CollapsibleContent>\n )}\n <Handle type=\"source\" position={Position.Bottom} style={{ visibility: 'hidden' }} />\n </Collapsible>\n );\n}\n","import { Handle, Position } from '@xyflow/react';\nimport type { NodeProps, Node } from '@xyflow/react';\nimport { Footprints } from 'lucide-react';\n\nimport { Text } from '@/components/ui/text';\n\nimport { cn } from '@/lib/utils';\n\nexport type DefaultNode = Node<\n {\n label: string;\n description?: string;\n withoutTopHandle?: boolean;\n withoutBottomHandle?: boolean;\n },\n 'default-node'\n>;\n\nexport function WorkflowDefaultNode({ data }: NodeProps<DefaultNode>) {\n const { label, description, withoutTopHandle, withoutBottomHandle } = data;\n return (\n <div className={cn('bg-mastra-bg-8 rounded-md w-[274px]')}>\n {!withoutTopHandle && <Handle type=\"target\" position={Position.Top} style={{ visibility: 'hidden' }} />}\n <div className=\"p-2\">\n <div className=\"text-sm bg-mastra-bg-9 flex items-center gap-[6px] rounded-sm p-2\">\n <Footprints className=\"text-current w-4 h-4\" />\n <Text size=\"xs\" weight=\"medium\" className=\"text-mastra-el-6 capitalize\">\n {label}\n </Text>\n </div>\n </div>\n {description && (\n <div className=\"bg-mastra-bg-4 rounded-b-md p-2 text-[10px] text-left text-mastra-el-4\">{description}</div>\n )}\n {!withoutBottomHandle && <Handle type=\"source\" position={Position.Bottom} style={{ visibility: 'hidden' }} />}\n </div>\n );\n}\n","import { Handle, Position } from '@xyflow/react';\nimport type { NodeProps, Node } from '@xyflow/react';\nimport { Fragment, useState } from 'react';\n\nimport { Text } from '@/components/ui/text';\n\nimport { cn } from '@/lib/utils';\n\nimport { Highlight, themes } from 'prism-react-renderer';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/components/ui/collapsible';\nimport { ChevronDown, Footprints } from 'lucide-react';\n\nexport type AfterNode = Node<\n {\n steps: string[];\n },\n 'after-node'\n>;\n\nexport function WorkflowAfterNode({ data }: NodeProps<AfterNode>) {\n const { steps } = data;\n const [open, setOpen] = useState(true);\n\n return (\n <Collapsible\n open={open}\n onOpenChange={setOpen}\n className={cn('bg-mastra-bg-3 rounded-md w-[274px] flex flex-col p-2 gap-2')}\n >\n <Handle type=\"target\" position={Position.Top} style={{ visibility: 'hidden' }} />\n\n <CollapsibleTrigger className=\"flex items-center justify-between w-full\">\n <Text\n size={'xs'}\n weight=\"medium\"\n className=\"text-mastra-el-3 bg-mastra-bg-11 my-auto block rounded-[0.125rem] px-2 py-1 text-[10px] w-fit\"\n >\n AFTER\n </Text>\n <ChevronDown\n className={cn('w-4 h-4 transition-transform', {\n 'transform rotate-180': open,\n })}\n />\n </CollapsibleTrigger>\n <CollapsibleContent className=\"flex flex-col gap-2\">\n {steps.map(step => (\n <div className=\"text-sm bg-mastra-bg-9 flex items-center gap-[6px] rounded-sm p-2\" key={step}>\n <Footprints className=\"text-current w-4 h-4\" />\n <Text size=\"xs\" weight=\"medium\" className=\"text-mastra-el-6 capitalize\">\n {step}\n </Text>\n </div>\n ))}\n </CollapsibleContent>\n <Handle type=\"source\" position={Position.Bottom} style={{ visibility: 'hidden' }} />\n </Collapsible>\n );\n}\n","import { Handle, Position } from '@xyflow/react';\nimport type { NodeProps, Node } from '@xyflow/react';\nimport { CircleCheck, CircleX } from 'lucide-react';\n\nimport { Text } from '@/components/ui/text';\n\nimport { cn } from '@/lib/utils';\n\nexport type LoopResultNode = Node<\n {\n result: boolean;\n },\n 'loop-result-node'\n>;\n\nexport function WorkflowLoopResultNode({ data }: NodeProps<LoopResultNode>) {\n const { result } = data;\n return (\n <div className={cn('bg-mastra-bg-8 rounded-md w-[274px]')}>\n <Handle type=\"target\" position={Position.Top} style={{ visibility: 'hidden' }} />\n <div className=\"p-2\">\n <div className=\"text-sm bg-mastra-bg-9 flex items-center gap-[6px] rounded-sm p-2\">\n {result ? <CircleCheck className=\"text-current w-4 h-4\" /> : <CircleX className=\"text-current w-4 h-4\" />}\n <Text size=\"xs\" weight=\"medium\" className=\"text-mastra-el-6 capitalize\">\n {String(result)}\n </Text>\n </div>\n </div>\n <Handle type=\"source\" position={Position.Bottom} style={{ visibility: 'hidden' }} />\n </div>\n );\n}\n","import type { Workflow } from '@mastra/core/workflows';\nimport {\n ReactFlow,\n MiniMap,\n Controls,\n Background,\n useNodesState,\n useEdgesState,\n BackgroundVariant,\n} from '@xyflow/react';\nimport '@xyflow/react/dist/style.css';\n\nimport { contructNodesAndEdges } from './utils';\nimport { WorkflowConditionNode } from './workflow-condition-node';\nimport { WorkflowDefaultNode } from './workflow-default-node';\nimport { WorkflowAfterNode } from './workflow-after-node';\nimport { WorkflowLoopResultNode } from './workflow-loop-result-node';\n\nexport function WorkflowGraphInner({ workflow }: { workflow: Workflow }) {\n const { nodes: initialNodes, edges: initialEdges } = contructNodesAndEdges({\n stepGraph: workflow.serializedStepGraph || workflow.stepGraph,\n stepSubscriberGraph: workflow.serializedStepSubscriberGraph || workflow.stepSubscriberGraph,\n });\n const [nodes, _, onNodesChange] = useNodesState(initialNodes);\n const [edges] = useEdgesState(initialEdges);\n\n const nodeTypes = {\n 'default-node': WorkflowDefaultNode,\n 'condition-node': WorkflowConditionNode,\n 'after-node': WorkflowAfterNode,\n 'loop-result-node': WorkflowLoopResultNode,\n };\n\n return (\n <div className=\"w-full h-full\">\n <ReactFlow\n nodes={nodes}\n edges={edges}\n nodeTypes={nodeTypes}\n onNodesChange={onNodesChange}\n fitView\n fitViewOptions={{\n maxZoom: 0.85,\n }}\n >\n <Controls />\n <MiniMap pannable zoomable maskColor=\"#121212\" bgColor=\"#171717\" nodeColor=\"#2c2c2c\" />\n <Background variant={BackgroundVariant.Dots} gap={12} size={0.5} />\n </ReactFlow>\n </div>\n );\n}\n","export const lodashTitleCase = (str: string): string => {\n // First convert to camel case (handles various separators like spaces, hyphens, underscores)\n const camelCased = str\n .replace(/[-_\\s]+(.)?/g, (_, char) => (char ? char.toUpperCase() : ''))\n .replace(/^(.)/, char => char.toLowerCase());\n\n // Then convert to start case (capitalize first letter of each word)\n return camelCased\n .replace(/([A-Z])/g, ' $1')\n .replace(/^./, str => str.toUpperCase())\n .trim();\n};\n\nexport const toTitleCase = (str: string, splitChar = ' ') => {\n return str\n .split(splitChar)\n .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n};\n","import { Skeleton } from '@/components/ui/skeleton';\n\nimport { useWorkflow } from '@/hooks/use-workflows';\n\nimport { WorkflowGraphInner } from './workflow-graph-inner';\nimport { lodashTitleCase } from '@/lib/string';\nimport { AlertCircleIcon } from 'lucide-react';\n\nexport function WorkflowGraph({ workflowId, baseUrl }: { workflowId: string; baseUrl: string }) {\n const { workflow, isLoading } = useWorkflow(workflowId, baseUrl);\n\n if (isLoading) {\n return (\n <div className=\"p-4\">\n <Skeleton className=\"h-[600px]\" />\n </div>\n );\n }\n\n if (!workflow) {\n return (\n <div className=\"grid h-full place-items-center\">\n <div className=\"flex flex-col items-center gap-2\">\n <AlertCircleIcon />\n <div>We couldn&apos;t find {lodashTitleCase(workflowId)} workflow.</div>\n </div>\n </div>\n );\n }\n\n return <WorkflowGraphInner workflow={workflow} />;\n}\n","export const AutomationIcon = ({ className }: { className?: string }) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n className={className}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5.34375 1.52812C5.34375 1.14153 5.65715 0.828125 6.04375 0.828125H9.45625C9.84282 0.828125 10.1562 1.14153 10.1562 1.52812V3.84687C10.1562 4.23348 9.84282 4.54688 9.45625 4.54688H8.625V6.81161L9.35414 8.80852C9.24863 8.78166 9.13761 8.7546 9.0215 8.72661L8.95218 8.70993C8.60891 8.62742 8.20123 8.52943 7.8784 8.4013C7.83782 8.3852 7.79469 8.36718 7.75 8.3469C7.70531 8.36718 7.66218 8.3852 7.6216 8.4013C7.29877 8.52943 6.89109 8.62742 6.54782 8.70993L6.4785 8.72661C6.36239 8.7546 6.25137 8.78166 6.14583 8.80852L6.875 6.81161V4.54688H6.04375C5.65715 4.54688 5.34375 4.23348 5.34375 3.84687V1.52812ZM6.14583 8.80852C6.14583 8.80852 6.14584 8.80852 6.14583 8.80852L5.54531 10.4531H5.95625C6.34285 10.4531 6.65625 10.7666 6.65625 11.1531V13.4719C6.65625 13.8584 6.34285 14.1719 5.95625 14.1719H2.54375C2.15715 14.1719 1.84375 13.8584 1.84375 13.4719V11.1531C1.84375 10.7666 2.15715 10.4531 2.54375 10.4531H3.23402C3.26169 10.1309 3.29979 9.79285 3.35272 9.47531C3.41692 9.09013 3.51527 8.65353 3.68612 8.31182C3.95256 7.77895 4.49413 7.51868 4.84581 7.3804C5.24023 7.2253 5.69736 7.11478 6.06837 7.02535C6.4139 6.94205 6.67918 6.87786 6.875 6.81161L6.14583 8.80852ZM5.54531 10.4531L6.14583 8.80852C5.89267 8.87296 5.67101 8.93634 5.48623 9.00901C5.32663 9.07176 5.25672 9.11838 5.23318 9.13484C5.18762 9.24554 5.13062 9.45274 5.07891 9.76301C5.04306 9.97818 5.01422 10.2137 4.99122 10.4531H5.54531ZM9.35414 8.80852L8.625 6.81161C8.82082 6.87786 9.0861 6.94205 9.43166 7.02535C9.80266 7.11478 10.2598 7.2253 10.6542 7.3804C11.0059 7.51868 11.5474 7.77895 11.8138 8.31182C11.9847 8.65353 12.0831 9.09013 12.1473 9.47531C12.2002 9.79285 12.2383 10.1309 12.266 10.4531H12.9563C13.3428 10.4531 13.6562 10.7666 13.6562 11.1531V13.4719C13.6562 13.8584 13.3428 14.1719 12.9563 14.1719H9.54375C9.15715 14.1719 8.84375 13.8584 8.84375 13.4719V11.1531C8.84375 10.7666 9.15715 10.4531 9.54375 10.4531H9.95474L9.35414 8.80852ZM9.35414 8.80852L9.95474 10.4531H10.5088C10.4858 10.2137 10.457 9.97818 10.4211 9.76301C10.3694 9.45274 10.3124 9.24554 10.2668 9.13484C10.2433 9.11838 10.1734 9.07176 10.0138 9.00901C9.829 8.93634 9.60736 8.87296 9.35414 8.80852Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n","'use client';\n\nimport { AutomationIcon } from '@/components/icons/automation-icon';\nimport { DataTable } from '@/components/ui/data-table';\nimport { ColumnDef } from '@tanstack/react-table';\n\nexport const WorkflowsTable = ({\n title,\n workflowsList,\n columns,\n isLoading,\n}: {\n title?: React.ReactNode;\n workflowsList: any[];\n columns: ColumnDef<any>[];\n isLoading?: boolean;\n}) => {\n return (\n <DataTable\n emptyText=\"Workflows\"\n title={title}\n withoutBorder\n withoutRadius\n isLoading={isLoading}\n icon={<AutomationIcon className=\"h-4 w-4\" />}\n columns={columns}\n data={workflowsList}\n className=\"border-t-0' border-[0.5px] border-x-0\"\n />\n );\n};\n","import type { FieldErrors } from 'react-hook-form';\nimport { z } from 'zod';\n\nexport const transformToNestObject = (error: z.ZodError): FieldErrors => {\n const fieldErrors: FieldErrors = {};\n error.errors.forEach(err => {\n if (err.path.length > 0) {\n const path = err.path.join('.');\n fieldErrors[path] = {\n type: 'validation',\n message: err.message,\n };\n }\n });\n return fieldErrors;\n};\n\n/**\n * Resolve serialized zod output - This function takes the string output ot the `jsonSchemaToZod` function\n * and instantiates the zod object correctly.\n *\n * @param obj - serialized zod object\n * @returns resolved zod object\n */\nexport function resolveSerializedZodOutput(obj: any) {\n return Function('z', `\"use strict\";return (${obj});`)(z);\n}\n","import type { Resolver } from 'react-hook-form';\nimport { z } from 'zod';\n\nimport { transformToNestObject } from '../utils';\n\nexport const customZodUnionResolver = (schemaUnion: z.ZodTypeAny, discriminator: string): Resolver<any> => {\n return async values => {\n //get schema based on discriminator\n const schema =\n schemaUnion?._def?.options?.find(\n (option: any) => option?.shape?.[discriminator]?._def?.value === values[discriminator],\n ) || z.object({ [discriminator]: z.string() });\n\n // Filter out keys that are not in the schema\n const filteredValues = Object.fromEntries(Object.entries(values).filter(([key]) => (schema as any)?.shape?.[key]));\n\n const result = schema.safeParse(filteredValues);\n\n if (result.success) {\n return { values: result.data, errors: {} };\n } else {\n const errors = transformToNestObject(result.error);\n return { values: {}, errors };\n }\n };\n};\n","'use client';\n\nimport { Plus, X } from 'lucide-react';\nimport * as React from 'react';\nimport type { Control } from 'react-hook-form';\nimport { useFieldArray } from 'react-hook-form';\n\nimport { Button } from '../../ui/button';\n\ninterface ArrayFieldProps {\n name: string;\n control: Control<any>;\n renderField: (props: { fieldName: string; index: number }) => React.ReactNode;\n handleFieldChange?: (props: { key: string; value: any[] }) => void;\n isStringField?: boolean;\n}\n\nexport function ArrayField({ name, control, renderField, isStringField }: ArrayFieldProps) {\n const { fields, append, remove } = useFieldArray({\n control,\n name,\n });\n\n return (\n <div className=\"space-y-2 w-full\">\n {fields.map((field, index) => (\n <div key={field.id} className=\"relative w-full flex items-center gap-2\">\n {renderField({ fieldName: `${name}.${index}`, index })}\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"absolute -right-2 -top-2\"\n onClick={() => remove(index)}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n ))}\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n className=\"w-full\"\n onClick={() => append(isStringField ? { root: '' } : {})}\n >\n <Plus className=\"mr-2 h-4 w-4\" />\n Add Item\n </Button>\n </div>\n );\n}\n","'use client';\n\nimport * as SwitchPrimitives from '@radix-ui/react-switch';\nimport * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n 'peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-mastra-bg-7 data-[state=unchecked]:bg-input',\n className,\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n 'pointer-events-none block h-4 w-4 rounded-full bg-white shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0',\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n","'use client';\n\nimport type { Control } from 'react-hook-form';\nimport { Controller } from 'react-hook-form';\n\nimport { Switch } from '../../ui/switch';\n\ninterface BooleanFieldProps {\n name: string;\n control: Control<any>;\n handleFieldChange?: (props: { key: string; value: boolean }) => void;\n}\n\nexport function BooleanField({ name, control, handleFieldChange }: BooleanFieldProps) {\n return (\n <Controller\n name={name}\n control={control}\n render={({ field }) => (\n <Switch\n checked={field.value}\n onCheckedChange={checked => {\n field.onChange(checked);\n handleFieldChange?.({ key: name, value: checked });\n }}\n />\n )}\n />\n );\n}\n","'use client';\n\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { Search } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n 'flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground',\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n 'flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n />\n </div>\n));\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn('max-h-[300px] overflow-y-auto overflow-x-hidden', className)}\n {...props}\n />\n));\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => <CommandPrimitive.Empty ref={ref} className=\"py-6 text-center text-sm\" {...props} />);\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n 'overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground',\n className,\n )}\n {...props}\n />\n));\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator ref={ref} className={cn('-mx-1 h-px bg-border', className)} {...props} />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n {...props}\n />\n));\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return <span className={cn('ml-auto text-xs tracking-widest text-muted-foreground', className)} {...props} />;\n};\nCommandShortcut.displayName = 'CommandShortcut';\n\nexport {\n Command,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","'use client';\n\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent };\n","'use client';\n\nimport { Plus, X } from 'lucide-react';\nimport * as React from 'react';\nimport type { Control } from 'react-hook-form';\nimport { Controller } from 'react-hook-form';\n\nimport { Badge } from '../../ui/badge';\nimport { Button } from '../../ui/button';\nimport { Command, CommandInput, CommandList, CommandGroup, CommandItem } from '../../ui/command';\nimport { Popover, PopoverContent, PopoverTrigger } from '../../ui/popover';\n\ninterface CreatableFieldProps {\n name: string;\n control: Control<any>;\n options?: { label: string; value: string }[];\n handleFieldChange?: (props: { key: string; value: string[] }) => void;\n placeholder?: string;\n}\n\nexport function CreatableField({ name, control, options = [], handleFieldChange, placeholder }: CreatableFieldProps) {\n const [openPopover, setOpenPopover] = React.useState(false);\n const [inputValue, setInputValue] = React.useState('');\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field }) => {\n const selectedValues = field.value || [];\n\n const removeValue = (valueToRemove: string) => {\n const newValues = selectedValues.filter((v: string) => v !== valueToRemove);\n field.onChange(newValues);\n handleFieldChange?.({ key: name, value: newValues });\n };\n\n const addValue = (value: string) => {\n if (!value) return;\n const newValues = [...selectedValues, value];\n field.onChange(newValues);\n handleFieldChange?.({ key: name, value: newValues });\n setInputValue('');\n setOpenPopover(false);\n };\n\n return (\n <div className=\"space-y-2\">\n <div className=\"flex flex-wrap gap-2\">\n {selectedValues.map((value: string) => (\n <Badge key={value} className=\"flex items-center gap-1\">\n {value}\n <Button variant=\"ghost\" size=\"icon\" className=\"h-4 w-4 p-0\" onClick={() => removeValue(value)}>\n <X className=\"h-3 w-3\" />\n </Button>\n </Badge>\n ))}\n </div>\n\n <Popover open={openPopover} onOpenChange={setOpenPopover}>\n <PopoverTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className=\"w-full justify-start\">\n <Plus className=\"mr-2 h-4 w-4\" />\n {placeholder || 'Add item'}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"p-0\" align=\"start\">\n <Command>\n <CommandInput placeholder=\"Enter value...\" value={inputValue} onValueChange={setInputValue} />\n <CommandList>\n <CommandGroup>\n {options\n .filter(opt => !selectedValues.includes(opt.value))\n .map(option => (\n <CommandItem key={option.value} onSelect={() => addValue(option.value)}>\n {option.label}\n </CommandItem>\n ))}\n {inputValue && (\n <CommandItem onSelect={() => addValue(inputValue)}>Create \"{inputValue}\"</CommandItem>\n )}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n );\n }}\n />\n );\n}\n","'use client';\n\nimport { CalendarIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { DayPicker } from 'react-day-picker';\n\nimport { cn } from '../../lib/utils';\n\nimport { buttonVariants } from './button';\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\n\nfunction Calendar({ className, classNames, showOutsideDays = true, ...props }: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn('p-3', className)}\n classNames={{\n months: 'flex flex-col space-y-4 sm:space-y-0',\n month: 'space-y-4',\n month_caption: 'flex justify-center pt-1 relative items-center',\n caption_label: 'text-sm text-text font-medium',\n nav: 'space-x-1 flex items-center',\n button_previous: cn(\n buttonVariants({ variant: 'outline' }),\n 'h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100',\n 'absolute left-4 top-[56px] z-10',\n ),\n button_next: cn(\n buttonVariants({ variant: 'outline' }),\n 'h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100',\n 'absolute right-4 top-[56px] z-10',\n ),\n month_grid: 'w-full border-collapse space-y-1',\n weekdays: 'flex',\n weekday: 'text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]',\n week: 'flex w-full mt-2',\n day: cn(\n buttonVariants({ variant: 'ghost' }),\n 'relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected].day-range-end)]:rounded-r-md',\n props.mode === 'range'\n ? '[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md'\n : '[&:has([aria-selected])]:rounded-md',\n 'h-8 w-8 p-0 hover:bg-lightGray-7/50 font-normal aria-selected:opacity-100',\n ),\n range_start: 'day-range-start',\n range_end: 'day-range-end',\n selected:\n '!bg-primary !text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground',\n today: 'bg-lightGray-7/50 text-accent-foreground',\n outside:\n 'day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30',\n disabled: 'text-muted-foreground opacity-50',\n range_middle: 'aria-selected:bg-accent aria-selected:text-accent-foreground',\n hidden: 'invisible',\n ...classNames,\n }}\n components={{\n Chevron: ({ orientation }) => (\n <CalendarIcon\n className={cn('h-4 w-4', {\n 'rotate-180': orientation === 'up',\n 'rotate-90': orientation === 'left',\n '-rotate-90': orientation === 'right',\n })}\n />\n ),\n }}\n {...props}\n />\n );\n}\nCalendar.displayName = 'Calendar';\n\nexport { Calendar };\n","'use client';\n\nimport { format, isValid } from 'date-fns';\nimport { CalendarIcon } from 'lucide-react';\nimport * as React from 'react';\nimport type { PropsSingle } from 'react-day-picker';\nimport { useDebouncedCallback } from 'use-debounce';\n\nimport { cn } from '../../lib/utils';\n\nimport { Button } from './button';\nimport { Calendar } from './calendar';\nimport { Input } from './input';\nimport { Popover, PopoverContent, PopoverTrigger } from './popover';\n\ntype CommonProps = Omit<PropsSingle, 'mode' | 'selected' | 'onSelect'> & {\n value: Date | undefined | null;\n setValue: (date: Date | undefined | null) => void;\n clearable?: boolean;\n};\n\nexport type DatePickerProps =\n | (CommonProps & { children?: never; className?: string; placeholder?: string })\n | (CommonProps & { children: React.ReactNode; className?: never; placeholder?: string });\n\nexport const DatePicker: React.FC<DatePickerProps> = ({\n value,\n setValue,\n children,\n className,\n placeholder,\n ...props\n}) => {\n const [openPopover, setOpenPopover] = React.useState(false);\n\n return (\n <Popover open={openPopover} onOpenChange={setOpenPopover}>\n <PopoverTrigger asChild>\n {children ? (\n children\n ) : (\n <DefaultButton\n value={value}\n placeholder={placeholder}\n className={className}\n data-testid=\"datepicker-button\"\n />\n )}\n </PopoverTrigger>\n <PopoverContent\n className=\"backdrop-blur-4xl w-auto p-0 bg-[#171717]\"\n align=\"start\"\n data-testid=\"datepicker-calendar\"\n >\n <DatePickerOnly\n value={value}\n setValue={v => setValue(v ? new Date(`${v}z`) : null)} // TODO: Leave in the Z to prevent casting via timezone\n clearable={props.clearable}\n setOpenPopover={setOpenPopover}\n {...props}\n />\n </PopoverContent>\n </Popover>\n );\n};\n\nexport const DatePickerOnly = ({\n value,\n setValue,\n setOpenPopover,\n clearable,\n placeholder,\n className,\n ...props\n}: CommonProps & {\n setOpenPopover?: (open: boolean) => void;\n placeholder?: string;\n className?: string;\n}) => {\n const [inputValue, setInputValue] = React.useState<string>(value ? format(value, 'PP') : '');\n const [selected, setSelected] = React.useState<Date | undefined>(value ? new Date(value) : undefined);\n\n const debouncedDateUpdate = useDebouncedCallback((date: Date) => {\n if (isValid(date)) {\n setSelected(date);\n setValue?.(date);\n setOpenPopover?.(false);\n }\n }, 2000);\n\n const handleInputChange: React.ChangeEventHandler<HTMLInputElement> = e => {\n setInputValue(e.currentTarget.value);\n const date = new Date(e.target.value);\n debouncedDateUpdate(date);\n };\n\n const handleDaySelect = (date: Date | undefined) => {\n setSelected(date);\n setValue?.(date);\n setOpenPopover?.(false);\n if (date) {\n setInputValue(format(date, 'PP'));\n } else {\n setInputValue('');\n }\n };\n\n const handleMonthSelect = (date: Date | undefined) => {\n setSelected(date);\n if (date) {\n setInputValue(format(date, 'PP'));\n } else {\n setInputValue('');\n }\n };\n\n return (\n <div\n aria-label=\"Choose date\"\n className=\"relative mt-2 flex flex-col gap-2\"\n onKeyDown={e => {\n e.stopPropagation();\n if (e.key === 'Escape') {\n setOpenPopover?.(false);\n }\n }}\n >\n <div className=\"w-full px-3\">\n <Input\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n placeholder={placeholder}\n className={className}\n />\n </div>\n <Calendar\n mode=\"single\"\n month={selected}\n selected={selected}\n onMonthChange={handleMonthSelect}\n onSelect={handleDaySelect}\n {...props}\n />\n <div className=\"px-3 pb-2\">\n {clearable && (\n <Button\n variant=\"outline\"\n tabIndex={0}\n className=\"w-full !opacity-50 duration-200 hover:!opacity-100\"\n onClick={() => {\n setValue(null);\n setSelected(undefined);\n setInputValue('');\n setOpenPopover?.(false);\n }}\n >\n Clear\n </Button>\n )}\n </div>\n </div>\n );\n};\n\ninterface DefaultButtonProps {\n className?: string;\n placeholder?: string;\n value: Date | undefined | null;\n}\n\nconst DefaultButton = React.forwardRef<HTMLButtonElement, DefaultButtonProps>(\n ({ value, placeholder, className, ...props }, ref) => {\n return (\n <Button\n ref={ref}\n variant={'outline'}\n className={cn(\n 'bg-neutral-825 border-neutral-775 w-full justify-start whitespace-nowrap rounded-md border px-2 py-0 text-left flex items-center gap-1',\n className,\n )}\n {...props}\n >\n <CalendarIcon className=\"h-4 w-4\" />\n {value ? (\n <span className=\"text-white\">{format(value, 'PPP')}</span>\n ) : (\n <span className=\"text-gray\">{placeholder ?? 'Pick a date'}</span>\n )}\n </Button>\n );\n },\n);\n\nDefaultButton.displayName = 'DefaultButton';\n","'use client';\n\nimport type { Control } from 'react-hook-form';\nimport { Controller } from 'react-hook-form';\n\nimport { DatePicker } from '../../ui/date-picker';\n\ninterface DateFieldProps {\n name: string;\n control: Control<any>;\n handleFieldChange?: (props: { key: string; value: string | Date | null | undefined }) => void;\n}\n\nexport function DateField({ name, control, handleFieldChange }: DateFieldProps) {\n return (\n <Controller\n name={name}\n control={control}\n render={({ field }) => (\n <DatePicker\n value={field.value}\n setValue={date => {\n const newDate = date ? new Date(date).toISOString() : date;\n field.onChange(newDate);\n handleFieldChange?.({ key: name, value: newDate });\n }}\n />\n )}\n />\n );\n}\n","'use client';\n\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { Check, ChevronDown } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n 'flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = 'popper', ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n 'relative z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n position === 'popper' &&\n 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',\n className,\n )}\n position={position}\n {...props}\n >\n <SelectPrimitive.Viewport\n className={cn(\n 'p-1',\n position === 'popper' &&\n 'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]',\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-mastra-el-5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nexport { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectItem };\n","'use client';\n\nimport type { Control } from 'react-hook-form';\nimport { Controller } from 'react-hook-form';\n\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../../ui/select';\n\ninterface EnumFieldProps {\n name: string;\n control: Control<any>;\n options: { label: string; value: string }[];\n handleFieldChange?: (props: { key: string; value: string }) => void;\n}\n\nexport function EnumField({ name, control, options, handleFieldChange }: EnumFieldProps) {\n return (\n <Controller\n name={name}\n control={control}\n render={({ field }) => (\n <Select\n value={field.value}\n onValueChange={value => {\n field.onChange(value);\n handleFieldChange?.({ key: name, value });\n }}\n >\n <SelectTrigger>\n <SelectValue placeholder=\"Select an option\" />\n </SelectTrigger>\n <SelectContent>\n {options.map(option => (\n <SelectItem key={option.value} value={option.value} className=\"text-white\">\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n />\n );\n}\n","import * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n 'flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n});\nTextarea.displayName = 'Textarea';\n\nexport { Textarea };\n","'use client';\n\nimport type { Control } from 'react-hook-form';\nimport { Controller } from 'react-hook-form';\n\nimport { Input } from '../../ui/input';\nimport { Textarea } from '../../ui/textarea';\n\ninterface StringFieldProps {\n name: string;\n control: Control<any>;\n handleFieldChange?: (props: { key: string; value: any }) => void;\n isMultiline?: boolean;\n placeholder?: string;\n}\n\nexport function StringField({ name, control, handleFieldChange, isMultiline, placeholder }: StringFieldProps) {\n const Component = isMultiline ? Textarea : Input;\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field }) => (\n <Component\n {...field}\n className=\"w-full\"\n placeholder={placeholder}\n onChange={e => {\n field.onChange(e);\n handleFieldChange?.({ key: name, value: e.target.value });\n }}\n />\n )}\n />\n );\n}\n","'use client';\n\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst labelVariants = cva('text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70');\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> & VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root ref={ref} className={cn(labelVariants(), className)} {...props} />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","/**\n * Checks if object is empty\n * @param objectName\n * @returns boolean\n */\nexport const isObjectEmpty = (objectName: Object) => {\n return objectName && Object.keys(objectName).length === 0 && objectName.constructor === Object;\n};\n\n/**\n * Get a value from an object by a given path. This function emulates the behavior of lodash's _.get method.\n *\n * @param {Record<string, any>} object - The object from which to get the value.\n * @param {string | string[]} path - The path to the value in the object. This can be a string (e.g., 'a.b.c') or an array of keys (e.g., ['a', 'b', 'c']).\n * @returns {unknown} The value at the given path in the object, or undefined if the path does not exist.\n */\nexport const getPath = (object: Record<string, any>, path: string | string[]): unknown => {\n if (typeof path === 'string') {\n path = path?.split('.');\n }\n\n return path?.reduce((obj, key) => (obj && obj[key] !== undefined ? obj[key] : undefined), object);\n};\n\nexport function recordHasData(record: Record<any, any>): boolean {\n return Object.keys(record).length > 0;\n}\n\nexport function isLiteralObject(a: unknown) {\n return !!a && a.constructor === Object;\n}\n\nexport const constructObjFromStringPath = (path: string, value: any) => {\n if (!path) return {};\n //key, split the key with ., and then for each item, we update object data.pipeline\n // {data: {pipeline: 'kbdkjd'}}\n const pathArr = path.split('.');\n let newObject: Record<string, any> = {\n [pathArr[pathArr.length - 1]]: value,\n };\n let index = pathArr.length - 2;\n while (index >= 0) {\n newObject = { [pathArr[index]]: newObject };\n index = index - 1;\n }\n\n return newObject;\n};\n\n/**\n * Flatten a nested object, flatten from flat package works - https://www.npmjs.com/package/flat\n * but this allows you to define where you want it to stop by passing the keys that'll exist in the object you want it to stop at\n *\n * @param {Record<string, any>} object - The object to flatten.\n * @param {string[]} endKeys - The keys you want each value (which will be an object in this case) in the flattened object to possible have (e.g., ['a', 'b', 'c']).\n * @param {boolean} flattenArrayValue - This flag indicates that any array value should be flattened to object too.\n * @returns {Record<string, any>} Your flattened object\n */\nexport const flattenObject = (object: Record<string, any>, endKeys: string[] = [], flattenArrayValue?: boolean) => {\n let newObj = {} as Record<string, unknown>;\n\n function recurseDip(obj: Record<string, any>, path: string[]) {\n for (const [key, value] of Object.entries(obj)) {\n let newPath = [...path, key];\n if (value && value.constructor === Object) {\n const hasOnlyEndKeys = endKeys?.length ? endKeys.every(v => Object.keys(value).includes(v)) : false;\n if (hasOnlyEndKeys) {\n newObj = { ...newObj, [newPath.join('.')]: value };\n } else {\n recurseDip(value, newPath);\n }\n } else if (flattenArrayValue && Array.isArray(value)) {\n const contructValue = value.reduce((a, b) => ({ ...a, [value.indexOf(b)]: b }), {});\n recurseDip(contructValue, newPath);\n } else {\n newObj = { ...newObj, [newPath.join('.')]: value };\n }\n }\n }\n\n recurseDip(object, []);\n return newObj;\n};\n\ntype AnyObject = { [key: string]: any };\n\n/**\n * Merges two objects, ensuring that only defined properties from the second object\n * override those in the first object.\n *\n * @template T - The type of the base object.\n * @template U - The type of the overrides object.\n * @param {T} base - The base object whose properties will be overridden.\n * @param {U} overrides - The object containing properties to override in the base object.\n * Only properties that are defined (not `undefined`) will override.\n * @returns {T & U} - A new object that combines properties from both `base` and `overrides`.\n * Properties in `base` will be overridden by defined properties in `overrides`.\n *\n * @example\n * const worksheetData = { a: 1, b: 2, c: 3 };\n * const payload = { b: undefined, c: 4 };\n * const extendedData = mergeWithDefinedOnly(worksheetData, payload);\n * // extendedData = { a: 1, b: 2, c: 4 }\n */\nexport function mergeWithDefinedOnly<T extends AnyObject, U extends AnyObject>(base: T, overrides: U): T & U {\n const result: AnyObject = { ...base };\n\n for (const key in overrides) {\n if (overrides[key] !== undefined) {\n result[key] = overrides[key];\n }\n }\n\n return result as T & U;\n}\n","import * as React from 'react';\nimport type { Control } from 'react-hook-form';\nimport type { ZodSchema } from 'zod';\nimport { z, ZodArray, ZodBoolean, ZodDate, ZodEnum, ZodLiteral, ZodNumber } from 'zod';\n\nimport { flattenObject, getPath } from '@/lib/object';\nimport { toTitleCase } from '@/lib/string';\nimport { Label } from '../ui/label';\nimport { Text } from '../ui/text';\n\ntype ActionVariables = Record<string, any>;\n\nexport enum FormConfigType {\n STRING = 'STRING',\n NUMBER = 'NUMBER',\n DATE = 'DATE',\n ENUM = 'ENUM',\n ARRAY = 'ARRAY',\n BOOLEAN = 'BOOLEAN',\n RECORD = 'RECORD',\n OBJECT = 'OBJECT',\n UNION = 'UNION',\n CREATABLE = 'CREATABLE',\n SELECT = 'SELECT',\n MULTI_SELECT = 'MULTI_SELECT',\n}\n\ntype FormConfig = {\n type: FormConfigType;\n options?: { label: string; value: string }[];\n isOptional?: boolean;\n hasEffects?: boolean;\n innerSchema?: ZodSchema;\n};\n\nexport function getFormConfigTypesFromSchemaDef({\n schema,\n isOptional = false,\n}: {\n schema: ZodSchema<any>;\n isOptional?: boolean;\n}): FormConfig {\n if (schema instanceof z.ZodObject) {\n return { type: FormConfigType.OBJECT, isOptional };\n }\n\n if (schema instanceof z.ZodString) {\n // if it's a datetime -- accounts for date weirdness during zod schema serialization to JSON\n if (schema instanceof z.ZodString && schema._def.checks.some((check: any) => check.kind === 'datetime')) {\n return { type: FormConfigType.DATE, isOptional };\n }\n return { type: FormConfigType.STRING, isOptional };\n } else if (schema instanceof ZodNumber) {\n return { type: FormConfigType.NUMBER, isOptional };\n } else if (schema instanceof ZodBoolean) {\n return { type: FormConfigType.BOOLEAN, isOptional };\n } else if (schema instanceof ZodDate) {\n return { type: FormConfigType.DATE, isOptional };\n } else if (schema instanceof ZodLiteral) {\n return {\n type: FormConfigType.ENUM,\n isOptional,\n options: [{ label: schema.value, value: schema.value }],\n };\n } else if (schema instanceof ZodEnum) {\n return {\n type: FormConfigType.ENUM,\n isOptional,\n options: schema.options.map((v: string) => ({ label: v, value: v })),\n };\n } else if (schema instanceof ZodArray) {\n return {\n type: FormConfigType.ARRAY,\n isOptional,\n options:\n schema.element instanceof ZodEnum ? schema.element.options.map((v: string) => ({ label: v, value: v })) : [],\n };\n } else if (schema instanceof z.ZodOptional || schema instanceof z.ZodDefault) {\n return getFormConfigTypesFromSchemaDef({ schema: schema._def.innerType, isOptional: true });\n } else if (schema instanceof z.ZodEffects) {\n return getFormConfigTypesFromSchemaDef({ schema: schema._def.schema, isOptional });\n } else if (schema instanceof z.ZodRecord) {\n return {\n type: FormConfigType.RECORD,\n isOptional,\n innerSchema: schema._def.valueType,\n };\n } else {\n return { type: FormConfigType.STRING, isOptional }; // Handle other types as needed\n }\n}\n\nexport type FieldProps = {\n name: string;\n options?: { label: string; value: string }[];\n control: Control<any>;\n innerSchema?: ZodSchema;\n variables?: Record<string, ActionVariables | undefined>;\n isNullable?: boolean;\n handleFieldChange: ({\n key,\n value,\n variables,\n }: {\n key: keyof z.infer<any>;\n value: any;\n variables?: ActionVariables;\n }) => void;\n};\n\nexport function schemaToFormFieldRenderer<T extends ZodSchema>({\n schema,\n errors,\n renderFieldMap,\n schemaField,\n renderLabel,\n control,\n variables,\n onFieldChange,\n schemaOptions,\n values,\n isOptional = false,\n isNullable = false,\n}: {\n schema: ZodSchema<any>;\n errors: any;\n renderFieldMap?: Record<FormConfigType, (props: FieldProps) => React.ReactNode>;\n schemaField: string;\n control: any;\n onFieldChange: (props: { key: keyof z.infer<T>; value: any; variables?: ActionVariables }) => void;\n variables?: Record<string, ActionVariables | undefined>;\n schemaOptions?: Record<string, any>;\n renderLabel?: ({ isOptional, schemaField }: { isOptional: boolean; schemaField: string }) => React.ReactNode;\n values: Record<keyof z.infer<T>, unknown>;\n isOptional?: boolean;\n isNullable?: boolean;\n}): any {\n const fieldConfig = getFormConfigTypesFromSchemaDef({ schema, isOptional });\n\n const parentFieldValue = schemaOptions?.parentField ? getPath(values, schemaOptions?.parentField) : '';\n\n if (schemaOptions?.parentField && !parentFieldValue) {\n return null;\n }\n\n if (!renderFieldMap) return;\n\n const flattenedErrors = flattenObject(errors, ['message', 'type'], true);\n\n const fieldOptions = schemaOptions?.parentField\n ? schemaOptions?.options?.[parentFieldValue as string]\n : (schemaOptions?.options as { label: string; value: string }[]) || fieldConfig.options;\n\n return (\n <div key={schemaField} className=\"flex flex-col gap-1 mt-3 w-full\">\n {renderLabel ? (\n renderLabel({ isOptional: Boolean(fieldConfig.isOptional), schemaField })\n ) : (\n <Label className=\"flex gap-0.5 capitalize\" htmlFor={schemaField} aria-required={!fieldConfig.isOptional}>\n {!fieldConfig?.isOptional && <span className=\"text-red-500\">*</span>}\n <Text variant=\"secondary\" className=\"text-mastra-el-3\" size=\"xs\">\n {toTitleCase(schemaField.split('.').pop() || '')}\n </Text>\n </Label>\n )}\n {renderFieldMap[fieldConfig.type]({\n name: schemaField,\n options: fieldOptions,\n control,\n variables,\n innerSchema: fieldConfig.innerSchema,\n handleFieldChange: onFieldChange,\n isNullable,\n })}\n {flattenedErrors?.[schemaField] ? (\n <Text size=\"xs\" className=\"text-red-500\">\n {(flattenedErrors[schemaField] as { message: string })?.message}\n </Text>\n ) : null}\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { ZodUnion } from 'zod';\n\nimport { toTitleCase } from '../../../lib/string';\nimport { Label } from '../../ui/label';\nimport { Text } from '../../ui/text';\nimport { getFormConfigTypesFromSchemaDef } from '../schema';\n\ninterface UnionComponentProps {\n renderDynamicForm: (props: {\n schema: ZodUnion<any>;\n handleFieldChange: (field: string, value: any) => void;\n control: any;\n formValues: Record<string, any>;\n errors: Record<string, any>;\n parentField: string;\n action?: any;\n isOptional?: boolean;\n isNullable?: boolean;\n depth?: number;\n }) => React.ReactNode;\n schema: ZodUnion<any>;\n\n handleFieldChange: (field: string, value: any) => void;\n control: any;\n formValues: Record<string, any>;\n errors: Record<string, any>;\n parentField: string;\n action?: any;\n isOptional?: boolean;\n isNullable?: boolean;\n depth?: number;\n}\n\nexport function UnionField({\n renderDynamicForm,\n schema,\n handleFieldChange,\n control,\n formValues,\n errors,\n parentField,\n action,\n isOptional = false,\n isNullable = false,\n depth,\n}: UnionComponentProps) {\n const fieldConfig = getFormConfigTypesFromSchemaDef({ schema, isOptional });\n\n if (schema instanceof ZodUnion) {\n const schemaOptions = schema.options;\n return (\n <div>\n <Label className=\"flex gap-0.5 capitalize mb-2\" htmlFor={parentField} aria-required={!fieldConfig.isOptional}>\n {!fieldConfig?.isOptional && <span className=\"text-red-500\">*</span>}\n <Text variant=\"secondary\" className=\"text-mastra-el-3\" size=\"xs\">\n {toTitleCase(parentField)}\n </Text>\n </Label>\n <div className=\"flex flex-col gap-4\">\n {schemaOptions.map((schemaOption: ZodUnion<any>['options'][number], index: number) => (\n <React.Fragment key={index}>\n {index >= 1 && (\n <Text variant=\"secondary\" className=\"text-mastra-el-3 text-center\" size=\"xs\">\n or\n </Text>\n )}\n <div className=\"ring-1 ring-white/10 p-2 rounded-md relative\">\n {renderDynamicForm({\n schema: schemaOption,\n\n handleFieldChange,\n control,\n formValues,\n errors,\n parentField,\n action,\n isOptional,\n isNullable,\n depth,\n })}\n </div>\n </React.Fragment>\n ))}\n </div>\n </div>\n );\n }\n return null;\n}\n","import { XIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { useFieldArray } from 'react-hook-form';\nimport type { ZodSchema } from 'zod';\nimport { ZodArray } from 'zod';\n\nimport { toTitleCase } from '../../../lib/string';\nimport { Button } from '../../ui/button';\nimport { Label } from '../../ui/label';\nimport { Text } from '../../ui/text';\nimport { getFormConfigTypesFromSchemaDef } from '../schema';\n\ninterface ObjectFieldProps {\n renderDynamicForm: (props: {\n schema: ZodSchema;\n handleFieldChange: (field: string, value: any) => void;\n control: any;\n formValues: Record<string, any>;\n errors: Record<string, any>;\n parentField: string;\n action?: any;\n isOptional?: boolean;\n depth?: number;\n }) => React.ReactNode;\n schema: ZodSchema;\n handleFieldChange: (field: string, value: any) => void;\n control: any;\n formValues: Record<string, any>;\n errors: Record<string, any>;\n parentField: string;\n action?: any;\n isArray?: boolean;\n isOptional?: boolean;\n depth?: number;\n}\n\nexport function ObjectField({\n renderDynamicForm,\n schema,\n handleFieldChange,\n control,\n formValues,\n errors,\n parentField,\n action,\n isArray = false,\n isOptional = false,\n depth,\n}: ObjectFieldProps) {\n const fieldConfig = getFormConfigTypesFromSchemaDef({ schema, isOptional });\n\n const { fields, append, remove } = useFieldArray({\n control,\n name: parentField,\n });\n\n function handleAddForm() {\n append({});\n }\n\n return (\n <div>\n <Label className=\"flex gap-0.5 capitalize mb-2\" htmlFor={parentField} aria-required={!fieldConfig.isOptional}>\n {!fieldConfig?.isOptional && <span className=\"text-red-500\">*</span>}\n <Text variant=\"secondary\" className=\"text-mastra-el-3\" size=\"xs\">\n {toTitleCase(parentField)}\n </Text>\n </Label>\n {isArray ? (\n <>\n <div className=\"flex flex-col gap-4\">\n {fields.map((field, index) => (\n <div key={field.id} className=\"ring-1 ring-white/10 p-2 rounded-md relative\">\n <Button\n type=\"button\"\n variant={'ghost'}\n size={'icon'}\n onClick={() => remove(index)}\n className=\"absolute top-0 right-0\"\n >\n <XIcon className=\"text-icon h-3.5 w-3.5\" />\n </Button>\n {renderDynamicForm({\n schema: schema instanceof ZodArray ? schema.element : schema,\n\n handleFieldChange,\n control,\n formValues,\n errors,\n parentField: `${parentField}.${index}`,\n action,\n isOptional,\n depth,\n })}\n </div>\n ))}\n </div>\n <div className=\"flex flex-col gap-4\">\n <Button type=\"button\" variant={'outline'} className=\"w-full text-xs h-9\" onClick={handleAddForm}>\n Add {toTitleCase(parentField.split('.').pop() || '')}\n </Button>\n </div>\n </>\n ) : (\n <div className=\"ring-1 ring-white/10 p-2 rounded-md relative\">\n {renderDynamicForm({\n schema,\n\n handleFieldChange,\n control,\n formValues,\n errors,\n parentField,\n action,\n isOptional,\n depth,\n })}\n </div>\n )}\n </div>\n );\n}\n","'use client';\n\nimport type { Control } from 'react-hook-form';\nimport { Controller } from 'react-hook-form';\n\nimport { Input } from '../../ui/input';\n\ninterface NumberFieldProps {\n name: string;\n control: Control<any>;\n handleFieldChange?: (props: { key: string; value: number }) => void;\n}\n\nexport function NumberField({ name, control, handleFieldChange }: NumberFieldProps) {\n return (\n <Controller\n name={name}\n control={control}\n render={({ field }) => (\n <Input\n {...field}\n type=\"number\"\n onChange={e => {\n const value = e.target.value === '' ? undefined : Number(e.target.value);\n field.onChange(value);\n handleFieldChange?.({ key: name, value: value as number });\n }}\n />\n )}\n />\n );\n}\n","'use client';\n\nimport { v4 as uuid } from '@lukeed/uuid';\nimport { Plus, X } from 'lucide-react';\nimport * as React from 'react';\nimport { type Control, useWatch } from 'react-hook-form';\nimport { ZodSchema } from 'zod';\n\nimport { Button } from '../../ui/button';\nimport { Input } from '../../ui/input';\n\ninterface RecordFieldProps {\n name: string;\n control: Control<any>;\n innerSchema?: ZodSchema;\n handleFieldChange?: (props: { key: string; value: Record<string, any> }) => void;\n}\n\ninterface KeyValuePair {\n id: string;\n key: string;\n value: string;\n}\n\nexport function RecordField({ name, control, handleFieldChange }: RecordFieldProps) {\n const formValue = useWatch({ control, name }) || {};\n const [pairs, setPairs] = React.useState<KeyValuePair[]>(() =>\n Object.entries(formValue).map(([key, value]) => ({\n id: key || uuid(),\n key,\n value: value as string,\n })),\n );\n\n React.useEffect(() => {\n if (pairs.length === 0) {\n setPairs([{ id: uuid(), key: '', value: '' }]);\n }\n }, [pairs]);\n\n const updateForm = React.useCallback(\n (newPairs: KeyValuePair[]) => {\n if (!handleFieldChange) return;\n const value = newPairs.reduce(\n (acc, pair) => {\n if (pair.key) {\n acc[pair.key] = pair.value;\n }\n return acc;\n },\n {} as Record<string, string>,\n );\n handleFieldChange({ key: name, value });\n },\n [handleFieldChange, name],\n );\n\n const handleChange = (id: string, field: 'key' | 'value', newValue: string) => {\n setPairs(prev => prev.map(pair => (pair.id === id ? { ...pair, [field]: newValue } : pair)));\n };\n\n const handleBlur = () => {\n updateForm(pairs);\n };\n\n const addPair = () => {\n const newPairs = [...pairs, { id: uuid(), key: '', value: '' }];\n setPairs(newPairs);\n updateForm(newPairs);\n };\n\n const removePair = (id: string) => {\n const newPairs = pairs.filter(p => p.id !== id);\n if (newPairs.length === 0) {\n newPairs.push({ id: uuid(), key: '', value: '' });\n }\n setPairs(newPairs);\n updateForm(newPairs);\n };\n\n return (\n <div className=\"space-y-3\">\n {pairs.map(pair => (\n <div key={pair.id} className=\"relative space-y-2 rounded-lg border p-4\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"absolute right-2 top-2\"\n onClick={() => removePair(pair.id)}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n <div className=\"space-y-2\">\n <Input\n placeholder=\"Key\"\n value={pair.key}\n onChange={e => handleChange(pair.id, 'key', e.target.value)}\n onBlur={handleBlur}\n />\n <Input\n placeholder=\"Value\"\n value={pair.value}\n onChange={e => handleChange(pair.id, 'value', e.target.value)}\n onBlur={handleBlur}\n />\n </div>\n </div>\n ))}\n <Button type=\"button\" variant=\"outline\" size=\"sm\" className=\"w-full\" onClick={addPair}>\n <Plus className=\"mr-2 h-4 w-4\" />\n Add Key-Value Pair\n </Button>\n </div>\n );\n}\n","import * as z from 'zod';\n\nimport {\n ArrayField,\n BooleanField,\n CreatableField,\n DateField,\n EnumField,\n NumberField,\n RecordField,\n StringField,\n ObjectField,\n UnionField,\n} from './fields';\nimport { FormConfigType, getFormConfigTypesFromSchemaDef } from './schema';\nimport type { FieldProps } from './schema';\nimport { resolveSchema } from './schema-resolver';\n\nexport function getDefaultFieldMap() {\n return {\n [FormConfigType.STRING]: (props: FieldProps) => {\n const { options, ...rest } = props;\n if (options?.length) {\n return <EnumField {...rest} options={options} />;\n }\n return <StringField {...rest} />;\n },\n [FormConfigType.NUMBER]: (props: FieldProps) => {\n return <NumberField {...props} />;\n },\n [FormConfigType.BOOLEAN]: (props: FieldProps) => {\n return <BooleanField {...props} />;\n },\n [FormConfigType.DATE]: (props: FieldProps) => {\n return <DateField {...props} />;\n },\n [FormConfigType.ENUM]: (props: FieldProps) => {\n const { options = [] } = props;\n return <EnumField {...props} options={options} />;\n },\n [FormConfigType.ARRAY]: (props: FieldProps) => {\n const renderField = ({ fieldName, index: _index }: { fieldName: string; index: number }) => {\n return getDefaultFieldMap()[FormConfigType.STRING]({\n ...props,\n name: fieldName,\n });\n };\n return <ArrayField {...props} renderField={renderField} />;\n },\n [FormConfigType.RECORD]: (props: FieldProps) => {\n return <RecordField {...props} />;\n },\n [FormConfigType.OBJECT]: (props: FieldProps) => {\n const { innerSchema, name, control, handleFieldChange } = props;\n if (!innerSchema) return null;\n return (\n <ObjectField\n schema={innerSchema}\n control={control}\n parentField={name}\n handleFieldChange={(field, value) => handleFieldChange({ key: field, value })}\n formValues={{}}\n errors={{}}\n renderDynamicForm={props => resolveSchema({ ...props, handleFieldChange })}\n />\n );\n },\n [FormConfigType.UNION]: (props: FieldProps) => {\n const { innerSchema, name, control, handleFieldChange } = props;\n if (!innerSchema || !(innerSchema instanceof z.ZodUnion)) return null;\n return (\n <UnionField\n schema={innerSchema}\n control={control}\n parentField={name}\n handleFieldChange={(field, value) => handleFieldChange({ key: field, value })}\n renderDynamicForm={fieldProps => {\n const fieldType = getFormConfigTypesFromSchemaDef({ schema: fieldProps.schema });\n return getDefaultFieldMap()[fieldType.type]({\n ...props,\n ...fieldProps,\n control,\n handleFieldChange,\n });\n }}\n formValues={{}}\n errors={{}}\n />\n );\n },\n [FormConfigType.CREATABLE]: (props: FieldProps) => {\n return <CreatableField {...props} />;\n },\n [FormConfigType.SELECT]: (props: FieldProps) => {\n const { options = [] } = props;\n return <EnumField {...props} options={options} />;\n },\n [FormConfigType.MULTI_SELECT]: (props: FieldProps) => {\n return <CreatableField {...props} />;\n },\n };\n}\n","import type { Control, FieldErrors } from 'react-hook-form';\nimport { z } from 'zod';\n\nimport { getDefaultFieldMap } from './default-field-map';\nimport { ArrayField, ObjectField, UnionField } from './fields';\nimport { schemaToFormFieldRenderer } from './schema';\n\ninterface ResolveSchemaProps {\n schema: z.ZodSchema;\n parentField: string;\n control: Control<any>;\n formValues: any;\n errors: FieldErrors;\n handleFieldChange: (props: { key: string | number | symbol; value: any }) => void;\n isArray?: boolean;\n isOptional?: boolean;\n isNullable?: boolean;\n}\n\nfunction adaptHandleFieldChange(\n handler: (props: { key: string | number | symbol; value: any }) => void,\n): (field: string, value: any) => void {\n return (field, value) => handler({ key: field, value });\n}\n\nexport function resolveSchema({\n schema,\n parentField,\n control,\n formValues,\n errors,\n handleFieldChange,\n isOptional = false,\n isNullable = false,\n depth = 0,\n}: ResolveSchemaProps & { depth?: number }) {\n if (depth > 10) {\n console.warn('Maximum schema resolution depth reached. Possible circular reference.');\n return null;\n }\n\n if (schema instanceof z.ZodObject) {\n return Object.entries(schema.shape).map(([field, fieldSchema]) => {\n const currentField = parentField ? `${parentField}.${field}` : field;\n return resolveSchemaComponent({\n schema: fieldSchema as z.ZodSchema,\n parentField: currentField,\n control,\n formValues,\n errors,\n handleFieldChange,\n isOptional,\n isNullable,\n });\n });\n }\n\n return resolveSchemaComponent({\n schema,\n parentField,\n control,\n formValues,\n errors,\n handleFieldChange,\n isOptional,\n isNullable,\n });\n}\n\nfunction resolveSchemaComponent({\n schema,\n parentField,\n control,\n formValues,\n errors,\n handleFieldChange,\n isOptional = false,\n isNullable = false,\n}: {\n schema: z.ZodSchema;\n parentField: string;\n control: Control<any>;\n formValues: any;\n errors: FieldErrors;\n handleFieldChange: (props: { key: string | number | symbol; value: any }) => void;\n isOptional?: boolean;\n isNullable?: boolean;\n}) {\n if (schema instanceof z.ZodDefault) return null;\n\n if (schema instanceof z.ZodOptional) {\n return resolveSchemaComponent({\n schema: schema._def.innerType,\n parentField,\n control,\n formValues,\n errors,\n handleFieldChange,\n isOptional: true,\n isNullable,\n });\n }\n\n if (schema instanceof z.ZodObject) {\n return (\n <div key={parentField} className=\"flex flex-col gap-8 py-8 w-full\">\n <ObjectField\n schema={schema}\n control={control}\n parentField={parentField}\n handleFieldChange={(field, value) => handleFieldChange({ key: field, value })}\n formValues={formValues}\n errors={errors}\n isOptional={isOptional}\n renderDynamicForm={props => resolveSchema({ ...props, handleFieldChange })}\n />\n </div>\n );\n }\n\n if (schema instanceof z.ZodUnion) {\n if (schema.options.some((s: z.ZodType) => s instanceof z.ZodNull)) {\n const nonNullSchema = schema.options.find((s: z.ZodType) => !(s instanceof z.ZodNull));\n return resolveSchemaComponent({\n schema: z.optional(nonNullSchema!),\n parentField,\n control,\n formValues,\n errors,\n handleFieldChange,\n isNullable: true,\n isOptional,\n });\n }\n\n return (\n <UnionField\n schema={schema}\n control={control}\n parentField={parentField}\n handleFieldChange={adaptHandleFieldChange(handleFieldChange)}\n formValues={formValues}\n errors={errors}\n isOptional={isOptional}\n isNullable={isNullable}\n renderDynamicForm={props =>\n resolveSchema({\n ...props,\n handleFieldChange: props => handleFieldChange(props),\n })\n }\n />\n );\n }\n\n if (schema instanceof z.ZodArray) {\n return (\n <div key={parentField} className=\"flex w-full flex-col gap-8 py-8\">\n <ArrayField\n control={control}\n name={parentField}\n isStringField={schema.element instanceof z.ZodString}\n renderField={props => {\n const fieldSchema = schema.element;\n let currentField = props.fieldName;\n if (fieldSchema instanceof z.ZodString) {\n currentField = `${currentField}.root`;\n }\n\n return resolveSchemaComponent({\n schema: fieldSchema,\n parentField: currentField,\n control,\n formValues,\n errors,\n handleFieldChange,\n });\n }}\n />\n </div>\n );\n }\n\n return (\n <div key={parentField} className=\"w-full\">\n {schemaToFormFieldRenderer({\n schema,\n schemaField: parentField,\n control,\n values: formValues,\n errors,\n renderFieldMap: getDefaultFieldMap(),\n onFieldChange: handleFieldChange,\n isOptional,\n })}\n </div>\n );\n}\n","'use client';\n\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { Loader2 } from 'lucide-react';\nimport { useForm } from 'react-hook-form';\nimport { z } from 'zod';\n\nimport { Button } from '../ui/button';\nimport { ScrollArea } from '../ui/scroll-area';\n\nimport { customZodUnionResolver } from './resolvers';\nimport { resolveSchema } from './schema-resolver';\n\ninterface DynamicFormProps<T extends z.ZodSchema> {\n schema: T;\n onSubmit: (values: z.infer<T>) => void | Promise<void>;\n defaultValues?: z.infer<T>;\n isSubmitLoading?: boolean;\n submitButtonLabel?: string;\n}\n\nexport function DynamicForm<T extends z.ZodSchema>({\n schema,\n onSubmit,\n defaultValues,\n isSubmitLoading,\n submitButtonLabel = 'Submit',\n}: DynamicFormProps<T>) {\n const schemaTypeName = (schema as any)?._def?.typeName;\n const discriminatedUnionSchemaOptions = (schema as any)?._def?.options;\n const discriminatedUnionSchemaDiscriminator = (schema as any)?._def?.discriminator;\n\n // Wrap non-object schemas in a container object\n const wrappedSchema = schemaTypeName !== 'ZodObject' ? z.object({ items: schema }) : schema;\n\n const form = useForm<z.infer<typeof wrappedSchema>>({\n resolver:\n schemaTypeName === 'ZodDiscriminatedUnion'\n ? customZodUnionResolver(wrappedSchema as any, discriminatedUnionSchemaDiscriminator)\n : zodResolver(wrappedSchema as any),\n defaultValues,\n });\n\n const { control, handleSubmit, watch } = form;\n const formValues = form.watch();\n\n const discriminatorValue = discriminatedUnionSchemaDiscriminator\n ? (watch(discriminatedUnionSchemaDiscriminator) as any)\n : undefined;\n\n const resolvedSchema =\n schemaTypeName === 'ZodDiscriminatedUnion'\n ? discriminatedUnionSchemaOptions?.find(\n (option: any) => option?.shape?.[discriminatedUnionSchemaDiscriminator]?._def?.value === discriminatorValue,\n ) || z.object({ [discriminatedUnionSchemaDiscriminator]: z.string() })\n : wrappedSchema;\n\n function handleFieldChange({ key, value }: { key: keyof z.infer<T>; value: any }) {\n if (key === discriminatedUnionSchemaDiscriminator) {\n form.setValue(key as any, value);\n } else {\n form.setValue(key as any, value);\n }\n }\n\n const wrappedOnSubmit = (values: z.infer<typeof wrappedSchema>) => {\n if (schemaTypeName !== 'ZodObject') {\n return onSubmit(values.items);\n }\n return onSubmit(values as any);\n };\n\n return (\n <ScrollArea className=\"h-full w-full\">\n <form onSubmit={handleSubmit(wrappedOnSubmit)} className=\"flex flex-col gap-4 p-4 w-full\">\n {resolveSchema({\n schema: resolvedSchema,\n parentField: '',\n control,\n formValues,\n errors: form.formState.errors,\n handleFieldChange,\n })}\n <Button disabled={isSubmitLoading} type=\"submit\">\n {isSubmitLoading ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : submitButtonLabel}\n </Button>\n </form>\n </ScrollArea>\n );\n}\n","import { themes } from 'prism-react-renderer';\nimport { CodeBlock } from 'react-code-block';\n\nimport { cn } from '../../lib/utils';\n\nfunction CodeBlockDemo({\n code = '',\n language = 'ts',\n filename,\n className,\n}: {\n code?: string;\n language: 'ts' | 'json';\n filename?: string;\n className?: string;\n}) {\n return (\n <CodeBlock code={code} language={language} theme={themes.oneDark}>\n {filename ? (\n <div className=\"absolute w-full px-6 py-2 pl-4 text-sm rounded bg-mastra-bg-2 text-mastra-el-6/50\">\n {filename}\n </div>\n ) : null}\n\n <CodeBlock.Code\n className={cn('bg-transparent h-full p-6 rounded-xl whitespace-pre-wrap', filename ? 'pt-10' : '', className)}\n >\n <div className=\"table-row\">\n <div className=\"flex items-center\">\n <CodeBlock.LineNumber className=\"table-cell pr-4 text-sm text-right select-none text-gray-500/50\" />\n <CodeBlock.LineContent className=\"flex\">\n <CodeBlock.Token className=\"font-mono text-sm mastra-token\" />\n </CodeBlock.LineContent>\n </div>\n </div>\n </CodeBlock.Code>\n </CodeBlock>\n );\n}\n\nexport { CodeBlockDemo };\n","import { WorkflowRunResult } from '@mastra/client-js';\nimport { createContext, useState } from 'react';\n\ntype WorkflowRunContextType = {\n result: WorkflowRunResult | null;\n setResult: React.Dispatch<React.SetStateAction<any>>;\n payload: any;\n setPayload: React.Dispatch<React.SetStateAction<any>>;\n clearData: () => void;\n};\n\nexport const WorkflowRunContext = createContext<WorkflowRunContextType>({} as WorkflowRunContextType);\n\nexport function WorkflowRunProvider({ children }: { children: React.ReactNode }) {\n const [result, setResult] = useState<WorkflowRunResult | null>(null);\n const [payload, setPayload] = useState<any>(null);\n\n const clearData = () => {\n setResult(null);\n setPayload(null);\n };\n\n return (\n <WorkflowRunContext.Provider\n value={{\n result,\n setResult,\n payload,\n setPayload,\n clearData,\n }}\n >\n {children}\n </WorkflowRunContext.Provider>\n );\n}\n","import jsonSchemaToZod from 'json-schema-to-zod';\nimport { Loader2 } from 'lucide-react';\nimport { useState, useEffect, useContext } from 'react';\nimport { parse } from 'superjson';\nimport { z } from 'zod';\n\nimport { DynamicForm } from '@/components/dynamic-form';\nimport { resolveSerializedZodOutput } from '@/components/dynamic-form/utils';\nimport { Button } from '@/components/ui/button';\nimport { CodeBlockDemo } from '@/components/ui/code-block';\nimport { CopyButton } from '@/components/ui/copy-button';\nimport { ScrollArea } from '@/components/ui/scroll-area';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { Text } from '@/components/ui/text';\n\nimport { useExecuteWorkflow, useWatchWorkflow, useResumeWorkflow, useWorkflow } from '@/hooks/use-workflows';\nimport { WorkflowRunContext } from '../context/workflow-run-context';\nimport { toast } from 'sonner';\n\ninterface SuspendedStep {\n stepId: string;\n runId: string;\n suspendPayload: any;\n}\n\ninterface WorkflowPath {\n stepId: string;\n}\n\nexport function WorkflowTrigger({\n workflowId,\n baseUrl,\n setRunId,\n}: {\n workflowId: string;\n baseUrl: string;\n setRunId?: (runId: string) => void;\n}) {\n const { result, setResult, payload, setPayload } = useContext(WorkflowRunContext);\n const { isLoading, workflow } = useWorkflow(workflowId, baseUrl);\n const { createWorkflowRun, startWorkflowRun } = useExecuteWorkflow(baseUrl);\n const { watchWorkflow, watchResult, isWatchingWorkflow } = useWatchWorkflow(baseUrl);\n const { resumeWorkflow, isResumingWorkflow } = useResumeWorkflow(baseUrl);\n const [suspendedSteps, setSuspendedSteps] = useState<SuspendedStep[]>([]);\n const [isRunning, setIsRunning] = useState(false);\n const triggerSchema = workflow?.triggerSchema;\n\n const handleExecuteWorkflow = async (data: any) => {\n try {\n if (!workflow) return;\n setIsRunning(true);\n\n setResult(null);\n\n const { runId } = await createWorkflowRun({ workflowId });\n\n setRunId?.(runId);\n\n watchWorkflow({ workflowId, runId });\n\n startWorkflowRun({ workflowId, runId, input: data });\n } catch (err) {\n setIsRunning(false);\n toast.error('Error executing workflow');\n }\n };\n\n const handleResumeWorkflow = async (step: SuspendedStep & { context: any }) => {\n if (!workflow) return;\n\n const { stepId, runId: prevRunId, context } = step;\n\n const { runId } = await createWorkflowRun({ workflowId, prevRunId });\n\n watchWorkflow({ workflowId, runId });\n\n await resumeWorkflow({\n stepId,\n runId,\n context,\n workflowId,\n });\n };\n\n const watchResultToUse = result ?? watchResult;\n\n const workflowActivePaths = watchResultToUse?.activePaths ?? [];\n\n useEffect(() => {\n setIsRunning(isWatchingWorkflow);\n }, [isWatchingWorkflow]);\n\n useEffect(() => {\n if (!watchResultToUse?.activePaths || !result?.runId) return;\n\n const suspended = watchResultToUse.activePaths\n .filter((path: WorkflowPath) => watchResultToUse.context?.steps?.[path.stepId]?.status === 'suspended')\n .map((path: WorkflowPath) => ({\n stepId: path.stepId,\n runId: result.runId,\n suspendPayload: watchResultToUse.context?.steps?.[path.stepId]?.suspendPayload,\n }));\n setSuspendedSteps(suspended);\n }, [watchResultToUse, result]);\n\n useEffect(() => {\n if (watchResult) {\n setResult(watchResult);\n }\n }, [watchResult]);\n\n if (isLoading) {\n return (\n <ScrollArea className=\"h-[calc(100vh-126px)] pt-2 px-4 pb-4 text-xs\">\n <div className=\"space-y-4\">\n <Skeleton className=\"h-10\" />\n <Skeleton className=\"h-10\" />\n </div>\n </ScrollArea>\n );\n }\n\n if (!workflow) return null;\n\n if (!triggerSchema) {\n return (\n <ScrollArea className=\"h-[calc(100vh-126px)] pt-2 px-4 pb-4 text-xs w-full\">\n <div className=\"space-y-4\">\n <div className=\"px-4 space-y-4\">\n <Button className=\"w-full\" disabled={isRunning} onClick={() => handleExecuteWorkflow(null)}>\n {isRunning ? <Loader2 className=\"w-4 h-4 animate-spin\" /> : 'Trigger'}\n </Button>\n </div>\n\n <div>\n <Text variant=\"secondary\" className=\"px-4 text-mastra-el-3\" size=\"xs\">\n Output\n </Text>\n <div className=\"flex flex-col gap-2\">\n <CopyButton\n classname=\"absolute z-40 w-8 h-8 p-0 transition-opacity duration-150 ease-in-out opacity-0 top-4 right-4 group-hover:opacity-100\"\n content={JSON.stringify(result ?? {}, null, 2)}\n />\n </div>\n <CodeBlockDemo\n className=\"w-[368px] overflow-x-auto\"\n code={JSON.stringify(result ?? {}, null, 2)}\n language=\"json\"\n />\n </div>\n </div>\n </ScrollArea>\n );\n }\n\n const zodInputSchema = resolveSerializedZodOutput(jsonSchemaToZod(parse(triggerSchema)));\n\n const isSuspendedSteps = suspendedSteps.length > 0;\n\n return (\n <ScrollArea className=\"h-[calc(100vh-126px)] pt-2 px-4 pb-4 text-xs w-full\">\n <div className=\"space-y-4\">\n {!isSuspendedSteps && (\n <div className=\"flex flex-col\">\n <div className=\"flex items-center justify-between w-full\">\n <Text variant=\"secondary\" className=\"px-4 text-mastra-el-3\" size=\"xs\">\n Input\n </Text>\n {isResumingWorkflow ? (\n <span className=\"flex items-center gap-1\">\n <Loader2 className=\"w-3 h-3 animate-spin text-mastra-el-accent\" /> Resuming workflow\n </span>\n ) : (\n <></>\n )}\n </div>\n <DynamicForm\n schema={zodInputSchema}\n defaultValues={payload}\n isSubmitLoading={isWatchingWorkflow}\n onSubmit={data => {\n setPayload(data);\n handleExecuteWorkflow(data);\n }}\n />\n </div>\n )}\n\n {workflowActivePaths.length > 0 && (\n <div className=\"flex flex-col\">\n <Text variant=\"secondary\" className=\"px-4 text-mastra-el-3\" size=\"xs\">\n Status\n </Text>\n <div className=\"px-4\">\n {workflowActivePaths?.map((activePath: any, idx: number) => {\n return (\n <div key={idx} className=\"flex flex-col mt-2 overflow-hidden border\">\n {activePath?.stepPath?.map((sp: any, idx: number) => {\n const status =\n activePath?.status === 'completed'\n ? 'Completed'\n : sp === activePath?.stepId\n ? activePath?.status.charAt(0).toUpperCase() + activePath?.status.slice(1)\n : 'Completed';\n\n const statusIcon =\n status === 'Completed' ? (\n <div className=\"w-2 h-2 bg-green-500 rounded-full\" />\n ) : (\n <div className=\"w-2 h-2 bg-yellow-500 rounded-full animate-pulse\" />\n );\n\n return (\n <div\n key={idx}\n className={`\n flex items-center justify-between p-3\n ${idx !== activePath.stepPath.length - 1 ? 'border-b' : ''}\n bg-white/5\n `}\n >\n <Text variant=\"secondary\" className=\"text-mastra-el-3\" size=\"xs\">\n {sp.charAt(0).toUpperCase() + sp.slice(1)}\n </Text>\n <span className=\"flex items-center gap-2\">\n <Text variant=\"secondary\" className=\"text-mastra-el-3\" size=\"xs\">\n {statusIcon}\n </Text>\n {status}\n </span>\n </div>\n );\n })}\n </div>\n );\n })}\n </div>\n </div>\n )}\n\n {isSuspendedSteps &&\n suspendedSteps?.map(step => (\n <div className=\"flex flex-col px-4\">\n <Text variant=\"secondary\" className=\"text-mastra-el-3\" size=\"xs\">\n {step.stepId}\n </Text>\n {step.suspendPayload && (\n <div>\n <CodeBlockDemo\n className=\"w-[300px] overflow-x-auto\"\n code={JSON.stringify(step.suspendPayload, null, 2)}\n language=\"json\"\n />\n </div>\n )}\n <DynamicForm\n schema={z.record(z.string(), z.any())}\n isSubmitLoading={isResumingWorkflow}\n submitButtonLabel=\"Resume\"\n onSubmit={data => {\n handleResumeWorkflow({\n stepId: step.stepId,\n runId: step.runId,\n suspendPayload: step.suspendPayload,\n context: data,\n });\n }}\n />\n </div>\n ))}\n\n {result && (\n <div className=\"flex flex-col\">\n <Text variant=\"secondary\" className=\"px-4 text-mastra-el-3\" size=\"xs\">\n Output\n </Text>\n <div className=\"flex flex-col gap-2\">\n <CopyButton\n classname=\"absolute z-40 w-8 h-8 p-0 transition-opacity duration-150 ease-in-out opacity-0 top-4 right-4 group-hover:opacity-100\"\n content={JSON.stringify(result, null, 2)}\n />\n </div>\n <CodeBlockDemo\n className=\"w-[368px] overflow-x-auto\"\n code={JSON.stringify(result, null, 2)}\n language=\"json\"\n />\n </div>\n )}\n </div>\n </ScrollArea>\n );\n}\n"],"names":["SyntaxHighlighter","useCopyToClipboard","memoizeMarkdownComponents","ToolFallback","React","convertMessage","message","groupEvals","groups","nextTrace","span","prevTrace","t","refetch","error","SidebarItems","tokens","group","step","layoutedNodes","layoutedEdges","initial","stepsList","Fragment","str","z","CommandPrimitive","FormConfigType","uuid","props","CodeBlock","idx"],"mappings":"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","x_google_ignoreList":[0,1,2]}
1
+ {"version":3,"file":"index.es.js","sources":["../../../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../../../node_modules/.pnpm/class-variance-authority@0.7.1/node_modules/class-variance-authority/dist/index.mjs","../../../node_modules/.pnpm/tailwind-merge@3.0.2/node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/lib/utils.ts","../src/components/ui/button.tsx","../src/components/ui/tooltip.tsx","../src/components/assistant-ui/tooltip-icon-button.tsx","../src/components/ui/avatar.tsx","../src/components/assistant-ui/markdown-text.tsx","../src/components/assistant-ui/tool-fallback.tsx","../src/components/assistant-ui/assistant-message.tsx","../src/components/assistant-ui/user-message.tsx","../src/hooks/use-autoscroll.tsx","../src/components/assistant-ui/thread.tsx","../src/services/mastra-runtime-provider.tsx","../src/domains/agents/agent/agent-chat.tsx","../src/components/ui/badge.tsx","../src/components/ui/copyable-content.tsx","../src/components/ui/formatted-date.tsx","../src/components/ui/input.tsx","../src/components/ui/score-indicator.tsx","../src/components/ui/skeleton.tsx","../src/components/ui/table.tsx","../src/components/ui/tabs.tsx","../src/hooks/use-evals.tsx","../src/domains/agents/agent/agent-evals.tsx","../src/hooks/use-resize-column.ts","../src/domains/resizable-panel.tsx","../src/components/ui/scroll-area.tsx","../src/domains/traces/context/trace-context.tsx","../src/domains/traces/utils.ts","../src/domains/traces/index.tsx","../src/domains/traces/trace-tree-view.tsx","../src/domains/traces/trace-span-view.tsx","../src/domains/traces/trace-details.tsx","../src/components/syntax-highlighter.tsx","../src/domains/traces/trace-span-details.tsx","../src/lib/polls.ts","../src/hooks/use-traces.tsx","../src/domains/agents/agent/agent-traces.tsx","../src/components/icons/agent-icon.tsx","../src/components/ui/data-table.tsx","../src/domains/agents/agents-table.tsx","../src/services/network-runtime-provider.tsx","../src/hooks/use-copy-to-clipboard.ts","../src/components/ui/copy-button.tsx","../src/components/ui/syntax-highlighter.tsx","../src/components/ui/markdown-renderer.tsx","../src/domains/networks/tool-fallback.tsx","../src/domains/networks/network-chat.tsx","../src/domains/workflows/workflow/workflow-traces.tsx","../src/hooks/use-workflows.ts","../src/domains/workflows/workflow/utils.ts","../src/components/ui/text.tsx","../src/components/ui/collapsible.tsx","../src/components/ui/dialog.tsx","../src/domains/workflows/workflow/workflow-condition-node.tsx","../src/domains/workflows/workflow/workflow-default-node.tsx","../src/domains/workflows/workflow/workflow-after-node.tsx","../src/domains/workflows/workflow/workflow-loop-result-node.tsx","../src/domains/workflows/workflow/workflow-graph-inner.tsx","../src/lib/string.ts","../src/domains/workflows/workflow/workflow-graph.tsx","../src/components/icons/automation-icon.tsx","../src/domains/workflows/workflows-table.tsx","../src/components/dynamic-form/utils.ts","../src/components/dynamic-form/resolvers/index.ts","../src/components/dynamic-form/fields/array-field.tsx","../src/components/ui/switch.tsx","../src/components/dynamic-form/fields/boolean-field.tsx","../src/components/ui/command.tsx","../src/components/ui/popover.tsx","../src/components/dynamic-form/fields/creatable-field.tsx","../src/components/ui/calendar.tsx","../src/components/ui/date-picker.tsx","../src/components/dynamic-form/fields/date-field.tsx","../src/components/ui/select.tsx","../src/components/dynamic-form/fields/enum-field.tsx","../src/components/ui/textarea.tsx","../src/components/dynamic-form/fields/string-field.tsx","../src/components/ui/label.tsx","../src/lib/object.ts","../src/components/dynamic-form/schema.tsx","../src/components/dynamic-form/fields/union-field.tsx","../src/components/dynamic-form/fields/object-field.tsx","../src/components/dynamic-form/fields/number-field.tsx","../src/components/dynamic-form/fields/record-field.tsx","../src/components/dynamic-form/default-field-map.tsx","../src/components/dynamic-form/schema-resolver.tsx","../src/components/dynamic-form/index.tsx","../src/components/ui/code-block.tsx","../src/domains/workflows/context/workflow-run-context.tsx","../src/domains/workflows/workflow/workflow-trigger.tsx"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","const CLASS_PART_SEPARATOR = '-';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift();\n }\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n const conflicts = conflictingClassGroups[classGroupId] || [];\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];\n }\n return conflicts;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, classPartObject) => {\n if (classParts.length === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[0];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart;\n }\n if (classPartObject.validators.length === 0) {\n return undefined;\n }\n const classRest = classParts.join(CLASS_PART_SEPARATOR);\n return classPartObject.validators.find(({\n validator\n }) => validator(classRest))?.classGroupId;\n};\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/;\nconst getGroupIdForArbitraryProperty = className => {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];\n const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property;\n }\n }\n};\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n const classMap = {\n nextPart: new Map(),\n validators: []\n };\n for (const classGroupId in classGroups) {\n processClassesRecursively(classGroups[classGroupId], classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n classGroup.forEach(classDefinition => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n return;\n }\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId\n });\n return;\n }\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);\n });\n });\n};\nconst getPart = (classPartObject, path) => {\n let currentClassPartObject = classPartObject;\n path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: []\n });\n }\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);\n });\n return currentClassPartObject;\n};\nconst isThemeGetter = func => func.isThemeGetter;\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = new Map();\n let previousCache = new Map();\n const update = (key, value) => {\n cache.set(key, value);\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = new Map();\n }\n };\n return {\n get(key) {\n let value = cache.get(key);\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value);\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length;\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + MODIFIER_SEPARATOR_LENGTH;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') {\n bracketDepth++;\n } else if (currentCharacter === ']') {\n bracketDepth--;\n } else if (currentCharacter === '(') {\n parenDepth++;\n } else if (currentCharacter === ')') {\n parenDepth--;\n }\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier);\n const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier;\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n };\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.substring(fullPrefix.length)) : {\n isExternal: true,\n modifiers: [],\n hasImportantModifier: false,\n baseClassName: className,\n maybePostfixModifierPosition: undefined\n };\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\nconst stripImportantModifier = baseClassName => {\n if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(0, baseClassName.length - 1);\n }\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(1);\n }\n return baseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n const orderSensitiveModifiers = Object.fromEntries(config.orderSensitiveModifiers.map(modifier => [modifier, true]));\n const sortModifiers = modifiers => {\n if (modifiers.length <= 1) {\n return modifiers;\n }\n const sortedModifiers = [];\n let unsortedModifiers = [];\n modifiers.forEach(modifier => {\n const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier];\n if (isPositionSensitive) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier);\n unsortedModifiers = [];\n } else {\n unsortedModifiers.push(modifier);\n }\n });\n sortedModifiers.push(...unsortedModifiers.sort());\n return sortedModifiers;\n };\n return sortModifiers;\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n const variantModifier = sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.includes(classId)) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nfunction twJoin() {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < arguments.length) {\n if (argument = arguments[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n}\nconst toValue = mix => {\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nfunction createTailwindMerge(createConfigFirst, ...createConfigRest) {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall = initTailwindMerge;\n function initTailwindMerge(classList) {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n }\n function tailwindMerge(classList) {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n }\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments));\n };\n}\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || [];\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => Boolean(value) && !Number.isNaN(Number(value));\nconst isInteger = value => Boolean(value) && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isNever, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position';\nconst imageLabels = /*#__PURE__*/new Set(['image', 'url']);\nconst isLabelImage = label => imageLabels.has(label);\nconst sizeLabels = /*#__PURE__*/new Set(['length', 'size', 'percentage']);\nconst isLabelSize = label => sizeLabels.has(label);\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['bottom', 'center', 'left', 'left-bottom', 'left-top', 'right', 'right-bottom', 'right-top', 'top'];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleOrigin = () => ['center', 'top', 'top-right', 'right', 'bottom-right', 'bottom', 'bottom-left', 'left', 'top-left', isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: [...scalePosition(), isArbitraryValue, isArbitraryVariable]\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: scaleInset()\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition]\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }]\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize]\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: [themeColor]\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', isArbitraryVariable, isArbitraryValue, themeInsetShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scaleOrigin()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scaleOrigin()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['before', 'after', 'placeholder', 'file', 'marker', 'selection', 'first-line', 'first-letter', 'backdrop', '*', '**']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst buttonVariants = cva(\n 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground shadow hover:bg-primary/90',\n destructive: 'bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90',\n outline: 'border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground',\n secondary: 'bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n },\n size: {\n default: 'h-9 px-4 py-2',\n sm: 'h-8 rounded-md px-3 text-xs',\n lg: 'h-10 rounded-md px-8',\n icon: 'h-9 w-9',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n return <Comp className={cn(buttonVariants({ variant, size, className }))} ref={ref} {...props} />;\n },\n);\nButton.displayName = 'Button';\n\nexport { Button, buttonVariants };\n","import * as TooltipPrimitive from '@radix-ui/react-tooltip';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst TooltipProvider = TooltipPrimitive.Provider;\n\nconst Tooltip = TooltipPrimitive.Root;\n\nconst TooltipTrigger = TooltipPrimitive.Trigger;\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n className,\n )}\n {...props}\n />\n </TooltipPrimitive.Portal>\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","'use client';\n\nimport { forwardRef } from 'react';\n\nimport { Button, ButtonProps } from '@/components/ui/button';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip';\n\nimport { cn } from '@/lib/utils';\n\nexport type TooltipIconButtonProps = ButtonProps & {\n tooltip: string;\n side?: 'top' | 'bottom' | 'left' | 'right';\n};\n\nexport const TooltipIconButton = forwardRef<HTMLButtonElement, TooltipIconButtonProps>(\n ({ children, tooltip, side = 'bottom', className, ...rest }, ref) => {\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" {...rest} className={cn('size-6 p-1', className)} ref={ref}>\n {children}\n <span className=\"sr-only\">{tooltip}</span>\n </Button>\n </TooltipTrigger>\n <TooltipContent side={side}>{tooltip}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n },\n);\n\nTooltipIconButton.displayName = 'TooltipIconButton';\n","import * as AvatarPrimitive from '@radix-ui/react-avatar';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn('relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full', className)}\n {...props}\n />\n));\nAvatar.displayName = AvatarPrimitive.Root.displayName;\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image ref={ref} className={cn('aspect-square h-full w-full', className)} {...props} />\n));\nAvatarImage.displayName = AvatarPrimitive.Image.displayName;\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn('flex h-full w-full items-center justify-center rounded-full bg-muted', className)}\n {...props}\n />\n));\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName;\n\nexport { Avatar, AvatarImage, AvatarFallback };\n","'use client';\n\nimport {\n CodeHeaderProps,\n MarkdownTextPrimitive,\n unstable_memoizeMarkdownComponents as memoizeMarkdownComponents,\n useIsMarkdownCodeBlock,\n} from '@assistant-ui/react-markdown';\nimport '@assistant-ui/react-markdown/styles/dot.css';\nimport { CheckIcon, CopyIcon } from 'lucide-react';\nimport { FC, memo, useState } from 'react';\nimport remarkGfm from 'remark-gfm';\nimport { makePrismAsyncSyntaxHighlighter } from '@assistant-ui/react-syntax-highlighter';\nimport { coldarkDark } from 'react-syntax-highlighter/dist/cjs/styles/prism';\n\nconst SyntaxHighlighter = makePrismAsyncSyntaxHighlighter({\n style: coldarkDark,\n customStyle: {\n margin: 0,\n backgroundColor: 'black',\n },\n});\n\nimport { TooltipIconButton } from '@/components/assistant-ui/tooltip-icon-button';\n\nimport { cn } from '@/lib/utils';\n\nconst MarkdownTextImpl = () => {\n return <MarkdownTextPrimitive remarkPlugins={[remarkGfm]} className=\"aui-md\" components={defaultComponents} />;\n};\n\nexport const MarkdownText = memo(MarkdownTextImpl);\n\nconst CodeHeader: FC<CodeHeaderProps> = ({ language, code }) => {\n const { isCopied, copyToClipboard } = useCopyToClipboard();\n const onCopy = () => {\n if (!code || isCopied) return;\n copyToClipboard(code);\n };\n\n return (\n <div\n style={{\n background: 'hsl(0 0% 100% / 0.06)',\n borderTopRightRadius: '0.5rem',\n borderTopLeftRadius: '0.5rem',\n marginTop: '0.5rem',\n border: '1px solid hsl(0 0% 20.4%)',\n borderBottom: 'none',\n }}\n className=\"flex items-center justify-between gap-4 px-4 py-2 text-sm font-semibold text-white\"\n >\n <span className=\"lowercase [&>span]:text-xs\">{language}</span>\n <TooltipIconButton tooltip=\"Copy\" onClick={onCopy}>\n <span className=\"grid\">\n <span\n key=\"checkmark\"\n style={{\n gridArea: '1/1',\n }}\n className={cn('transition-transform', isCopied ? 'scale-100' : 'scale-0')}\n >\n <CheckIcon size={14} />\n </span>\n <span\n style={{\n gridArea: '1/1',\n }}\n className={cn('transition-transform', isCopied ? 'scale-0' : 'scale-100')}\n key=\"copy\"\n >\n <CopyIcon size={14} />\n </span>\n </span>\n </TooltipIconButton>\n </div>\n );\n};\n\nconst useCopyToClipboard = ({\n copiedDuration = 1500,\n}: {\n copiedDuration?: number;\n} = {}) => {\n const [isCopied, setIsCopied] = useState<boolean>(false);\n\n const copyToClipboard = (value: string) => {\n if (!value) return;\n\n navigator.clipboard.writeText(value).then(() => {\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), copiedDuration);\n });\n };\n\n return { isCopied, copyToClipboard };\n};\n\nconst defaultComponents = memoizeMarkdownComponents({\n h1: ({ className, ...props }) => (\n <h1\n className={cn('mb-8 scroll-m-20 text-4xl font-extrabold tracking-tight last:mb-0', className)}\n {...props}\n style={{\n marginBottom: '2rem',\n }}\n />\n ),\n h2: ({ className, ...props }) => (\n <h2\n className={cn('mb-4 mt-8 scroll-m-20 text-3xl font-semibold tracking-tight first:mt-0 last:mb-0', className)}\n {...props}\n style={{\n marginBottom: '1rem',\n marginTop: '2rem',\n }}\n />\n ),\n h3: ({ className, ...props }) => (\n <h3\n className={cn('scroll-m-20 text-2xl font-semibold tracking-tight first:mt-0 last:mb-0', className)}\n {...props}\n style={{\n marginBottom: '1rem',\n marginTop: '1.5rem',\n }}\n />\n ),\n h4: ({ className, ...props }) => (\n <h4\n className={cn('scroll-m-20 text-xl font-semibold tracking-tight first:mt-0 last:mb-0', className)}\n {...props}\n style={{\n marginBottom: '1rem',\n marginTop: '1.5rem',\n }}\n />\n ),\n h5: ({ className, ...props }) => (\n <h5\n className={cn('font-semibold first:mt-0 last:mb-0', className)}\n {...props}\n style={{\n marginBottom: '1rem',\n marginTop: '1rem',\n }}\n />\n ),\n h6: ({ className, ...props }) => (\n <h6\n className={cn('font-semibold first:mt-0 last:mb-0', className)}\n {...props}\n style={{\n marginBottom: '1rem',\n marginTop: '1rem',\n }}\n />\n ),\n p: ({ className, ...props }) => (\n <p\n className={cn('leading-7 first:mt-0 last:mb-0', className)}\n {...props}\n style={{\n marginBottom: '1.25rem',\n marginTop: '1.25rem',\n }}\n />\n ),\n a: ({ className, ...props }) => (\n <a className={cn('text-primary font-medium underline underline-offset-4', className)} {...props} />\n ),\n blockquote: ({ className, ...props }) => (\n <blockquote className={cn('border-l-2 pl-6 italic', className)} {...props} />\n ),\n ul: ({ className, ...props }) => <ul className={cn('my-5 ml-6 list-disc [&>li]:mt-2', className)} {...props} />,\n ol: ({ className, ...props }) => <ol className={cn('my-5 ml-6 list-decimal [&>li]:mt-2', className)} {...props} />,\n hr: ({ className, ...props }) => <hr className={cn('my-5 border-b', className)} {...props} />,\n table: ({ className, ...props }) => (\n <table className={cn('my-5 w-full border-separate border-spacing-0 overflow-y-auto', className)} {...props} />\n ),\n th: ({ className, ...props }) => (\n <th\n className={cn(\n 'bg-muted px-4 py-2 text-left font-bold first:rounded-tl-lg last:rounded-tr-lg [&[align=center]]:text-center [&[align=right]]:text-right',\n className,\n )}\n {...props}\n />\n ),\n td: ({ className, ...props }) => (\n <td\n className={cn(\n 'border-b border-l px-4 py-2 text-left last:border-r [&[align=center]]:text-center [&[align=right]]:text-right',\n className,\n )}\n {...props}\n />\n ),\n tr: ({ className, ...props }) => (\n <tr\n className={cn(\n 'm-0 border-b p-0 first:border-t [&:last-child>td:first-child]:rounded-bl-lg [&:last-child>td:last-child]:rounded-br-lg',\n className,\n )}\n {...props}\n />\n ),\n sup: ({ className, ...props }) => <sup className={cn('[&>a]:text-xs [&>a]:no-underline', className)} {...props} />,\n pre: ({ className, ...props }) => (\n <pre\n {...props}\n style={{\n borderBottomRightRadius: '0.5rem',\n borderBottomLeftRadius: '0.5rem',\n background: 'transparent',\n fontSize: '0.875rem',\n marginBottom: '0.5rem',\n border: '1px solid hsl(0 0% 20.4%)',\n }}\n className={cn('overflow-x-auto p-4 text-white', className)}\n />\n ),\n code: function Code({ className, ...props }) {\n const isCodeBlock = useIsMarkdownCodeBlock();\n return (\n <pre\n style={{\n fontSize: '0.875rem',\n display: 'inline',\n }}\n >\n <code\n className={cn(!isCodeBlock && 'bg-muted rounded border font-semibold', className)}\n {...props}\n style={{\n fontWeight: '400',\n paddingBlock: !isCodeBlock ? '0.1em' : 0,\n paddingInline: !isCodeBlock ? '0.3em' : 0,\n }}\n />{' '}\n </pre>\n );\n },\n CodeHeader,\n SyntaxHighlighter,\n});\n","import { ToolCallContentPartComponent } from '@assistant-ui/react';\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from 'lucide-react';\nimport { useState } from 'react';\nimport { Button } from '../ui/button';\n\nexport const ToolFallback: ToolCallContentPartComponent = ({ toolName, argsText, result }) => {\n const [isCollapsed, setIsCollapsed] = useState(true);\n return (\n <div className=\"mb-2 flex w-full flex-col gap-3 rounded-lg border py-3 text-sm\">\n <div className=\"flex items-center gap-2 px-4\">\n <CheckIcon className=\"size-4\" />\n <p className=\"\">\n Used tool: <b>{toolName}</b>\n </p>\n <div className=\"flex-grow\" />\n <Button onClick={() => setIsCollapsed(!isCollapsed)}>\n {isCollapsed ? <ChevronUpIcon /> : <ChevronDownIcon />}\n </Button>\n </div>\n {!isCollapsed && (\n <div className=\"flex flex-col gap-2 border-t pt-2\">\n <div className=\"px-4\">\n <pre className=\"whitespace-pre-wrap\">{argsText}</pre>\n </div>\n {result !== undefined && (\n <div className=\"border-t border-dashed px-4 pt-2\">\n <p className=\"font-semibold\">Result:</p>\n <pre className=\"whitespace-pre-wrap\">\n {typeof result === 'string' ? result : JSON.stringify(result, null, 2)}\n </pre>\n </div>\n )}\n </div>\n )}\n </div>\n );\n};\n","import {\n ActionBarPrimitive,\n BranchPickerPrimitive,\n MessagePrimitive,\n ToolCallContentPartComponent,\n} from '@assistant-ui/react';\nimport { CheckIcon, ChevronLeftIcon, ChevronRightIcon, CopyIcon } from 'lucide-react';\nimport { FC } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nimport { MarkdownText } from './markdown-text';\nimport { TooltipIconButton } from './tooltip-icon-button';\nimport { ToolFallback } from '@/components/assistant-ui/tool-fallback';\n\nexport const AssistantMessage: FC<{ ToolFallback?: ToolCallContentPartComponent }> = ({\n ToolFallback: ToolFallbackCustom,\n}) => {\n return (\n <MessagePrimitive.Root className=\"grid group grid-cols-[auto_auto_1fr] grid-rows-[auto_1fr] max-w-[var(--thread-max-width)] relative w-full\">\n <div className=\"text-foreground max-w-[calc(var(--thread-max-width)*0.8)] sm:max-w-[70%] break-words leading-7 col-span-2 py-2 col-start-2 row-start-1\">\n <MessagePrimitive.Content\n components={{ Text: MarkdownText, tools: { Fallback: ToolFallbackCustom || ToolFallback } }}\n />\n </div>\n\n <AssistantActionBar />\n <BranchPicker className=\"col-start-2 row-start-2 -ml-2 mr-2\" />\n </MessagePrimitive.Root>\n );\n};\n\nconst BranchPicker: FC<BranchPickerPrimitive.Root.Props> = ({ className, ...rest }) => {\n return (\n <BranchPickerPrimitive.Root\n hideWhenSingleBranch\n className={cn('text-muted-foreground inline-flex items-center text-xs', className)}\n {...rest}\n >\n <BranchPickerPrimitive.Previous asChild>\n <TooltipIconButton tooltip=\"Previous\">\n <ChevronLeftIcon />\n </TooltipIconButton>\n </BranchPickerPrimitive.Previous>\n <span className=\"font-medium\">\n <BranchPickerPrimitive.Number /> / <BranchPickerPrimitive.Count />\n </span>\n <BranchPickerPrimitive.Next asChild>\n <TooltipIconButton tooltip=\"Next\">\n <ChevronRightIcon />\n </TooltipIconButton>\n </BranchPickerPrimitive.Next>\n </BranchPickerPrimitive.Root>\n );\n};\n\nconst AssistantActionBar: FC = () => {\n return (\n <ActionBarPrimitive.Root\n hideWhenRunning\n autohide=\"not-last\"\n autohideFloat=\"single-branch\"\n className=\"text-muted-foreground flex gap-1 col-start-3 row-start-2 -ml-1\"\n >\n {/* <MessagePrimitive.If speaking={false}>\n <ActionBarPrimitive.Speak asChild>\n <TooltipIconButton tooltip=\"Read aloud\">\n <AudioLinesIcon />\n </TooltipIconButton>\n </ActionBarPrimitive.Speak>\n </MessagePrimitive.If>\n <MessagePrimitive.If speaking>\n <ActionBarPrimitive.StopSpeaking asChild>\n <TooltipIconButton tooltip=\"Stop\">\n <StopCircleIcon />\n </TooltipIconButton>\n </ActionBarPrimitive.StopSpeaking>\n </MessagePrimitive.If> */}\n <ActionBarPrimitive.Copy asChild>\n <TooltipIconButton tooltip=\"Copy\">\n <MessagePrimitive.If copied>\n <CheckIcon />\n </MessagePrimitive.If>\n <MessagePrimitive.If copied={false}>\n <CopyIcon />\n </MessagePrimitive.If>\n </TooltipIconButton>\n </ActionBarPrimitive.Copy>\n {/* <ActionBarPrimitive.Reload asChild>\n <TooltipIconButton tooltip=\"Refresh\">\n <RefreshCwIcon />\n </TooltipIconButton>\n </ActionBarPrimitive.Reload> */}\n </ActionBarPrimitive.Root>\n );\n};\n","import { MessagePrimitive } from '@assistant-ui/react';\nimport { FC } from 'react';\n\nexport const UserMessage: FC = () => {\n return (\n <MessagePrimitive.Root\n style={{\n placeItems: 'end',\n }}\n className=\"grid w-full\"\n >\n {/* <UserActionBar /> */}\n\n <div\n style={{\n maxWidth: '60%',\n }}\n className=\"bg-primary w-fit text-primary-foreground max-w-[calc(var(--thread-max-width)*0.8)] sm:max-w-[60%] break-words rounded-xl px-3 py-2 text-sm col-start-2 row-start-2\"\n >\n <MessagePrimitive.Content />\n </div>\n\n {/* <BranchPicker className=\"col-span-full col-start-1 row-start-3 -mr-1 justify-end\" /> */}\n </MessagePrimitive.Root>\n );\n};\n","import React, { useRef } from 'react';\n\nexport interface UseAutoscrollOptions {\n enabled?: boolean;\n}\n\nexport const useAutoscroll = (ref: React.RefObject<HTMLElement | null>, { enabled = true }: UseAutoscrollOptions) => {\n const shouldScrollRef = useRef(enabled);\n\n React.useEffect(() => {\n if (!enabled) return;\n if (!ref?.current) return;\n\n const area = ref.current;\n\n const observer = new MutationObserver(() => {\n if (shouldScrollRef.current) {\n area.scrollTo({ top: area.scrollHeight, behavior: 'smooth' });\n }\n });\n\n observer.observe(area, {\n childList: true, // observe direct children changes\n subtree: true, // observe all descendants\n characterData: true, // observe text content changes\n });\n\n const handleScroll = (e: Event) => {\n const scrollElement = e.target as HTMLElement;\n const currentPosition = scrollElement.scrollTop + scrollElement.clientHeight;\n const totalHeight = scrollElement.scrollHeight;\n const isAtEnd = currentPosition >= totalHeight - 1;\n\n if (isAtEnd) {\n shouldScrollRef.current = true;\n } else {\n shouldScrollRef.current = false;\n }\n };\n\n area.addEventListener('scroll', handleScroll);\n\n return () => {\n area.removeEventListener('scroll', handleScroll);\n observer.disconnect();\n };\n }, [enabled, ref]);\n};\n","import {\n ActionBarPrimitive,\n ComposerPrimitive,\n MessagePrimitive,\n ThreadPrimitive,\n ToolCallContentPartComponent,\n} from '@assistant-ui/react';\nimport { ArrowDownIcon, ArrowUp, PencilIcon, SendHorizontalIcon } from 'lucide-react';\nimport type { FC } from 'react';\n\nimport { TooltipIconButton } from '@/components/assistant-ui/tooltip-icon-button';\nimport { Avatar, AvatarFallback } from '@/components/ui/avatar';\nimport { Button } from '@/components/ui/button';\n\nimport { AssistantMessage } from './assistant-message';\nimport { UserMessage } from './user-message';\nimport { useRef } from 'react';\nimport { useAutoscroll } from '@/hooks/use-autoscroll';\n\nconst suggestions = ['What capabilities do you have?', 'How can you help me?', 'Tell me about yourself'];\n\nexport const Thread: FC<{ memory?: boolean; ToolFallback?: ToolCallContentPartComponent }> = ({\n memory,\n ToolFallback,\n}) => {\n function WrappedAssistantMessage(props: MessagePrimitive.Root.Props) {\n return <AssistantMessage {...props} ToolFallback={ToolFallback} />;\n }\n const areaRef = useRef<HTMLDivElement>(null);\n useAutoscroll(areaRef, { enabled: true });\n\n return (\n <ThreadPrimitive.Root\n style={{\n margin: '0 auto',\n }}\n className=\"bg-background flex flex-col box-border relative h-full\"\n >\n <ThreadPrimitive.Viewport\n style={{\n paddingTop: '2rem',\n background: 'inherit',\n scrollBehavior: 'smooth',\n overflowY: 'scroll',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n height: memory ? 'calc(100vh - 65px)' : 'calc(100vh - 90px)',\n paddingBottom: '108px',\n }}\n ref={areaRef}\n autoScroll={false}\n >\n <div style={{ width: '100%', maxWidth: '48rem', paddingInline: '1.5rem' }}>\n <ThreadWelcome />\n <ThreadPrimitive.Messages\n components={{\n UserMessage: UserMessage,\n EditComposer: EditComposer,\n AssistantMessage: WrappedAssistantMessage,\n }}\n />\n </div>\n\n <ThreadPrimitive.If empty={false}>\n <div className=\"min-h-8 flex-grow\" />\n </ThreadPrimitive.If>\n </ThreadPrimitive.Viewport>\n <div\n style={{\n width: '100%',\n maxWidth: '48rem',\n position: 'absolute',\n bottom: 0,\n margin: '0 auto',\n zIndex: 10,\n paddingBottom: '0.5em',\n left: '50%',\n transform: 'translate(-50%)',\n background: '#0f0f0f',\n }}\n className=\"px-4\"\n >\n <div className=\"flex flex-col gap-2\">\n <ThreadPrimitive.Empty>\n <ThreadWelcomeSuggestions />\n </ThreadPrimitive.Empty>\n <Composer />\n {!memory && (\n <div className=\"flex items-center gap-1 text-sm text-mastra-el-5\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className=\"text-purple-400\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4\" />\n <path d=\"M12 8h.01\" />\n </svg>\n <span className=\"text-xs text-gray-300/60\">\n Agent will not remember previous messages. To enable memory for agent see{' '}\n <a\n href=\"https://mastra.ai/docs/agents/01-agent-memory\"\n target=\"_blank\"\n rel=\"noopener\"\n className=\"text-gray-300/60 hover:text-gray-100 underline\"\n >\n docs.\n </a>\n </span>\n </div>\n )}\n </div>\n </div>\n </ThreadPrimitive.Root>\n );\n};\n\nconst ThreadScrollToBottom: FC = () => {\n return (\n <ThreadPrimitive.ScrollToBottom asChild>\n <TooltipIconButton\n tooltip=\"Scroll to bottom\"\n variant=\"outline\"\n className=\"absolute -top-8 rounded-full disabled:invisible\"\n >\n <ArrowDownIcon />\n </TooltipIconButton>\n </ThreadPrimitive.ScrollToBottom>\n );\n};\n\nconst ThreadWelcome: FC = () => {\n return (\n <ThreadPrimitive.Empty>\n <div\n style={{\n maxWidth: '48rem',\n margin: '0 auto',\n }}\n className=\"max-w-[48rem] flex w-full flex-grow flex-col\"\n >\n <div className=\"flex w-full flex-grow flex-col items-center justify-center\">\n <Avatar>\n <AvatarFallback>C</AvatarFallback>\n </Avatar>\n <p className=\"mt-4 font-medium\">How can I help you today?</p>\n </div>\n </div>\n </ThreadPrimitive.Empty>\n );\n};\n\nconst ThreadWelcomeSuggestions: FC = () => {\n return (\n <div className=\"mt-3 flex w-full items-stretch justify-center gap-4\">\n {suggestions.map(suggestion => (\n <ThreadPrimitive.Suggestion\n key={suggestion}\n className=\"hover:bg-muted/80 flex max-w-sm grow basis-0 flex-col items-center justify-center rounded-lg border p-3 transition-colors ease-in\"\n prompt={suggestion}\n method=\"replace\"\n autoSend\n >\n <span className=\"line-clamp-2 text-ellipsis text-sm font-medium\">{suggestion}</span>\n </ThreadPrimitive.Suggestion>\n ))}\n </div>\n );\n};\n\nconst Composer: FC = () => {\n return (\n <ComposerPrimitive.Root\n style={{\n borderRadius: '16px',\n background: '#0f0f0f',\n boxShadow: '0px 8px 0px 0px #0f0f0f',\n }}\n className=\"relative focus-within:border-ring/20 flex w-full flex-wrap items-end border bg-inherit px-2.5 shadow-sm transition-colors ease-in\"\n >\n <ComposerPrimitive.Input asChild>\n <textarea\n style={{\n height: '98px',\n }}\n className=\"placeholder:text-muted-foreground max-h-40 w-full flex-grow resize-none border-none bg-transparent px-2 py-4 text-sm outline-none focus:ring-0 disabled:cursor-not-allowed\"\n autoFocus\n placeholder=\"Write a message...\"\n name=\"\"\n id=\"\"\n ></textarea>\n </ComposerPrimitive.Input>\n <ComposerAction />\n </ComposerPrimitive.Root>\n );\n};\n\nconst ComposerAction: FC = () => {\n return (\n <>\n <ThreadPrimitive.If running={false}>\n <ComposerPrimitive.Send asChild>\n <TooltipIconButton\n tooltip=\"Send\"\n variant=\"default\"\n style={{\n marginBottom: '0.625rem',\n position: 'absolute',\n right: '0.75rem',\n height: '2rem',\n width: '2rem',\n borderRadius: '50%',\n padding: '0.5rem',\n transition: 'opacity 0.2s ease-in',\n }}\n >\n <ArrowUp className=\"h-6 w-6\" />\n </TooltipIconButton>\n </ComposerPrimitive.Send>\n </ThreadPrimitive.If>\n <ThreadPrimitive.If running>\n <ComposerPrimitive.Cancel asChild>\n <TooltipIconButton\n tooltip=\"Cancel\"\n variant=\"default\"\n style={{\n marginBottom: '0.625rem',\n position: 'absolute',\n right: '0.75rem',\n height: '2rem',\n width: '2rem',\n padding: '0.5rem',\n transition: 'opacity 0.2s ease-in',\n borderRadius: '50%',\n }}\n >\n <CircleStopIcon />\n </TooltipIconButton>\n </ComposerPrimitive.Cancel>\n </ThreadPrimitive.If>\n </>\n );\n};\n\nconst UserActionBar: FC = () => {\n return (\n <ActionBarPrimitive.Root\n hideWhenRunning\n autohide=\"not-last\"\n className=\"flex flex-col items-end col-start-1 row-start-2 mr-3 mt-2.5\"\n >\n <ActionBarPrimitive.Edit asChild>\n <TooltipIconButton tooltip=\"Edit\">\n <PencilIcon />\n </TooltipIconButton>\n </ActionBarPrimitive.Edit>\n </ActionBarPrimitive.Root>\n );\n};\n\nconst EditComposer: FC = () => {\n return (\n <ComposerPrimitive.Root\n style={{\n maxWidth: '48rem',\n margin: '0 auto',\n }}\n className=\"bg-muted max-w-[48rem] my-4 flex w-full flex-col gap-2 rounded-xl\"\n >\n <ComposerPrimitive.Input className=\"text-foreground flex h-8 w-full resize-none bg-transparent p-4 pb-0 outline-none\" />\n\n <div className=\"mx-3 mb-3 flex items-center justify-center gap-2 self-end\">\n <ComposerPrimitive.Cancel asChild>\n <Button variant=\"ghost\">Cancel</Button>\n </ComposerPrimitive.Cancel>\n <ComposerPrimitive.Send asChild>\n <Button>Send</Button>\n </ComposerPrimitive.Send>\n </div>\n </ComposerPrimitive.Root>\n );\n};\n\nconst CircleStopIcon = () => {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 16 16\" fill=\"currentColor\" width=\"16\" height=\"16\">\n <rect width=\"10\" height=\"10\" x=\"3\" y=\"3\" rx=\"2\" />\n </svg>\n );\n};\n","'use client';\n\nimport {\n useExternalStoreRuntime,\n ThreadMessageLike,\n AppendMessage,\n AssistantRuntimeProvider,\n} from '@assistant-ui/react';\nimport { MastraClient } from '@mastra/client-js';\nimport { useState, ReactNode, useEffect, useMemo, useCallback } from 'react';\n\nimport { ChatProps } from '@/types';\n\nconst convertMessage = (message: ThreadMessageLike): ThreadMessageLike => {\n return message;\n};\n\nexport function MastraRuntimeProvider({\n children,\n agentId,\n initialMessages,\n agentName,\n memory,\n threadId,\n baseUrl,\n refreshThreadList,\n}: Readonly<{\n children: ReactNode;\n}> &\n ChatProps) {\n const [isRunning, setIsRunning] = useState(false);\n const [messages, setMessages] = useState<ThreadMessageLike[]>([]);\n const [currentThreadId, setCurrentThreadId] = useState<string | undefined>(threadId);\n\n useEffect(() => {\n const hasNewInitialMessages = initialMessages && initialMessages?.length > messages?.length;\n if (\n messages.length === 0 ||\n currentThreadId !== threadId ||\n (hasNewInitialMessages && currentThreadId === threadId)\n ) {\n if (initialMessages && threadId && memory) {\n const convertedMessages: ThreadMessageLike[] = initialMessages\n ?.map((message: any) => {\n if (message?.toolInvocations?.length > 0) {\n return {\n ...message,\n content: message.toolInvocations.map((toolInvocation: any) => ({\n type: 'tool-call',\n toolCallId: toolInvocation?.toolCallId,\n toolName: toolInvocation?.toolName,\n args: toolInvocation?.args,\n result: toolInvocation?.result,\n })),\n };\n }\n return message;\n })\n .filter(Boolean);\n setMessages(convertedMessages);\n setCurrentThreadId(threadId);\n }\n }\n }, [initialMessages, threadId, memory]);\n\n const mastra = new MastraClient({\n baseUrl: baseUrl || '',\n });\n const agent = mastra.getAgent(agentId);\n\n const onNew = async (message: AppendMessage) => {\n if (message.content[0]?.type !== 'text') throw new Error('Only text messages are supported');\n\n const input = message.content[0].text;\n setMessages(currentConversation => [...currentConversation, { role: 'user', content: input }]);\n setIsRunning(true);\n\n try {\n const response = await agent.stream({\n messages: [\n {\n role: 'user',\n content: input,\n },\n ],\n runId: agentId,\n ...(memory ? { threadId, resourceId: agentId } : {}),\n });\n\n if (!response.body) {\n throw new Error('No response body');\n }\n\n const parts = [];\n let content = '';\n let currentTextPart: { type: 'text'; text: string } | null = null;\n\n let assistantMessageAdded = false;\n\n function updater() {\n setMessages(currentConversation => {\n const message: ThreadMessageLike = {\n role: 'assistant',\n content: [{ type: 'text', text: content }],\n };\n\n if (!assistantMessageAdded) {\n assistantMessageAdded = true;\n return [...currentConversation, message];\n }\n return [...currentConversation.slice(0, -1), message];\n });\n }\n\n await response.processDataStream({\n onTextPart(value) {\n if (currentTextPart == null) {\n currentTextPart = {\n type: 'text',\n text: value,\n };\n parts.push(currentTextPart);\n } else {\n currentTextPart.text += value;\n }\n content += value;\n updater();\n },\n async onToolCallPart(value) {\n // Update the messages state\n setMessages(currentConversation => {\n // Get the last message (should be the assistant's message)\n const lastMessage = currentConversation[currentConversation.length - 1];\n\n // Only process if the last message is from the assistant\n if (lastMessage && lastMessage.role === 'assistant') {\n // Create a new message with the tool call part\n const updatedMessage: ThreadMessageLike = {\n ...lastMessage,\n content: Array.isArray(lastMessage.content)\n ? [\n ...lastMessage.content,\n {\n type: 'tool-call',\n toolCallId: value.toolCallId,\n toolName: value.toolName,\n args: value.args,\n },\n ]\n : [\n ...(typeof lastMessage.content === 'string' ? [{ type: 'text', text: lastMessage.content }] : []),\n {\n type: 'tool-call',\n toolCallId: value.toolCallId,\n toolName: value.toolName,\n args: value.args,\n },\n ],\n };\n\n // Replace the last message with the updated one\n return [...currentConversation.slice(0, -1), updatedMessage];\n }\n\n // If there's no assistant message yet, create one\n const newMessage: ThreadMessageLike = {\n role: 'assistant',\n content: [\n { type: 'text', text: content },\n {\n type: 'tool-call',\n toolCallId: value.toolCallId,\n toolName: value.toolName,\n args: value.args,\n },\n ],\n };\n return [...currentConversation, newMessage];\n });\n },\n async onToolResultPart(value: any) {\n // Update the messages state\n setMessages(currentConversation => {\n // Get the last message (should be the assistant's message)\n const lastMessage = currentConversation[currentConversation.length - 1];\n\n // Only process if the last message is from the assistant and has content array\n if (lastMessage && lastMessage.role === 'assistant' && Array.isArray(lastMessage.content)) {\n // Find the tool call content part that this result belongs to\n const updatedContent = lastMessage.content.map(part => {\n if (typeof part === 'object' && part.type === 'tool-call' && part.toolCallId === value.toolCallId) {\n return {\n ...part,\n result: value.result,\n };\n }\n return part;\n });\n\n // Create a new message with the updated content\n const updatedMessage: ThreadMessageLike = {\n ...lastMessage,\n content: updatedContent,\n };\n // Replace the last message with the updated one\n return [...currentConversation.slice(0, -1), updatedMessage];\n }\n return currentConversation;\n });\n },\n onErrorPart(error) {\n throw new Error(error);\n },\n });\n\n setIsRunning(false);\n setTimeout(() => {\n refreshThreadList?.();\n }, 500);\n } catch (error) {\n console.error('Error occurred in MastraRuntimeProvider', error);\n setIsRunning(false);\n }\n };\n\n const runtime = useExternalStoreRuntime<any>({\n isRunning,\n messages,\n convertMessage,\n onNew,\n });\n\n return <AssistantRuntimeProvider runtime={runtime}> {children} </AssistantRuntimeProvider>;\n}\n","import { Thread } from '@/components/assistant-ui/thread';\n\nimport { MastraRuntimeProvider } from '@/services/mastra-runtime-provider';\nimport { ChatProps } from '@/types';\n\nexport const AgentChat = ({\n agentId,\n agentName,\n threadId,\n initialMessages,\n memory,\n baseUrl,\n refreshThreadList,\n}: ChatProps) => {\n return (\n <MastraRuntimeProvider\n agentId={agentId}\n agentName={agentName}\n threadId={threadId}\n initialMessages={initialMessages}\n memory={memory}\n baseUrl={baseUrl}\n refreshThreadList={refreshThreadList}\n >\n <Thread memory={memory} />\n </MastraRuntimeProvider>\n );\n};\n","import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst badgeVariants = cva(\n 'inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n {\n variants: {\n variant: {\n default: 'border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80',\n secondary: 'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80',\n destructive: 'border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80',\n outline: 'text-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return <div className={cn(badgeVariants({ variant }), className)} {...props} />;\n}\n\nexport { Badge, badgeVariants };\n","import { Copy } from 'lucide-react';\n\nimport { cn } from '@/lib/utils';\n\nimport { Button } from './button';\n\ninterface CopyableCell {\n content: string;\n label: string;\n multiline?: boolean;\n}\n\nexport function CopyableContent({ content, label, multiline = false }: CopyableCell) {\n const handleCopy = () => {\n navigator.clipboard.writeText(content);\n };\n\n return (\n <div className=\"group relative flex items-start gap-2\">\n <span className={cn('text-sm text-mastra-el-4', multiline ? 'whitespace-pre-wrap' : 'truncate')}>{content}</span>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"opacity-0 group-hover:opacity-100 transition-opacity shrink-0 -mt-1\"\n onClick={e => {\n e.stopPropagation();\n handleCopy();\n }}\n aria-label={`Copy ${label}`}\n >\n <Copy className=\"h-3 w-3\" />\n </Button>\n </div>\n );\n}\n","import { format, formatDistanceToNow } from 'date-fns';\n\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './tooltip';\n\nexport function FormattedDate({ date }: { date: string }) {\n const formattedDate = {\n relativeTime: formatDistanceToNow(new Date(date), { addSuffix: true }),\n fullDate: format(new Date(date), 'PPpp'),\n };\n\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger className=\"text-left text-sm text-mastra-el-4\">{formattedDate.relativeTime}</TooltipTrigger>\n <TooltipContent className=\"bg-mastra-bg-1 text-mastra-el-1\">\n <p className=\"text-sm\">{formattedDate.fullDate}</p>\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n}\n","import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst inputVariants = cva(\n 'flex w-full text-mastra-el-6 rounded-sm border bg-transparent shadow-sm focus-visible:ring-ring transition-colors focus-visible:outline-none focus-visible:ring-1 disabled:cursor-not-allowed disabled:opacity-50',\n {\n variants: {\n variant: {\n default: 'border-mastra-border-1 border-border-1 placeholder:text-muted-foreground',\n filled: 'bg-inputFill border-border-1 placeholder:text-muted-foreground',\n unstyled:\n 'border-0 bg-transparent placeholder:text-muted-foreground focus-visible:ring-transparent focus-visible:outline-none',\n },\n customSize: {\n default: 'px-[13px] text-[calc(13_/_16_*_1rem)] h-[34px]',\n sm: 'h-[30px] px-[13px] text-xs',\n lg: 'h-10 px-[17px] rounded-md text-[calc(13_/_16_*_1rem)]',\n },\n },\n defaultVariants: {\n variant: 'default',\n customSize: 'default',\n },\n },\n);\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement>, VariantProps<typeof inputVariants> {\n testId?: string;\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, customSize, testId, variant, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(className, inputVariants({ variant, customSize, className }))}\n data-testid={testId}\n ref={ref}\n {...props}\n />\n );\n },\n);\nInput.displayName = 'Input';\n\nexport { Input, inputVariants };\n","import { Badge } from './badge';\n\nexport function ScoreIndicator({ score }: { score: number }) {\n return <Badge variant=\"secondary\">{score.toFixed(2)}</Badge>;\n}\n","import { cn } from '../../lib/utils';\n\nfunction Skeleton({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('animate-pulse rounded-md bg-muted/50', className)} {...props} />;\n}\n\nexport { Skeleton };\n","import * as React from 'react';\n\nimport { motion } from 'motion/react';\n\nimport { cn } from '../../lib/utils';\n\nconst Table = React.forwardRef<HTMLTableElement, React.HTMLAttributes<HTMLTableElement>>(\n ({ className, ...props }, ref) => (\n <table ref={ref} className={cn('w-full caption-bottom text-sm border-spacing-0', className)} {...props} />\n ),\n);\nTable.displayName = 'Table';\n\nconst TableHeader = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n ({ className, ...props }, ref) => <thead ref={ref} className={cn('[&_tr]:border-b-[0.5px]', className)} {...props} />,\n);\nTableHeader.displayName = 'TableHeader';\n\nconst TableBody = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n ({ className, ...props }, ref) => (\n <tbody ref={ref} className={cn('[&_tr:last-child]:border-0', className)} {...props} />\n ),\n);\nTableBody.displayName = 'TableBody';\n\nconst TableFooter = React.forwardRef<HTMLTableSectionElement, React.HTMLAttributes<HTMLTableSectionElement>>(\n ({ className, ...props }, ref) => (\n <tfoot ref={ref} className={cn('border-t bg-muted/50 font-medium [&>tr]:last:border-b-0', className)} {...props} />\n ),\n);\nTableFooter.displayName = 'TableFooter';\n\nconst TableRow = React.forwardRef<HTMLTableRowElement, React.HTMLAttributes<HTMLTableRowElement>>(\n ({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n 'border-b-[0.5px] border-mastra-border-1 transition-colors hover:bg-muted/50 data-[state=selected]:bg-mastra-bg-4/70',\n className,\n )}\n {...props}\n />\n ),\n);\nTableRow.displayName = 'TableRow';\n\nconst TableHead = React.forwardRef<HTMLTableCellElement, React.ThHTMLAttributes<HTMLTableCellElement>>(\n ({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n 'h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0',\n className,\n )}\n {...props}\n />\n ),\n);\nTableHead.displayName = 'TableHead';\n\nconst TableCell = React.forwardRef<HTMLTableCellElement, React.TdHTMLAttributes<HTMLTableCellElement>>(\n ({ className, ...props }, ref) => (\n <td ref={ref} className={cn('p-4 align-middle [&:has([role=checkbox])]:pr-0', className)} {...props} />\n ),\n);\nTableCell.displayName = 'TableCell';\n\nconst TableCaption = React.forwardRef<HTMLTableCaptionElement, React.HTMLAttributes<HTMLTableCaptionElement>>(\n ({ className, ...props }, ref) => (\n <caption ref={ref} className={cn('mt-4 text-sm text-muted-foreground', className)} {...props} />\n ),\n);\nTableCaption.displayName = 'TableCaption';\n\nexport { Table, TableHeader, TableBody, TableFooter, TableHead, TableRow, TableCell, TableCaption };\n","'use client';\n\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst Tabs = TabsPrimitive.Root;\n\nconst TabsList = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => <TabsPrimitive.List ref={ref} className={cn(className)} {...props} />);\nTabsList.displayName = TabsPrimitive.List.displayName;\n\nconst TabsTrigger = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => <TabsPrimitive.Trigger ref={ref} className={cn(className)} {...props} />);\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName;\n\nconst TabsContent = React.forwardRef<\n React.ComponentRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cn(\n 'mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n className,\n )}\n {...props}\n />\n));\nTabsContent.displayName = TabsPrimitive.Content.displayName;\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent };\n","import type { TestInfo, MetricResult } from '@mastra/core/eval';\nimport { useEffect, useState } from 'react';\nimport { toast } from 'sonner';\n\nimport { MastraClient } from '@mastra/client-js';\n\nexport type Evals = {\n input: string;\n output: string;\n result: MetricResult;\n agentName: string;\n createdAt: string;\n metricName: string;\n instructions: string;\n runId: string;\n globalRunId: string;\n testInfo?: TestInfo;\n};\n\nexport const useEvalsByAgentId = (agentId: string, type: 'ci' | 'live', baseUrl?: string) => {\n const [evals, setEvals] = useState<Evals[]>([]);\n const [isLoading, setIsLoading] = useState(true);\n\n const client = new MastraClient({\n baseUrl: baseUrl || '',\n });\n\n const fetchEvals = async (_agentId?: string) => {\n setIsLoading(true);\n const activeAgentId = _agentId ?? agentId;\n try {\n const res =\n type === 'live'\n ? await client.getAgent(activeAgentId).liveEvals()\n : await client.getAgent(activeAgentId).evals();\n\n setEvals(res.evals);\n } catch (error) {\n setEvals([]);\n console.error('Error fetching evals', error);\n toast.error('Error fetching evals');\n } finally {\n setIsLoading(false);\n }\n };\n\n useEffect(() => {\n fetchEvals(agentId);\n }, [agentId]);\n\n return { evals, isLoading, refetchEvals: fetchEvals };\n};\n","import { ChevronRight, RefreshCcwIcon, Search, SortAsc, SortDesc } from 'lucide-react';\nimport React, { createContext, useContext, useState, useEffect } from 'react';\n\nimport { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport { CopyableContent } from '@/components/ui/copyable-content';\nimport { FormattedDate } from '@/components/ui/formatted-date';\nimport { Input } from '@/components/ui/input';\nimport { ScoreIndicator } from '@/components/ui/score-indicator';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { Table, TableHeader, TableHead, TableBody, TableCell, TableRow } from '@/components/ui/table';\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';\n\nimport { cn } from '@/lib/utils';\n\nimport type { Evals } from '@/hooks/use-evals';\nimport { useEvalsByAgentId } from '@/hooks/use-evals';\n\nimport { AnimatePresence } from 'motion/react';\n\ntype SortDirection = 'asc' | 'desc';\n\ntype SortConfig = {\n field: keyof GroupedEvals | 'timestamp' | 'score';\n direction: SortDirection;\n};\n\ntype AgentEvalsContextType = {\n handleRefresh: () => void;\n isLoading: boolean;\n};\n\nconst AgentEvalsContext = createContext<AgentEvalsContextType>({ handleRefresh: () => {}, isLoading: true });\n\ntype GroupedEvals = {\n metricName: string;\n averageScore: number;\n evals: Evals[];\n};\n\nconst scrollableContentClass = cn(\n 'relative overflow-y-auto overflow-x-hidden invisible hover:visible focus:visible',\n '[&::-webkit-scrollbar]:w-1',\n '[&::-webkit-scrollbar-track]:bg-transparent',\n '[&::-webkit-scrollbar-thumb]:rounded-full',\n '[&::-webkit-scrollbar-thumb]:bg-mastra-border/20',\n '[&>*]:visible',\n);\n\nconst tabIndicatorClass = cn(\n 'px-4 py-2 text-sm transition-all border-b-2 border-transparent',\n 'data-[state=active]:border-white data-[state=active]:text-white font-medium',\n 'data-[state=inactive]:text-mastra-el-4 hover:data-[state=inactive]:text-mastra-el-2',\n 'focus-visible:outline-none',\n);\n\nconst tabContentClass = cn('data-[state=inactive]:mt-0 min-h-0 h-full grid grid-rows-[1fr]');\n\nexport function AgentEvals({ agentId, baseUrl }: { agentId: string; baseUrl?: string }) {\n const [activeTab, setActiveTab] = useState<'live' | 'ci'>('live');\n const {\n evals: liveEvals,\n isLoading: isLiveLoading,\n refetchEvals: refetchLiveEvals,\n } = useEvalsByAgentId(agentId, 'live', baseUrl);\n const {\n evals: ciEvals,\n isLoading: isCiLoading,\n refetchEvals: refetchCiEvals,\n } = useEvalsByAgentId(agentId, 'ci', baseUrl);\n\n const contextValue = {\n handleRefresh,\n isLoading: activeTab === 'live' ? isLiveLoading : isCiLoading,\n };\n\n function handleRefresh() {\n if (activeTab === 'live') {\n refetchLiveEvals();\n } else {\n refetchCiEvals();\n }\n }\n\n return (\n <AgentEvalsContext.Provider value={contextValue}>\n <Tabs\n value={activeTab}\n onValueChange={value => setActiveTab(value as 'live' | 'ci')}\n className=\"grid grid-rows-[auto_1fr] h-full min-h-0 pb-2\"\n >\n <div className=\"border-b border-mastra-border/10\">\n <TabsList className=\"bg-transparent border-0 h-auto mx-4\">\n <TabsTrigger value=\"live\" className={tabIndicatorClass}>\n Live\n </TabsTrigger>\n <TabsTrigger value=\"ci\" className={tabIndicatorClass}>\n CI\n </TabsTrigger>\n </TabsList>\n </div>\n <TabsContent value=\"live\" className={tabContentClass}>\n <EvalTable evals={liveEvals} isCIMode={false} />\n </TabsContent>\n <TabsContent value=\"ci\" className={tabContentClass}>\n <EvalTable evals={ciEvals} isCIMode={true} />\n </TabsContent>\n </Tabs>\n </AgentEvalsContext.Provider>\n );\n}\n\nfunction EvalTable({ evals, isCIMode = false }: { evals: Evals[]; isCIMode?: boolean }) {\n const { handleRefresh, isLoading: isTableLoading } = useContext(AgentEvalsContext);\n const [expandedMetrics, setExpandedMetrics] = useState<Set<string>>(new Set());\n const [searchTerm, setSearchTerm] = useState('');\n const [sortConfig, setSortConfig] = useState<SortConfig>({ field: 'metricName', direction: 'asc' });\n\n return (\n <div className=\"min-h-0 grid grid-rows-[auto_1fr]\">\n <div className=\"flex items-center gap-4 p-4 rounded-lg\">\n <div className=\"relative flex-1\">\n <Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-mastra-el-3\" />\n <Input\n id=\"search-input\"\n placeholder=\"Search metrics, inputs, or outputs...\"\n value={searchTerm}\n onChange={e => setSearchTerm(e.target.value)}\n className=\"pl-10\"\n />\n </div>\n <Badge variant=\"secondary\" className=\"text-xs\">\n {evals.length} Total Evaluations\n </Badge>\n <Button variant=\"ghost\" size=\"icon\" onClick={handleRefresh} disabled={isTableLoading} className=\"h-9 w-9\">\n {isTableLoading ? (\n <RefreshCcwIcon className=\"h-4 w-4 animate-spin\" />\n ) : (\n <RefreshCcwIcon className=\"h-4 w-4\" />\n )}\n </Button>\n </div>\n\n <div className=\"overflow-auto\">\n <Table className=\"w-full\">\n <TableHeader className=\"bg-mastra-bg-2 h-[var(--table-header-height)] sticky top-0 z-10\">\n <TableRow className=\"border-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableHead className=\"w-12 h-12\"></TableHead>\n <TableHead\n className=\"min-w-[200px] max-w-[30%] text-mastra-el-3 cursor-pointer\"\n onClick={() => toggleSort('metricName')}\n >\n <div className=\"flex items-center\">Metric {getSortIcon('metricName')}</div>\n </TableHead>\n <TableHead className=\"flex-1 text-mastra-el-3\" />\n <TableHead className=\"w-48 text-mastra-el-3 cursor-pointer\" onClick={() => toggleSort('averageScore')}>\n <div className=\"flex items-center\">Average Score {getSortIcon('averageScore')}</div>\n </TableHead>\n <TableHead className=\"w-48 text-mastra-el-3\">Evaluations</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody className=\"border-b border-gray-6 relative\">\n <AnimatePresence mode=\"wait\" presenceAffectsLayout={false}>\n {isTableLoading ? (\n Array.from({ length: 3 }).map((_, i) => (\n <TableRow key={i} className=\"border-b-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableCell className=\"w-12 h-12\">\n <Skeleton className=\"h-8 w-8 rounded-full\" />\n </TableCell>\n <TableCell className=\"min-w-[200px] max-w-[30%]\">\n <Skeleton className=\"h-4 w-3/4\" />\n </TableCell>\n <TableCell className=\"flex-1\">\n <Skeleton className=\"h-4 w-full\" />\n </TableCell>\n <TableCell className=\"w-48\">\n <Skeleton className=\"h-4 w-20\" />\n </TableCell>\n <TableCell className=\"w-48\">\n <Skeleton className=\"h-4 w-20\" />\n </TableCell>\n </TableRow>\n ))\n ) : groupEvals(evals).length === 0 ? (\n <TableRow>\n <TableCell className=\"h-12 w-16\"></TableCell>\n <TableCell colSpan={4} className=\"h-32 px-4 text-center text-mastra-el-3\">\n <div className=\"flex flex-col items-center gap-2\">\n <Search className=\"size-5\" />\n <p>No evaluations found</p>\n {searchTerm && <p className=\"text-sm\">Try adjusting your search terms</p>}\n </div>\n </TableCell>\n </TableRow>\n ) : (\n groupEvals(evals).map(group => (\n <React.Fragment key={group.metricName}>\n <TableRow\n className=\"border-b-gray-6 border-b-[0.1px] text-[0.8125rem] cursor-pointer hover:bg-mastra-bg-3\"\n onClick={() => toggleMetric(group.metricName)}\n >\n <TableCell className=\"w-12\">\n <div className=\"h-8 w-full flex items-center justify-center\">\n <div\n className={cn(\n 'transform transition-transform duration-200',\n expandedMetrics.has(group.metricName) ? 'rotate-90' : '',\n )}\n >\n <ChevronRight className=\"h-4 w-4 text-mastra-el-5\" />\n </div>\n </div>\n </TableCell>\n <TableCell className=\"min-w-[200px] max-w-[30%] font-medium text-mastra-el-5\">\n {group.metricName}\n </TableCell>\n <TableCell className=\"flex-1 text-mastra-el-5\" />\n <TableCell className=\"w-48 text-mastra-el-5\">\n <ScoreIndicator score={group.averageScore} />\n </TableCell>\n <TableCell className=\"w-48 text-mastra-el-5\">\n <Badge variant=\"secondary\">{group.evals.length}</Badge>\n </TableCell>\n </TableRow>\n\n {expandedMetrics.has(group.metricName) && (\n <TableRow>\n <TableCell\n colSpan={5 + (getHasReasons(group.evals) ? 1 : 0) + (isCIMode ? 1 : 0)}\n className=\"p-0\"\n >\n <div className=\"bg-mastra-bg-3 rounded-lg m-2\">\n <div className=\"w-full\">\n <Table className=\"w-full\">\n <TableHeader>\n <TableRow className=\"text-[0.7rem] text-mastra-el-3 hover:bg-transparent\">\n <TableHead className=\"pl-12 w-[120px]\">Timestamp</TableHead>\n <TableHead className=\"w-[300px]\">Instructions</TableHead>\n <TableHead className=\"w-[300px]\">Input</TableHead>\n <TableHead className=\"w-[300px]\">Output</TableHead>\n <TableHead className=\"w-[80px]\">Score</TableHead>\n {getHasReasons(group.evals) && <TableHead className=\"w-[250px]\">Reason</TableHead>}\n {isCIMode && <TableHead className=\"w-[120px]\">Test Name</TableHead>}\n </TableRow>\n </TableHeader>\n <TableBody>\n {group.evals.map((evaluation, index) => (\n <TableRow\n key={`${group.metricName}-${index}`}\n className=\"text-[0.8125rem] hover:bg-mastra-bg-2/50\"\n >\n <TableCell className=\"pl-12 text-mastra-el-4 align-top py-4\">\n <FormattedDate date={evaluation.createdAt} />\n </TableCell>\n <TableCell className=\"text-mastra-el-4 align-top py-4\">\n <div className={cn('max-w-[300px] max-h-[200px]', scrollableContentClass)}>\n <CopyableContent\n content={evaluation.instructions}\n label=\"instructions\"\n multiline\n />\n </div>\n </TableCell>\n <TableCell className=\"text-mastra-el-4 align-top py-4\">\n <div className={cn('max-w-[300px] max-h-[200px]', scrollableContentClass)}>\n <CopyableContent content={evaluation.input} label=\"input\" multiline />\n </div>\n </TableCell>\n <TableCell className=\"text-mastra-el-4 align-top py-4\">\n <div className={cn('max-w-[300px] max-h-[200px]', scrollableContentClass)}>\n <CopyableContent content={evaluation.output} label=\"output\" multiline />\n </div>\n </TableCell>\n <TableCell className=\"text-mastra-el-4 align-top py-4\">\n <ScoreIndicator score={evaluation.result.score} />\n </TableCell>\n {getHasReasons(group.evals) && (\n <TableCell className=\"text-mastra-el-4 align-top py-4\">\n <div className={cn('max-w-[300px] max-h-[200px]', scrollableContentClass)}>\n <CopyableContent\n content={evaluation.result.info?.reason || ''}\n label=\"reason\"\n multiline\n />\n </div>\n </TableCell>\n )}\n {isCIMode && (\n <TableCell className=\"text-mastra-el-4 align-top py-4\">\n {evaluation.testInfo?.testName && (\n <Badge variant=\"secondary\" className=\"text-xs\">\n {evaluation.testInfo.testName}\n </Badge>\n )}\n </TableCell>\n )}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n </div>\n </TableCell>\n </TableRow>\n )}\n </React.Fragment>\n ))\n )}\n </AnimatePresence>\n </TableBody>\n </Table>\n </div>\n </div>\n );\n\n function getHasReasons(groupEvals: Evals[]) {\n return groupEvals.some(eval_ => eval_.result.info?.reason);\n }\n\n function toggleMetric(metricName: string) {\n const newExpanded = new Set(expandedMetrics);\n if (newExpanded.has(metricName)) {\n newExpanded.delete(metricName);\n } else {\n newExpanded.add(metricName);\n }\n setExpandedMetrics(newExpanded);\n }\n\n function toggleSort(field: SortConfig['field']) {\n setSortConfig(prev => ({\n field,\n direction: prev.field === field && prev.direction === 'asc' ? 'desc' : 'asc',\n }));\n }\n\n function getSortIcon(field: SortConfig['field']) {\n if (sortConfig.field !== field) return null;\n return sortConfig.direction === 'asc' ? (\n <SortAsc className=\"h-4 w-4 ml-1\" />\n ) : (\n <SortDesc className=\"h-4 w-4 ml-1\" />\n );\n }\n\n function groupEvals(evaluations: Evals[]): GroupedEvals[] {\n let groups = evaluations.reduce((groups: GroupedEvals[], evaluation) => {\n const existingGroup = groups.find(g => g.metricName === evaluation.metricName);\n if (existingGroup) {\n existingGroup.evals.push(evaluation);\n existingGroup.averageScore =\n existingGroup.evals.reduce((sum, e) => sum + e.result.score, 0) / existingGroup.evals.length;\n } else {\n groups.push({\n metricName: evaluation.metricName,\n averageScore: evaluation.result.score,\n evals: [evaluation],\n });\n }\n return groups;\n }, []);\n\n // Apply search filter\n if (searchTerm) {\n groups = groups.filter(\n group =>\n group.metricName.toLowerCase().includes(searchTerm.toLowerCase()) ||\n group.evals.some(\n metric =>\n metric.input?.toLowerCase().includes(searchTerm.toLowerCase()) ||\n metric.output?.toLowerCase().includes(searchTerm.toLowerCase()) ||\n metric.instructions?.toLowerCase().includes(searchTerm.toLowerCase()),\n ),\n );\n }\n\n // Apply sorting\n groups.sort((a, b) => {\n const direction = sortConfig.direction === 'asc' ? 1 : -1;\n switch (sortConfig.field) {\n case 'metricName':\n return direction * a.metricName.localeCompare(b.metricName);\n case 'averageScore':\n return direction * (a.averageScore - b.averageScore);\n default:\n return 0;\n }\n });\n\n return groups;\n }\n}\n","import { MouseEvent as ReactMouseEvent, useContext, useEffect, useRef, useState } from 'react';\n\nimport { TraceContext } from '@/domains/traces/context/trace-context';\n\nexport const useResizeColumn = ({\n defaultWidth,\n minimumWidth,\n maximumWidth,\n setCurrentWidth,\n}: {\n defaultWidth: number;\n minimumWidth: number;\n maximumWidth: number;\n setCurrentWidth?: (width: number) => void;\n}) => {\n const [isDragging, setIsDragging] = useState(false);\n const [sidebarWidth, setSidebarWidth] = useState<number>(defaultWidth);\n // const { isOpen } = useContext(TraceContext);\n const containerRef = useRef<HTMLDivElement>(null);\n const dragStartXRef = useRef(0);\n const initialWidthRef = useRef(0);\n\n const handleMouseDown = (e: ReactMouseEvent) => {\n e.preventDefault(); // Prevent text selection\n setIsDragging(true);\n dragStartXRef.current = e.clientX;\n initialWidthRef.current = sidebarWidth;\n };\n\n useEffect(() => {\n setSidebarWidth(defaultWidth);\n setCurrentWidth?.(defaultWidth);\n }, [defaultWidth]);\n\n useEffect(() => {\n const handleMouseMove = (e: MouseEvent) => {\n if (!isDragging || !containerRef.current) return;\n\n const containerWidth = containerRef.current.offsetWidth;\n const deltaX = dragStartXRef.current - e.clientX;\n const deltaPercentage = (deltaX / containerWidth) * 100;\n\n // Calculate new width percentage\n const newWidth = Math.min(Math.max(initialWidthRef.current + deltaPercentage, minimumWidth), maximumWidth);\n setSidebarWidth(newWidth);\n setCurrentWidth?.(newWidth);\n };\n\n const handleMouseUp = () => {\n setIsDragging(false);\n };\n\n if (isDragging) {\n window.addEventListener('mousemove', handleMouseMove);\n window.addEventListener('mouseup', handleMouseUp);\n }\n\n return () => {\n window.removeEventListener('mousemove', handleMouseMove);\n window.removeEventListener('mouseup', handleMouseUp);\n };\n }, [isDragging]);\n\n return { sidebarWidth, isDragging, handleMouseDown, containerRef };\n};\n","import { useResizeColumn } from '@/hooks/use-resize-column';\nimport { cn } from '@/lib/utils';\nimport { ReactNode } from 'react';\n\nexport const MastraResizablePanel = ({\n children,\n defaultWidth,\n minimumWidth,\n maximumWidth,\n className,\n disabled = false,\n setCurrentWidth,\n dividerPosition = 'left',\n}: {\n children: ReactNode;\n defaultWidth: number;\n minimumWidth: number;\n maximumWidth: number;\n className?: string;\n disabled?: boolean;\n setCurrentWidth?: (width: number) => void;\n dividerPosition?: 'left' | 'right';\n}) => {\n const { sidebarWidth, isDragging, handleMouseDown, containerRef } = useResizeColumn({\n defaultWidth: disabled ? 100 : defaultWidth,\n minimumWidth,\n maximumWidth,\n setCurrentWidth,\n });\n return (\n <div className={cn('w-full h-full relative', className)} ref={containerRef} style={{ width: `${sidebarWidth}%` }}>\n {!disabled && dividerPosition === 'left' ? (\n <div\n className={`w-1 bg-mastra-bg-1 bg-[#121212] h-full cursor-col-resize hover:w-1.5 hover:bg-mastra-border-2 hover:bg-[#424242] active:bg-mastra-border-3 active:bg-[#3e3e3e] transition-colors absolute inset-y-0 -left-1 -right-1 z-10\n ${isDragging ? 'bg-mastra-border-2 bg-[#424242] w-1.5 cursor- col-resize' : ''}`}\n onMouseDown={handleMouseDown}\n />\n ) : null}\n {children}\n {!disabled && dividerPosition === 'right' ? (\n <div\n className={`w-1 bg-mastra-bg-1 bg-[#121212] h-full cursor-col-resize hover:w-1.5 hover:bg-mastra-border-2 hover:bg-[#424242] active:bg-mastra-border-3 active:bg-[#3e3e3e] transition-colors absolute inset-y-0 -left-1 -right-1 z-10\n ${isDragging ? 'bg-mastra-border-2 bg-[#424242] w-1.5 cursor- col-resize' : ''}`}\n onMouseDown={handleMouseDown}\n />\n ) : null}\n </div>\n );\n};\n","import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\nimport { useAutoscroll } from '@/hooks/use-autoscroll';\n\ninterface ScrollAreaProps extends React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> {\n viewPortClassName?: string;\n maxHeight?: string;\n autoScroll?: boolean;\n}\n\nconst ScrollArea = React.forwardRef<React.ElementRef<typeof ScrollAreaPrimitive.Root>, ScrollAreaProps>(\n ({ className, children, viewPortClassName, maxHeight, autoScroll = false, ...props }, ref) => {\n const areaRef = React.useRef<HTMLDivElement>(null);\n useAutoscroll(areaRef, { enabled: autoScroll });\n\n return (\n <ScrollAreaPrimitive.Root ref={ref} className={cn('relative overflow-hidden', className)} {...props}>\n <ScrollAreaPrimitive.Viewport\n ref={areaRef}\n className={cn('h-full w-full rounded-[inherit] [&>div]:!block', viewPortClassName)}\n style={maxHeight ? { maxHeight } : undefined}\n >\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n );\n },\n);\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = 'vertical', ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n 'flex touch-none select-none transition-colors',\n orientation === 'vertical' && 'h-full w-2.5 border-l border-l-transparent p-[1px]',\n orientation === 'horizontal' && 'h-2.5 flex-col border-t border-t-transparent p-[1px]',\n className,\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n));\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\n\nexport { ScrollArea, ScrollBar };\n","import { createContext, useState } from 'react';\n\nimport type { Span, RefinedTrace } from '../types';\n\ntype TraceContextType = {\n isOpen: boolean;\n setIsOpen: React.Dispatch<React.SetStateAction<boolean>>;\n trace: Span[] | null;\n setTrace: React.Dispatch<React.SetStateAction<Span[] | null>>;\n traces: RefinedTrace[];\n setTraces: React.Dispatch<React.SetStateAction<RefinedTrace[]>>;\n currentTraceIndex: number;\n setCurrentTraceIndex: React.Dispatch<React.SetStateAction<number>>;\n nextTrace: () => void;\n prevTrace: () => void;\n span: Span | null;\n setSpan: React.Dispatch<React.SetStateAction<Span | null>>;\n openDetail: boolean;\n setOpenDetail: React.Dispatch<React.SetStateAction<boolean>>;\n clearData: () => void;\n};\n\nexport const TraceContext = createContext<TraceContextType>({} as TraceContextType);\n\nexport function TraceProvider({ children }: { children: React.ReactNode }) {\n const [open, setOpen] = useState(false);\n const [trace, setTrace] = useState<Span[] | null>(null);\n const [traces, setTraces] = useState<RefinedTrace[]>([]);\n const [currentTraceIndex, setCurrentTraceIndex] = useState(0);\n const [span, setSpan] = useState<Span | null>(null);\n const [openDetail, setOpenDetail] = useState(false);\n\n const nextTrace = () => {\n if (currentTraceIndex < traces.length - 1) {\n const nextIndex = currentTraceIndex + 1;\n setCurrentTraceIndex(nextIndex);\n const nextTrace = traces[nextIndex].trace;\n setTrace(nextTrace);\n const parentSpan = nextTrace.find(span => span.parentSpanId === null) || nextTrace[0];\n setSpan(parentSpan);\n }\n };\n\n const prevTrace = () => {\n if (currentTraceIndex > 0) {\n const prevIndex = currentTraceIndex - 1;\n setCurrentTraceIndex(prevIndex);\n const prevTrace = traces[prevIndex].trace;\n setTrace(prevTrace);\n const parentSpan = prevTrace.find(span => span.parentSpanId === null) || prevTrace[0];\n setSpan(parentSpan);\n }\n };\n\n const clearData = () => {\n setOpen(false);\n setTrace(null);\n setSpan(null);\n setOpenDetail(false);\n };\n\n return (\n <TraceContext.Provider\n value={{\n isOpen: open,\n setIsOpen: setOpen,\n trace,\n setTrace,\n traces,\n setTraces,\n currentTraceIndex,\n setCurrentTraceIndex,\n nextTrace,\n prevTrace,\n span,\n setSpan,\n openDetail,\n setOpenDetail,\n clearData,\n }}\n >\n {children}\n </TraceContext.Provider>\n );\n}\n","import type { RefinedTrace, Span } from './types';\n\n/**\n *\n * @param duration duration of the span\n * @param fixedPoint how many fixed point\n * @returns duration in milliseconds in fixed points\n */\nexport function formatDuration(duration: number, fixedPoint = 2) {\n const durationInSecs = duration / 1_000;\n\n return durationInSecs.toFixed(fixedPoint);\n}\n\nexport function formatOtelTimestamp(otelTimestamp: number) {\n const date = new Date(otelTimestamp / 1000);\n\n return new Intl.DateTimeFormat('en-US', {\n month: 'numeric',\n day: 'numeric',\n year: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true,\n }).format(date);\n}\n\nexport function formatOtelTimestamp2(otelTimestamp: number) {\n const date = new Date(otelTimestamp / 1000000);\n\n return new Intl.DateTimeFormat('en-US', {\n month: 'numeric',\n day: 'numeric',\n year: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n hour12: true,\n }).format(date);\n}\n\nexport function transformKey(key: string) {\n if (key.includes('.argument.')) {\n return `Input`;\n }\n if (key.includes('.result')) {\n return 'Output';\n }\n return key.split('.').join(' ').split('_');\n}\n\nexport function cleanString(string: string) {\n return (\n string\n .replace(/\\\\n/g, '')\n // Also handle any actual newlines\n .replace(/\\n/g, '')\n // Clean up any resulting extra spaces\n .replace(/\\s+/g, ' ')\n .trim()\n );\n}\n\nexport const refineTraces = (traces: Span[], isWorkflow: boolean = false): RefinedTrace[] => {\n const listOfSpanIds = new Set<string>();\n\n const newName = (name: string) => {\n if (name?.startsWith('workflow.') && isWorkflow) {\n return name?.split('.')?.slice(2)?.join('.');\n }\n if (name?.startsWith('agent.') && !isWorkflow) {\n return name?.split('.')?.slice(1)?.join('.');\n }\n return name;\n };\n\n const groupedTraces = traces.reduce<Record<string, Span[]>>((acc, curr) => {\n const newCurr = { ...curr, name: newName(curr.name), duration: curr.endTime - curr.startTime };\n\n listOfSpanIds.add(curr.id);\n\n return { ...acc, [curr.traceId]: [...(acc[curr.traceId] || []), newCurr] };\n }, {});\n\n const tracesData = Object.entries(groupedTraces).map(([key, value]) => {\n const parentSpan = value.find(span => !span.parentSpanId || !listOfSpanIds.has(span.parentSpanId));\n\n const enrichedSpans = value.map(span => ({\n ...span,\n parentSpanId: parentSpan?.id === span.id ? null : span?.parentSpanId,\n relativePercentage: parentSpan ? span.duration / parentSpan.duration : 0,\n }));\n\n const failedStatus = value.find(span => span.status.code !== 0)?.status;\n return {\n traceId: key,\n serviceName: parentSpan?.name || key,\n duration: parentSpan?.duration || value.reduce((acc, curr) => acc + curr.duration, 0),\n status: failedStatus || parentSpan?.status || value[0].status,\n started: value[0].startTime,\n trace: enrichedSpans,\n };\n });\n\n return tracesData;\n};\n\nexport const allowedAiSpanAttributes = [\n 'operation.name',\n 'ai.operationId',\n 'ai.model.provider',\n 'ai.model.id',\n 'ai.prompt.format',\n 'ai.prompt.messages',\n 'ai.prompt.tools',\n 'ai.prompt.toolChoice',\n 'ai.settings.toolChoice',\n 'ai.schema',\n 'ai.settings.output',\n 'ai.response.object',\n 'ai.response.text',\n 'ai.response.timestamp',\n 'componentName',\n 'ai.usage.promptTokens',\n 'ai.usage.completionTokens',\n];\n","import { Braces, Clock1 } from 'lucide-react';\nimport { useContext, useEffect, useState } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport { ScrollArea } from '@/components/ui/scroll-area';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table';\n\nimport { cn } from '@/lib/utils';\n\nimport { TraceContext } from './context/trace-context';\nimport type { RefinedTrace, Span, SpanStatus } from './types';\nimport { formatDuration, formatOtelTimestamp } from './utils';\n\nexport function Traces({ traces }: { traces: RefinedTrace[] }) {\n const { trace: currentTrace } = useContext(TraceContext);\n const [prevTracesId, setPrevTracesId] = useState(new Set());\n\n useEffect(() => {\n if (!prevTracesId.size && traces) {\n setPrevTracesId(new Set(traces.map(trace => trace.traceId)));\n }\n }, [traces]);\n\n const isNew = (traceId: string) => {\n if (!prevTracesId.size) return false;\n return !prevTracesId.has(traceId);\n };\n const currentTraceParentSpan = currentTrace?.find(span => span.parentSpanId === undefined) || currentTrace?.[0];\n\n return (\n <div className=\"h-full w-[calc(100%_-_325px)]\">\n <ScrollArea className=\"h-full\">\n <Table>\n <TableHeader className=\"sticky top-0 z-10 bg-[#0F0F0F]\" style={{ outline: '1px solid 0_0%_20.4%' }}>\n <TableRow className=\"border-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableHead className=\"text-mastra-el-3 h-10\">Trace</TableHead>\n <TableHead className=\"text-mastra-el-3 flex items-center gap-1 h-10\">\n <Braces className=\"h-3 w-3\" /> Trace Id\n </TableHead>\n <TableHead className=\"text-mastra-el-3 h-10\">Started</TableHead>\n <TableHead className=\"text-mastra-el-3 h-10\">Total Duration</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody className=\"border-b border-gray-6\">\n {!traces.length ? (\n <TableRow className=\"border-b-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableCell colSpan={4} className=\"h-24 text-center\">\n No traces found\n </TableCell>\n </TableRow>\n ) : (\n traces.map((trace, index) => (\n <TableRow\n key={trace.traceId}\n className={cn(\n 'border-b-gray-6 border-b-[0.1px] text-[0.8125rem]',\n isNew(trace.traceId) ? 'animate-fade-in' : 'not-new',\n {\n 'bg-muted/50': currentTraceParentSpan?.traceId === trace.traceId,\n },\n )}\n >\n <TableCell>\n <TraceButton\n trace={trace.trace}\n name={trace.serviceName}\n traceIndex={index}\n status={trace.status}\n />\n </TableCell>\n <TableCell className=\"text-mastra-el-5\">{trace.traceId}</TableCell>\n <TableCell className=\"text-mastra-el-5 text-sm\">{formatOtelTimestamp(trace.started)}</TableCell>\n <TableCell>\n <span className=\"inline-flex items-center gap-2 text-[#F1CA5E]\">\n <Clock1 className=\"h-3 w-3\" />\n {formatDuration(trace.duration, 3)}ms\n </span>\n </TableCell>\n </TableRow>\n ))\n )}\n </TableBody>\n </Table>\n </ScrollArea>\n </div>\n );\n}\n\nfunction TraceButton({\n trace,\n name,\n traceIndex,\n status,\n}: {\n trace: Span[];\n name: string;\n traceIndex: number;\n status: SpanStatus;\n}) {\n const {\n setTrace,\n isOpen: open,\n setIsOpen: setOpen,\n trace: currentTrace,\n setSpan,\n setOpenDetail,\n setCurrentTraceIndex,\n } = useContext(TraceContext);\n return (\n <Button\n variant=\"ghost\"\n className=\"flex h-0 items-center gap-2 p-0\"\n onClick={() => {\n setTrace(trace);\n const parentSpan = trace.find(span => span.parentSpanId === null) || trace[0];\n setSpan(parentSpan);\n setCurrentTraceIndex(traceIndex);\n if (open && currentTrace?.[0]?.id !== trace[0].id) return;\n setOpen(prev => !prev);\n setOpenDetail(prev => !prev);\n }}\n >\n {status.code === 0 ? (\n <svg\n className=\"h-3 w-3\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"13\"\n height=\"12\"\n viewBox=\"0 0 13 12\"\n fill=\"none\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.37695 12C9.69067 12 12.377 9.31371 12.377 6C12.377 2.68629 9.69067 0 6.37695 0C3.06325 0 0.376953 2.68629 0.376953 6C0.376953 9.31371 3.06325 12 6.37695 12ZM9.62004 4.65344C9.87907 4.36036 9.8651 3.90005 9.58884 3.6253C9.3125 3.35055 8.87861 3.3654 8.61958 3.65847L5.6477 7.02105L4.08967 5.55197C3.80661 5.28508 3.37319 5.31213 3.12159 5.61237C2.87 5.91262 2.89549 6.37239 3.17854 6.63927L4.90294 8.26517C5.36588 8.70171 6.07235 8.6676 6.49598 8.18829L9.62004 4.65344Z\"\n fill=\"#6CD063\"\n />\n </svg>\n ) : (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"#FF4500\" width=\"13\" height=\"12\">\n <path\n fillRule=\"evenodd\"\n d=\"M12 2.25c-5.385 0-9.75 4.365-9.75 9.75s4.365 9.75 9.75 9.75 9.75-4.365 9.75-9.75S17.385 2.25 12 2.25Zm-1.72 6.97a.75.75 0 1 0-1.06 1.06L10.94 12l-1.72 1.72a.75.75 0 1 0 1.06 1.06L12 13.06l1.72 1.72a.75.75 0 1 0 1.06-1.06L13.06 12l1.72-1.72a.75.75 0 1 0-1.06-1.06L12 10.94l-1.72-1.72Z\"\n clipRule=\"evenodd\"\n />\n </svg>\n )}\n\n <span className=\"truncate max-w-[150px]\">{name}</span>\n </Button>\n );\n}\n","import { useContext, useRef, useState } from 'react';\n\nimport { Button } from '@/components/ui/button';\n\nimport { cn } from '@/lib/utils';\n\nimport { TraceContext } from './context/trace-context';\nimport type { SpanNode } from './types';\nimport { formatDuration } from './utils';\n\nexport function TreeNode({ node, depth = 0 }: { node: SpanNode; depth?: number }) {\n const [isExpanded, setIsExpanded] = useState(true);\n const hasChildren = node.children && node.children.length > 0;\n const { setOpenDetail, setSpan, openDetail, span } = useContext(TraceContext);\n\n const containerRef = useRef<HTMLDivElement>(null);\n\n const widthPercentage = Math.min(node.relativePercentage ? node?.relativePercentage * 100 : 0, 100);\n\n return (\n <div ref={containerRef}>\n <Button\n variant={'ghost'}\n className={cn('relative flex w-full items-center justify-start gap-2 py-3 pr-1 text-sm', {\n 'text-accent-foreground bg-accent': span?.id === node.id,\n })}\n onClick={e => {\n e.preventDefault();\n e.stopPropagation();\n setSpan(node);\n if (openDetail && node.id !== span?.id) return;\n setOpenDetail(true);\n }}\n style={{ paddingLeft: `${depth > 0 ? depth * 35 + 28 - depth * 3 : 24}px` }}\n >\n {hasChildren ? (\n <div\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"relative grid h-auto flex-shrink-0 place-items-center rounded-sm bg-mastra-bg-3 p-2\"\n >\n <svg\n className={cn('!h-2 !w-2 transition-transform', isExpanded ? '' : '-rotate-90')}\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"7\"\n height=\"6\"\n viewBox=\"0 0 7 6\"\n fill=\"none\"\n >\n <path\n d=\"M3.9338 5.5C3.74135 5.83333 3.26022 5.83333 3.06777 5.5L0.469694 0.999999C0.277244 0.666666 0.517814 0.25 0.902714 0.25L6.09886 0.25C6.48376 0.25 6.72433 0.666666 6.53188 1L3.9338 5.5Z\"\n fill=\"#939393\"\n />\n </svg>\n </div>\n ) : null}\n <div className=\"flex w-full gap-4 pr-4\">\n <p\n className={cn('max-w-[250px] text-sm', {\n 'text-white': node?.status?.code === 0,\n 'text-[#FF4500]': node?.status?.code !== 0,\n 'px-1': depth === 0,\n truncate:\n containerRef.current?.offsetWidth &&\n containerRef.current?.offsetWidth < 450 &&\n depth > 1 &&\n node.name?.length > 16,\n })}\n >\n {node.name}\n </p>\n\n {node.duration > 0 && (\n <div className=\"relative w-full\">\n <div className=\"absolute top-[11px] h-px w-full bg-[hsl(220,14%,19%)]\" />\n <div\n style={{\n width: `${widthPercentage}%`,\n left: 0,\n }}\n className={cn(\n 'absolute top-[9px] z-0 h-[5px] rounded-[5px] bg-white transition-all',\n node.name.includes('agent') && 'left-1/2 bg-green-500',\n node.name.includes('llm') && 'bg-[#5699A8]',\n node.name.includes('ai') && 'left-2/4 w-5 bg-[#F09A56]',\n )}\n ></div>\n <span className=\"absolute left-0 top-3 text-[0.63rem] text-mastra-el-3\">\n {formatDuration(node.duration)}ms\n </span>\n </div>\n )}\n </div>\n </Button>\n\n {hasChildren && isExpanded && (\n <>\n {node.children.map(child => (\n <TreeNode key={child.id} node={child} depth={depth + 1} />\n ))}\n </>\n )}\n </div>\n );\n}\n","import { TreeNode } from './trace-tree-view';\nimport type { Span, SpanNode } from './types';\n\nexport function TreeView({ tree }: { tree: SpanNode[] }) {\n return (\n <ul>\n {tree.map(node => (\n <TreeNode key={node.id} node={node} />\n ))}\n </ul>\n );\n}\n\nfunction buildTree(items: Span[], parentSpanId: string | null = null): SpanNode[] {\n return items\n .filter(item => item.parentSpanId === parentSpanId)\n .map(item => ({\n ...item,\n children: buildTree(items, item.id),\n }));\n}\n\nexport default function SpanView({ trace }: { trace: Span[] }) {\n // SQL query sorts by startTime in descending order, so we need to reverse and copy the array for spans to show in correct order\n const tree = buildTree(trace.concat([])!.reverse());\n\n return (\n <div>\n <TreeView tree={tree} />\n </div>\n );\n}\n","import { ChevronDown, XIcon } from 'lucide-react';\nimport { useContext } from 'react';\n\nimport { Button } from '@/components/ui/button';\n\nimport { TraceContext } from './context/trace-context';\nimport SpanView from './trace-span-view';\n\nexport function TraceDetails() {\n const { trace, currentTraceIndex, prevTrace, nextTrace, traces, clearData } = useContext(TraceContext);\n\n return (\n <div>\n <div className=\"flex items-center justify-between px-6 pt-[1.56rem]\">\n <div className=\"flex items-center gap-2\">\n <h3 className=\"text-[1.125rem]\">Trace Span{trace?.length && trace.length > 1 ? 's' : ''}</h3>\n <span className=\"text-xs text-mastra-el-3\">\n {trace?.length ? trace.length : 0} span{trace?.length && trace.length > 1 ? 's' : ''}\n </span>\n </div>\n <div className=\"flex items-center gap-4\">\n <div className=\"flex items-center gap-2\">\n <Button\n onClick={() => {\n prevTrace();\n }}\n disabled={currentTraceIndex === 0}\n variant={'secondary'}\n size={'icon'}\n className=\"!h-3 !w-3 rotate-180 !px-3 py-3 text-mastra-el-3 transition-colors hover:text-white\"\n >\n <ChevronDown />\n </Button>{' '}\n <Button\n onClick={() => {\n nextTrace();\n }}\n disabled={currentTraceIndex === traces.length - 1}\n variant={'secondary'}\n size={'icon'}\n className=\"!h-3 !w-3 !px-3 py-3 text-mastra-el-3 transition-colors hover:text-white\"\n >\n <ChevronDown />\n </Button>\n </div>\n <span className=\"bg-secondary inline-block h-5 w-px\"></span>\n <Button\n onClick={() => {\n clearData();\n }}\n variant={'secondary'}\n size={'icon'}\n className=\"!h-3 !w-3 !px-3 py-3 text-mastra-el-3 transition-colors hover:text-white\"\n >\n <XIcon />\n </Button>\n </div>\n </div>\n <div className=\"p-6 px-1\"> {trace && <SpanView trace={trace} />}</div>\n </div>\n );\n}\n","import { jsonLanguage } from '@codemirror/lang-json';\nimport { tags as t } from '@lezer/highlight';\nimport { githubDarkInit } from '@uiw/codemirror-theme-github';\nimport CodeMirror from '@uiw/react-codemirror';\nimport { useMemo } from 'react';\n\nexport const useCodemirrorTheme = () => {\n return useMemo(\n () =>\n githubDarkInit({\n settings: {\n fontFamily: 'var(--commit-mono)',\n fontSize: '0.8rem',\n foreground: '#030712',\n background: '#1a1a1a',\n gutterBackground: '#1a1a1a',\n gutterForeground: '#94A3B8',\n gutterBorder: '#1a1a1a',\n lineHighlight: 'transparent',\n },\n styles: [{ tag: [t.className, t.propertyName], color: '#22c5ee' }],\n }),\n [],\n );\n};\n\nexport const SyntaxHighlighter = ({ data }: { data: Record<string, unknown> }) => {\n const formattedCode = JSON.stringify(data, null, 2);\n const theme = useCodemirrorTheme();\n\n return (\n <div className=\"rounded-md bg-[#1a1a1a] p-1 font-mono\">\n <CodeMirror value={formattedCode} theme={theme} extensions={[jsonLanguage]} />\n </div>\n );\n};\n","import { useContext } from 'react';\n\nimport { SyntaxHighlighter } from '@/components/syntax-highlighter';\n\nimport { cn } from '@/lib/utils';\n\nimport { TraceContext } from './context/trace-context';\nimport type { Span } from './types';\nimport {\n allowedAiSpanAttributes,\n cleanString,\n formatDuration,\n formatOtelTimestamp,\n formatOtelTimestamp2,\n transformKey,\n} from './utils';\n\nexport function SpanDetail() {\n const { span } = useContext(TraceContext);\n\n const isAiSpan = span?.name?.startsWith('ai.');\n\n const aiSpanAttributes = Object.entries(span?.attributes || {})\n .filter(([key]) => allowedAiSpanAttributes.includes(key))\n .reduce((acc, [key, value]) => {\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n\n return (\n <div className=\"flex flex-col gap-6 pb-20\">\n <div className=\"flex items-center gap-2 px-6 pt-[1.56rem]\">\n <span className=\"rounded bg-[#314431] p-0.5\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"21\" height=\"20\" viewBox=\"0 0 21 20\" fill=\"none\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.3726 2.10787C9.99493 1.48554 11.0066 1.48705 11.6274 2.10787L13.1306 3.61106C13.7529 4.23339 13.7514 5.24504 13.1306 5.86586L11.6274 7.36906C11.0051 7.99138 9.99342 7.98988 9.3726 7.36906L7.86941 5.86586C7.24708 5.24354 7.24858 4.23188 7.86941 3.61106L9.3726 2.10787ZM4.11141 7.36906C4.73374 6.74673 5.74539 6.74824 6.36621 7.36906L7.86941 8.87225C8.49173 9.49458 8.49023 10.5062 7.8694 11.127L6.36621 12.6302C5.74388 13.2526 4.73223 13.2511 4.11141 12.6302L2.60822 11.127C1.98589 10.5047 1.9874 9.49307 2.60822 8.87225L4.11141 7.36906ZM14.6338 7.36906C15.2561 6.74673 16.2678 6.74824 16.8886 7.36906L18.3918 8.87225C19.0141 9.49458 19.0126 10.5062 18.3918 11.127L16.8886 12.6302C16.2663 13.2526 15.2546 13.2511 14.6338 12.6302L13.1306 11.127C12.5083 10.5047 12.5098 9.49307 13.1306 8.87225L14.6338 7.36906ZM9.3726 12.6302C9.99493 12.0079 11.0066 12.0094 11.6274 12.6302L13.1306 14.1334C13.7529 14.7558 13.7514 15.7674 13.1306 16.3882L11.6274 17.8914C11.0051 18.5138 9.99342 18.5123 9.3726 17.8914L7.86941 16.3882C7.24708 15.7659 7.24859 14.7543 7.86941 14.1334L9.3726 12.6302Z\"\n fill=\"white\"\n />\n </svg>\n </span>\n <h3 className=\"text-[0.9rem] font-medium\">{span?.name}</h3>\n </div>\n <div className=\"grid grid-cols-3 gap-1 px-6\">\n <div className=\"flex flex-col gap-1\">\n <span className=\"text-xs text-mastra-el-3\">Duration</span>\n <span className=\"font-mono text-xs\"> {span?.duration ? formatDuration(span?.duration) : ''}ms</span>\n </div>\n <div className=\"flex flex-col gap-1\">\n <span className=\"text-xs text-mastra-el-3\">Time</span>\n <span className=\"font-mono text-xs\">{span?.startTime ? formatOtelTimestamp(span?.startTime) : ''}</span>\n </div>\n <div className=\"flex flex-col gap-1\">\n <span className=\"text-xs text-mastra-el-3\">Status</span>\n <span className={cn('font-mono text-xs', span?.status?.code == 0 ? 'text-[#6CD063]' : 'text-[#FF4500]')}>\n {span?.status?.code == 0 ? 'OK' : 'ERROR'}\n </span>\n </div>\n </div>\n {span?.status?.code !== 0 ? (\n <div className=\"border-t-[0.5px] px-6 pt-4\">{span && span?.events?.length > 0 && <Events span={span} />}</div>\n ) : null}\n <div className=\"border-t-[0.5px] px-6 pt-4\">\n {span && <Attributes span={{ ...span, attributes: isAiSpan ? aiSpanAttributes : span?.attributes }} />}\n </div>\n {span?.status?.code === 0 ? (\n <div className=\"border-t-[0.5px] px-6 pt-4\">{span && span?.events?.length > 0 && <Events span={span} />}</div>\n ) : null}\n </div>\n );\n}\n\nfunction Events({ span }: { span: Span }) {\n if (!span.events) return null;\n\n return (\n <div className=\"flex flex-col px-2\">\n <p className=\"text-lg\">Events</p>\n {span.events.map(event => {\n const eventAttributes = event?.attributes?.map(att => ({ [att?.key]: att?.value }));\n return (\n <div\n key={event.name}\n className={cn('flex flex-col gap-2 border-b-[0.5px] last:border-b-0 pt-4 pb-2 first:pb-4')}\n >\n <p className=\"text-xs text-mastra-el-3\">Name</p>\n <p className=\"font-mono text-xs\">{event.name}</p>\n <p className=\"text-xs text-mastra-el-3\">Time</p>\n <p className=\"font-mono text-xs\">\n {event.timeUnixNano ? formatOtelTimestamp2(Number(event.timeUnixNano)) : ''}\n </p>\n {event.attributes?.length > 0 ? <AttributesValues attributes={eventAttributes} /> : null}\n </div>\n );\n })}\n </div>\n );\n}\n\nfunction Attributes({ span }: { span: Span }) {\n if (!span.attributes) return null;\n\n return <AttributesValues attributes={span.attributes} />;\n}\n\nfunction AttributesValues({\n attributes,\n depth = 0,\n keyName,\n}: {\n attributes: unknown;\n depth?: number;\n keyName?: string | string[];\n}) {\n if (attributes === null) return null;\n if (attributes === undefined) return null;\n\n if (typeof attributes === 'string') {\n try {\n const attr = JSON.parse(attributes);\n\n if (typeof attr === 'object' || Array.isArray(attr)) {\n return <SyntaxHighlighter data={attr} />;\n }\n } catch {\n const val = attributes ? cleanString(attributes.toString()) : 'N/A';\n if (keyName === 'Input' && val === '[Not Serializable]') {\n return <span className=\"text-sm overflow-x-scroll\">No input</span>;\n }\n return (\n <span className=\"text-sm overflow-x-scroll\">{attributes ? cleanString(attributes.toString()) : 'N/A'}</span>\n );\n }\n }\n\n const processedValue = attributes;\n\n if (Array.isArray(processedValue)) {\n if (processedValue.length === 0) return null;\n return (\n <div className=\"relative\">\n <div className=\"mt-1 gap-3\">\n {processedValue.map((item, index) => (\n <div key={index} className=\"flex flex-col gap-1\">\n <AttributesValues key={index} attributes={item} depth={depth + 1} />\n </div>\n ))}\n </div>\n </div>\n );\n }\n\n if (typeof processedValue === 'object') {\n const entries = Object.entries(processedValue);\n if (entries.length === 0) return null;\n\n return (\n <div className=\"relative\">\n <div className=\"mt-1\">\n {entries.map(([key, val]) => (\n <div key={key} className=\"flex flex-col gap-2 p-2 pl-0\">\n <span className=\"text-sm capitalize text-mastra-el-3\">{transformKey(key)}</span>\n <AttributesValues attributes={val} depth={depth + 1} keyName={transformKey(key)} />\n </div>\n ))}\n </div>\n </div>\n );\n }\n\n if (typeof processedValue === 'boolean')\n return <span className=\"font-mono text-sm\">{processedValue.toString() || 'N/A'}</span>;\n if (typeof processedValue === 'number') return <span className=\"font-mono text-sm\">{processedValue.toString()}</span>;\n if (typeof processedValue === 'string')\n return <span className=\"font-mono text-sm\">{processedValue ? cleanString(processedValue.toString()) : 'N/A'}</span>;\n\n return <span className=\"text-gray-400\">{String(processedValue)}</span>;\n}\n","import { useCallback, useEffect, useRef, useState } from 'react';\n\nexport interface PollingOptions<TData, TError = Error> {\n /** Async function that fetches the data */\n fetchFn: () => Promise<TData>;\n /** Polling interval in milliseconds */\n interval?: number;\n /** Whether polling is enabled initially */\n enabled?: boolean;\n /** Callback function called with new data */\n onSuccess?: (data: TData) => void;\n /** Callback function called on error */\n onError?: (error: TError) => void;\n /** Function to determine if polling should continue */\n shouldContinue?: (data: TData) => boolean;\n /** Restarts the polling when true */\n restartPolling?: boolean;\n}\n\nexport interface PollingResult<TData, TError> {\n /** Current polling status */\n isPolling: boolean;\n /** Loading state for current request */\n isLoading: boolean;\n /** Loading state for first call */\n firstCallLoading: boolean;\n /** Current error state */\n error: TError | null;\n /** Latest data received */\n data: TData | null;\n /** Function to start polling */\n startPolling: () => void;\n /** Function to stop polling */\n stopPolling: () => void;\n\n /** Refetch the data on demand with/without polling. default is false */\n refetch: (withPolling?: boolean) => void;\n}\n\nexport function usePolling<TData, TError = Error>({\n fetchFn,\n interval = 3000,\n enabled = false,\n onSuccess,\n onError,\n shouldContinue = () => true,\n restartPolling = false,\n}: PollingOptions<TData, TError>): PollingResult<TData, TError> {\n const [isPolling, setIsPolling] = useState(enabled);\n const [error, setError] = useState<TError | null>(null);\n const [data, setData] = useState<TData | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [firstCallLoading, setFirstCallLoading] = useState(false);\n const timeoutRef = useRef<NodeJS.Timeout | null>(null);\n const mountedRef = useRef(true);\n const [restart, setRestart] = useState(restartPolling);\n\n const cleanup = useCallback(() => {\n console.log('cleanup');\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n }, []);\n\n const stopPolling = useCallback(() => {\n console.log('stopPolling');\n setIsPolling(false);\n cleanup();\n }, [cleanup]);\n\n const startPolling = useCallback(() => {\n console.log('startPolling');\n setIsPolling(true);\n setError(null);\n }, []);\n\n const executePoll = useCallback(\n async (refetch: boolean = true) => {\n // Check if component is still mounted\n if (!mountedRef.current) return;\n setIsLoading(true);\n\n try {\n const result = await fetchFn();\n\n setData(result);\n setError(null);\n onSuccess?.(result);\n\n // Check if we should continue polling\n if (shouldContinue(result) && refetch) {\n timeoutRef.current = setTimeout(executePoll, interval);\n } else {\n stopPolling();\n }\n } catch (err) {\n if (!mountedRef.current) return;\n setError(err as TError);\n onError?.(err as TError);\n stopPolling();\n } finally {\n if (mountedRef.current) {\n setFirstCallLoading(false);\n setIsLoading(false);\n }\n }\n },\n [fetchFn, interval, onSuccess, onError, shouldContinue, stopPolling],\n );\n\n const refetch = useCallback(\n (withPolling: boolean = false) => {\n console.log('refetch', { withPolling });\n if (withPolling) {\n setIsPolling(true);\n } else {\n executePoll(false);\n }\n setError(null);\n },\n [executePoll],\n );\n\n useEffect(() => {\n mountedRef.current = true;\n\n if (enabled && isPolling) {\n executePoll(true);\n }\n\n return () => {\n console.log('cleanup poll');\n mountedRef.current = false;\n cleanup();\n };\n }, [enabled, isPolling, executePoll, cleanup]);\n\n useEffect(() => {\n setRestart(restartPolling);\n }, [restartPolling]);\n\n useEffect(() => {\n if (restart && !isPolling) {\n setIsPolling(true);\n executePoll();\n setRestart(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [restart]);\n\n return {\n isPolling,\n isLoading,\n error,\n data,\n startPolling,\n stopPolling,\n firstCallLoading,\n refetch,\n };\n}\n\nexport default usePolling;\n","import { useCallback, useContext, useMemo, useState } from 'react';\nimport { toast } from 'sonner';\n\nimport usePolling from '@/lib/polls';\nimport { MastraClient } from '@mastra/client-js';\n\nimport type { RefinedTrace } from '@/domains/traces/types';\nimport { refineTraces } from '@/domains/traces/utils';\nimport { TraceContext } from '@/domains/traces/context/trace-context';\n\nexport const useTraces = (componentName: string, baseUrl: string, isWorkflow: boolean = false) => {\n const [traces, setTraces] = useState<RefinedTrace[]>([]);\n\n const { setTraces: setTraceContextTraces } = useContext(TraceContext);\n\n // Memoize the client instance\n const client = useMemo(\n () =>\n new MastraClient({\n baseUrl: baseUrl || '',\n }),\n [baseUrl],\n );\n\n const fetchFn = useCallback(async () => {\n try {\n const res = await client.getTelemetry({\n attribute: {\n componentName,\n },\n });\n if (!res.traces) {\n throw new Error('Error fetching traces');\n }\n const refinedTraces = refineTraces(res?.traces || [], isWorkflow);\n return refinedTraces;\n } catch (error) {\n throw error;\n }\n }, [client, componentName, isWorkflow]);\n\n const onSuccess = useCallback(\n (newTraces: RefinedTrace[]) => {\n if (newTraces.length > 0) {\n setTraces(() => newTraces);\n setTraceContextTraces(() => newTraces);\n }\n },\n [setTraceContextTraces],\n );\n\n const onError = useCallback((error: { message: string }) => {\n toast.error(error.message);\n }, []);\n\n const shouldContinue = useCallback(() => {\n return true;\n }, []);\n\n const { firstCallLoading, error } = usePolling<RefinedTrace[], { message: string }>({\n fetchFn,\n interval: 3000,\n onSuccess,\n onError,\n shouldContinue,\n enabled: true,\n });\n\n return { traces, firstCallLoading, error };\n};\n","import { Braces } from 'lucide-react';\nimport { ReactNode, useContext, useState } from 'react';\n\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table';\n\nimport { cn } from '@/lib/utils';\n\nimport { MastraResizablePanel } from '@/domains/resizable-panel';\nimport { Traces } from '@/domains/traces';\nimport { TraceContext, TraceProvider } from '@/domains/traces/context/trace-context';\nimport { TraceDetails } from '@/domains/traces/trace-details';\nimport { SpanDetail } from '@/domains/traces/trace-span-details';\nimport { useTraces } from '@/hooks/use-traces';\n\nexport function AgentTraces({\n agentName,\n baseUrl,\n sidebarChild,\n}: {\n agentName: string;\n baseUrl: string;\n sidebarChild: ReactNode;\n}) {\n return (\n <TraceProvider>\n <AgentTracesInner agentName={agentName} baseUrl={baseUrl} sidebarChild={sidebarChild} />\n </TraceProvider>\n );\n}\nfunction AgentTracesInner({\n agentName,\n baseUrl,\n sidebarChild,\n}: {\n agentName: string;\n baseUrl: string;\n sidebarChild: ReactNode;\n}) {\n const { traces, error, firstCallLoading } = useTraces(agentName, baseUrl);\n const { isOpen: open } = useContext(TraceContext);\n\n if (firstCallLoading) {\n return (\n <main className=\"flex-1 relative overflow-hidden h-full\">\n <div className=\"h-full w-[calc(100%_-_325px)]\">\n <Table>\n <TableHeader className=\"sticky top-0 z-10 bg-[#0F0F0F]\">\n <TableRow className=\"border-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableHead className=\"text-mastra-el-3 h-10\">Trace</TableHead>\n <TableHead className=\"text-mastra-el-3 flex items-center gap-1 h-10\">\n <Braces className=\"h-3 w-3\" /> Trace Id\n </TableHead>\n <TableHead className=\"text-mastra-el-3 h-10\">Started</TableHead>\n <TableHead className=\"text-mastra-el-3 h-10\">Total Duration</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody className=\"border-b border-gray-6\">\n <TableRow className=\"border-b-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableCell>\n <Skeleton className=\"h-8 w-full\" />\n </TableCell>\n <TableCell>\n <Skeleton className=\"h-8 w-full\" />\n </TableCell>\n <TableCell>\n <Skeleton className=\"h-8 w-full\" />\n </TableCell>\n <TableCell>\n <Skeleton className=\"h-8 w-full\" />\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </div>\n <SidebarItems sidebarChild={sidebarChild} className=\"min-w-[325px]\" />\n </main>\n );\n }\n\n if (!traces || traces.length === 0) {\n return (\n <main className=\"flex-1 h-full relative overflow-hidden\">\n <div className=\"h-full w-[calc(100%_-_325px)]\">\n <Table>\n <TableHeader className=\"sticky top-0 z-10 bg-[#0F0F0F]\">\n <TableRow className=\"border-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableHead className=\"text-mastra-el-3 h-10\">Trace</TableHead>\n <TableHead className=\"text-mastra-el-3 flex items-center gap-1 h-10\">\n <Braces className=\"h-3 w-3\" /> Trace Id\n </TableHead>\n <TableHead className=\"text-mastra-el-3 h-10\">Started</TableHead>\n <TableHead className=\"text-mastra-el-3 h-10\">Total Duration</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody className=\"border-b border-gray-6\">\n <TableRow className=\"border-b-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableCell colSpan={4} className=\"h-24 text-center\">\n {error?.message || 'No traces found'}\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </div>\n <SidebarItems sidebarChild={sidebarChild} className=\"min-w-[325px]\" />\n </main>\n );\n }\n\n return (\n <main className=\"flex-1 h-full relative overflow-hidden\">\n <Traces traces={traces} />\n <SidebarItems sidebarChild={sidebarChild} className={cn(open ? 'grid grid-cols-2 w-[60%]' : 'min-w-[325px]')} />\n </main>\n );\n}\n\nfunction SidebarItems({ sidebarChild, className }: { sidebarChild: ReactNode; className?: string }) {\n const { openDetail, isOpen: open } = useContext(TraceContext);\n const [rightSidebarWidth, setRightSidebarWidth] = useState(40);\n\n return (\n <MastraResizablePanel\n className={cn(\n 'absolute right-0 top-0 h-full z-20 overflow-x-scroll border-l-[0.5px] bg-mastra-bg-1 bg-[#121212]',\n className,\n )}\n defaultWidth={open ? 60 : 20}\n minimumWidth={open ? 50 : 20}\n maximumWidth={open ? 90 : 60}\n >\n {open && (\n <div\n className=\"h-full overflow-x-scroll px-0 absolute left-0 top-0 min-w-[50%] bg-mastra-bg-1 bg-[#121212]\"\n style={{ width: `${100 - rightSidebarWidth}%` }}\n >\n <TraceDetails />\n </div>\n )}\n <MastraResizablePanel\n defaultWidth={50}\n minimumWidth={30}\n maximumWidth={80}\n className={cn('h-full overflow-y-hidden border-l-[0.5px] right-0 top-0 z-20 bg-mastra-bg-1 bg-[#121212]', {\n absolute: open,\n 'unset-position': !open,\n })}\n disabled={!open}\n setCurrentWidth={setRightSidebarWidth}\n >\n <div className=\"h-full overflow-y-scroll\">{!openDetail ? sidebarChild : <SpanDetail />}</div>\n </MastraResizablePanel>\n </MastraResizablePanel>\n );\n}\n","export const AgentIcon = ({ className }: { className?: string }) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"13\"\n height=\"13\"\n viewBox=\"0 0 13 13\"\n fill=\"none\"\n className={className}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.75 11.4875C9.50452 11.4875 11.7375 9.25452 11.7375 6.5C11.7375 3.74548 9.50452 1.5125 6.75 1.5125C3.99548 1.5125 1.7625 3.74548 1.7625 6.5C1.7625 9.25452 3.99548 11.4875 6.75 11.4875ZM6.75 12.625C10.1327 12.625 12.875 9.88274 12.875 6.5C12.875 3.11726 10.1327 0.375 6.75 0.375C3.36726 0.375 0.625 3.11726 0.625 6.5C0.625 9.88274 3.36726 12.625 6.75 12.625Z\"\n fill=\"currentColor\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M12.4851 8.45587C11.668 10.7366 9.4873 12.3682 6.92552 12.3682C6.88211 12.3682 6.83881 12.3677 6.79563 12.3668C6.20679 10.9554 5.94996 9.47004 6.16613 7.85695C6.24097 7.58925 6.34464 7.19828 6.32806 6.8443C6.32047 6.68231 6.14275 6.70194 6.09813 6.85785C6.04374 7.04794 5.96784 7.24722 5.87163 7.42336C5.76132 7.44142 5.62051 7.45405 5.44307 7.44362C4.88421 7.41074 4.47225 7.11911 4.38425 7.02482C4.22438 7.09725 4.21437 7.15094 4.20478 7.2023C4.19876 7.2346 4.1929 7.26597 4.15006 7.30052L4.1369 7.31126C4.0592 7.37515 4.0024 7.42185 3.82397 7.15106C3.66346 6.8363 3.54511 6.37667 4.02775 5.8823C4.31486 5.5882 4.88893 5.34805 4.97072 5.33548C4.97072 4.87028 5.33534 4.03169 6.37911 3.7382C7.48025 3.42859 8.75139 3.74318 9.48574 4.81665C9.94707 5.49103 9.99232 5.88068 10.0269 6.17804C10.0629 6.48794 10.0872 6.69759 10.5588 7.02482C10.6891 7.11521 10.8199 7.20344 10.9519 7.2924C11.4398 7.62134 11.9426 7.96033 12.4851 8.45587ZM6.72628 5.39078C6.90062 5.39078 7.04195 5.24945 7.04195 5.07511C7.04195 4.90077 6.90062 4.75944 6.72628 4.75944C6.55194 4.75944 6.41061 4.90077 6.41061 5.07511C6.41061 5.24945 6.55194 5.39078 6.72628 5.39078Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n","'use client';\n\nimport {\n ColumnDef,\n flexRender,\n getCoreRowModel,\n PaginationState,\n SortingState,\n useReactTable,\n} from '@tanstack/react-table';\nimport { useState } from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table';\n\nimport { PaginationResult } from '@/lib/pagination/types';\nimport { cn } from '@/lib/utils';\nimport { Skeleton } from './skeleton';\n\ninterface DataTableProps<TData, TValue> {\n /**\n * table title\n */\n title?: string | React.ReactNode;\n /**\n * table icon\n */\n icon?: React.ReactNode;\n /**\n * disable table border\n * @default false\n */\n withoutBorder?: boolean;\n /**\n * table columns\n */\n columns: ColumnDef<TData, TValue>[];\n /**\n * table data\n */\n data: TData[];\n /**\n * custom className for the table parent container\n */\n className?: string;\n\n pagination?: PaginationResult;\n /**\n * goto next page\n */\n gotoNextPage?: () => void;\n /**\n * goto previous page\n */\n gotoPreviousPage?: () => void;\n /**\n * table max height\n */\n maxHeight?: string;\n /**\n * disable table container radius\n * @default false\n */\n withoutRadius?: boolean;\n /**\n * disable flex container\n * @default false\n */\n disabledFlex?: boolean;\n\n /**\n * height of the table row when there are no results\n * @default '96px'\n */\n emptyStateHeight?: string;\n\n /**\n * get the row id\n */\n getRowId?: (row: TData) => string;\n\n /**\n * selected row id to use for row selection\n */\n selectedRowId?: string;\n\n /**\n * loading state\n */\n isLoading?: boolean;\n\n /**\n * text to display when there are no results\n */\n emptyText?: string;\n}\n\nexport const DataTable = <TData, TValue>({\n title,\n icon,\n withoutBorder = false,\n columns,\n data,\n className,\n pagination,\n gotoNextPage,\n gotoPreviousPage,\n maxHeight,\n withoutRadius = false,\n disabledFlex,\n emptyStateHeight,\n getRowId,\n selectedRowId,\n isLoading,\n emptyText,\n}: DataTableProps<TData, TValue>) => {\n const [sorting, setSorting] = useState<SortingState>([]);\n const [{ pageIndex, pageSize }, setPagination] = useState<PaginationState>({\n pageIndex: pagination ? Math.floor(pagination.offset / pagination.limit) : 0,\n pageSize: pagination?.limit ?? 10,\n });\n const [rowSelection, setRowSelection] = useState({});\n\n const table = useReactTable({\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n manualPagination: true,\n pageCount: pagination ? Math.ceil(pagination.total / pagination.limit) : -1,\n state: {\n sorting,\n pagination: {\n pageIndex,\n pageSize,\n },\n rowSelection,\n },\n getRowId,\n onPaginationChange: setPagination,\n onSortingChange: setSorting,\n enableRowSelection: true,\n enableMultiRowSelection: false,\n onRowSelectionChange: setRowSelection,\n });\n\n return (\n <div className={cn('flex flex-col', disabledFlex ? 'block' : '')}>\n <div className={cn('border', !withoutRadius && 'rounded-md', className)}>\n <Table>\n <TableHeader className=\"sticky top-0\">\n {table.getHeaderGroups().map(headerGroup => (\n <TableRow key={headerGroup.id} className={cn('z-50 bg-[#0f0f0f]', title && 'hover:bg-transparent')}>\n {icon && !title ? <TableHead className=\"w-9 rounded-tl-md\"></TableHead> : null}\n {title ? (\n <TableHead\n className={cn('px-0', !withoutRadius && 'rounded-tl-md rounded-tr-md')}\n colSpan={headerGroup.headers.length + (icon ? 1 : 0)}\n >\n {title}\n </TableHead>\n ) : (\n headerGroup.headers.map(header => {\n return (\n <TableHead\n className={cn(\n 'last:pr-3',\n !icon && 'first:pl-3',\n !withoutBorder && 'border-r last:border-r-0',\n !withoutRadius && 'last:rounded-tr-md',\n !withoutRadius && !icon && 'first:rounded-tl-md',\n )}\n key={header.id}\n >\n {header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext())}\n </TableHead>\n );\n })\n )}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {isLoading ? (\n <>\n {Array.from({ length: 5 }).map((_, index) => (\n <TableRow key={index} className=\"border-b-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableCell className=\"p-2\">\n <Skeleton className=\"h-8 w-full\" />\n </TableCell>\n <TableCell className=\"p-2\">\n <Skeleton className=\"h-8 w-full\" />\n </TableCell>\n <TableCell className=\"p-2\">\n <Skeleton className=\"h-8 w-full\" />\n </TableCell>\n </TableRow>\n ))}\n </>\n ) : table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map(row => (\n <TableRow key={row.id} data-state={(row.getIsSelected() || row.id === selectedRowId) && 'selected'}>\n {icon && <TableCell className=\"w-9 first:pl-3\">{icon}</TableCell>}\n {row.getVisibleCells().map(cell => (\n <TableCell\n className={cn(\n 'p-0 last:pr-3',\n !icon && 'first:pl-3',\n !withoutBorder && 'border-r last:border-r-0',\n )}\n key={cell.id}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell colSpan={columns.length} className={cn('h-24 text-center', emptyStateHeight)}>\n No {emptyText || 'results'}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n {pagination && (\n <div className=\"mt-4 flex items-center justify-between px-2\">\n <div className=\"text-muted-foreground text-sm\">\n Showing {pagination.offset + 1} to {Math.min(pagination.offset + data.length, pagination.total)} of{' '}\n {pagination.total} results\n </div>\n <div className=\"flex items-center space-x-6 lg:space-x-8\">\n <div className=\"flex items-center space-x-2\">\n <Button variant=\"outline\" size=\"sm\" onClick={gotoPreviousPage} disabled={!pagination.offset}>\n Previous\n </Button>\n <Button variant=\"outline\" size=\"sm\" onClick={gotoNextPage} disabled={!pagination.hasMore}>\n Next\n </Button>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n};\n","'use client';\n\nimport { AgentIcon } from '@/components/icons/agent-icon';\nimport { DataTable } from '@/components/ui/data-table';\nimport { ColumnDef } from '@tanstack/react-table';\n\nexport const AgentsTable = ({\n title,\n agentsList,\n columns,\n isLoading,\n}: {\n title?: React.ReactNode;\n agentsList: any[];\n columns: ColumnDef<any>[];\n isLoading?: boolean;\n}) => {\n return (\n <DataTable\n emptyText=\"Agents\"\n title={title}\n isLoading={isLoading}\n withoutBorder\n withoutRadius\n icon={<AgentIcon className=\"h-4 w-4\" />}\n columns={columns}\n data={agentsList}\n className=\"!border-t-0 border-[0.5px] border-x-0\"\n />\n );\n};\n","'use client';\n\nimport {\n useExternalStoreRuntime,\n ThreadMessageLike,\n AppendMessage,\n AssistantRuntimeProvider,\n} from '@assistant-ui/react';\nimport { processDataStream } from '@ai-sdk/ui-utils';\nimport { MastraClient } from '@mastra/client-js';\nimport { useState, ReactNode, useEffect } from 'react';\n\nimport { ChatProps } from '@/types';\n\nconst convertMessage = (message: ThreadMessageLike): ThreadMessageLike => {\n return message;\n};\n\nexport function MastraNetworkRuntimeProvider({\n children,\n agentId,\n initialMessages,\n memory,\n threadId,\n baseUrl,\n refreshThreadList,\n}: Readonly<{\n children: ReactNode;\n}> &\n ChatProps) {\n const [isRunning, setIsRunning] = useState(false);\n const [messages, setMessages] = useState<ThreadMessageLike[]>(initialMessages || []);\n const [currentThreadId, setCurrentThreadId] = useState<string | undefined>(threadId);\n\n useEffect(() => {\n if (messages.length === 0 || currentThreadId !== threadId) {\n if (initialMessages && threadId && memory) {\n setMessages(initialMessages);\n setCurrentThreadId(threadId);\n }\n }\n }, [initialMessages, threadId, memory, messages]);\n\n const mastra = new MastraClient({\n baseUrl: baseUrl || '',\n });\n\n console.log('MastraClient initialized');\n\n console.log(messages, '###');\n\n const network = mastra.getNetwork(agentId);\n\n const onNew = async (message: AppendMessage) => {\n if (message.content[0]?.type !== 'text') throw new Error('Only text messages are supported');\n\n const input = message.content[0].text;\n setMessages(currentConversation => [...currentConversation, { role: 'user', content: input }]);\n setIsRunning(true);\n\n try {\n const response = await network.stream({\n messages: [\n {\n role: 'user',\n content: input,\n },\n ],\n runId: agentId,\n ...(memory ? { threadId, resourceId: agentId } : {}),\n });\n\n if (!response.body) {\n throw new Error('No response body');\n }\n\n const parts = [];\n let content = '';\n let currentTextPart: { type: 'text'; text: string } | null = null;\n\n let assistantMessageAdded = false;\n\n function updater() {\n setMessages(currentConversation => {\n const message: ThreadMessageLike = {\n role: 'assistant',\n content: [{ type: 'text', text: content }],\n };\n\n if (!assistantMessageAdded) {\n assistantMessageAdded = true;\n return [...currentConversation, message];\n }\n return [...currentConversation.slice(0, -1), message];\n });\n }\n\n await processDataStream({\n stream: response.body,\n onTextPart(value) {\n if (currentTextPart == null) {\n currentTextPart = {\n type: 'text',\n text: value,\n };\n parts.push(currentTextPart);\n } else {\n currentTextPart.text += value;\n }\n content += value;\n updater();\n },\n async onToolCallPart(value) {\n console.log('Tool call received:', value);\n\n // Update the messages state\n setMessages(currentConversation => {\n // Get the last message (should be the assistant's message)\n const lastMessage = currentConversation[currentConversation.length - 1];\n\n // Only process if the last message is from the assistant\n if (lastMessage && lastMessage.role === 'assistant') {\n // Create a new message with the tool call part\n const updatedMessage: ThreadMessageLike = {\n ...lastMessage,\n content: Array.isArray(lastMessage.content)\n ? [\n ...lastMessage.content,\n {\n type: 'tool-call',\n toolCallId: value.toolCallId,\n toolName: value.toolName,\n args: value.args,\n },\n ]\n : [\n ...(typeof lastMessage.content === 'string' ? [{ type: 'text', text: lastMessage.content }] : []),\n {\n type: 'tool-call',\n toolCallId: value.toolCallId,\n toolName: value.toolName,\n args: value.args,\n },\n ],\n };\n\n // Replace the last message with the updated one\n return [...currentConversation.slice(0, -1), updatedMessage];\n }\n\n // If there's no assistant message yet, create one\n const newMessage: ThreadMessageLike = {\n role: 'assistant',\n content: [\n { type: 'text', text: content },\n {\n type: 'tool-call',\n toolCallId: value.toolCallId,\n toolName: value.toolName,\n args: value.args,\n },\n ],\n };\n return [...currentConversation, newMessage];\n });\n },\n async onToolResultPart(value: any) {\n console.log('Tool call result received:', value);\n\n // Update the messages state\n setMessages(currentConversation => {\n // Get the last message (should be the assistant's message)\n const lastMessage = currentConversation[currentConversation.length - 1];\n\n // Only process if the last message is from the assistant and has content array\n if (lastMessage && lastMessage.role === 'assistant' && Array.isArray(lastMessage.content)) {\n // Find the tool call content part that this result belongs to\n const updatedContent = lastMessage.content.map(part => {\n if (typeof part === 'object' && part.type === 'tool-call' && part.toolCallId === value.toolCallId) {\n return {\n ...part,\n result: value.result,\n };\n }\n return part;\n });\n\n // Create a new message with the updated content\n const updatedMessage: ThreadMessageLike = {\n ...lastMessage,\n content: updatedContent,\n };\n\n // Replace the last message with the updated one\n return [...currentConversation.slice(0, -1), updatedMessage];\n }\n\n return currentConversation;\n });\n },\n onErrorPart(error) {\n throw new Error(error);\n },\n });\n\n console.log(messages);\n\n setIsRunning(false);\n } catch (error) {\n console.error('Error occured in MastraRuntimeProvider', error);\n setIsRunning(false);\n }\n };\n\n const runtime = useExternalStoreRuntime<ThreadMessageLike>({\n isRunning,\n messages,\n convertMessage,\n onNew,\n });\n\n return <AssistantRuntimeProvider runtime={runtime}> {children} </AssistantRuntimeProvider>;\n}\n","import { useCallback, useRef, useState } from 'react';\nimport { toast } from 'sonner';\n\ntype UseCopyToClipboardProps = {\n text: string;\n copyMessage?: string;\n};\n\nexport function useCopyToClipboard({ text, copyMessage = 'Copied to clipboard!' }: UseCopyToClipboardProps) {\n const [isCopied, setIsCopied] = useState(false);\n const timeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n const handleCopy = useCallback(() => {\n navigator.clipboard\n .writeText(text)\n .then(() => {\n toast.success(copyMessage);\n setIsCopied(true);\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n timeoutRef.current = setTimeout(() => {\n setIsCopied(false);\n }, 2000);\n })\n .catch(() => {\n toast.error('Failed to copy to clipboard.');\n });\n }, [text, copyMessage]);\n\n return { isCopied, handleCopy };\n}\n","'use client';\n\nimport { Check, Copy } from 'lucide-react';\n\nimport { Button } from '../../components/ui/button';\nimport { useCopyToClipboard } from '../../hooks/use-copy-to-clipboard';\nimport { cn } from '../../lib/utils';\n\ntype CopyButtonProps = {\n content: string;\n copyMessage?: string;\n classname?: string;\n};\n\nexport function CopyButton({ content, copyMessage, classname }: CopyButtonProps) {\n const { isCopied, handleCopy } = useCopyToClipboard({\n text: content,\n copyMessage,\n });\n\n return (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className={cn('relative h-6 w-6', classname)}\n aria-label=\"Copy to clipboard\"\n onClick={handleCopy}\n >\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <Check className={cn('h-4 w-4 transition-transform ease-in-out', isCopied ? 'scale-100' : 'scale-0')} />\n </div>\n <Copy className={cn('h-4 w-4 transition-transform ease-in-out', isCopied ? 'scale-0' : 'scale-100')} />\n </Button>\n );\n}\n","import { jsonLanguage } from '@codemirror/lang-json';\nimport { tags as t } from '@lezer/highlight';\nimport { githubDarkInit } from '@uiw/codemirror-theme-github';\nimport CodeMirror from '@uiw/react-codemirror';\nimport { useMemo } from 'react';\n\nexport const useCodemirrorTheme = () => {\n return useMemo(\n () =>\n githubDarkInit({\n settings: {\n fontFamily: 'var(--commit-mono)',\n fontSize: '0.8rem',\n foreground: '#030712',\n background: '#1a1a1a',\n gutterBackground: '#1a1a1a',\n gutterForeground: '#94A3B8',\n gutterBorder: '#1a1a1a',\n lineHighlight: 'transparent',\n },\n styles: [{ tag: [t.className, t.propertyName], color: '#22c5ee' }],\n }),\n [],\n );\n};\n\nexport const SyntaxHighlighter = ({ data }: { data: Record<string, unknown> }) => {\n const formattedCode = JSON.stringify(data, null, 2);\n const theme = useCodemirrorTheme();\n\n return (\n <div className=\"rounded-md bg-[#1a1a1a] p-1 font-mono\">\n <CodeMirror value={formattedCode} theme={theme} extensions={[jsonLanguage]} />\n </div>\n );\n};\n\nexport async function highlight(code: string, language: string) {\n const { codeToTokens, bundledLanguages } = await import('shiki');\n\n if (!(language in bundledLanguages)) return null;\n\n const { tokens } = await codeToTokens(code, {\n lang: language as keyof typeof bundledLanguages,\n defaultColor: false,\n themes: {\n light: 'github-light',\n dark: 'github-dark',\n },\n });\n\n return tokens;\n}\n","import React, { Suspense, useState, useEffect } from 'react';\nimport Markdown from 'react-markdown';\nimport remarkGfm from 'remark-gfm';\nimport type { Components } from 'react-markdown';\n\nimport { CopyButton } from '../../components/ui/copy-button';\nimport { cn } from '../../lib/utils';\n\nimport { highlight } from './syntax-highlighter';\n\ninterface MarkdownRendererProps {\n children: string;\n}\n\nexport function MarkdownRenderer({ children }: MarkdownRendererProps) {\n const processedText = children.replace(/\\\\n/g, '\\n');\n\n return (\n <Markdown remarkPlugins={[remarkGfm]} components={COMPONENTS} className=\"space-y-3\">\n {processedText}\n </Markdown>\n );\n}\n\ninterface HighlightedPre extends React.HTMLAttributes<HTMLPreElement> {\n children: string;\n language: string;\n}\n\nconst HighlightedPre = React.memo(({ children, language, ...props }: HighlightedPre) => {\n const [tokens, setTokens] = useState<any[]>([]);\n\n useEffect(() => {\n highlight(children, language).then(tokens => {\n if (tokens) setTokens(tokens);\n });\n }, [children, language]);\n\n if (!tokens.length) {\n return <pre {...props}>{children}</pre>;\n }\n\n return (\n <pre {...props}>\n <code>\n {tokens.map((line, lineIndex) => (\n <>\n <span key={lineIndex}>\n {line.map((token: any, tokenIndex: number) => {\n const style = typeof token.htmlStyle === 'string' ? undefined : token.htmlStyle;\n\n return (\n <span\n key={tokenIndex}\n className=\"text-shiki-light bg-shiki-light-bg dark:text-shiki-dark dark:bg-shiki-dark-bg\"\n style={style}\n >\n {token.content}\n </span>\n );\n })}\n </span>\n {lineIndex !== tokens.length - 1 && '\\n'}\n </>\n ))}\n </code>\n </pre>\n );\n});\nHighlightedPre.displayName = 'HighlightedCode';\n\ninterface CodeBlockProps extends React.HTMLAttributes<HTMLPreElement> {\n children: React.ReactNode;\n className?: string;\n language: string;\n}\n\nconst CodeBlock = ({ children, className, language, ...restProps }: CodeBlockProps) => {\n const code = typeof children === 'string' ? children : childrenTakeAllStringContents(children);\n\n const preClass = cn(\n 'overflow-x-scroll rounded-md border bg-background/50 p-4 font-mono text-sm [scrollbar-width:none]',\n className,\n );\n\n return (\n <div className=\"group/code relative mb-4\">\n <Suspense\n fallback={\n <pre className={preClass} {...restProps}>\n {children}\n </pre>\n }\n >\n <HighlightedPre language={language} className={preClass}>\n {code}\n </HighlightedPre>\n </Suspense>\n\n <div className=\"invisible absolute right-2 top-2 flex space-x-1 rounded-lg p-1 opacity-0 transition-all duration-200 group-hover/code:visible group-hover/code:opacity-100\">\n <CopyButton content={code} copyMessage=\"Copied code to clipboard\" />\n </div>\n </div>\n );\n};\n\nfunction childrenTakeAllStringContents(element: any): string {\n if (typeof element === 'string') {\n return element;\n }\n\n if (element?.props?.children) {\n let children = element.props.children;\n\n if (Array.isArray(children)) {\n return children.map(child => childrenTakeAllStringContents(child)).join('');\n } else {\n return childrenTakeAllStringContents(children);\n }\n }\n\n return '';\n}\n\n// Create component wrappers with className\nconst COMPONENTS: Components = {\n h1: ({ children, ...props }) => (\n <h1 className=\"text-2xl font-semibold\" {...props}>\n {children}\n </h1>\n ),\n h2: ({ children, ...props }) => (\n <h2 className=\"font-semibold text-xl\" {...props}>\n {children}\n </h2>\n ),\n h3: ({ children, ...props }) => (\n <h3 className=\"font-semibold text-lg\" {...props}>\n {children}\n </h3>\n ),\n h4: ({ children, ...props }) => (\n <h4 className=\"font-semibold text-base\" {...props}>\n {children}\n </h4>\n ),\n h5: ({ children, ...props }) => (\n <h5 className=\"font-medium\" {...props}>\n {children}\n </h5>\n ),\n strong: ({ children, ...props }) => (\n <strong className=\"font-semibold\" {...props}>\n {children}\n </strong>\n ),\n a: ({ children, ...props }) => (\n <a className=\"underline underline-offset-2\" {...props}>\n {children}\n </a>\n ),\n blockquote: ({ children, ...props }) => (\n <blockquote className=\"border-l-2 border-primary pl-4\" {...props}>\n {children}\n </blockquote>\n ),\n code: ({ children, className, ...rest }: any) => {\n const match = /language-(\\w+)/.exec(className || '');\n return match ? (\n <CodeBlock className={className} language={match[1]} {...rest}>\n {children}\n </CodeBlock>\n ) : (\n <code\n className={cn(\n 'font-mono [:not(pre)>&]:rounded-md [:not(pre)>&]:bg-background/50 [:not(pre)>&]:px-1 [:not(pre)>&]:py-0.5',\n )}\n {...rest}\n >\n {children}\n </code>\n );\n },\n pre: ({ children }: any) => children,\n ol: ({ children, ...props }) => (\n <ol className=\"list-decimal space-y-2 pl-6\" {...props}>\n {children}\n </ol>\n ),\n ul: ({ children, ...props }) => (\n <ul className=\"list-disc space-y-2 pl-6\" {...props}>\n {children}\n </ul>\n ),\n li: ({ children, ...props }) => (\n <li className=\"my-1.5\" {...props}>\n {children}\n </li>\n ),\n table: ({ children, ...props }) => (\n <table className=\"w-full border-collapse overflow-y-auto rounded-md border border-foreground/20\" {...props}>\n {children}\n </table>\n ),\n th: ({ children, ...props }) => (\n <th\n className=\"border border-foreground/20 px-4 py-2 text-left font-bold [&[align=center]]:text-center [&[align=right]]:text-right\"\n {...props}\n >\n {children}\n </th>\n ),\n td: ({ children, ...props }) => (\n <td\n className=\"border border-foreground/20 px-4 py-2 text-left [&[align=center]]:text-center [&[align=right]]:text-right\"\n {...props}\n >\n {children}\n </td>\n ),\n tr: ({ children, ...props }) => (\n <tr className=\"m-0 border-t p-0 even:bg-muted\" {...props}>\n {children}\n </tr>\n ),\n p: ({ children, ...props }) => (\n <p className=\"whitespace-pre-wrap leading-relaxed\" {...props}>\n {children}\n </p>\n ),\n hr: ({ ...props }) => <hr className=\"border-foreground/20\" {...props} />,\n};\n\nexport default MarkdownRenderer;\n","import { MarkdownRenderer } from '../../components/ui/markdown-renderer';\nimport { ToolCallContentPartComponent } from '@assistant-ui/react';\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon, LoaderCircle, ExternalLinkIcon } from 'lucide-react';\nimport { useState } from 'react';\nimport { cn } from '@/lib/utils';\n\n// Define custom color classes with improved contrast\nconst purpleClasses = {\n bg: 'bg-[rgba(124,80,175,0.25)]',\n text: 'text-[rgb(180,140,230)]',\n hover: 'hover:text-[rgb(200,160,250)]',\n border: 'border-[rgba(124,80,175,0.5)]',\n};\n\n// Use a more generic type for the component to avoid TypeScript errors\nexport const ToolFallback: ToolCallContentPartComponent = props => {\n const { toolCallId, toolName, args, argsText, result, status } = props;\n const [expandedAgents, setExpandedAgents] = useState<Record<string, boolean>>({});\n\n // Handle case where args or args.actions is undefined\n const actions = args?.actions || [];\n\n // Skip rendering if no actions\n if (actions.length === 0) {\n return null;\n }\n\n const toggleAgent = (agentId: string) => {\n setExpandedAgents(prev => ({\n ...prev,\n [agentId]: !prev[agentId],\n }));\n };\n\n // Extract URLs from result for optional linking\n const extractUrls = (text: unknown): string[] => {\n if (typeof text !== 'string') return [];\n const urlRegex = /(https?:\\/\\/[^\\s]+)/g;\n return text.match(urlRegex) || [];\n };\n\n return (\n <div className=\"mb-4 w-full rounded-lg border border-gray-700 overflow-hidden shadow-md\">\n {actions.map((action: any, index: number) => {\n const agentId = `${toolCallId || 'tool'}-${action.agent}-${index}`;\n const isExpanded = expandedAgents[agentId] || false;\n const urls = result ? extractUrls(result) : [];\n\n return (\n <div key={agentId} className={`border-b border-gray-700 ${index === actions.length - 1 ? 'border-b-0' : ''}`}>\n <div\n className=\"flex items-center justify-between px-4 py-3 bg-gray-900 hover:bg-gray-800 cursor-pointer\"\n onClick={() => toggleAgent(agentId)}\n >\n <div className=\"flex items-center gap-3\">\n <div className={cn('flex h-6 w-6 items-center justify-center rounded-full', purpleClasses.bg)}>\n {status?.type === 'running' ? (\n <LoaderCircle className={cn('h-4 w-4 animate-spin', purpleClasses.text)} />\n ) : (\n <CheckIcon className={cn('h-4 w-4', purpleClasses.text)} />\n )}\n </div>\n <div>\n <p className=\"font-medium text-sm text-gray-100\">{action.agent?.replaceAll('_', ' ')}</p>\n </div>\n </div>\n <div className=\"flex items-center gap-2\">\n <span className={cn('text-xs px-2 py-1 rounded-full', purpleClasses.bg, purpleClasses.text)}>\n {status?.type === 'running' ? 'Processing...' : 'Complete'}\n </span>\n {isExpanded ? (\n <ChevronUpIcon className=\"h-4 w-4 text-gray-300\" />\n ) : (\n <ChevronDownIcon className=\"h-4 w-4 text-gray-300\" />\n )}\n </div>\n </div>\n\n {isExpanded && (\n <div className=\"px-4 py-3 bg-[#111]\">\n <div className=\"mb-3\">\n <p className=\"text-xs font-semibold text-gray-300 mb-1\">Query:</p>\n <div className=\"p-2 bg-gray-900 rounded border border-gray-700\">\n <p className=\"text-sm text-gray-200 whitespace-pre-wrap\">{action.input}</p>\n </div>\n </div>\n\n {result && (\n <div>\n <p className=\"text-xs font-semibold text-gray-300 mb-1\">Result:</p>\n <div className=\"p-2 bg-gray-900 rounded border border-gray-700 max-h-60 overflow-auto\">\n {typeof result === 'string' ? (\n <div className=\"text-sm text-gray-200\">\n <MarkdownRenderer>{result}</MarkdownRenderer>\n </div>\n ) : (\n <p className=\"text-sm text-gray-200 whitespace-pre-wrap\">{JSON.stringify(result, null, 2)}</p>\n )}\n </div>\n\n {urls.length > 0 && (\n <div className=\"mt-2\">\n <p className=\"text-xs font-semibold text-gray-300 mb-1\">Sources:</p>\n <div className=\"flex flex-wrap gap-2\">\n {urls.slice(0, 3).map((url, i) => (\n <a\n key={i}\n href={url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={cn(\n 'inline-flex items-center gap-1 text-xs hover:underline',\n purpleClasses.text,\n purpleClasses.hover,\n )}\n >\n <span>Source {i + 1}</span>\n <ExternalLinkIcon className=\"h-3 w-3\" />\n </a>\n ))}\n {urls.length > 3 && <span className=\"text-xs text-gray-400\">+{urls.length - 3} more</span>}\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n );\n })}\n </div>\n );\n};\n","import { Thread } from '@/components/assistant-ui/thread';\nimport { MastraNetworkRuntimeProvider } from '@/services/network-runtime-provider';\nimport { ChatProps } from '@/types';\nimport { ToolFallback } from './tool-fallback';\n\nexport const NetworkChat = ({ agentId, memory }: ChatProps) => {\n return (\n <MastraNetworkRuntimeProvider agentId={agentId} memory={memory}>\n <Thread memory={memory} ToolFallback={ToolFallback} />\n </MastraNetworkRuntimeProvider>\n );\n};\n","import { Braces } from 'lucide-react';\nimport { ReactNode, useContext, useState } from 'react';\n\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table';\n\nimport { cn } from '@/lib/utils';\n\nimport { Traces } from '@/domains/traces';\nimport { TraceContext, TraceProvider } from '@/domains/traces/context/trace-context';\nimport { TraceDetails } from '@/domains/traces/trace-details';\nimport { SpanDetail } from '@/domains/traces/trace-span-details';\nimport { useTraces } from '@/hooks/use-traces';\nimport { MastraResizablePanel } from '@/domains/resizable-panel';\n\nexport function WorkflowTraces({\n workflowName,\n baseUrl,\n sidebarChild,\n}: {\n workflowName: string;\n baseUrl: string;\n sidebarChild: ReactNode;\n}) {\n return (\n <TraceProvider>\n <WorkflowTracesInner workflowName={workflowName} baseUrl={baseUrl} sidebarChild={sidebarChild} />\n </TraceProvider>\n );\n}\n\nfunction WorkflowTracesInner({\n workflowName,\n baseUrl,\n sidebarChild,\n}: {\n workflowName: string;\n baseUrl: string;\n sidebarChild: ReactNode;\n}) {\n const { traces, error, firstCallLoading } = useTraces(workflowName, baseUrl, true);\n const { isOpen: open } = useContext(TraceContext);\n\n if (firstCallLoading) {\n return (\n <main className=\"flex-1 h-full relative overflow-hidden\">\n <div className=\"h-full w-[calc(100%_-_325px)]\">\n <Table>\n <TableHeader className=\"sticky top-0 z-10 bg-[#0F0F0F]\">\n <TableRow className=\"border-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableHead className=\"text-mastra-el-3 h-10\">Trace</TableHead>\n <TableHead className=\"text-mastra-el-3 flex items-center gap-1 h-10\">\n <Braces className=\"h-3 w-3\" /> Trace Id\n </TableHead>\n <TableHead className=\"text-mastra-el-3 h-10\">Started</TableHead>\n <TableHead className=\"text-mastra-el-3 h-10\">Total Duration</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody className=\"border-b border-gray-6\">\n <TableRow className=\"border-b-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableCell>\n <Skeleton className=\"h-8 w-full\" />\n </TableCell>\n <TableCell>\n <Skeleton className=\"h-8 w-full\" />\n </TableCell>\n <TableCell>\n <Skeleton className=\"h-8 w-full\" />\n </TableCell>\n <TableCell>\n <Skeleton className=\"h-8 w-full\" />\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </div>\n <SidebarItems sidebarChild={sidebarChild} className=\"min-w-[325px]\" />\n </main>\n );\n }\n\n if (!traces || traces.length === 0) {\n return (\n <main className=\"flex-1 h-full relative overflow-hidden\">\n <div className=\"h-full w-[calc(100%_-_325px)]\">\n <Table>\n <TableHeader className=\"sticky top-0 z-10 bg-[#0F0F0F]\">\n <TableRow className=\"border-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableHead className=\"text-mastra-el-3 h-10\">Trace</TableHead>\n <TableHead className=\"text-mastra-el-3 flex items-center gap-1 h-10\">\n <Braces className=\"h-3 w-3\" /> Trace Id\n </TableHead>\n <TableHead className=\"text-mastra-el-3 h-10\">Started</TableHead>\n <TableHead className=\"text-mastra-el-3 h-10\">Total Duration</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody className=\"border-b border-gray-6\">\n <TableRow className=\"border-b-gray-6 border-b-[0.1px] text-[0.8125rem]\">\n <TableCell colSpan={4} className=\"h-24 text-center\">\n {error?.message || 'No traces found'}\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </div>\n <SidebarItems sidebarChild={sidebarChild} className=\"min-w-[325px]\" />\n </main>\n );\n }\n\n return (\n <main className=\"flex-1 h-full relative overflow-hidden\">\n <Traces traces={traces} />\n <SidebarItems className={cn(open ? 'grid grid-cols-2 w-[60%]' : 'min-w-[325px]')} sidebarChild={sidebarChild} />\n </main>\n );\n}\n\nfunction SidebarItems({ sidebarChild, className }: { sidebarChild: ReactNode; className?: string }) {\n const { openDetail, isOpen: open } = useContext(TraceContext);\n const [rightSidebarWidth, setRightSidebarWidth] = useState(40);\n\n return (\n <MastraResizablePanel\n className={cn(\n 'absolute right-0 top-0 h-full z-20 overflow-x-scroll border-l-[0.5px] bg-mastra-bg-1 bg-[#121212]',\n className,\n )}\n defaultWidth={open ? 60 : 20}\n minimumWidth={open ? 50 : 20}\n maximumWidth={open ? 90 : 60}\n >\n {open && (\n <div\n className=\"h-full overflow-x-scroll px-0 absolute left-0 top-0 min-w-[50%] bg-mastra-bg-1 bg-[#121212]\"\n style={{ width: `${100 - rightSidebarWidth}%` }}\n >\n <TraceDetails />\n </div>\n )}\n <MastraResizablePanel\n defaultWidth={50}\n minimumWidth={30}\n maximumWidth={80}\n className={cn('h-full overflow-y-hidden border-l-[0.5px] right-0 top-0 z-20 bg-mastra-bg-1 bg-[#121212]', {\n absolute: open,\n 'unset-position': !open,\n })}\n disabled={!open}\n setCurrentWidth={setRightSidebarWidth}\n >\n <div className=\"h-full overflow-y-scroll\">{!openDetail ? sidebarChild : <SpanDetail />}</div>\n </MastraResizablePanel>\n </MastraResizablePanel>\n );\n}\n","import type { Workflow } from '@mastra/core/workflows';\nimport { useEffect, useState } from 'react';\nimport { toast } from 'sonner';\nimport { WorkflowRunResult, MastraClient } from '@mastra/client-js';\n\nexport const useWorkflow = (workflowId: string, baseUrl: string) => {\n const [workflow, setWorkflow] = useState<Workflow | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n\n const client = new MastraClient({\n baseUrl: baseUrl || '',\n });\n\n useEffect(() => {\n const fetchWorkflow = async () => {\n setIsLoading(true);\n try {\n if (!workflowId) {\n setWorkflow(null);\n setIsLoading(false);\n return;\n }\n const res = await client.getWorkflow(workflowId).details();\n if (!res) {\n setWorkflow(null);\n console.error('Error fetching workflow');\n toast.error('Error fetching workflow');\n return;\n }\n setWorkflow(res as Workflow);\n } catch (error) {\n setWorkflow(null);\n console.error('Error fetching workflow', error);\n toast.error('Error fetching workflow');\n } finally {\n setIsLoading(false);\n }\n };\n\n fetchWorkflow();\n }, [workflowId]);\n\n return { workflow, isLoading };\n};\n\nexport const useExecuteWorkflow = (baseUrl: string) => {\n const [isExecutingWorkflow, setIsExecutingWorkflow] = useState(false);\n\n const client = new MastraClient({\n baseUrl: baseUrl || '',\n });\n\n const executeWorkflow = async ({ workflowId, input }: { workflowId: string; input: any }) => {\n try {\n setIsExecutingWorkflow(true);\n const response = await client.getWorkflow(workflowId).execute(input || {});\n return response;\n } catch (error) {\n console.error('Error executing workflow:', error);\n throw error;\n } finally {\n setIsExecutingWorkflow(false);\n }\n };\n\n const createWorkflowRun = async ({ workflowId, prevRunId }: { workflowId: string; prevRunId?: string }) => {\n try {\n const workflow = client.getWorkflow(workflowId);\n const { runId: newRunId } = await workflow.createRun({ runId: prevRunId });\n return { runId: newRunId };\n } catch (error) {\n console.error('Error creating workflow run:', error);\n throw error;\n }\n };\n\n const startWorkflowRun = async ({ workflowId, runId, input }: { workflowId: string; runId: string; input: any }) => {\n try {\n const workflow = client.getWorkflow(workflowId);\n await workflow.start({ runId, triggerData: input || {} });\n } catch (error) {\n console.error('Error starting workflow run:', error);\n throw error;\n }\n };\n\n return { executeWorkflow, startWorkflowRun, createWorkflowRun, isExecutingWorkflow };\n};\n\nexport const useWatchWorkflow = (baseUrl: string) => {\n const [isWatchingWorkflow, setIsWatchingWorkflow] = useState(false);\n const [watchResult, setWatchResult] = useState<WorkflowRunResult | null>(null);\n\n const watchWorkflow = async ({ workflowId, runId }: { workflowId: string; runId: string }) => {\n try {\n setIsWatchingWorkflow(true);\n const client = new MastraClient({\n baseUrl,\n });\n\n const workflow = client.getWorkflow(workflowId);\n\n workflow.watch({ runId }, record => {\n setWatchResult(record);\n });\n } catch (error) {\n console.error('Error watching workflow:', error);\n\n throw error;\n } finally {\n setIsWatchingWorkflow(false);\n }\n };\n\n return { watchWorkflow, isWatchingWorkflow, watchResult };\n};\n\nexport const useResumeWorkflow = (baseUrl: string) => {\n const [isResumingWorkflow, setIsResumingWorkflow] = useState(false);\n\n const resumeWorkflow = async ({\n workflowId,\n stepId,\n runId,\n context,\n }: {\n workflowId: string;\n stepId: string;\n runId: string;\n context: any;\n }) => {\n try {\n setIsResumingWorkflow(true);\n const client = new MastraClient({\n baseUrl: baseUrl || '',\n });\n\n const response = await client.getWorkflow(workflowId).resume({ stepId, runId, context });\n\n return response;\n } catch (error) {\n console.error('Error resuming workflow:', error);\n throw error;\n } finally {\n setIsResumingWorkflow(false);\n }\n };\n\n return { resumeWorkflow, isResumingWorkflow };\n};\n","import Dagre from '@dagrejs/dagre';\nimport type { StepCondition } from '@mastra/core/workflows';\nimport type { Node, Edge } from '@xyflow/react';\nimport { MarkerType } from '@xyflow/react';\n\nexport type ConditionConditionType = 'if' | 'else' | 'when' | 'until' | 'while';\n\nexport type Condition =\n | {\n type: ConditionConditionType;\n ref: {\n step:\n | {\n id: string;\n }\n | 'trigger';\n path: string;\n };\n query: Record<string, any>;\n conj?: 'and' | 'or' | 'not';\n fnString?: never;\n }\n | {\n type: ConditionConditionType;\n fnString: string;\n ref?: never;\n query?: never;\n conj?: never;\n };\n\nexport const pathAlphabet = 'abcdefghijklmnopqrstuvwxyz'.toUpperCase().split('');\n\nexport function extractConditions(group: StepCondition<any, any>, type: ConditionConditionType) {\n let result: Condition[] = [];\n if (!group) return result;\n\n function recurse(group: StepCondition<any, any>, conj?: 'and' | 'or' | 'not') {\n if (typeof group === 'string') {\n result.push({ type, fnString: group });\n } else {\n const simpleCondition = Object.entries(group).find(([key]) => key.includes('.'));\n if (simpleCondition) {\n const [key, queryValue] = simpleCondition;\n const [stepId, ...pathParts] = key.split('.');\n const ref = {\n step: {\n id: stepId,\n },\n path: pathParts.join('.'),\n };\n result.push({\n type,\n ref,\n query: { [queryValue === true || queryValue === false ? 'is' : 'eq']: String(queryValue) },\n conj,\n });\n }\n if ('ref' in group) {\n const { ref, query } = group;\n result.push({ type, ref, query, conj });\n }\n if ('and' in group) {\n for (const subGroup of group.and) {\n recurse({ ...subGroup }, 'and');\n }\n }\n if ('or' in group) {\n for (const subGroup of group.or) {\n recurse({ ...subGroup }, 'or');\n }\n }\n if ('not' in group) {\n recurse({ ...group.not }, 'not');\n }\n }\n }\n\n recurse(group);\n return result.reverse();\n}\n\nconst getLayoutedElements = (nodes: Node[], edges: Edge[]) => {\n const g = new Dagre.graphlib.Graph().setDefaultEdgeLabel(() => ({}));\n g.setGraph({ rankdir: 'TB' });\n\n edges.forEach(edge => g.setEdge(edge.source, edge.target));\n nodes.forEach(node =>\n g.setNode(node.id, {\n ...node,\n width: node.measured?.width ?? 274,\n height: node.measured?.height ?? (node?.data?.isLarge ? 260 : 100),\n }),\n );\n\n Dagre.layout(g);\n\n return {\n nodes: nodes.map(node => {\n const position = g.node(node.id);\n // We are shifting the dagre node position (anchor=center center) to the top left\n // so it matches the React Flow node anchor point (top left).\n const x = position.x - (node.measured?.width ?? 274) / 2;\n const y = position.y - (node.measured?.height ?? (node?.data?.isLarge ? 260 : 100)) / 2;\n\n return { ...node, position: { x, y } };\n }),\n edges,\n };\n};\n\nconst defaultEdgeOptions = {\n animated: true,\n markerEnd: {\n type: MarkerType.ArrowClosed,\n width: 20,\n height: 20,\n color: '#8e8e8e',\n },\n};\n\nexport const contructNodesAndEdges = ({\n stepGraph,\n stepSubscriberGraph,\n}: {\n stepGraph: any;\n stepSubscriberGraph: any;\n}): { nodes: Node[]; edges: Edge[] } => {\n if (!stepGraph) {\n return { nodes: [], edges: [] };\n }\n const { initial, ...stepsList } = stepGraph;\n if (!initial.length) {\n return { nodes: [], edges: [] };\n }\n\n let nodes: Node[] = [];\n let edges: Edge[] = [];\n let allSteps: any[] = [];\n\n for (const [_index, _step] of initial.entries()) {\n const step = _step.step;\n const stepId = step.id;\n const steps = [_step, ...(stepsList?.[stepId] || [])]?.reduce((acc, step, i) => {\n let newStep = {\n ...step.step,\n label: step.step.id,\n originalId: step.step.id,\n type: 'default-node',\n id: nodes.some(node => node.id === step.step.id) ? `${step.step.id}-${i}` : step.step.id,\n };\n let conditionType: ConditionConditionType = 'when';\n if (step.config?.serializedWhen) {\n conditionType = step.step.id?.endsWith('_if') ? 'if' : step.step.id?.endsWith('_else') ? 'else' : 'when';\n const conditions = extractConditions(step.config.serializedWhen, conditionType);\n const conditionStep = {\n id: crypto.randomUUID(),\n conditions,\n type: 'condition-node',\n isLarge:\n (conditions?.length > 1 || conditions.some(({ fnString }) => !!fnString)) && conditionType !== 'else',\n };\n\n acc.push(conditionStep);\n }\n if (conditionType === 'if' || conditionType === 'else') {\n newStep = {\n ...newStep,\n label: conditionType === 'if' ? 'start if' : 'start else',\n };\n }\n newStep = {\n ...newStep,\n label: step.config?.loopLabel || newStep.label,\n };\n acc.push(newStep);\n return acc;\n }, []);\n\n allSteps = [...allSteps, ...steps];\n\n const newNodes = [...steps].map((step: any, index: number) => {\n const subscriberGraph = stepSubscriberGraph?.[step.id];\n return {\n id: step.id,\n position: { x: _index * 300, y: index * 100 },\n type: step.type,\n data: {\n conditions: step.conditions,\n label: step.label,\n description: step.description,\n withoutTopHandle: subscriberGraph?.[step.id] ? false : index === 0,\n withoutBottomHandle: subscriberGraph ? false : index === steps.length - 1,\n isLarge: step.isLarge,\n },\n };\n });\n\n nodes = [...nodes, ...newNodes];\n\n const edgeSteps = [...steps].slice(0, -1);\n\n const newEdges = edgeSteps.map((step: any, index: number) => ({\n id: `e${step.id}-${steps[index + 1].id}`,\n source: step.id,\n target: steps[index + 1].id,\n ...defaultEdgeOptions,\n }));\n\n edges = [...edges, ...newEdges];\n }\n\n if (!stepSubscriberGraph || !Object.keys(stepSubscriberGraph).length) {\n const { nodes: layoutedNodes, edges: layoutedEdges } = getLayoutedElements(nodes, edges);\n return { nodes: layoutedNodes, edges: layoutedEdges };\n }\n\n for (const [connectingStepId, stepInfoGraph] of Object.entries(stepSubscriberGraph)) {\n const { initial, ...stepsList } = stepInfoGraph as any;\n\n let untilOrWhileConditionId: string | undefined;\n const loopResultSteps: { id: string; loopType: string }[] = [];\n let finishedLoopStep: any | undefined;\n let otherLoopStep: any | undefined;\n\n if (initial.length) {\n for (const [_index, _step] of initial.entries()) {\n const step = _step.step;\n const stepId = step.id;\n const steps = [_step, ...(stepsList?.[stepId] || [])]?.reduce((acc, step, i) => {\n let newStep = {\n ...step.step,\n originalId: step.step.id,\n label: step.step.id,\n type: 'default-node',\n id: nodes.some(node => node.id === step.step.id) ? `${step.step.id}-${i}` : step.step.id,\n };\n let conditionType: ConditionConditionType = 'when';\n const isFinishedLoop = step.config?.loopLabel?.endsWith('loop finished');\n if (step.config?.serializedWhen && !isFinishedLoop) {\n conditionType = step.step.id?.endsWith('_if')\n ? 'if'\n : step.step.id?.endsWith('_else')\n ? 'else'\n : (step.config?.loopType ?? 'when');\n\n const conditions = extractConditions(step.config.serializedWhen, conditionType);\n const conditionStep = {\n id: crypto.randomUUID(),\n conditions,\n type: 'condition-node',\n isLarge:\n (conditions?.length > 1 || conditions.some(({ fnString }) => !!fnString)) && conditionType !== 'else',\n };\n if (conditionType === 'until' || conditionType === 'while') {\n untilOrWhileConditionId = conditionStep.id;\n }\n\n acc.push(conditionStep);\n }\n if (isFinishedLoop) {\n const loopResultStep = {\n id: crypto.randomUUID(),\n type: 'loop-result-node',\n loopType: 'finished',\n loopResult: step.config.loopType === 'until' ? true : false,\n };\n loopResultSteps.push(loopResultStep);\n acc.push(loopResultStep);\n }\n if (!isFinishedLoop && step.config?.loopType) {\n const loopResultStep = {\n id: crypto.randomUUID(),\n type: 'loop-result-node',\n loopType: step.config.loopType,\n loopResult: step.config.loopType === 'until' ? false : true,\n };\n loopResultSteps.push(loopResultStep);\n acc.push(loopResultStep);\n }\n if (conditionType === 'if' || conditionType === 'else') {\n newStep = {\n ...newStep,\n label: conditionType === 'if' ? 'start if' : 'start else',\n };\n }\n if (step.config.loopType) {\n if (isFinishedLoop) {\n finishedLoopStep = newStep;\n } else {\n otherLoopStep = newStep;\n }\n }\n newStep = {\n ...newStep,\n loopType: isFinishedLoop ? 'finished' : step.config.loopType,\n label: step.config?.loopLabel || newStep.label,\n };\n acc.push(newStep);\n return acc;\n }, []);\n\n let afterStep: any = [];\n let afterStepStepList = connectingStepId?.includes('&&') ? connectingStepId.split('&&') : [];\n if (connectingStepId?.includes('&&')) {\n afterStep = [\n {\n id: connectingStepId,\n label: connectingStepId,\n type: 'after-node',\n steps: afterStepStepList,\n },\n ];\n }\n\n const newNodes = [...steps, ...afterStep].map((step: any, index: number) => {\n const subscriberGraph = stepSubscriberGraph?.[step.id];\n const withBottomHandle = step.originalId === connectingStepId || subscriberGraph;\n return {\n id: step.id,\n position: { x: _index * 300 + 300, y: index * 100 + 100 },\n type: step.type,\n data: {\n conditions: step.conditions,\n label: step.label,\n description: step.description,\n result: step.loopResult,\n loopType: step.loopType,\n steps: step.steps,\n withoutBottomHandle: withBottomHandle ? false : index === steps.length - 1,\n isLarge: step.isLarge,\n },\n };\n });\n\n nodes = [...nodes, ...newNodes].map(node => ({\n ...node,\n data: {\n ...node.data,\n withoutBottomHandle: afterStepStepList.includes(node.id) ? false : node.data.withoutBottomHandle,\n },\n }));\n\n const edgeSteps = [...steps].slice(0, -1);\n\n const afterEdges = afterStepStepList.map((step: any) => ({\n id: `e${step}-${connectingStepId}`,\n source: step,\n target: connectingStepId,\n ...defaultEdgeOptions,\n }));\n\n const finishedLoopResult = loopResultSteps?.find(step => step.loopType === 'finished');\n\n const newEdges = edgeSteps\n .map((step: any, index: number) => ({\n id: `e${step.id}-${steps[index + 1].id}`,\n source: step.id,\n target: steps[index + 1].id,\n remove: finishedLoopResult?.id === steps[index + 1].id, //remove if target is a finished loop result\n ...defaultEdgeOptions,\n }))\n ?.filter((edge: any) => !edge.remove);\n\n const firstEdgeStep = steps[0];\n const lastEdgeStep = steps[steps.length - 1];\n\n const connectingEdge =\n connectingStepId === firstEdgeStep.id\n ? []\n : [\n {\n id: `e${connectingStepId}-${firstEdgeStep.id}`,\n source: connectingStepId,\n target: firstEdgeStep.id,\n remove: finishedLoopResult?.id === firstEdgeStep.id,\n ...defaultEdgeOptions,\n },\n ]?.filter((edge: any) => !edge.remove); //remove if target is a finished loop result\n\n const lastEdge =\n lastEdgeStep.originalId === connectingStepId\n ? [\n {\n id: `e${lastEdgeStep.id}-${connectingStepId}`,\n source: lastEdgeStep.id,\n target: connectingStepId,\n ...defaultEdgeOptions,\n },\n ]\n : [];\n\n edges = [...edges, ...afterEdges, ...connectingEdge, ...newEdges, ...lastEdge];\n\n allSteps = [...allSteps, ...steps];\n }\n if (untilOrWhileConditionId && loopResultSteps.length && finishedLoopStep && otherLoopStep) {\n const loopResultStepsEdges = loopResultSteps.map(step => ({\n id: `e${untilOrWhileConditionId}-${step.id}`,\n source: untilOrWhileConditionId!,\n target: step.id,\n ...defaultEdgeOptions,\n }));\n\n const finishedLoopResult = loopResultSteps?.find(res => res.loopType === 'finished');\n const otherLoopResult = loopResultSteps?.find(res => res.loopType !== 'finished');\n\n const otherLoopEdge = {\n id: `e${otherLoopResult?.id}-${otherLoopStep?.id}`,\n source: otherLoopResult?.id!,\n target: otherLoopStep.id!,\n ...defaultEdgeOptions,\n };\n\n const finishedLoopEdge = {\n id: `e${finishedLoopResult?.id}-${finishedLoopStep?.id}`,\n source: finishedLoopResult?.id!,\n target: finishedLoopStep.id!,\n ...defaultEdgeOptions,\n };\n\n edges = [...edges, ...loopResultStepsEdges, otherLoopEdge, finishedLoopEdge];\n }\n }\n }\n const { nodes: layoutedNodes, edges: layoutedEdges } = getLayoutedElements(nodes, edges);\n\n return { nodes: layoutedNodes, edges: layoutedEdges };\n};\n","import type { VariantProps } from 'class-variance-authority';\nimport { cva } from 'class-variance-authority';\nimport React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst textVariants = cva('block', {\n variants: {\n variant: {\n primary: 'text-text',\n secondary: 'text-text-dim',\n },\n size: {\n default: 'text-base',\n xs: 'text-xs',\n sm: 'text-sm',\n md: 'text-md',\n lg: 'text-lg',\n xl: 'text-xl',\n '2xl': 'text-2xl',\n },\n weight: {\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold',\n },\n },\n defaultVariants: {\n variant: 'primary',\n size: 'default',\n weight: 'normal',\n },\n});\n\nexport interface TextProps\n extends React.HTMLAttributes<HTMLParagraphElement | HTMLSpanElement | HTMLDivElement>,\n VariantProps<typeof textVariants> {\n as?: 'p' | 'span' | 'div';\n}\n\nexport const Text = ({ className, weight, variant, as: Tag = 'span', size, ...props }: TextProps) => {\n return <Tag className={cn(textVariants({ size, variant, weight, className }))} {...props} />;\n};\n","import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';\n\nconst Collapsible = CollapsiblePrimitive.Root;\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n","import * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { X } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nconst Dialog = DialogPrimitive.Root;\n\nconst DialogTrigger = DialogPrimitive.Trigger;\n\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogClose = DialogPrimitive.Close;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n 'fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className,\n )}\n {...props}\n />\n));\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName;\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg',\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n));\nDialogContent.displayName = DialogPrimitive.Content.displayName;\n\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col space-y-1.5 text-center sm:text-left', className)} {...props} />\n);\nDialogHeader.displayName = 'DialogHeader';\n\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (\n <div className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)} {...props} />\n);\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn('text-lg font-semibold leading-none tracking-tight', className)}\n {...props}\n />\n));\nDialogTitle.displayName = DialogPrimitive.Title.displayName;\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description ref={ref} className={cn('text-sm text-muted-foreground', className)} {...props} />\n));\nDialogDescription.displayName = DialogPrimitive.Description.displayName;\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n};\n","import { Handle, Position } from '@xyflow/react';\nimport type { NodeProps, Node } from '@xyflow/react';\nimport { Fragment, useState } from 'react';\n\nimport { Text } from '@/components/ui/text';\n\nimport { cn } from '@/lib/utils';\n\nimport type { Condition } from './utils';\nimport { Highlight, themes } from 'prism-react-renderer';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/components/ui/collapsible';\nimport { ChevronDown } from 'lucide-react';\nimport { Dialog, DialogContent } from '@/components/ui/dialog';\nimport { ScrollArea } from '@/components/ui/scroll-area';\n\nexport type ConditionNode = Node<\n {\n conditions: Condition[];\n },\n 'condition-node'\n>;\n\nexport function WorkflowConditionNode({ data }: NodeProps<ConditionNode>) {\n const { conditions } = data;\n const [open, setOpen] = useState(true);\n const [openDialog, setOpenDialog] = useState(false);\n const type = conditions[0]?.type;\n const isCollapsible = (conditions.some(condition => condition.fnString) || conditions?.length > 1) && type !== 'else';\n\n return (\n <Collapsible\n open={!isCollapsible ? true : open}\n onOpenChange={_open => {\n if (isCollapsible) {\n setOpen(_open);\n }\n }}\n className={cn('bg-mastra-bg-3 rounded-md w-[274px] flex flex-col p-2 gap-2')}\n >\n <Handle type=\"target\" position={Position.Top} style={{ visibility: 'hidden' }} />\n\n <CollapsibleTrigger className=\"flex items-center justify-between w-full\">\n <Text\n size={'xs'}\n weight=\"medium\"\n className=\"text-mastra-el-3 bg-mastra-bg-11 my-auto block rounded-[0.125rem] px-2 py-1 text-[10px] w-fit\"\n >\n {type?.toUpperCase()}\n </Text>\n {isCollapsible && (\n <ChevronDown\n className={cn('w-4 h-4 transition-transform', {\n 'transform rotate-180': open,\n })}\n />\n )}\n </CollapsibleTrigger>\n {type === 'else' ? null : (\n <CollapsibleContent className=\"flex flex-col gap-2\">\n {conditions.map((condition, index) => {\n return condition.fnString ? (\n <Fragment key={`${condition.fnString}-${index}`}>\n <Highlight theme={themes.oneDark} code={String(condition.fnString).trim()} language=\"javascript\">\n {({ className, style, tokens, getLineProps, getTokenProps }) => (\n <pre\n className={`${className} relative font-mono text-sm overflow-x-auto p-3 w-full cursor-pointer rounded-lg mt-2`}\n style={{\n ...style,\n backgroundColor: 'transparent',\n border: '1px solid #343434',\n maxHeight: '9.62rem',\n }}\n onClick={() => setOpenDialog(true)}\n >\n {tokens.map((line, i) => (\n <div key={i} {...getLineProps({ line })}>\n <span className=\"inline-block mr-2 text-muted-foreground\">{i + 1}</span>\n {line.map((token, key) => (\n <span key={key} {...getTokenProps({ token })} />\n ))}\n </div>\n ))}\n </pre>\n )}\n </Highlight>\n\n <Dialog open={openDialog} onOpenChange={setOpenDialog}>\n <DialogContent className=\"max-w-[30rem] bg-[#121212] p-[0.5rem]\">\n <ScrollArea className=\"w-full p-2\" maxHeight=\"400px\">\n <Highlight theme={themes.oneDark} code={String(condition.fnString).trim()} language=\"javascript\">\n {({ className, style, tokens, getLineProps, getTokenProps }) => (\n <pre\n className={`${className} relative font-mono text-sm overflow-x-auto p-3 w-full rounded-lg mt-2 dark:bg-zinc-800`}\n style={{\n ...style,\n backgroundColor: '#121212',\n padding: '0 0.75rem 0 0',\n }}\n >\n {tokens.map((line, i) => (\n <div key={i} {...getLineProps({ line })}>\n <span className=\"inline-block mr-2 text-muted-foreground\">{i + 1}</span>\n {line.map((token, key) => (\n <span key={key} {...getTokenProps({ token })} />\n ))}\n </div>\n ))}\n </pre>\n )}\n </Highlight>\n </ScrollArea>\n </DialogContent>\n </Dialog>\n </Fragment>\n ) : (\n <Fragment key={`${condition.ref?.path}-${index}`}>\n {condition.ref?.step ? (\n <div className=\"flex items-center gap-1\">\n {index === 0 ? null : (\n <Text\n size={'xs'}\n weight=\"medium\"\n className=\"text-mastra-el-3 bg-mastra-bg-11 my-auto block rounded-[0.125rem] px-2 py-1 text-[10px]\"\n >\n {condition.conj?.toLocaleUpperCase() || 'WHEN'}\n </Text>\n )}\n\n <Text size={'xs'} className=\" text-mastra-el-3 flex-1\">\n {(condition.ref.step as any).id || condition.ref.step}'s {condition.ref.path}{' '}\n {Object.entries(condition.query).map(([key, value]) => `${key} ${String(value)}`)}\n </Text>\n </div>\n ) : null}\n </Fragment>\n );\n })}\n </CollapsibleContent>\n )}\n <Handle type=\"source\" position={Position.Bottom} style={{ visibility: 'hidden' }} />\n </Collapsible>\n );\n}\n","import { Handle, Position } from '@xyflow/react';\nimport type { NodeProps, Node } from '@xyflow/react';\nimport { Footprints } from 'lucide-react';\n\nimport { Text } from '@/components/ui/text';\n\nimport { cn } from '@/lib/utils';\n\nexport type DefaultNode = Node<\n {\n label: string;\n description?: string;\n withoutTopHandle?: boolean;\n withoutBottomHandle?: boolean;\n },\n 'default-node'\n>;\n\nexport function WorkflowDefaultNode({ data }: NodeProps<DefaultNode>) {\n const { label, description, withoutTopHandle, withoutBottomHandle } = data;\n return (\n <div className={cn('bg-mastra-bg-8 rounded-md w-[274px]')}>\n {!withoutTopHandle && <Handle type=\"target\" position={Position.Top} style={{ visibility: 'hidden' }} />}\n <div className=\"p-2\">\n <div className=\"text-sm bg-mastra-bg-9 flex items-center gap-[6px] rounded-sm p-2\">\n <Footprints className=\"text-current w-4 h-4\" />\n <Text size=\"xs\" weight=\"medium\" className=\"text-mastra-el-6 capitalize\">\n {label}\n </Text>\n </div>\n </div>\n {description && (\n <div className=\"bg-mastra-bg-4 rounded-b-md p-2 text-[10px] text-left text-mastra-el-4\">{description}</div>\n )}\n {!withoutBottomHandle && <Handle type=\"source\" position={Position.Bottom} style={{ visibility: 'hidden' }} />}\n </div>\n );\n}\n","import { Handle, Position } from '@xyflow/react';\nimport type { NodeProps, Node } from '@xyflow/react';\nimport { Fragment, useState } from 'react';\n\nimport { Text } from '@/components/ui/text';\n\nimport { cn } from '@/lib/utils';\n\nimport { Highlight, themes } from 'prism-react-renderer';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/components/ui/collapsible';\nimport { ChevronDown, Footprints } from 'lucide-react';\n\nexport type AfterNode = Node<\n {\n steps: string[];\n },\n 'after-node'\n>;\n\nexport function WorkflowAfterNode({ data }: NodeProps<AfterNode>) {\n const { steps } = data;\n const [open, setOpen] = useState(true);\n\n return (\n <Collapsible\n open={open}\n onOpenChange={setOpen}\n className={cn('bg-mastra-bg-3 rounded-md w-[274px] flex flex-col p-2 gap-2')}\n >\n <Handle type=\"target\" position={Position.Top} style={{ visibility: 'hidden' }} />\n\n <CollapsibleTrigger className=\"flex items-center justify-between w-full\">\n <Text\n size={'xs'}\n weight=\"medium\"\n className=\"text-mastra-el-3 bg-mastra-bg-11 my-auto block rounded-[0.125rem] px-2 py-1 text-[10px] w-fit\"\n >\n AFTER\n </Text>\n <ChevronDown\n className={cn('w-4 h-4 transition-transform', {\n 'transform rotate-180': open,\n })}\n />\n </CollapsibleTrigger>\n <CollapsibleContent className=\"flex flex-col gap-2\">\n {steps.map(step => (\n <div className=\"text-sm bg-mastra-bg-9 flex items-center gap-[6px] rounded-sm p-2\" key={step}>\n <Footprints className=\"text-current w-4 h-4\" />\n <Text size=\"xs\" weight=\"medium\" className=\"text-mastra-el-6 capitalize\">\n {step}\n </Text>\n </div>\n ))}\n </CollapsibleContent>\n <Handle type=\"source\" position={Position.Bottom} style={{ visibility: 'hidden' }} />\n </Collapsible>\n );\n}\n","import { Handle, Position } from '@xyflow/react';\nimport type { NodeProps, Node } from '@xyflow/react';\nimport { CircleCheck, CircleX } from 'lucide-react';\n\nimport { Text } from '@/components/ui/text';\n\nimport { cn } from '@/lib/utils';\n\nexport type LoopResultNode = Node<\n {\n result: boolean;\n },\n 'loop-result-node'\n>;\n\nexport function WorkflowLoopResultNode({ data }: NodeProps<LoopResultNode>) {\n const { result } = data;\n return (\n <div className={cn('bg-mastra-bg-8 rounded-md w-[274px]')}>\n <Handle type=\"target\" position={Position.Top} style={{ visibility: 'hidden' }} />\n <div className=\"p-2\">\n <div className=\"text-sm bg-mastra-bg-9 flex items-center gap-[6px] rounded-sm p-2\">\n {result ? <CircleCheck className=\"text-current w-4 h-4\" /> : <CircleX className=\"text-current w-4 h-4\" />}\n <Text size=\"xs\" weight=\"medium\" className=\"text-mastra-el-6 capitalize\">\n {String(result)}\n </Text>\n </div>\n </div>\n <Handle type=\"source\" position={Position.Bottom} style={{ visibility: 'hidden' }} />\n </div>\n );\n}\n","import type { Workflow } from '@mastra/core/workflows';\nimport {\n ReactFlow,\n MiniMap,\n Controls,\n Background,\n useNodesState,\n useEdgesState,\n BackgroundVariant,\n} from '@xyflow/react';\nimport '@xyflow/react/dist/style.css';\n\nimport { contructNodesAndEdges } from './utils';\nimport { WorkflowConditionNode } from './workflow-condition-node';\nimport { WorkflowDefaultNode } from './workflow-default-node';\nimport { WorkflowAfterNode } from './workflow-after-node';\nimport { WorkflowLoopResultNode } from './workflow-loop-result-node';\n\nexport function WorkflowGraphInner({ workflow }: { workflow: Workflow }) {\n const { nodes: initialNodes, edges: initialEdges } = contructNodesAndEdges({\n stepGraph: workflow.serializedStepGraph || workflow.stepGraph,\n stepSubscriberGraph: workflow.serializedStepSubscriberGraph || workflow.stepSubscriberGraph,\n });\n const [nodes, _, onNodesChange] = useNodesState(initialNodes);\n const [edges] = useEdgesState(initialEdges);\n\n const nodeTypes = {\n 'default-node': WorkflowDefaultNode,\n 'condition-node': WorkflowConditionNode,\n 'after-node': WorkflowAfterNode,\n 'loop-result-node': WorkflowLoopResultNode,\n };\n\n return (\n <div className=\"w-full h-full\">\n <ReactFlow\n nodes={nodes}\n edges={edges}\n nodeTypes={nodeTypes}\n onNodesChange={onNodesChange}\n fitView\n fitViewOptions={{\n maxZoom: 0.85,\n }}\n >\n <Controls />\n <MiniMap pannable zoomable maskColor=\"#121212\" bgColor=\"#171717\" nodeColor=\"#2c2c2c\" />\n <Background variant={BackgroundVariant.Dots} gap={12} size={0.5} />\n </ReactFlow>\n </div>\n );\n}\n","export const lodashTitleCase = (str: string): string => {\n // First convert to camel case (handles various separators like spaces, hyphens, underscores)\n const camelCased = str\n .replace(/[-_\\s]+(.)?/g, (_, char) => (char ? char.toUpperCase() : ''))\n .replace(/^(.)/, char => char.toLowerCase());\n\n // Then convert to start case (capitalize first letter of each word)\n return camelCased\n .replace(/([A-Z])/g, ' $1')\n .replace(/^./, str => str.toUpperCase())\n .trim();\n};\n\nexport const toTitleCase = (str: string, splitChar = ' ') => {\n return str\n .split(splitChar)\n .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join(' ');\n};\n","import { Skeleton } from '@/components/ui/skeleton';\n\nimport { useWorkflow } from '@/hooks/use-workflows';\n\nimport { WorkflowGraphInner } from './workflow-graph-inner';\nimport { lodashTitleCase } from '@/lib/string';\nimport { AlertCircleIcon } from 'lucide-react';\n\nexport function WorkflowGraph({ workflowId, baseUrl }: { workflowId: string; baseUrl: string }) {\n const { workflow, isLoading } = useWorkflow(workflowId, baseUrl);\n\n if (isLoading) {\n return (\n <div className=\"p-4\">\n <Skeleton className=\"h-[600px]\" />\n </div>\n );\n }\n\n if (!workflow) {\n return (\n <div className=\"grid h-full place-items-center\">\n <div className=\"flex flex-col items-center gap-2\">\n <AlertCircleIcon />\n <div>We couldn&apos;t find {lodashTitleCase(workflowId)} workflow.</div>\n </div>\n </div>\n );\n }\n\n return <WorkflowGraphInner workflow={workflow} />;\n}\n","export const AutomationIcon = ({ className }: { className?: string }) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"15\"\n height=\"15\"\n viewBox=\"0 0 15 15\"\n fill=\"none\"\n className={className}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M5.34375 1.52812C5.34375 1.14153 5.65715 0.828125 6.04375 0.828125H9.45625C9.84282 0.828125 10.1562 1.14153 10.1562 1.52812V3.84687C10.1562 4.23348 9.84282 4.54688 9.45625 4.54688H8.625V6.81161L9.35414 8.80852C9.24863 8.78166 9.13761 8.7546 9.0215 8.72661L8.95218 8.70993C8.60891 8.62742 8.20123 8.52943 7.8784 8.4013C7.83782 8.3852 7.79469 8.36718 7.75 8.3469C7.70531 8.36718 7.66218 8.3852 7.6216 8.4013C7.29877 8.52943 6.89109 8.62742 6.54782 8.70993L6.4785 8.72661C6.36239 8.7546 6.25137 8.78166 6.14583 8.80852L6.875 6.81161V4.54688H6.04375C5.65715 4.54688 5.34375 4.23348 5.34375 3.84687V1.52812ZM6.14583 8.80852C6.14583 8.80852 6.14584 8.80852 6.14583 8.80852L5.54531 10.4531H5.95625C6.34285 10.4531 6.65625 10.7666 6.65625 11.1531V13.4719C6.65625 13.8584 6.34285 14.1719 5.95625 14.1719H2.54375C2.15715 14.1719 1.84375 13.8584 1.84375 13.4719V11.1531C1.84375 10.7666 2.15715 10.4531 2.54375 10.4531H3.23402C3.26169 10.1309 3.29979 9.79285 3.35272 9.47531C3.41692 9.09013 3.51527 8.65353 3.68612 8.31182C3.95256 7.77895 4.49413 7.51868 4.84581 7.3804C5.24023 7.2253 5.69736 7.11478 6.06837 7.02535C6.4139 6.94205 6.67918 6.87786 6.875 6.81161L6.14583 8.80852ZM5.54531 10.4531L6.14583 8.80852C5.89267 8.87296 5.67101 8.93634 5.48623 9.00901C5.32663 9.07176 5.25672 9.11838 5.23318 9.13484C5.18762 9.24554 5.13062 9.45274 5.07891 9.76301C5.04306 9.97818 5.01422 10.2137 4.99122 10.4531H5.54531ZM9.35414 8.80852L8.625 6.81161C8.82082 6.87786 9.0861 6.94205 9.43166 7.02535C9.80266 7.11478 10.2598 7.2253 10.6542 7.3804C11.0059 7.51868 11.5474 7.77895 11.8138 8.31182C11.9847 8.65353 12.0831 9.09013 12.1473 9.47531C12.2002 9.79285 12.2383 10.1309 12.266 10.4531H12.9563C13.3428 10.4531 13.6562 10.7666 13.6562 11.1531V13.4719C13.6562 13.8584 13.3428 14.1719 12.9563 14.1719H9.54375C9.15715 14.1719 8.84375 13.8584 8.84375 13.4719V11.1531C8.84375 10.7666 9.15715 10.4531 9.54375 10.4531H9.95474L9.35414 8.80852ZM9.35414 8.80852L9.95474 10.4531H10.5088C10.4858 10.2137 10.457 9.97818 10.4211 9.76301C10.3694 9.45274 10.3124 9.24554 10.2668 9.13484C10.2433 9.11838 10.1734 9.07176 10.0138 9.00901C9.829 8.93634 9.60736 8.87296 9.35414 8.80852Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n","'use client';\n\nimport { AutomationIcon } from '@/components/icons/automation-icon';\nimport { DataTable } from '@/components/ui/data-table';\nimport { ColumnDef } from '@tanstack/react-table';\n\nexport const WorkflowsTable = ({\n title,\n workflowsList,\n columns,\n isLoading,\n}: {\n title?: React.ReactNode;\n workflowsList: any[];\n columns: ColumnDef<any>[];\n isLoading?: boolean;\n}) => {\n return (\n <DataTable\n emptyText=\"Workflows\"\n title={title}\n withoutBorder\n withoutRadius\n isLoading={isLoading}\n icon={<AutomationIcon className=\"h-4 w-4\" />}\n columns={columns}\n data={workflowsList}\n className=\"border-t-0' border-[0.5px] border-x-0\"\n />\n );\n};\n","import type { FieldErrors } from 'react-hook-form';\nimport { z } from 'zod';\n\nexport const transformToNestObject = (error: z.ZodError): FieldErrors => {\n const fieldErrors: FieldErrors = {};\n error.errors.forEach(err => {\n if (err.path.length > 0) {\n const path = err.path.join('.');\n fieldErrors[path] = {\n type: 'validation',\n message: err.message,\n };\n }\n });\n return fieldErrors;\n};\n\n/**\n * Resolve serialized zod output - This function takes the string output ot the `jsonSchemaToZod` function\n * and instantiates the zod object correctly.\n *\n * @param obj - serialized zod object\n * @returns resolved zod object\n */\nexport function resolveSerializedZodOutput(obj: any) {\n return Function('z', `\"use strict\";return (${obj});`)(z);\n}\n","import type { Resolver } from 'react-hook-form';\nimport { z } from 'zod';\n\nimport { transformToNestObject } from '../utils';\n\nexport const customZodUnionResolver = (schemaUnion: z.ZodTypeAny, discriminator: string): Resolver<any> => {\n return async values => {\n //get schema based on discriminator\n const schema =\n schemaUnion?._def?.options?.find(\n (option: any) => option?.shape?.[discriminator]?._def?.value === values[discriminator],\n ) || z.object({ [discriminator]: z.string() });\n\n // Filter out keys that are not in the schema\n const filteredValues = Object.fromEntries(Object.entries(values).filter(([key]) => (schema as any)?.shape?.[key]));\n\n const result = schema.safeParse(filteredValues);\n\n if (result.success) {\n return { values: result.data, errors: {} };\n } else {\n const errors = transformToNestObject(result.error);\n return { values: {}, errors };\n }\n };\n};\n","'use client';\n\nimport { Plus, X } from 'lucide-react';\nimport * as React from 'react';\nimport type { Control } from 'react-hook-form';\nimport { useFieldArray } from 'react-hook-form';\n\nimport { Button } from '../../ui/button';\n\ninterface ArrayFieldProps {\n name: string;\n control: Control<any>;\n renderField: (props: { fieldName: string; index: number }) => React.ReactNode;\n handleFieldChange?: (props: { key: string; value: any[] }) => void;\n isStringField?: boolean;\n}\n\nexport function ArrayField({ name, control, renderField, isStringField }: ArrayFieldProps) {\n const { fields, append, remove } = useFieldArray({\n control,\n name,\n });\n\n return (\n <div className=\"space-y-2 w-full\">\n {fields.map((field, index) => (\n <div key={field.id} className=\"relative w-full flex items-center gap-2\">\n {renderField({ fieldName: `${name}.${index}`, index })}\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"absolute -right-2 -top-2\"\n onClick={() => remove(index)}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n ))}\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n className=\"w-full\"\n onClick={() => append(isStringField ? { root: '' } : {})}\n >\n <Plus className=\"mr-2 h-4 w-4\" />\n Add Item\n </Button>\n </div>\n );\n}\n","'use client';\n\nimport * as SwitchPrimitives from '@radix-ui/react-switch';\nimport * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n 'peer inline-flex h-5 w-9 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent shadow-sm transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-mastra-bg-7 data-[state=unchecked]:bg-input',\n className,\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n 'pointer-events-none block h-4 w-4 rounded-full bg-white shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-4 data-[state=unchecked]:translate-x-0',\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n","'use client';\n\nimport type { Control } from 'react-hook-form';\nimport { Controller } from 'react-hook-form';\n\nimport { Switch } from '../../ui/switch';\n\ninterface BooleanFieldProps {\n name: string;\n control: Control<any>;\n handleFieldChange?: (props: { key: string; value: boolean }) => void;\n}\n\nexport function BooleanField({ name, control, handleFieldChange }: BooleanFieldProps) {\n return (\n <Controller\n name={name}\n control={control}\n render={({ field }) => (\n <Switch\n checked={field.value}\n onCheckedChange={checked => {\n field.onChange(checked);\n handleFieldChange?.({ key: name, value: checked });\n }}\n />\n )}\n />\n );\n}\n","'use client';\n\nimport { Command as CommandPrimitive } from 'cmdk';\nimport { Search } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n 'flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground',\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <Search className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n 'flex h-11 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n />\n </div>\n));\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn('max-h-[300px] overflow-y-auto overflow-x-hidden', className)}\n {...props}\n />\n));\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => <CommandPrimitive.Empty ref={ref} className=\"py-6 text-center text-sm\" {...props} />);\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n 'overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground',\n className,\n )}\n {...props}\n />\n));\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator ref={ref} className={cn('-mx-1 h-px bg-border', className)} {...props} />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n {...props}\n />\n));\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return <span className={cn('ml-auto text-xs tracking-widest text-muted-foreground', className)} {...props} />;\n};\nCommandShortcut.displayName = 'CommandShortcut';\n\nexport {\n Command,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n};\n","'use client';\n\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst Popover = PopoverPrimitive.Root;\n\nconst PopoverTrigger = PopoverPrimitive.Trigger;\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n className,\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n));\nPopoverContent.displayName = PopoverPrimitive.Content.displayName;\n\nexport { Popover, PopoverTrigger, PopoverContent };\n","'use client';\n\nimport { Plus, X } from 'lucide-react';\nimport * as React from 'react';\nimport type { Control } from 'react-hook-form';\nimport { Controller } from 'react-hook-form';\n\nimport { Badge } from '../../ui/badge';\nimport { Button } from '../../ui/button';\nimport { Command, CommandInput, CommandList, CommandGroup, CommandItem } from '../../ui/command';\nimport { Popover, PopoverContent, PopoverTrigger } from '../../ui/popover';\n\ninterface CreatableFieldProps {\n name: string;\n control: Control<any>;\n options?: { label: string; value: string }[];\n handleFieldChange?: (props: { key: string; value: string[] }) => void;\n placeholder?: string;\n}\n\nexport function CreatableField({ name, control, options = [], handleFieldChange, placeholder }: CreatableFieldProps) {\n const [openPopover, setOpenPopover] = React.useState(false);\n const [inputValue, setInputValue] = React.useState('');\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field }) => {\n const selectedValues = field.value || [];\n\n const removeValue = (valueToRemove: string) => {\n const newValues = selectedValues.filter((v: string) => v !== valueToRemove);\n field.onChange(newValues);\n handleFieldChange?.({ key: name, value: newValues });\n };\n\n const addValue = (value: string) => {\n if (!value) return;\n const newValues = [...selectedValues, value];\n field.onChange(newValues);\n handleFieldChange?.({ key: name, value: newValues });\n setInputValue('');\n setOpenPopover(false);\n };\n\n return (\n <div className=\"space-y-2\">\n <div className=\"flex flex-wrap gap-2\">\n {selectedValues.map((value: string) => (\n <Badge key={value} className=\"flex items-center gap-1\">\n {value}\n <Button variant=\"ghost\" size=\"icon\" className=\"h-4 w-4 p-0\" onClick={() => removeValue(value)}>\n <X className=\"h-3 w-3\" />\n </Button>\n </Badge>\n ))}\n </div>\n\n <Popover open={openPopover} onOpenChange={setOpenPopover}>\n <PopoverTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className=\"w-full justify-start\">\n <Plus className=\"mr-2 h-4 w-4\" />\n {placeholder || 'Add item'}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"p-0\" align=\"start\">\n <Command>\n <CommandInput placeholder=\"Enter value...\" value={inputValue} onValueChange={setInputValue} />\n <CommandList>\n <CommandGroup>\n {options\n .filter(opt => !selectedValues.includes(opt.value))\n .map(option => (\n <CommandItem key={option.value} onSelect={() => addValue(option.value)}>\n {option.label}\n </CommandItem>\n ))}\n {inputValue && (\n <CommandItem onSelect={() => addValue(inputValue)}>Create \"{inputValue}\"</CommandItem>\n )}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </div>\n );\n }}\n />\n );\n}\n","'use client';\n\nimport { CalendarIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { DayPicker } from 'react-day-picker';\n\nimport { cn } from '../../lib/utils';\n\nimport { buttonVariants } from './button';\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\n\nfunction Calendar({ className, classNames, showOutsideDays = true, ...props }: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn('p-3', className)}\n classNames={{\n months: 'flex flex-col space-y-4 sm:space-y-0',\n month: 'space-y-4',\n month_caption: 'flex justify-center pt-1 relative items-center',\n caption_label: 'text-sm text-text font-medium',\n nav: 'space-x-1 flex items-center',\n button_previous: cn(\n buttonVariants({ variant: 'outline' }),\n 'h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100',\n 'absolute left-4 top-[56px] z-10',\n ),\n button_next: cn(\n buttonVariants({ variant: 'outline' }),\n 'h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100',\n 'absolute right-4 top-[56px] z-10',\n ),\n month_grid: 'w-full border-collapse space-y-1',\n weekdays: 'flex',\n weekday: 'text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]',\n week: 'flex w-full mt-2',\n day: cn(\n buttonVariants({ variant: 'ghost' }),\n 'relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected].day-range-end)]:rounded-r-md',\n props.mode === 'range'\n ? '[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md'\n : '[&:has([aria-selected])]:rounded-md',\n 'h-8 w-8 p-0 hover:bg-lightGray-7/50 font-normal aria-selected:opacity-100',\n ),\n range_start: 'day-range-start',\n range_end: 'day-range-end',\n selected:\n '!bg-primary !text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground',\n today: 'bg-lightGray-7/50 text-accent-foreground',\n outside:\n 'day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30',\n disabled: 'text-muted-foreground opacity-50',\n range_middle: 'aria-selected:bg-accent aria-selected:text-accent-foreground',\n hidden: 'invisible',\n ...classNames,\n }}\n components={{\n Chevron: ({ orientation }) => (\n <CalendarIcon\n className={cn('h-4 w-4', {\n 'rotate-180': orientation === 'up',\n 'rotate-90': orientation === 'left',\n '-rotate-90': orientation === 'right',\n })}\n />\n ),\n }}\n {...props}\n />\n );\n}\nCalendar.displayName = 'Calendar';\n\nexport { Calendar };\n","'use client';\n\nimport { format, isValid } from 'date-fns';\nimport { CalendarIcon } from 'lucide-react';\nimport * as React from 'react';\nimport type { PropsSingle } from 'react-day-picker';\nimport { useDebouncedCallback } from 'use-debounce';\n\nimport { cn } from '../../lib/utils';\n\nimport { Button } from './button';\nimport { Calendar } from './calendar';\nimport { Input } from './input';\nimport { Popover, PopoverContent, PopoverTrigger } from './popover';\n\ntype CommonProps = Omit<PropsSingle, 'mode' | 'selected' | 'onSelect'> & {\n value: Date | undefined | null;\n setValue: (date: Date | undefined | null) => void;\n clearable?: boolean;\n};\n\nexport type DatePickerProps =\n | (CommonProps & { children?: never; className?: string; placeholder?: string })\n | (CommonProps & { children: React.ReactNode; className?: never; placeholder?: string });\n\nexport const DatePicker: React.FC<DatePickerProps> = ({\n value,\n setValue,\n children,\n className,\n placeholder,\n ...props\n}) => {\n const [openPopover, setOpenPopover] = React.useState(false);\n\n return (\n <Popover open={openPopover} onOpenChange={setOpenPopover}>\n <PopoverTrigger asChild>\n {children ? (\n children\n ) : (\n <DefaultButton\n value={value}\n placeholder={placeholder}\n className={className}\n data-testid=\"datepicker-button\"\n />\n )}\n </PopoverTrigger>\n <PopoverContent\n className=\"backdrop-blur-4xl w-auto p-0 bg-[#171717]\"\n align=\"start\"\n data-testid=\"datepicker-calendar\"\n >\n <DatePickerOnly\n value={value}\n setValue={v => setValue(v ? new Date(`${v}z`) : null)} // TODO: Leave in the Z to prevent casting via timezone\n clearable={props.clearable}\n setOpenPopover={setOpenPopover}\n {...props}\n />\n </PopoverContent>\n </Popover>\n );\n};\n\nexport const DatePickerOnly = ({\n value,\n setValue,\n setOpenPopover,\n clearable,\n placeholder,\n className,\n ...props\n}: CommonProps & {\n setOpenPopover?: (open: boolean) => void;\n placeholder?: string;\n className?: string;\n}) => {\n const [inputValue, setInputValue] = React.useState<string>(value ? format(value, 'PP') : '');\n const [selected, setSelected] = React.useState<Date | undefined>(value ? new Date(value) : undefined);\n\n const debouncedDateUpdate = useDebouncedCallback((date: Date) => {\n if (isValid(date)) {\n setSelected(date);\n setValue?.(date);\n setOpenPopover?.(false);\n }\n }, 2000);\n\n const handleInputChange: React.ChangeEventHandler<HTMLInputElement> = e => {\n setInputValue(e.currentTarget.value);\n const date = new Date(e.target.value);\n debouncedDateUpdate(date);\n };\n\n const handleDaySelect = (date: Date | undefined) => {\n setSelected(date);\n setValue?.(date);\n setOpenPopover?.(false);\n if (date) {\n setInputValue(format(date, 'PP'));\n } else {\n setInputValue('');\n }\n };\n\n const handleMonthSelect = (date: Date | undefined) => {\n setSelected(date);\n if (date) {\n setInputValue(format(date, 'PP'));\n } else {\n setInputValue('');\n }\n };\n\n return (\n <div\n aria-label=\"Choose date\"\n className=\"relative mt-2 flex flex-col gap-2\"\n onKeyDown={e => {\n e.stopPropagation();\n if (e.key === 'Escape') {\n setOpenPopover?.(false);\n }\n }}\n >\n <div className=\"w-full px-3\">\n <Input\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n placeholder={placeholder}\n className={className}\n />\n </div>\n <Calendar\n mode=\"single\"\n month={selected}\n selected={selected}\n onMonthChange={handleMonthSelect}\n onSelect={handleDaySelect}\n {...props}\n />\n <div className=\"px-3 pb-2\">\n {clearable && (\n <Button\n variant=\"outline\"\n tabIndex={0}\n className=\"w-full !opacity-50 duration-200 hover:!opacity-100\"\n onClick={() => {\n setValue(null);\n setSelected(undefined);\n setInputValue('');\n setOpenPopover?.(false);\n }}\n >\n Clear\n </Button>\n )}\n </div>\n </div>\n );\n};\n\ninterface DefaultButtonProps {\n className?: string;\n placeholder?: string;\n value: Date | undefined | null;\n}\n\nconst DefaultButton = React.forwardRef<HTMLButtonElement, DefaultButtonProps>(\n ({ value, placeholder, className, ...props }, ref) => {\n return (\n <Button\n ref={ref}\n variant={'outline'}\n className={cn(\n 'bg-neutral-825 border-neutral-775 w-full justify-start whitespace-nowrap rounded-md border px-2 py-0 text-left flex items-center gap-1',\n className,\n )}\n {...props}\n >\n <CalendarIcon className=\"h-4 w-4\" />\n {value ? (\n <span className=\"text-white\">{format(value, 'PPP')}</span>\n ) : (\n <span className=\"text-gray\">{placeholder ?? 'Pick a date'}</span>\n )}\n </Button>\n );\n },\n);\n\nDefaultButton.displayName = 'DefaultButton';\n","'use client';\n\nimport type { Control } from 'react-hook-form';\nimport { Controller } from 'react-hook-form';\n\nimport { DatePicker } from '../../ui/date-picker';\n\ninterface DateFieldProps {\n name: string;\n control: Control<any>;\n handleFieldChange?: (props: { key: string; value: string | Date | null | undefined }) => void;\n}\n\nexport function DateField({ name, control, handleFieldChange }: DateFieldProps) {\n return (\n <Controller\n name={name}\n control={control}\n render={({ field }) => (\n <DatePicker\n value={field.value}\n setValue={date => {\n const newDate = date ? new Date(date).toISOString() : date;\n field.onChange(newDate);\n handleFieldChange?.({ key: name, value: newDate });\n }}\n />\n )}\n />\n );\n}\n","'use client';\n\nimport * as SelectPrimitive from '@radix-ui/react-select';\nimport { Check, ChevronDown } from 'lucide-react';\nimport * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst Select = SelectPrimitive.Root;\n\nconst SelectGroup = SelectPrimitive.Group;\n\nconst SelectValue = SelectPrimitive.Value;\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n 'flex h-9 w-full items-center justify-between rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n));\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName;\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = 'popper', ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n 'relative z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n position === 'popper' &&\n 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',\n className,\n )}\n position={position}\n {...props}\n >\n <SelectPrimitive.Viewport\n className={cn(\n 'p-1',\n position === 'popper' &&\n 'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]',\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n));\nSelectContent.displayName = SelectPrimitive.Content.displayName;\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-mastra-el-5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = SelectPrimitive.Item.displayName;\n\nexport { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectItem };\n","'use client';\n\nimport type { Control } from 'react-hook-form';\nimport { Controller } from 'react-hook-form';\n\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../../ui/select';\n\ninterface EnumFieldProps {\n name: string;\n control: Control<any>;\n options: { label: string; value: string }[];\n handleFieldChange?: (props: { key: string; value: string }) => void;\n}\n\nexport function EnumField({ name, control, options, handleFieldChange }: EnumFieldProps) {\n return (\n <Controller\n name={name}\n control={control}\n render={({ field }) => (\n <Select\n value={field.value}\n onValueChange={value => {\n field.onChange(value);\n handleFieldChange?.({ key: name, value });\n }}\n >\n <SelectTrigger>\n <SelectValue placeholder=\"Select an option\" />\n </SelectTrigger>\n <SelectContent>\n {options.map(option => (\n <SelectItem key={option.value} value={option.value} className=\"text-white\">\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n />\n );\n}\n","import * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n 'flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n});\nTextarea.displayName = 'Textarea';\n\nexport { Textarea };\n","'use client';\n\nimport type { Control } from 'react-hook-form';\nimport { Controller } from 'react-hook-form';\n\nimport { Input } from '../../ui/input';\nimport { Textarea } from '../../ui/textarea';\n\ninterface StringFieldProps {\n name: string;\n control: Control<any>;\n handleFieldChange?: (props: { key: string; value: any }) => void;\n isMultiline?: boolean;\n placeholder?: string;\n}\n\nexport function StringField({ name, control, handleFieldChange, isMultiline, placeholder }: StringFieldProps) {\n const Component = isMultiline ? Textarea : Input;\n\n return (\n <Controller\n name={name}\n control={control}\n render={({ field }) => (\n <Component\n {...field}\n className=\"w-full\"\n placeholder={placeholder}\n onChange={e => {\n field.onChange(e);\n handleFieldChange?.({ key: name, value: e.target.value });\n }}\n />\n )}\n />\n );\n}\n","'use client';\n\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '../../lib/utils';\n\nconst labelVariants = cva('text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70');\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> & VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root ref={ref} className={cn(labelVariants(), className)} {...props} />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","/**\n * Checks if object is empty\n * @param objectName\n * @returns boolean\n */\nexport const isObjectEmpty = (objectName: Object) => {\n return objectName && Object.keys(objectName).length === 0 && objectName.constructor === Object;\n};\n\n/**\n * Get a value from an object by a given path. This function emulates the behavior of lodash's _.get method.\n *\n * @param {Record<string, any>} object - The object from which to get the value.\n * @param {string | string[]} path - The path to the value in the object. This can be a string (e.g., 'a.b.c') or an array of keys (e.g., ['a', 'b', 'c']).\n * @returns {unknown} The value at the given path in the object, or undefined if the path does not exist.\n */\nexport const getPath = (object: Record<string, any>, path: string | string[]): unknown => {\n if (typeof path === 'string') {\n path = path?.split('.');\n }\n\n return path?.reduce((obj, key) => (obj && obj[key] !== undefined ? obj[key] : undefined), object);\n};\n\nexport function recordHasData(record: Record<any, any>): boolean {\n return Object.keys(record).length > 0;\n}\n\nexport function isLiteralObject(a: unknown) {\n return !!a && a.constructor === Object;\n}\n\nexport const constructObjFromStringPath = (path: string, value: any) => {\n if (!path) return {};\n //key, split the key with ., and then for each item, we update object data.pipeline\n // {data: {pipeline: 'kbdkjd'}}\n const pathArr = path.split('.');\n let newObject: Record<string, any> = {\n [pathArr[pathArr.length - 1]]: value,\n };\n let index = pathArr.length - 2;\n while (index >= 0) {\n newObject = { [pathArr[index]]: newObject };\n index = index - 1;\n }\n\n return newObject;\n};\n\n/**\n * Flatten a nested object, flatten from flat package works - https://www.npmjs.com/package/flat\n * but this allows you to define where you want it to stop by passing the keys that'll exist in the object you want it to stop at\n *\n * @param {Record<string, any>} object - The object to flatten.\n * @param {string[]} endKeys - The keys you want each value (which will be an object in this case) in the flattened object to possible have (e.g., ['a', 'b', 'c']).\n * @param {boolean} flattenArrayValue - This flag indicates that any array value should be flattened to object too.\n * @returns {Record<string, any>} Your flattened object\n */\nexport const flattenObject = (object: Record<string, any>, endKeys: string[] = [], flattenArrayValue?: boolean) => {\n let newObj = {} as Record<string, unknown>;\n\n function recurseDip(obj: Record<string, any>, path: string[]) {\n for (const [key, value] of Object.entries(obj)) {\n let newPath = [...path, key];\n if (value && value.constructor === Object) {\n const hasOnlyEndKeys = endKeys?.length ? endKeys.every(v => Object.keys(value).includes(v)) : false;\n if (hasOnlyEndKeys) {\n newObj = { ...newObj, [newPath.join('.')]: value };\n } else {\n recurseDip(value, newPath);\n }\n } else if (flattenArrayValue && Array.isArray(value)) {\n const contructValue = value.reduce((a, b) => ({ ...a, [value.indexOf(b)]: b }), {});\n recurseDip(contructValue, newPath);\n } else {\n newObj = { ...newObj, [newPath.join('.')]: value };\n }\n }\n }\n\n recurseDip(object, []);\n return newObj;\n};\n\ntype AnyObject = { [key: string]: any };\n\n/**\n * Merges two objects, ensuring that only defined properties from the second object\n * override those in the first object.\n *\n * @template T - The type of the base object.\n * @template U - The type of the overrides object.\n * @param {T} base - The base object whose properties will be overridden.\n * @param {U} overrides - The object containing properties to override in the base object.\n * Only properties that are defined (not `undefined`) will override.\n * @returns {T & U} - A new object that combines properties from both `base` and `overrides`.\n * Properties in `base` will be overridden by defined properties in `overrides`.\n *\n * @example\n * const worksheetData = { a: 1, b: 2, c: 3 };\n * const payload = { b: undefined, c: 4 };\n * const extendedData = mergeWithDefinedOnly(worksheetData, payload);\n * // extendedData = { a: 1, b: 2, c: 4 }\n */\nexport function mergeWithDefinedOnly<T extends AnyObject, U extends AnyObject>(base: T, overrides: U): T & U {\n const result: AnyObject = { ...base };\n\n for (const key in overrides) {\n if (overrides[key] !== undefined) {\n result[key] = overrides[key];\n }\n }\n\n return result as T & U;\n}\n","import * as React from 'react';\nimport type { Control } from 'react-hook-form';\nimport type { ZodSchema } from 'zod';\nimport { z, ZodArray, ZodBoolean, ZodDate, ZodEnum, ZodLiteral, ZodNumber } from 'zod';\n\nimport { flattenObject, getPath } from '@/lib/object';\nimport { toTitleCase } from '@/lib/string';\nimport { Label } from '../ui/label';\nimport { Text } from '../ui/text';\n\ntype ActionVariables = Record<string, any>;\n\nexport enum FormConfigType {\n STRING = 'STRING',\n NUMBER = 'NUMBER',\n DATE = 'DATE',\n ENUM = 'ENUM',\n ARRAY = 'ARRAY',\n BOOLEAN = 'BOOLEAN',\n RECORD = 'RECORD',\n OBJECT = 'OBJECT',\n UNION = 'UNION',\n CREATABLE = 'CREATABLE',\n SELECT = 'SELECT',\n MULTI_SELECT = 'MULTI_SELECT',\n}\n\ntype FormConfig = {\n type: FormConfigType;\n options?: { label: string; value: string }[];\n isOptional?: boolean;\n hasEffects?: boolean;\n innerSchema?: ZodSchema;\n};\n\nexport function getFormConfigTypesFromSchemaDef({\n schema,\n isOptional = false,\n}: {\n schema: ZodSchema<any>;\n isOptional?: boolean;\n}): FormConfig {\n if (schema instanceof z.ZodObject) {\n return { type: FormConfigType.OBJECT, isOptional };\n }\n\n if (schema instanceof z.ZodString) {\n // if it's a datetime -- accounts for date weirdness during zod schema serialization to JSON\n if (schema instanceof z.ZodString && schema._def.checks.some((check: any) => check.kind === 'datetime')) {\n return { type: FormConfigType.DATE, isOptional };\n }\n return { type: FormConfigType.STRING, isOptional };\n } else if (schema instanceof ZodNumber) {\n return { type: FormConfigType.NUMBER, isOptional };\n } else if (schema instanceof ZodBoolean) {\n return { type: FormConfigType.BOOLEAN, isOptional };\n } else if (schema instanceof ZodDate) {\n return { type: FormConfigType.DATE, isOptional };\n } else if (schema instanceof ZodLiteral) {\n return {\n type: FormConfigType.ENUM,\n isOptional,\n options: [{ label: schema.value, value: schema.value }],\n };\n } else if (schema instanceof ZodEnum) {\n return {\n type: FormConfigType.ENUM,\n isOptional,\n options: schema.options.map((v: string) => ({ label: v, value: v })),\n };\n } else if (schema instanceof ZodArray) {\n return {\n type: FormConfigType.ARRAY,\n isOptional,\n options:\n schema.element instanceof ZodEnum ? schema.element.options.map((v: string) => ({ label: v, value: v })) : [],\n };\n } else if (schema instanceof z.ZodOptional || schema instanceof z.ZodDefault) {\n return getFormConfigTypesFromSchemaDef({ schema: schema._def.innerType, isOptional: true });\n } else if (schema instanceof z.ZodEffects) {\n return getFormConfigTypesFromSchemaDef({ schema: schema._def.schema, isOptional });\n } else if (schema instanceof z.ZodRecord) {\n return {\n type: FormConfigType.RECORD,\n isOptional,\n innerSchema: schema._def.valueType,\n };\n } else {\n return { type: FormConfigType.STRING, isOptional }; // Handle other types as needed\n }\n}\n\nexport type FieldProps = {\n name: string;\n options?: { label: string; value: string }[];\n control: Control<any>;\n innerSchema?: ZodSchema;\n variables?: Record<string, ActionVariables | undefined>;\n isNullable?: boolean;\n handleFieldChange: ({\n key,\n value,\n variables,\n }: {\n key: keyof z.infer<any>;\n value: any;\n variables?: ActionVariables;\n }) => void;\n};\n\nexport function schemaToFormFieldRenderer<T extends ZodSchema>({\n schema,\n errors,\n renderFieldMap,\n schemaField,\n renderLabel,\n control,\n variables,\n onFieldChange,\n schemaOptions,\n values,\n isOptional = false,\n isNullable = false,\n}: {\n schema: ZodSchema<any>;\n errors: any;\n renderFieldMap?: Record<FormConfigType, (props: FieldProps) => React.ReactNode>;\n schemaField: string;\n control: any;\n onFieldChange: (props: { key: keyof z.infer<T>; value: any; variables?: ActionVariables }) => void;\n variables?: Record<string, ActionVariables | undefined>;\n schemaOptions?: Record<string, any>;\n renderLabel?: ({ isOptional, schemaField }: { isOptional: boolean; schemaField: string }) => React.ReactNode;\n values: Record<keyof z.infer<T>, unknown>;\n isOptional?: boolean;\n isNullable?: boolean;\n}): any {\n const fieldConfig = getFormConfigTypesFromSchemaDef({ schema, isOptional });\n\n const parentFieldValue = schemaOptions?.parentField ? getPath(values, schemaOptions?.parentField) : '';\n\n if (schemaOptions?.parentField && !parentFieldValue) {\n return null;\n }\n\n if (!renderFieldMap) return;\n\n const flattenedErrors = flattenObject(errors, ['message', 'type'], true);\n\n const fieldOptions = schemaOptions?.parentField\n ? schemaOptions?.options?.[parentFieldValue as string]\n : (schemaOptions?.options as { label: string; value: string }[]) || fieldConfig.options;\n\n return (\n <div key={schemaField} className=\"flex flex-col gap-1 mt-3 w-full\">\n {renderLabel ? (\n renderLabel({ isOptional: Boolean(fieldConfig.isOptional), schemaField })\n ) : (\n <Label className=\"flex gap-0.5 capitalize\" htmlFor={schemaField} aria-required={!fieldConfig.isOptional}>\n {!fieldConfig?.isOptional && <span className=\"text-red-500\">*</span>}\n <Text variant=\"secondary\" className=\"text-mastra-el-3\" size=\"xs\">\n {toTitleCase(schemaField.split('.').pop() || '')}\n </Text>\n </Label>\n )}\n {renderFieldMap[fieldConfig.type]({\n name: schemaField,\n options: fieldOptions,\n control,\n variables,\n innerSchema: fieldConfig.innerSchema,\n handleFieldChange: onFieldChange,\n isNullable,\n })}\n {flattenedErrors?.[schemaField] ? (\n <Text size=\"xs\" className=\"text-red-500\">\n {(flattenedErrors[schemaField] as { message: string })?.message}\n </Text>\n ) : null}\n </div>\n );\n}\n","'use client';\n\nimport * as React from 'react';\nimport { ZodUnion } from 'zod';\n\nimport { toTitleCase } from '../../../lib/string';\nimport { Label } from '../../ui/label';\nimport { Text } from '../../ui/text';\nimport { getFormConfigTypesFromSchemaDef } from '../schema';\n\ninterface UnionComponentProps {\n renderDynamicForm: (props: {\n schema: ZodUnion<any>;\n handleFieldChange: (field: string, value: any) => void;\n control: any;\n formValues: Record<string, any>;\n errors: Record<string, any>;\n parentField: string;\n action?: any;\n isOptional?: boolean;\n isNullable?: boolean;\n depth?: number;\n }) => React.ReactNode;\n schema: ZodUnion<any>;\n\n handleFieldChange: (field: string, value: any) => void;\n control: any;\n formValues: Record<string, any>;\n errors: Record<string, any>;\n parentField: string;\n action?: any;\n isOptional?: boolean;\n isNullable?: boolean;\n depth?: number;\n}\n\nexport function UnionField({\n renderDynamicForm,\n schema,\n handleFieldChange,\n control,\n formValues,\n errors,\n parentField,\n action,\n isOptional = false,\n isNullable = false,\n depth,\n}: UnionComponentProps) {\n const fieldConfig = getFormConfigTypesFromSchemaDef({ schema, isOptional });\n\n if (schema instanceof ZodUnion) {\n const schemaOptions = schema.options;\n return (\n <div>\n <Label className=\"flex gap-0.5 capitalize mb-2\" htmlFor={parentField} aria-required={!fieldConfig.isOptional}>\n {!fieldConfig?.isOptional && <span className=\"text-red-500\">*</span>}\n <Text variant=\"secondary\" className=\"text-mastra-el-3\" size=\"xs\">\n {toTitleCase(parentField)}\n </Text>\n </Label>\n <div className=\"flex flex-col gap-4\">\n {schemaOptions.map((schemaOption: ZodUnion<any>['options'][number], index: number) => (\n <React.Fragment key={index}>\n {index >= 1 && (\n <Text variant=\"secondary\" className=\"text-mastra-el-3 text-center\" size=\"xs\">\n or\n </Text>\n )}\n <div className=\"ring-1 ring-white/10 p-2 rounded-md relative\">\n {renderDynamicForm({\n schema: schemaOption,\n\n handleFieldChange,\n control,\n formValues,\n errors,\n parentField,\n action,\n isOptional,\n isNullable,\n depth,\n })}\n </div>\n </React.Fragment>\n ))}\n </div>\n </div>\n );\n }\n return null;\n}\n","import { XIcon } from 'lucide-react';\nimport * as React from 'react';\nimport { useFieldArray } from 'react-hook-form';\nimport type { ZodSchema } from 'zod';\nimport { ZodArray } from 'zod';\n\nimport { toTitleCase } from '../../../lib/string';\nimport { Button } from '../../ui/button';\nimport { Label } from '../../ui/label';\nimport { Text } from '../../ui/text';\nimport { getFormConfigTypesFromSchemaDef } from '../schema';\n\ninterface ObjectFieldProps {\n renderDynamicForm: (props: {\n schema: ZodSchema;\n handleFieldChange: (field: string, value: any) => void;\n control: any;\n formValues: Record<string, any>;\n errors: Record<string, any>;\n parentField: string;\n action?: any;\n isOptional?: boolean;\n depth?: number;\n }) => React.ReactNode;\n schema: ZodSchema;\n handleFieldChange: (field: string, value: any) => void;\n control: any;\n formValues: Record<string, any>;\n errors: Record<string, any>;\n parentField: string;\n action?: any;\n isArray?: boolean;\n isOptional?: boolean;\n depth?: number;\n}\n\nexport function ObjectField({\n renderDynamicForm,\n schema,\n handleFieldChange,\n control,\n formValues,\n errors,\n parentField,\n action,\n isArray = false,\n isOptional = false,\n depth,\n}: ObjectFieldProps) {\n const fieldConfig = getFormConfigTypesFromSchemaDef({ schema, isOptional });\n\n const { fields, append, remove } = useFieldArray({\n control,\n name: parentField,\n });\n\n function handleAddForm() {\n append({});\n }\n\n return (\n <div>\n <Label className=\"flex gap-0.5 capitalize mb-2\" htmlFor={parentField} aria-required={!fieldConfig.isOptional}>\n {!fieldConfig?.isOptional && <span className=\"text-red-500\">*</span>}\n <Text variant=\"secondary\" className=\"text-mastra-el-3\" size=\"xs\">\n {toTitleCase(parentField)}\n </Text>\n </Label>\n {isArray ? (\n <>\n <div className=\"flex flex-col gap-4\">\n {fields.map((field, index) => (\n <div key={field.id} className=\"ring-1 ring-white/10 p-2 rounded-md relative\">\n <Button\n type=\"button\"\n variant={'ghost'}\n size={'icon'}\n onClick={() => remove(index)}\n className=\"absolute top-0 right-0\"\n >\n <XIcon className=\"text-icon h-3.5 w-3.5\" />\n </Button>\n {renderDynamicForm({\n schema: schema instanceof ZodArray ? schema.element : schema,\n\n handleFieldChange,\n control,\n formValues,\n errors,\n parentField: `${parentField}.${index}`,\n action,\n isOptional,\n depth,\n })}\n </div>\n ))}\n </div>\n <div className=\"flex flex-col gap-4\">\n <Button type=\"button\" variant={'outline'} className=\"w-full text-xs h-9\" onClick={handleAddForm}>\n Add {toTitleCase(parentField.split('.').pop() || '')}\n </Button>\n </div>\n </>\n ) : (\n <div className=\"ring-1 ring-white/10 p-2 rounded-md relative\">\n {renderDynamicForm({\n schema,\n\n handleFieldChange,\n control,\n formValues,\n errors,\n parentField,\n action,\n isOptional,\n depth,\n })}\n </div>\n )}\n </div>\n );\n}\n","'use client';\n\nimport type { Control } from 'react-hook-form';\nimport { Controller } from 'react-hook-form';\n\nimport { Input } from '../../ui/input';\n\ninterface NumberFieldProps {\n name: string;\n control: Control<any>;\n handleFieldChange?: (props: { key: string; value: number }) => void;\n}\n\nexport function NumberField({ name, control, handleFieldChange }: NumberFieldProps) {\n return (\n <Controller\n name={name}\n control={control}\n render={({ field }) => (\n <Input\n {...field}\n type=\"number\"\n onChange={e => {\n const value = e.target.value === '' ? undefined : Number(e.target.value);\n field.onChange(value);\n handleFieldChange?.({ key: name, value: value as number });\n }}\n />\n )}\n />\n );\n}\n","'use client';\n\nimport { v4 as uuid } from '@lukeed/uuid';\nimport { Plus, X } from 'lucide-react';\nimport * as React from 'react';\nimport { type Control, useWatch } from 'react-hook-form';\nimport { ZodSchema } from 'zod';\n\nimport { Button } from '../../ui/button';\nimport { Input } from '../../ui/input';\n\ninterface RecordFieldProps {\n name: string;\n control: Control<any>;\n innerSchema?: ZodSchema;\n handleFieldChange?: (props: { key: string; value: Record<string, any> }) => void;\n}\n\ninterface KeyValuePair {\n id: string;\n key: string;\n value: string;\n}\n\nexport function RecordField({ name, control, handleFieldChange }: RecordFieldProps) {\n const formValue = useWatch({ control, name }) || {};\n const [pairs, setPairs] = React.useState<KeyValuePair[]>(() =>\n Object.entries(formValue).map(([key, value]) => ({\n id: key || uuid(),\n key,\n value: value as string,\n })),\n );\n\n React.useEffect(() => {\n if (pairs.length === 0) {\n setPairs([{ id: uuid(), key: '', value: '' }]);\n }\n }, [pairs]);\n\n const updateForm = React.useCallback(\n (newPairs: KeyValuePair[]) => {\n if (!handleFieldChange) return;\n const value = newPairs.reduce(\n (acc, pair) => {\n if (pair.key) {\n acc[pair.key] = pair.value;\n }\n return acc;\n },\n {} as Record<string, string>,\n );\n handleFieldChange({ key: name, value });\n },\n [handleFieldChange, name],\n );\n\n const handleChange = (id: string, field: 'key' | 'value', newValue: string) => {\n setPairs(prev => prev.map(pair => (pair.id === id ? { ...pair, [field]: newValue } : pair)));\n };\n\n const handleBlur = () => {\n updateForm(pairs);\n };\n\n const addPair = () => {\n const newPairs = [...pairs, { id: uuid(), key: '', value: '' }];\n setPairs(newPairs);\n updateForm(newPairs);\n };\n\n const removePair = (id: string) => {\n const newPairs = pairs.filter(p => p.id !== id);\n if (newPairs.length === 0) {\n newPairs.push({ id: uuid(), key: '', value: '' });\n }\n setPairs(newPairs);\n updateForm(newPairs);\n };\n\n return (\n <div className=\"space-y-3\">\n {pairs.map(pair => (\n <div key={pair.id} className=\"relative space-y-2 rounded-lg border p-4\">\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon\"\n className=\"absolute right-2 top-2\"\n onClick={() => removePair(pair.id)}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n <div className=\"space-y-2\">\n <Input\n placeholder=\"Key\"\n value={pair.key}\n onChange={e => handleChange(pair.id, 'key', e.target.value)}\n onBlur={handleBlur}\n />\n <Input\n placeholder=\"Value\"\n value={pair.value}\n onChange={e => handleChange(pair.id, 'value', e.target.value)}\n onBlur={handleBlur}\n />\n </div>\n </div>\n ))}\n <Button type=\"button\" variant=\"outline\" size=\"sm\" className=\"w-full\" onClick={addPair}>\n <Plus className=\"mr-2 h-4 w-4\" />\n Add Key-Value Pair\n </Button>\n </div>\n );\n}\n","import * as z from 'zod';\n\nimport {\n ArrayField,\n BooleanField,\n CreatableField,\n DateField,\n EnumField,\n NumberField,\n RecordField,\n StringField,\n ObjectField,\n UnionField,\n} from './fields';\nimport { FormConfigType, getFormConfigTypesFromSchemaDef } from './schema';\nimport type { FieldProps } from './schema';\nimport { resolveSchema } from './schema-resolver';\n\nexport function getDefaultFieldMap() {\n return {\n [FormConfigType.STRING]: (props: FieldProps) => {\n const { options, ...rest } = props;\n if (options?.length) {\n return <EnumField {...rest} options={options} />;\n }\n return <StringField {...rest} />;\n },\n [FormConfigType.NUMBER]: (props: FieldProps) => {\n return <NumberField {...props} />;\n },\n [FormConfigType.BOOLEAN]: (props: FieldProps) => {\n return <BooleanField {...props} />;\n },\n [FormConfigType.DATE]: (props: FieldProps) => {\n return <DateField {...props} />;\n },\n [FormConfigType.ENUM]: (props: FieldProps) => {\n const { options = [] } = props;\n return <EnumField {...props} options={options} />;\n },\n [FormConfigType.ARRAY]: (props: FieldProps) => {\n const renderField = ({ fieldName, index: _index }: { fieldName: string; index: number }) => {\n return getDefaultFieldMap()[FormConfigType.STRING]({\n ...props,\n name: fieldName,\n });\n };\n return <ArrayField {...props} renderField={renderField} />;\n },\n [FormConfigType.RECORD]: (props: FieldProps) => {\n return <RecordField {...props} />;\n },\n [FormConfigType.OBJECT]: (props: FieldProps) => {\n const { innerSchema, name, control, handleFieldChange } = props;\n if (!innerSchema) return null;\n return (\n <ObjectField\n schema={innerSchema}\n control={control}\n parentField={name}\n handleFieldChange={(field, value) => handleFieldChange({ key: field, value })}\n formValues={{}}\n errors={{}}\n renderDynamicForm={props => resolveSchema({ ...props, handleFieldChange })}\n />\n );\n },\n [FormConfigType.UNION]: (props: FieldProps) => {\n const { innerSchema, name, control, handleFieldChange } = props;\n if (!innerSchema || !(innerSchema instanceof z.ZodUnion)) return null;\n return (\n <UnionField\n schema={innerSchema}\n control={control}\n parentField={name}\n handleFieldChange={(field, value) => handleFieldChange({ key: field, value })}\n renderDynamicForm={fieldProps => {\n const fieldType = getFormConfigTypesFromSchemaDef({ schema: fieldProps.schema });\n return getDefaultFieldMap()[fieldType.type]({\n ...props,\n ...fieldProps,\n control,\n handleFieldChange,\n });\n }}\n formValues={{}}\n errors={{}}\n />\n );\n },\n [FormConfigType.CREATABLE]: (props: FieldProps) => {\n return <CreatableField {...props} />;\n },\n [FormConfigType.SELECT]: (props: FieldProps) => {\n const { options = [] } = props;\n return <EnumField {...props} options={options} />;\n },\n [FormConfigType.MULTI_SELECT]: (props: FieldProps) => {\n return <CreatableField {...props} />;\n },\n };\n}\n","import type { Control, FieldErrors } from 'react-hook-form';\nimport { z } from 'zod';\n\nimport { getDefaultFieldMap } from './default-field-map';\nimport { ArrayField, ObjectField, UnionField } from './fields';\nimport { schemaToFormFieldRenderer } from './schema';\n\ninterface ResolveSchemaProps {\n schema: z.ZodSchema;\n parentField: string;\n control: Control<any>;\n formValues: any;\n errors: FieldErrors;\n handleFieldChange: (props: { key: string | number | symbol; value: any }) => void;\n isArray?: boolean;\n isOptional?: boolean;\n isNullable?: boolean;\n}\n\nfunction adaptHandleFieldChange(\n handler: (props: { key: string | number | symbol; value: any }) => void,\n): (field: string, value: any) => void {\n return (field, value) => handler({ key: field, value });\n}\n\nexport function resolveSchema({\n schema,\n parentField,\n control,\n formValues,\n errors,\n handleFieldChange,\n isOptional = false,\n isNullable = false,\n depth = 0,\n}: ResolveSchemaProps & { depth?: number }) {\n if (depth > 10) {\n console.warn('Maximum schema resolution depth reached. Possible circular reference.');\n return null;\n }\n\n if (schema instanceof z.ZodObject) {\n return Object.entries(schema.shape).map(([field, fieldSchema]) => {\n const currentField = parentField ? `${parentField}.${field}` : field;\n return resolveSchemaComponent({\n schema: fieldSchema as z.ZodSchema,\n parentField: currentField,\n control,\n formValues,\n errors,\n handleFieldChange,\n isOptional,\n isNullable,\n });\n });\n }\n\n return resolveSchemaComponent({\n schema,\n parentField,\n control,\n formValues,\n errors,\n handleFieldChange,\n isOptional,\n isNullable,\n });\n}\n\nfunction resolveSchemaComponent({\n schema,\n parentField,\n control,\n formValues,\n errors,\n handleFieldChange,\n isOptional = false,\n isNullable = false,\n}: {\n schema: z.ZodSchema;\n parentField: string;\n control: Control<any>;\n formValues: any;\n errors: FieldErrors;\n handleFieldChange: (props: { key: string | number | symbol; value: any }) => void;\n isOptional?: boolean;\n isNullable?: boolean;\n}) {\n if (schema instanceof z.ZodDefault) return null;\n\n if (schema instanceof z.ZodOptional) {\n return resolveSchemaComponent({\n schema: schema._def.innerType,\n parentField,\n control,\n formValues,\n errors,\n handleFieldChange,\n isOptional: true,\n isNullable,\n });\n }\n\n if (schema instanceof z.ZodObject) {\n return (\n <div key={parentField} className=\"flex flex-col gap-8 py-8 w-full\">\n <ObjectField\n schema={schema}\n control={control}\n parentField={parentField}\n handleFieldChange={(field, value) => handleFieldChange({ key: field, value })}\n formValues={formValues}\n errors={errors}\n isOptional={isOptional}\n renderDynamicForm={props => resolveSchema({ ...props, handleFieldChange })}\n />\n </div>\n );\n }\n\n if (schema instanceof z.ZodUnion) {\n if (schema.options.some((s: z.ZodType) => s instanceof z.ZodNull)) {\n const nonNullSchema = schema.options.find((s: z.ZodType) => !(s instanceof z.ZodNull));\n return resolveSchemaComponent({\n schema: z.optional(nonNullSchema!),\n parentField,\n control,\n formValues,\n errors,\n handleFieldChange,\n isNullable: true,\n isOptional,\n });\n }\n\n return (\n <UnionField\n schema={schema}\n control={control}\n parentField={parentField}\n handleFieldChange={adaptHandleFieldChange(handleFieldChange)}\n formValues={formValues}\n errors={errors}\n isOptional={isOptional}\n isNullable={isNullable}\n renderDynamicForm={props =>\n resolveSchema({\n ...props,\n handleFieldChange: props => handleFieldChange(props),\n })\n }\n />\n );\n }\n\n if (schema instanceof z.ZodArray) {\n return (\n <div key={parentField} className=\"flex w-full flex-col gap-8 py-8\">\n <ArrayField\n control={control}\n name={parentField}\n isStringField={schema.element instanceof z.ZodString}\n renderField={props => {\n const fieldSchema = schema.element;\n let currentField = props.fieldName;\n if (fieldSchema instanceof z.ZodString) {\n currentField = `${currentField}.root`;\n }\n\n return resolveSchemaComponent({\n schema: fieldSchema,\n parentField: currentField,\n control,\n formValues,\n errors,\n handleFieldChange,\n });\n }}\n />\n </div>\n );\n }\n\n return (\n <div key={parentField} className=\"w-full\">\n {schemaToFormFieldRenderer({\n schema,\n schemaField: parentField,\n control,\n values: formValues,\n errors,\n renderFieldMap: getDefaultFieldMap(),\n onFieldChange: handleFieldChange,\n isOptional,\n })}\n </div>\n );\n}\n","'use client';\n\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { Loader2 } from 'lucide-react';\nimport { useForm } from 'react-hook-form';\nimport { z } from 'zod';\n\nimport { Button } from '../ui/button';\nimport { ScrollArea } from '../ui/scroll-area';\n\nimport { customZodUnionResolver } from './resolvers';\nimport { resolveSchema } from './schema-resolver';\n\ninterface DynamicFormProps<T extends z.ZodSchema> {\n schema: T;\n onSubmit: (values: z.infer<T>) => void | Promise<void>;\n defaultValues?: z.infer<T>;\n isSubmitLoading?: boolean;\n submitButtonLabel?: string;\n}\n\nexport function DynamicForm<T extends z.ZodSchema>({\n schema,\n onSubmit,\n defaultValues,\n isSubmitLoading,\n submitButtonLabel = 'Submit',\n}: DynamicFormProps<T>) {\n const schemaTypeName = (schema as any)?._def?.typeName;\n const discriminatedUnionSchemaOptions = (schema as any)?._def?.options;\n const discriminatedUnionSchemaDiscriminator = (schema as any)?._def?.discriminator;\n\n // Wrap non-object schemas in a container object\n const wrappedSchema = schemaTypeName !== 'ZodObject' ? z.object({ items: schema }) : schema;\n\n const form = useForm<z.infer<typeof wrappedSchema>>({\n resolver:\n schemaTypeName === 'ZodDiscriminatedUnion'\n ? customZodUnionResolver(wrappedSchema as any, discriminatedUnionSchemaDiscriminator)\n : zodResolver(wrappedSchema as any),\n defaultValues,\n });\n\n const { control, handleSubmit, watch } = form;\n const formValues = form.watch();\n\n const discriminatorValue = discriminatedUnionSchemaDiscriminator\n ? (watch(discriminatedUnionSchemaDiscriminator) as any)\n : undefined;\n\n const resolvedSchema =\n schemaTypeName === 'ZodDiscriminatedUnion'\n ? discriminatedUnionSchemaOptions?.find(\n (option: any) => option?.shape?.[discriminatedUnionSchemaDiscriminator]?._def?.value === discriminatorValue,\n ) || z.object({ [discriminatedUnionSchemaDiscriminator]: z.string() })\n : wrappedSchema;\n\n function handleFieldChange({ key, value }: { key: keyof z.infer<T>; value: any }) {\n if (key === discriminatedUnionSchemaDiscriminator) {\n form.setValue(key as any, value);\n } else {\n form.setValue(key as any, value);\n }\n }\n\n const wrappedOnSubmit = (values: z.infer<typeof wrappedSchema>) => {\n if (schemaTypeName !== 'ZodObject') {\n return onSubmit(values.items);\n }\n return onSubmit(values as any);\n };\n\n return (\n <ScrollArea className=\"h-full w-full\">\n <form onSubmit={handleSubmit(wrappedOnSubmit)} className=\"flex flex-col gap-4 p-4 w-full\">\n {resolveSchema({\n schema: resolvedSchema,\n parentField: '',\n control,\n formValues,\n errors: form.formState.errors,\n handleFieldChange,\n })}\n <Button disabled={isSubmitLoading} type=\"submit\">\n {isSubmitLoading ? <Loader2 className=\"h-4 w-4 animate-spin\" /> : submitButtonLabel}\n </Button>\n </form>\n </ScrollArea>\n );\n}\n","import { themes } from 'prism-react-renderer';\nimport { CodeBlock } from 'react-code-block';\n\nimport { cn } from '../../lib/utils';\n\nfunction CodeBlockDemo({\n code = '',\n language = 'ts',\n filename,\n className,\n}: {\n code?: string;\n language: 'ts' | 'json';\n filename?: string;\n className?: string;\n}) {\n return (\n <CodeBlock code={code} language={language} theme={themes.oneDark}>\n {filename ? (\n <div className=\"absolute w-full px-6 py-2 pl-4 text-sm rounded bg-mastra-bg-2 text-mastra-el-6/50\">\n {filename}\n </div>\n ) : null}\n\n <CodeBlock.Code\n className={cn('bg-transparent h-full p-6 rounded-xl whitespace-pre-wrap', filename ? 'pt-10' : '', className)}\n >\n <div className=\"table-row\">\n <div className=\"flex items-center\">\n <CodeBlock.LineNumber className=\"table-cell pr-4 text-sm text-right select-none text-gray-500/50\" />\n <CodeBlock.LineContent className=\"flex\">\n <CodeBlock.Token className=\"font-mono text-sm mastra-token\" />\n </CodeBlock.LineContent>\n </div>\n </div>\n </CodeBlock.Code>\n </CodeBlock>\n );\n}\n\nexport { CodeBlockDemo };\n","import { WorkflowRunResult } from '@mastra/client-js';\nimport { createContext, useState } from 'react';\n\ntype WorkflowRunContextType = {\n result: WorkflowRunResult | null;\n setResult: React.Dispatch<React.SetStateAction<any>>;\n payload: any;\n setPayload: React.Dispatch<React.SetStateAction<any>>;\n clearData: () => void;\n};\n\nexport const WorkflowRunContext = createContext<WorkflowRunContextType>({} as WorkflowRunContextType);\n\nexport function WorkflowRunProvider({ children }: { children: React.ReactNode }) {\n const [result, setResult] = useState<WorkflowRunResult | null>(null);\n const [payload, setPayload] = useState<any>(null);\n\n const clearData = () => {\n setResult(null);\n setPayload(null);\n };\n\n return (\n <WorkflowRunContext.Provider\n value={{\n result,\n setResult,\n payload,\n setPayload,\n clearData,\n }}\n >\n {children}\n </WorkflowRunContext.Provider>\n );\n}\n","import jsonSchemaToZod from 'json-schema-to-zod';\nimport { Loader2 } from 'lucide-react';\nimport { useState, useEffect, useContext } from 'react';\nimport { parse } from 'superjson';\nimport { z } from 'zod';\n\nimport { DynamicForm } from '@/components/dynamic-form';\nimport { resolveSerializedZodOutput } from '@/components/dynamic-form/utils';\nimport { Button } from '@/components/ui/button';\nimport { CodeBlockDemo } from '@/components/ui/code-block';\nimport { CopyButton } from '@/components/ui/copy-button';\nimport { ScrollArea } from '@/components/ui/scroll-area';\nimport { Skeleton } from '@/components/ui/skeleton';\nimport { Text } from '@/components/ui/text';\n\nimport { useExecuteWorkflow, useWatchWorkflow, useResumeWorkflow, useWorkflow } from '@/hooks/use-workflows';\nimport { WorkflowRunContext } from '../context/workflow-run-context';\nimport { toast } from 'sonner';\n\ninterface SuspendedStep {\n stepId: string;\n runId: string;\n suspendPayload: any;\n}\n\ninterface WorkflowPath {\n stepId: string;\n}\n\nexport function WorkflowTrigger({\n workflowId,\n baseUrl,\n setRunId,\n}: {\n workflowId: string;\n baseUrl: string;\n setRunId?: (runId: string) => void;\n}) {\n const { result, setResult, payload, setPayload } = useContext(WorkflowRunContext);\n const { isLoading, workflow } = useWorkflow(workflowId, baseUrl);\n const { createWorkflowRun, startWorkflowRun } = useExecuteWorkflow(baseUrl);\n const { watchWorkflow, watchResult, isWatchingWorkflow } = useWatchWorkflow(baseUrl);\n const { resumeWorkflow, isResumingWorkflow } = useResumeWorkflow(baseUrl);\n const [suspendedSteps, setSuspendedSteps] = useState<SuspendedStep[]>([]);\n const [isRunning, setIsRunning] = useState(false);\n const triggerSchema = workflow?.triggerSchema;\n\n const handleExecuteWorkflow = async (data: any) => {\n try {\n if (!workflow) return;\n setIsRunning(true);\n\n setResult(null);\n\n const { runId } = await createWorkflowRun({ workflowId });\n\n setRunId?.(runId);\n\n watchWorkflow({ workflowId, runId });\n\n startWorkflowRun({ workflowId, runId, input: data });\n } catch (err) {\n setIsRunning(false);\n toast.error('Error executing workflow');\n }\n };\n\n const handleResumeWorkflow = async (step: SuspendedStep & { context: any }) => {\n if (!workflow) return;\n\n const { stepId, runId: prevRunId, context } = step;\n\n const { runId } = await createWorkflowRun({ workflowId, prevRunId });\n\n watchWorkflow({ workflowId, runId });\n\n await resumeWorkflow({\n stepId,\n runId,\n context,\n workflowId,\n });\n };\n\n const watchResultToUse = result ?? watchResult;\n\n const workflowActivePaths = watchResultToUse?.activePaths ?? [];\n\n useEffect(() => {\n setIsRunning(isWatchingWorkflow);\n }, [isWatchingWorkflow]);\n\n useEffect(() => {\n if (!watchResultToUse?.activePaths || !result?.runId) return;\n\n const suspended = Object.entries(watchResultToUse.activePaths)\n .filter(([_, { status }]) => status === 'suspended')\n .map(([stepId, { suspendPayload }]) => ({\n stepId,\n runId: result.runId,\n suspendPayload,\n }));\n setSuspendedSteps(suspended);\n }, [watchResultToUse, result]);\n\n useEffect(() => {\n if (watchResult) {\n setResult(watchResult);\n }\n }, [watchResult]);\n\n if (isLoading) {\n return (\n <ScrollArea className=\"h-[calc(100vh-126px)] pt-2 px-4 pb-4 text-xs\">\n <div className=\"space-y-4\">\n <Skeleton className=\"h-10\" />\n <Skeleton className=\"h-10\" />\n </div>\n </ScrollArea>\n );\n }\n\n if (!workflow) return null;\n\n if (!triggerSchema) {\n return (\n <ScrollArea className=\"h-[calc(100vh-126px)] pt-2 px-4 pb-4 text-xs w-full\">\n <div className=\"space-y-4\">\n <div className=\"px-4 space-y-4\">\n <Button className=\"w-full\" disabled={isRunning} onClick={() => handleExecuteWorkflow(null)}>\n {isRunning ? <Loader2 className=\"w-4 h-4 animate-spin\" /> : 'Trigger'}\n </Button>\n </div>\n\n <div>\n <Text variant=\"secondary\" className=\"px-4 text-mastra-el-3\" size=\"xs\">\n Output\n </Text>\n <div className=\"flex flex-col gap-2\">\n <CopyButton\n classname=\"absolute z-40 w-8 h-8 p-0 transition-opacity duration-150 ease-in-out opacity-0 top-4 right-4 group-hover:opacity-100\"\n content={JSON.stringify(result ?? {}, null, 2)}\n />\n </div>\n <CodeBlockDemo\n className=\"w-[368px] overflow-x-auto\"\n code={JSON.stringify(result ?? {}, null, 2)}\n language=\"json\"\n />\n </div>\n </div>\n </ScrollArea>\n );\n }\n\n const zodInputSchema = resolveSerializedZodOutput(jsonSchemaToZod(parse(triggerSchema)));\n\n const isSuspendedSteps = suspendedSteps.length > 0;\n\n return (\n <ScrollArea className=\"h-[calc(100vh-126px)] pt-2 px-4 pb-4 text-xs w-full\">\n <div className=\"space-y-4\">\n {!isSuspendedSteps && (\n <div className=\"flex flex-col\">\n <div className=\"flex items-center justify-between w-full\">\n <Text variant=\"secondary\" className=\"px-4 text-mastra-el-3\" size=\"xs\">\n Input\n </Text>\n {isResumingWorkflow ? (\n <span className=\"flex items-center gap-1\">\n <Loader2 className=\"w-3 h-3 animate-spin text-mastra-el-accent\" /> Resuming workflow\n </span>\n ) : (\n <></>\n )}\n </div>\n <DynamicForm\n schema={zodInputSchema}\n defaultValues={payload}\n isSubmitLoading={isWatchingWorkflow}\n onSubmit={data => {\n setPayload(data);\n handleExecuteWorkflow(data);\n }}\n />\n </div>\n )}\n\n {Object.values(workflowActivePaths).length > 0 && (\n <div className=\"flex flex-col gap-2\">\n <Text variant=\"secondary\" className=\"px-4 text-mastra-el-3\" size=\"xs\">\n Status\n </Text>\n <div className=\"px-4 flex flex-col gap-4\">\n {Object.entries(workflowActivePaths)?.map(([stepId, { status: pathStatus, stepPath }]) => {\n return (\n <div className=\"flex flex-col gap-1\">\n {stepPath?.map((path, idx) => {\n const status =\n pathStatus === 'completed'\n ? 'Completed'\n : stepId === path\n ? pathStatus.charAt(0).toUpperCase() + pathStatus.slice(1)\n : 'Completed';\n\n const statusIcon =\n status === 'Completed' ? (\n <div className=\"w-2 h-2 bg-green-500 rounded-full\" />\n ) : (\n <div className=\"w-2 h-2 bg-yellow-500 rounded-full animate-pulse\" />\n );\n\n return (\n <div key={idx} className=\"flex flex-col overflow-hidden border\">\n <div className={`flex items-center justify-between p-3`}>\n <Text variant=\"secondary\" className=\"text-mastra-el-3\" size=\"xs\">\n {path.charAt(0).toUpperCase() + path.slice(1)}\n </Text>\n <span className=\"flex items-center gap-2\">\n <Text variant=\"secondary\" className=\"text-mastra-el-3\" size=\"xs\">\n {statusIcon}\n </Text>\n {status}\n </span>\n </div>\n </div>\n );\n })}\n </div>\n );\n })}\n </div>\n </div>\n )}\n\n {isSuspendedSteps &&\n suspendedSteps?.map(step => (\n <div className=\"flex flex-col px-4\">\n <Text variant=\"secondary\" className=\"text-mastra-el-3\" size=\"xs\">\n {step.stepId}\n </Text>\n {step.suspendPayload && (\n <div>\n <CodeBlockDemo\n className=\"w-[300px] overflow-x-auto p-2\"\n code={JSON.stringify(step.suspendPayload, null, 2)}\n language=\"json\"\n />\n </div>\n )}\n <DynamicForm\n schema={z.record(z.string(), z.any())}\n isSubmitLoading={isResumingWorkflow}\n submitButtonLabel=\"Resume\"\n onSubmit={data => {\n handleResumeWorkflow({\n stepId: step.stepId,\n runId: step.runId,\n suspendPayload: step.suspendPayload,\n context: data,\n });\n }}\n />\n </div>\n ))}\n\n {result && (\n <div className=\"flex flex-col\">\n <Text variant=\"secondary\" className=\"px-4 text-mastra-el-3\" size=\"xs\">\n Output\n </Text>\n <div className=\"flex flex-col gap-2\">\n <CopyButton\n classname=\"absolute z-40 w-8 h-8 p-0 transition-opacity duration-150 ease-in-out opacity-0 top-4 right-4 group-hover:opacity-100\"\n content={JSON.stringify(result, null, 2)}\n />\n </div>\n <CodeBlockDemo\n className=\"w-[368px] overflow-x-auto\"\n code={JSON.stringify(result, null, 2)}\n language=\"json\"\n />\n </div>\n )}\n </div>\n </ScrollArea>\n );\n}\n"],"names":["SyntaxHighlighter","useCopyToClipboard","memoizeMarkdownComponents","ToolFallback","React","convertMessage","message","groupEvals","groups","nextTrace","span","prevTrace","t","refetch","error","SidebarItems","tokens","group","step","layoutedNodes","layoutedEdges","initial","stepsList","Fragment","str","z","CommandPrimitive","FormConfigType","uuid","props","CodeBlock"],"mappings":"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","x_google_ignoreList":[0,1,2]}