@paymanai/payman-ask-sdk 1.0.0
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.
- package/README.md +184 -0
- package/dist/index.d.mts +388 -0
- package/dist/index.d.ts +388 -0
- package/dist/index.js +820 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +798 -0
- package/dist/index.mjs.map +1 -0
- package/dist/index.native.js +1178 -0
- package/dist/index.native.js.map +1 -0
- package/dist/styles.css +86 -0
- package/dist/styles.css.map +1 -0
- package/package.json +106 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/contexts/PaymanChatContext.tsx","../src/components/ChatInput/index.native.tsx","../src/components/AgentMessage/index.native.tsx","../src/utils/cn.ts","../src/utils/formatDate.ts","../src/components/UserMessage/index.native.tsx","../src/components/MessageRow/index.native.tsx","../src/components/MessageRowSkeleton/index.native.tsx","../src/components/MessageList/index.native.tsx","../src/components/PaymanChat/index.native.tsx"],"names":["createContext","useContext","jsx","View","jsxs","TextInput","Pressable","Pause","Send","StyleSheet","useSharedValue","React","withRepeat","withTiming","Easing","useAnimatedStyle","Animated","Loader2","useState","useEffect","FadeInDown","Layout","styles","Bot","Text","X","Markdown","ChevronUp","ChevronDown","FadeIn","FadeOut","FadeInUp","XCircle","Check","Binoculars","twMerge","clsx","User","useRef","FlatList","useChat","useMemo","KeyboardAvoidingView","Platform"],"mappings":"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","file":"index.native.js","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { MessageDisplay } from \"../types\";\n\nexport interface PaymanChatContextValue {\n\t/**\n\t * Clear all messages and reset the chat\n\t */\n\tresetSession: () => void;\n\n\t/**\n\t * Clear all messages without resetting session ID\n\t */\n\tclearMessages: () => void;\n\n\t/**\n\t * Cancel current streaming operation\n\t */\n\tcancelStream: () => void;\n\n\t/**\n\t * Get current session ID\n\t */\n\tgetSessionId: () => string | undefined;\n\n\t/**\n\t * Get all messages\n\t */\n\tgetMessages: () => MessageDisplay[];\n\n\t/**\n\t * Check if currently waiting for response\n\t */\n\tisWaitingForResponse: boolean;\n}\n\nexport const PaymanChatContext = createContext<\n\tPaymanChatContextValue | undefined\n>(undefined);\n\n/**\n * Hook to access PaymanChat controls from parent components\n * \n * @example\n * ```tsx\n * function MyComponent() {\n * const chat = usePaymanChat();\n * \n * return (\n * <>\n * <button onClick={chat.resetSession}>Reset</button>\n * <button onClick={chat.clearMessages}>Clear</button>\n * </>\n * );\n * }\n * ```\n */\nexport function usePaymanChat(): PaymanChatContextValue {\n\tconst context = useContext(PaymanChatContext);\n\tif (!context) {\n\t\tthrow new Error(\"usePaymanChat must be used within a PaymanChat component\");\n\t}\n\treturn context;\n}\n","import React from \"react\";\nimport { View, TextInput, Pressable, StyleSheet } from \"react-native\";\nimport { Send, Pause } from \"lucide-react-native\";\nimport type { ChatInputProps } from \"../../types\";\n\nexport function ChatInput({\n\tvalue,\n\tonChange,\n\tonSend,\n\tonPause,\n\tdisabled = false,\n\tplaceholder = \"Type your message...\",\n\tisWaitingForResponse = false,\n\thasSelectedSession = true,\n\tisSessionParamsConfigured = true,\n\tonClick,\n\tinputStyle = \"rounded\",\n\tlayout = \"full-width\",\n\tclassName,\n}: ChatInputProps) {\n\tconst isInputDisabled = disabled || isWaitingForResponse;\n\tconst showPauseButton = isWaitingForResponse && onPause;\n\n\tconst getPlaceholder = () => {\n\t\tif (!hasSelectedSession) {\n\t\t\treturn \"Select a version to start chatting\";\n\t\t}\n\t\tif (!isSessionParamsConfigured) {\n\t\t\treturn \"Configure User ID and User Label in Session Params\";\n\t\t}\n\t\treturn placeholder;\n\t};\n\n\treturn (\n\t\t<View style={[styles.container, layout === \"centered\" && styles.containerCentered]}>\n\t\t\t<View style={styles.wrapper}>\n\t\t\t\t<View style={[styles.inputContainer, inputStyle === \"rounded\" && styles.inputRounded]}>\n\t\t\t\t\t<TextInput\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\tonChangeText={onChange}\n\t\t\t\t\t\tonPress={onClick}\n\t\t\t\t\t\teditable={!isInputDisabled}\n\t\t\t\t\t\tplaceholder={getPlaceholder()}\n\t\t\t\t\t\tplaceholderTextColor=\"#999\"\n\t\t\t\t\t\tmultiline\n\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\tstyles.input,\n\t\t\t\t\t\t\tisInputDisabled && styles.inputDisabled,\n\t\t\t\t\t\t]}\n\t\t\t\t\t\treturnKeyType=\"default\"\n\t\t\t\t\t\tblurOnSubmit={false}\n\t\t\t\t\t/>\n\t\t\t\t\t{showPauseButton ? (\n\t\t\t\t\t\t<Pressable\n\t\t\t\t\t\t\tonPress={onPause}\n\t\t\t\t\t\t\tstyle={({ pressed }) => [\n\t\t\t\t\t\t\t\tstyles.button,\n\t\t\t\t\t\t\t\tpressed && styles.buttonPressed,\n\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Pause size={16} color=\"#FFFFFF\" />\n\t\t\t\t\t\t</Pressable>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Pressable\n\t\t\t\t\t\t\tonPress={onSend}\n\t\t\t\t\t\t\tdisabled={isInputDisabled || !value.trim()}\n\t\t\t\t\t\t\tstyle={({ pressed }) => [\n\t\t\t\t\t\t\t\tstyles.button,\n\t\t\t\t\t\t\t\t(isInputDisabled || !value.trim()) && styles.buttonDisabled,\n\t\t\t\t\t\t\t\tpressed && styles.buttonPressed,\n\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Send size={16} color=\"#FFFFFF\" />\n\t\t\t\t\t\t</Pressable>\n\t\t\t\t\t)}\n\t\t\t\t</View>\n\t\t\t</View>\n\t\t</View>\n\t);\n}\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\tpadding: 16,\n\t\twidth: \"100%\",\n\t},\n\tcontainerCentered: {\n\t\talignItems: \"center\",\n\t},\n\twrapper: {\n\t\tposition: \"relative\",\n\t\twidth: \"100%\",\n\t\tmaxWidth: 672,\n\t},\n\tinputContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"flex-end\",\n\t\tbackgroundColor: \"#F5F5F5\",\n\t\tborderWidth: 1,\n\t\tborderColor: \"#E5E5E5\",\n\t\tborderRadius: 12,\n\t\toverflow: \"hidden\",\n\t},\n\tinputRounded: {\n\t\tborderRadius: 24,\n\t},\n\tinput: {\n\t\tflex: 1,\n\t\tminHeight: 48,\n\t\tmaxHeight: 200,\n\t\tpaddingTop: 12,\n\t\tpaddingBottom: 12,\n\t\tpaddingLeft: 16,\n\t\tpaddingRight: 48,\n\t\tfontSize: 14,\n\t\tcolor: \"#000\",\n\t\tlineHeight: 20,\n\t},\n\tinputDisabled: {\n\t\topacity: 0.5,\n\t},\n\tbutton: {\n\t\tposition: \"absolute\",\n\t\tbottom: 8,\n\t\tright: 8,\n\t\twidth: 32,\n\t\theight: 32,\n\t\tborderRadius: 16,\n\t\tbackgroundColor: \"#007AFF\",\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t},\n\tbuttonDisabled: {\n\t\topacity: 0.5,\n\t},\n\tbuttonPressed: {\n\t\topacity: 0.8,\n\t},\n});\n","import React, { useState, useEffect } from \"react\";\nimport {\n\tView,\n\tText,\n\tPressable,\n\tStyleSheet,\n} from \"react-native\";\nimport {\n\tBot,\n\tChevronDown,\n\tChevronUp,\n\tCheck,\n\tX,\n\tLoader2,\n\tXCircle,\n\tBinoculars,\n} from \"lucide-react-native\";\nimport Markdown from \"react-native-markdown-display\";\nimport Animated, {\n\tFadeInDown,\n\tFadeIn,\n\tLayout,\n\tFadeInUp,\n\tFadeOut,\n\tSlideInUp,\n\tSlideOutUp,\n\tuseAnimatedStyle,\n\tuseSharedValue,\n\twithRepeat,\n\twithTiming,\n\tEasing,\n} from \"react-native-reanimated\";\nimport type { AgentMessageProps } from \"../../types\";\n\n// Animated Loader component to replace ActivityIndicator\nfunction AnimatedLoader({ size = 16, color = \"#007AFF\" }: { size?: number; color?: string }) {\n\tconst rotation = useSharedValue(0);\n\n\tReact.useEffect(() => {\n\t\trotation.value = withRepeat(\n\t\t\twithTiming(360, {\n\t\t\t\tduration: 1000,\n\t\t\t\teasing: Easing.linear,\n\t\t\t}),\n\t\t\t-1\n\t\t);\n\t}, [rotation]);\n\n\tconst animatedStyle = useAnimatedStyle(() => {\n\t\treturn {\n\t\t\ttransform: [{ rotate: `${rotation.value}deg` }],\n\t\t};\n\t});\n\n\treturn (\n\t\t<Animated.View style={animatedStyle}>\n\t\t\t<Loader2 size={size} color={color} />\n\t\t</Animated.View>\n\t);\n}\n\nexport function AgentMessage({\n\tmessage,\n\tanimated = false,\n\tshowAgentName = false,\n\tagentName = \"Assistant\",\n\tshowAvatar = false,\n\tlayout = \"full-width\",\n\tshowTimestamp = false,\n\tshowExecutionSteps = false,\n\tshowStreamingDot = false,\n\tstreamingStepsText,\n\tcompletedStepsText,\n\tonExecutionTraceClick,\n}: AgentMessageProps) {\n\tconst isStreaming = message.isStreaming ?? false;\n\tconst hasSteps = message.steps && message.steps.length > 0;\n\tconst hasTraceData =\n\t\t!!(message.tracingData || message.executionId) && !isStreaming;\n\tconst isError =\n\t\tmessage.isError ??\n\t\t(message.streamProgress === \"error\" || !!message.errorDetails);\n\tconst isCancelled = message.isCancelled ?? false;\n\tconst currentExecutingStepId = message.currentExecutingStepId;\n\n\t// Steps are expanded during streaming, stay expanded after completion\n\tconst [isStepsExpanded, setIsStepsExpanded] = useState(\n\t\tisStreaming && hasSteps\n\t);\n\n\t// Update expanded state when streaming starts - keep expanded after completion\n\tuseEffect(() => {\n\t\tif (isStreaming && hasSteps) {\n\t\t\tsetIsStepsExpanded(true);\n\t\t}\n\t}, [isStreaming, hasSteps]);\n\n\t// Calculate total elapsed time from steps\n\tconst totalElapsedMs = hasSteps\n\t\t? message.steps.reduce((sum, step) => sum + (step.elapsedMs || 0), 0)\n\t\t: 0;\n\n\tconst currentMessage = message.currentMessage;\n\t// Process content to handle literal \\n characters\n\tconst rawContent = message.streamingContent || message.content || \"\";\n\tconst content = rawContent.replace(/\\\\n/g, \"\\n\");\n\n\t// Format steps text\n\tconst getStreamingStepsText = (expanded: boolean) => {\n\t\tconst defaultText = `${expanded ? \"Hide\" : \"View\"} progress ({count} ${message.steps!.length === 1 ? \"step\" : \"steps\"})`;\n\t\tconst text = streamingStepsText || defaultText;\n\t\tconst prefix = expanded ? \"Hide\" : \"View\";\n\t\treturn text\n\t\t\t.replace(\"{count}\", message.steps!.length.toString())\n\t\t\t.replace(/^(View|Hide)/, prefix);\n\t};\n\n\tconst getCompletedStepsText = (expanded: boolean) => {\n\t\t// If custom text is provided, use it\n\t\tif (completedStepsText) {\n\t\t\tconst result = completedStepsText\n\t\t\t\t.replace(\"{count}\", message.steps!.length.toString())\n\t\t\t\t.replace(\"{time}\", (totalElapsedMs / 1000).toFixed(1));\n\n\t\t\treturn result;\n\t\t}\n\n\t\t// Fall back to default \"View execution steps\" format\n\t\tconst prefix = expanded ? \"Hide\" : \"View\";\n\t\tconst stepWord = message.steps!.length === 1 ? \"step\" : \"steps\";\n\t\treturn `${prefix} execution steps (${message.steps!.length} ${stepWord})`;\n\t};\n\n\tconst AnimatedView = animated ? Animated.View : View;\n\tconst animatedProps = animated\n\t\t? { entering: FadeInDown.duration(200), layout: Layout }\n\t\t: {};\n\n\tconst messageContent = (\n\t\t<View style={styles.container}>\n\t\t\t{/* Avatar or Streaming Dot Indicator */}\n\t\t\t{showAvatar && (\n\t\t\t\t<View style={styles.avatarContainer}>\n\t\t\t\t\t{isStreaming && showStreamingDot ? (\n\t\t\t\t\t\t// Animated dot indicator while streaming\n\t\t\t\t\t\t<View style={styles.dotContainer}>\n\t\t\t\t\t\t\t<View style={[styles.dot, styles.dotPulse]} />\n\t\t\t\t\t\t</View>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t// Avatar after completion\n\t\t\t\t\t\t<View style={styles.avatar}>\n\t\t\t\t\t\t\t<Bot size={16} color=\"#666\" />\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\t\t\t\t</View>\n\t\t\t)}\n\n\t\t\t{/* Message Container */}\n\t\t\t<View\n\t\t\t\tstyle={[\n\t\t\t\t\tstyles.messageContainer,\n\t\t\t\t\tlayout === \"centered\" && styles.messageContainerCentered,\n\t\t\t\t]}\n\t\t\t>\n\t\t\t\t{/* Message Bubble */}\n\t\t\t\t<View\n\t\t\t\t\tstyle={[\n\t\t\t\t\t\tstyles.bubble,\n\t\t\t\t\t\tlayout === \"centered\" && styles.bubbleCentered,\n\t\t\t\t\t\thasSteps && styles.bubbleWithSteps,\n\t\t\t\t\t\tisStreaming && styles.bubbleStreaming,\n\t\t\t\t\t\tisError && styles.bubbleError,\n\t\t\t\t\t]}\n\t\t\t\t>\n\t\t\t\t\t{/* Agent Name */}\n\t\t\t\t\t{showAgentName && (\n\t\t\t\t\t\t<Text style={styles.agentName}>{agentName}</Text>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{/* Message Content */}\n\t\t\t\t\t<View style={styles.contentContainer}>\n\t\t\t\t\t{isStreaming && !content ? (\n\t\t\t\t\t\t!showAvatar ? (\n\t\t\t\t\t\t\t<View style={styles.thinkingContainer}>\n\t\t\t\t\t\t\t\t<AnimatedLoader size={16} color=\"#007AFF\" />\n\t\t\t\t\t\t\t\t<Text style={styles.thinkingText}>\n\t\t\t\t\t\t\t\t\t{currentMessage || \"Thinking...\"}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Text style={styles.thinkingText}>\n\t\t\t\t\t\t\t\t{currentMessage || \"Thinking...\"}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)\n\t\t\t\t\t) : isCancelled && !content ? (\n\t\t\t\t\t\t!showAvatar ? (\n\t\t\t\t\t\t\t<View style={styles.thinkingContainer}>\n\t\t\t\t\t\t\t\t<X size={16} color=\"#666\" />\n\t\t\t\t\t\t\t\t<Text style={styles.thinkingText}>\n\t\t\t\t\t\t\t\t\t{currentMessage || \"The request was stopped.\"}\n\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Text style={styles.thinkingText}>\n\t\t\t\t\t\t\t\t{currentMessage || \"The request was stopped.\"}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t)\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<Markdown\n\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\tisError ? markdownErrorStyles : markdownStyles\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{content ||\n\t\t\t\t\t\t\t\t\t(isStreaming\n\t\t\t\t\t\t\t\t\t\t? \"Thinking...\"\n\t\t\t\t\t\t\t\t\t\t: isCancelled\n\t\t\t\t\t\t\t\t\t\t\t? \"The request was stopped.\"\n\t\t\t\t\t\t\t\t\t\t\t: isError\n\t\t\t\t\t\t\t\t\t\t\t\t? \"Oops, something went wrong. Please try again.\"\n\t\t\t\t\t\t\t\t\t\t\t\t: \"\")}\n\t\t\t\t\t\t\t</Markdown>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</View>\n\t\t\t\t</View>\n\n\t\t\t\t{/* Execution Steps - Only show when NOT streaming, if enabled, and NO error */}\n\t\t\t\t{showExecutionSteps && hasSteps && !isStreaming && !isError && (\n\t\t\t\t\t<View\n\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\tstyles.stepsContainer,\n\t\t\t\t\t\t\tlayout === \"centered\" && styles.stepsContainerCentered,\n\t\t\t\t\t\t]}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Pressable\n\t\t\t\t\t\t\tonPress={() => setIsStepsExpanded(!isStepsExpanded)}\n\t\t\t\t\t\t\tstyle={styles.stepsButton}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text style={styles.stepsButtonText}>\n\t\t\t\t\t\t\t\t{getCompletedStepsText(isStepsExpanded)}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t{isStepsExpanded ? (\n\t\t\t\t\t\t\t\t<ChevronUp size={12} color=\"#666\" />\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<ChevronDown size={12} color=\"#666\" />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Pressable>\n\n\t\t\t\t\t{/* Execution steps list */}\n\t\t\t\t\t{isStepsExpanded && (\n\t\t\t\t\t\t<Animated.View\n\t\t\t\t\t\t\tentering={animated ? FadeIn.duration(200) : undefined}\n\t\t\t\t\t\t\texiting={animated ? FadeOut.duration(200) : undefined}\n\t\t\t\t\t\t\tstyle={styles.stepsList}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{message.steps!.map((step, index) => {\n\t\t\t\t\t\t\t\tconst isCurrentlyExecuting =\n\t\t\t\t\t\t\t\t\tstep.id === currentExecutingStepId &&\n\t\t\t\t\t\t\t\t\tstep.status === \"in_progress\" &&\n\t\t\t\t\t\t\t\t\tisStreaming &&\n\t\t\t\t\t\t\t\t\t!isCancelled;\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<Animated.View\n\t\t\t\t\t\t\t\t\t\tkey={step.id}\n\t\t\t\t\t\t\t\t\t\tentering={animated ? FadeInUp.duration(300).delay(index * 50) : undefined}\n\t\t\t\t\t\t\t\t\t\tlayout={animated ? Layout.springify() : undefined}\n\t\t\t\t\t\t\t\t\t\tstyle={styles.stepItem}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{/* Status Icon */}\n\t\t\t\t\t\t\t\t\t\t\t{isCurrentlyExecuting && (\n\t\t\t\t\t\t\t\t\t\t\t\t<AnimatedLoader size={12} color=\"#007AFF\" />\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t{step.status === \"pending\" && isCancelled && (\n\t\t\t\t\t\t\t\t\t\t\t\t<XCircle size={12} color=\"#666\" />\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t{step.status === \"pending\" && !isCancelled && (\n\t\t\t\t\t\t\t\t\t\t\t\t<AnimatedLoader size={12} color=\"#007AFF\" />\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t{step.status === \"in_progress\" &&\n\t\t\t\t\t\t\t\t\t\t\t\t!isCurrentlyExecuting && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<AnimatedLoader size={12} color=\"#007AFF\" />\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t{step.status === \"completed\" && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Check size={12} color=\"#007AFF\" />\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t{step.status === \"error\" && (\n\t\t\t\t\t\t\t\t\t\t\t\t<X size={12} color=\"#FF3B30\" />\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t<View style={styles.stepContent}>\n\t\t\t\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstyles.stepText,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstep.status === \"error\" && styles.stepTextError,\n\t\t\t\t\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{step.message}\n\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t{step.elapsedMs && (\n\t\t\t\t\t\t\t\t\t\t\t\t\t<Text style={styles.stepTime}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t({(step.elapsedMs / 1000).toFixed(1)}s)\n\t\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t\t\t\t</Animated.View>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</Animated.View>\n\t\t\t\t\t)}\n\t\t\t\t</View>\n\t\t\t)}\n\n\t\t\t{/* Streaming Steps Progress - Always show during streaming */}\n\t\t\t\t{hasSteps && isStreaming && (\n\t\t\t\t\t<View\n\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\tstyles.stepsContainer,\n\t\t\t\t\t\t\tstyles.stepsContainerStreaming,\n\t\t\t\t\t\t\tlayout === \"centered\" && styles.stepsContainerCentered,\n\t\t\t\t\t\t]}\n\t\t\t\t\t>\n\t\t\t\t\t\t<Pressable\n\t\t\t\t\t\t\tonPress={() => setIsStepsExpanded(!isStepsExpanded)}\n\t\t\t\t\t\t\tstyle={styles.stepsButton}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Text style={styles.stepsButtonText}>\n\t\t\t\t\t\t\t\t{getStreamingStepsText(isStepsExpanded)}\n\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t{isStepsExpanded ? (\n\t\t\t\t\t\t\t\t<ChevronUp size={12} color=\"#666\" />\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t<ChevronDown size={12} color=\"#666\" />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</Pressable>\n\n\t\t\t\t\t{/* Streaming steps list */}\n\t\t\t\t\t{isStepsExpanded && (\n\t\t\t\t\t\t<Animated.View\n\t\t\t\t\t\t\tentering={animated ? FadeIn.duration(200) : undefined}\n\t\t\t\t\t\t\texiting={animated ? FadeOut.duration(200) : undefined}\n\t\t\t\t\t\t\tstyle={styles.stepsList}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{message.steps!.map((step, index) => {\n\t\t\t\t\t\t\t\tconst isCurrentlyExecuting =\n\t\t\t\t\t\t\t\t\tstep.id === currentExecutingStepId &&\n\t\t\t\t\t\t\t\t\tstep.status === \"in_progress\" &&\n\t\t\t\t\t\t\t\t\tisStreaming &&\n\t\t\t\t\t\t\t\t\t!isCancelled;\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<Animated.View\n\t\t\t\t\t\t\t\t\t\tkey={step.id}\n\t\t\t\t\t\t\t\t\t\tentering={animated ? FadeInUp.duration(300).delay(index * 50) : undefined}\n\t\t\t\t\t\t\t\t\t\tlayout={animated ? Layout.springify() : undefined}\n\t\t\t\t\t\t\t\t\t\tstyle={styles.stepItem}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{/* Status Icon */}\n\t\t\t\t\t\t\t\t\t\t{isCurrentlyExecuting && (\n\t\t\t\t\t\t\t\t\t\t\t<AnimatedLoader size={12} color=\"#007AFF\" />\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{step.status === \"pending\" && isCancelled && (\n\t\t\t\t\t\t\t\t\t\t\t<XCircle size={12} color=\"#666\" />\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{step.status === \"pending\" && !isCancelled && (\n\t\t\t\t\t\t\t\t\t\t\t<AnimatedLoader size={12} color=\"#007AFF\" />\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{step.status === \"in_progress\" &&\n\t\t\t\t\t\t\t\t\t\t\t!isCurrentlyExecuting && (\n\t\t\t\t\t\t\t\t\t\t\t\t<AnimatedLoader size={12} color=\"#007AFF\" />\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{step.status === \"completed\" && (\n\t\t\t\t\t\t\t\t\t\t\t<Check size={12} color=\"#007AFF\" />\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t{step.status === \"error\" && (\n\t\t\t\t\t\t\t\t\t\t\t<X size={12} color=\"#FF3B30\" />\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t<View style={styles.stepContent}>\n\t\t\t\t\t\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyles.stepText,\n\t\t\t\t\t\t\t\t\t\t\t\t\tstep.status === \"error\" && styles.stepTextError,\n\t\t\t\t\t\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t{step.message}\n\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t{step.elapsedMs && (\n\t\t\t\t\t\t\t\t\t\t\t\t<Text style={styles.stepTime}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t({(step.elapsedMs / 1000).toFixed(1)}s)\n\t\t\t\t\t\t\t\t\t\t\t\t</Text>\n\t\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t\t\t</Animated.View>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t</Animated.View>\n\t\t\t\t\t)}\n\t\t\t\t\t</View>\n\t\t\t\t)}\n\t\t\t</View>\n\n\t\t\t{/* Trace Icon - Positioned next to message */}\n\t\t\t{hasTraceData && onExecutionTraceClick && (\n\t\t\t\t<Pressable\n\t\t\t\t\tonPress={() =>\n\t\t\t\t\t\tonExecutionTraceClick({\n\t\t\t\t\t\t\tmessage,\n\t\t\t\t\t\t\ttracingData: message.tracingData,\n\t\t\t\t\t\t\texecutionId: message.executionId,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\tstyle={styles.traceButton}\n\t\t\t\t>\n\t\t\t\t\t<Binoculars size={16} color=\"#007AFF\" />\n\t\t\t\t</Pressable>\n\t\t\t)}\n\t\t</View>\n\t);\n\n\treturn <AnimatedView {...animatedProps}>{messageContent}</AnimatedView>;\n}\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"flex-start\",\n\t\talignItems: \"flex-start\",\n\t\twidth: \"100%\",\n\t\tgap: 16,\n\t},\n\tavatarContainer: {\n\t\twidth: 32,\n\t\theight: 32,\n\t\tmarginTop: 2,\n\t},\n\tdotContainer: {\n\t\twidth: 32,\n\t\theight: 32,\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t},\n\tdot: {\n\t\twidth: 8,\n\t\theight: 8,\n\t\tborderRadius: 4,\n\t\tbackgroundColor: \"#007AFF\",\n\t},\n\tdotPulse: {\n\t\topacity: 0.75,\n\t},\n\tavatar: {\n\t\twidth: 32,\n\t\theight: 32,\n\t\tborderRadius: 16,\n\t\tbackgroundColor: \"#F5F5F5\",\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t},\n\tmessageContainer: {\n\t\tminWidth: 0,\n\t\tflex: 1,\n\t\tmaxWidth: \"80%\",\n\t},\n\tmessageContainerCentered: {\n\t\tmaxWidth: \"85%\",\n\t},\n\tbubble: {\n\t\toverflow: \"hidden\",\n\t\twidth: \"100%\",\n\t\tpadding: 12,\n\t\tbackgroundColor: \"#F5F5F5\",\n\t\tborderRadius: 8,\n\t},\n\tbubbleCentered: {\n\t\tbackgroundColor: \"#FFFFFF\",\n\t\tborderWidth: 1,\n\t\tborderColor: \"#E5E5E5\",\n\t\tborderRadius: 16,\n\t\tborderTopLeftRadius: 4,\n\t},\n\tbubbleWithSteps: {\n\t\tborderBottomLeftRadius: 0,\n\t\tborderBottomRightRadius: 0,\n\t},\n\tbubbleStreaming: {\n\t\tborderColor: \"#D1D5DB\",\n\t},\n\tbubbleError: {\n\t\tbackgroundColor: \"#FEE\",\n\t\tborderColor: \"#FCC\",\n\t},\n\tagentName: {\n\t\tfontSize: 12,\n\t\tfontWeight: \"600\",\n\t\topacity: 0.6,\n\t\tmarginBottom: 6,\n\t},\n\tcontentContainer: {\n\t\tfontSize: 14,\n\t\tlineHeight: 22,\n\t},\n\tthinkingContainer: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"center\",\n\t\tgap: 12,\n\t},\n\tthinkingText: {\n\t\tfontSize: 14,\n\t\tcolor: \"#666\",\n\t},\n\tstepsContainer: {\n\t\toverflow: \"hidden\",\n\t\tbackgroundColor: \"#F5F5F5\",\n\t\tborderTopWidth: 1,\n\t\tborderTopColor: \"rgba(0,0,0,0.1)\",\n\t\tborderBottomLeftRadius: 8,\n\t\tborderBottomRightRadius: 8,\n\t},\n\tstepsContainerCentered: {\n\t\tbackgroundColor: \"#FFFFFF\",\n\t\tborderWidth: 1,\n\t\tborderTopWidth: 0,\n\t\tborderColor: \"#E5E5E5\",\n\t\tborderBottomLeftRadius: 16,\n\t\tborderBottomRightRadius: 16,\n\t},\n\tstepsContainerStreaming: {\n\t\tborderTopColor: \"#D1D5DB\",\n\t},\n\tstepsButton: {\n\t\twidth: \"100%\",\n\t\tpaddingHorizontal: 16,\n\t\tpaddingVertical: 8,\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"space-between\",\n\t\talignItems: \"center\",\n\t},\n\tstepsButtonText: {\n\t\tfontSize: 12,\n\t\tcolor: \"#666\",\n\t},\n\tstepsList: {\n\t\tpaddingHorizontal: 16,\n\t\tpaddingBottom: 12,\n\t\tpaddingTop: 8,\n\t\tgap: 8,\n\t\tbackgroundColor: \"rgba(0,0,0,0.02)\",\n\t},\n\tstepItem: {\n\t\tflexDirection: \"row\",\n\t\talignItems: \"flex-start\",\n\t\tgap: 8,\n\t},\n\tstepContent: {\n\t\tflex: 1,\n\t\tminWidth: 0,\n\t},\n\tstepText: {\n\t\tfontSize: 12,\n\t\tcolor: \"#666\",\n\t\tflexWrap: \"wrap\",\n\t},\n\tstepTextError: {\n\t\tcolor: \"#FF3B30\",\n\t},\n\tstepTime: {\n\t\tfontSize: 10,\n\t\topacity: 0.5,\n\t\tmarginLeft: 6,\n\t},\n\ttraceButton: {\n\t\tmarginTop: 2,\n\t\tpadding: 8,\n\t\tbackgroundColor: \"rgba(255,255,255,0.05)\",\n\t\tborderWidth: 1,\n\t\tborderColor: \"rgba(255,255,255,0.2)\",\n\t\tborderRadius: 8,\n\t},\n});\n\n// Markdown styles for normal content\nconst markdownStyles = {\n\tbody: {\n\t\tfontSize: 14,\n\t\tlineHeight: 22,\n\t\tcolor: \"#000\",\n\t},\n\tparagraph: {\n\t\tmarginBottom: 12,\n\t\tfontSize: 14,\n\t\tlineHeight: 22,\n\t},\n\tstrong: {\n\t\tfontWeight: \"600\",\n\t},\n\tem: {\n\t\tfontStyle: \"italic\",\n\t},\n\tcode_inline: {\n\t\tbackgroundColor: \"#F5F5F5\",\n\t\tpaddingHorizontal: 6,\n\t\tpaddingVertical: 2,\n\t\tborderRadius: 4,\n\t\tfontSize: 12,\n\t\tfontFamily: \"monospace\",\n\t},\n\tcode_block: {\n\t\tbackgroundColor: \"#F5F5F5\",\n\t\tpadding: 12,\n\t\tborderRadius: 8,\n\t\tfontSize: 12,\n\t\tfontFamily: \"monospace\",\n\t\tmarginVertical: 8,\n\t},\n\tlist_item: {\n\t\tfontSize: 14,\n\t\tlineHeight: 22,\n\t},\n\tbullet_list: {\n\t\tmarginBottom: 12,\n\t},\n\tordered_list: {\n\t\tmarginBottom: 12,\n\t},\n};\n\n// Markdown styles for error content\nconst markdownErrorStyles = {\n\t...markdownStyles,\n\tbody: {\n\t\t...markdownStyles.body,\n\t\tcolor: \"#FF3B30\",\n\t},\n\tparagraph: {\n\t\t...markdownStyles.paragraph,\n\t\tcolor: \"#FF3B30\",\n\t},\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Utility function to merge Tailwind CSS classes\n */\nexport function cn(...inputs: ClassValue[]) {\n\treturn twMerge(clsx(inputs));\n}\n","/**\n * Format a timestamp to a readable date/time string\n */\nexport function formatDate(timestamp: string | Date): string {\n\tconst date = typeof timestamp === \"string\" ? new Date(timestamp) : timestamp;\n\t\n\tconst now = new Date();\n\tconst diffMs = now.getTime() - date.getTime();\n\tconst diffMins = Math.floor(diffMs / 60000);\n\tconst diffHours = Math.floor(diffMs / 3600000);\n\tconst diffDays = Math.floor(diffMs / 86400000);\n\n\t// Less than a minute\n\tif (diffMins < 1) {\n\t\treturn \"Just now\";\n\t}\n\n\t// Less than an hour\n\tif (diffMins < 60) {\n\t\treturn `${diffMins}m ago`;\n\t}\n\n\t// Less than a day\n\tif (diffHours < 24) {\n\t\treturn `${diffHours}h ago`;\n\t}\n\n\t// Less than a week\n\tif (diffDays < 7) {\n\t\treturn `${diffDays}d ago`;\n\t}\n\n\t// Format as date\n\treturn date.toLocaleDateString(\"en-US\", {\n\t\tmonth: \"short\",\n\t\tday: \"numeric\",\n\t\tyear: date.getFullYear() !== now.getFullYear() ? \"numeric\" : undefined,\n\t});\n}\n","import React from \"react\";\nimport { View, Text, StyleSheet } from \"react-native\";\nimport { User } from \"lucide-react-native\";\nimport Animated, { FadeInDown } from \"react-native-reanimated\";\nimport type { UserMessageProps } from \"../../types\";\nimport { formatDate } from \"../../utils\";\n\nexport function UserMessage({\n\tmessage,\n\tanimated = false,\n\tshowAvatar = false,\n}: UserMessageProps) {\n\tconst AnimatedView = animated ? Animated.View : View;\n\tconst animatedProps = animated ? { entering: FadeInDown.duration(300) } : {};\n\n\treturn (\n\t\t<AnimatedView {...animatedProps}>\n\t\t\t<View style={styles.container}>\n\t\t\t\t{/* Message Container */}\n\t\t\t\t<View style={styles.messageContainer}>\n\t\t\t\t\t<View style={styles.bubble}>\n\t\t\t\t\t\t<Text style={styles.text}>{message.content}</Text>\n\t\t\t\t\t</View>\n\t\t\t\t\t<Text style={styles.timestamp}>{formatDate(message.timestamp)}</Text>\n\t\t\t\t</View>\n\n\t\t\t\t{/* Avatar - Only show if enabled */}\n\t\t\t\t{showAvatar && (\n\t\t\t\t\t<View style={styles.avatarContainer}>\n\t\t\t\t\t\t<View style={styles.avatar}>\n\t\t\t\t\t\t\t<User size={16} color=\"#007AFF\" />\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</View>\n\t\t\t\t)}\n\t\t\t</View>\n\t\t</AnimatedView>\n\t);\n}\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"flex-end\",\n\t\twidth: \"100%\",\n\t\tgap: 16,\n\t},\n\tmessageContainer: {\n\t\tmaxWidth: \"85%\",\n\t\tminWidth: 0,\n\t\tflexDirection: \"column\",\n\t\talignItems: \"flex-end\",\n\t},\n\tbubble: {\n\t\tborderRadius: 8,\n\t\tpadding: 12,\n\t\tbackgroundColor: \"#007AFF\",\n\t},\n\ttext: {\n\t\tfontSize: 14,\n\t\tcolor: \"#FFFFFF\",\n\t\tlineHeight: 20,\n\t},\n\ttimestamp: {\n\t\tfontSize: 10,\n\t\tmarginTop: 4,\n\t\tcolor: \"#666\",\n\t},\n\tavatarContainer: {\n\t\twidth: 32,\n\t\theight: 32,\n\t\tmarginTop: 2,\n\t},\n\tavatar: {\n\t\twidth: 32,\n\t\theight: 32,\n\t\tborderRadius: 16,\n\t\tbackgroundColor: \"rgba(0, 122, 255, 0.1)\",\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t},\n});\n","import React from \"react\";\nimport type { MessageRowProps } from \"../../types\";\nimport { AgentMessage } from \"../AgentMessage\";\nimport { UserMessage } from \"../UserMessage\";\n\nexport function MessageRow({\n\tmessage,\n\tstage = \"DEV\",\n\tanimated = false,\n\tshowAgentName = false,\n\tagentName = \"Paygent\",\n\tshowAvatars = false,\n\tshowUserAvatar,\n\tshowAssistantAvatar,\n\tshowExecutionSteps = false,\n\tshowStreamingDot = false,\n\tstreamingStepsText,\n\tcompletedStepsText,\n\tonExecutionTraceClick,\n}: MessageRowProps) {\n\t// Determine actual avatar visibility\n\tconst actualShowUserAvatar =\n\t\tshowUserAvatar !== undefined ? showUserAvatar : showAvatars;\n\tconst actualShowAssistantAvatar =\n\t\tshowAssistantAvatar !== undefined ? showAssistantAvatar : showAvatars;\n\n\tif (message.role === \"user\") {\n\t\treturn (\n\t\t\t<UserMessage\n\t\t\t\tmessage={message}\n\t\t\t\tanimated={animated}\n\t\t\t\tshowAvatar={actualShowUserAvatar}\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<AgentMessage\n\t\t\tmessage={message}\n\t\t\tstage={stage}\n\t\t\tanimated={animated}\n\t\t\tshowAgentName={showAgentName}\n\t\t\tagentName={agentName}\n\t\t\tshowAvatar={actualShowAssistantAvatar}\n\t\t\tshowExecutionSteps={showExecutionSteps}\n\t\t\tshowStreamingDot={showStreamingDot}\n\t\t\tstreamingStepsText={streamingStepsText}\n\t\t\tcompletedStepsText={completedStepsText}\n\t\t\tonExecutionTraceClick={onExecutionTraceClick}\n\t\t/>\n\t);\n}\n","import React, { useEffect } from \"react\";\nimport { View, StyleSheet } from \"react-native\";\nimport Animated, {\n\tuseAnimatedStyle,\n\tuseSharedValue,\n\twithRepeat,\n\twithTiming,\n} from \"react-native-reanimated\";\n\ninterface MessageRowSkeletonProps {\n\tisRightAligned?: boolean;\n}\n\nexport function MessageRowSkeleton({\n\tisRightAligned = false,\n}: MessageRowSkeletonProps) {\n\tconst opacity = useSharedValue(0.3);\n\n\tuseEffect(() => {\n\t\topacity.value = withRepeat(\n\t\t\twithTiming(1, { duration: 1000 }),\n\t\t\t-1,\n\t\t\ttrue\n\t\t);\n\t}, []);\n\n\tconst animatedStyle = useAnimatedStyle(() => ({\n\t\topacity: opacity.value,\n\t}));\n\n\treturn (\n\t\t<View\n\t\t\tstyle={[\n\t\t\t\tstyles.container,\n\t\t\t\tisRightAligned ? styles.containerRight : styles.containerLeft,\n\t\t\t]}\n\t\t>\n\t\t\t<View\n\t\t\t\tstyle={[\n\t\t\t\t\tstyles.content,\n\t\t\t\t\tisRightAligned ? styles.contentRight : styles.contentLeft,\n\t\t\t\t]}\n\t\t\t>\n\t\t\t\t<View\n\t\t\t\t\tstyle={[\n\t\t\t\t\t\tstyles.bubble,\n\t\t\t\t\t\tisRightAligned ? styles.bubbleRight : styles.bubbleLeft,\n\t\t\t\t\t]}\n\t\t\t\t>\n\t\t\t\t\t<Animated.View style={animatedStyle}>\n\t\t\t\t\t\t<View style={styles.skeletonContainer}>\n\t\t\t\t\t\t\t<View style={[styles.skeletonLine, { width: \"75%\" }]} />\n\t\t\t\t\t\t\t<View style={[styles.skeletonLine, { width: \"100%\" }]} />\n\t\t\t\t\t\t\t<View style={[styles.skeletonLine, { width: \"85%\" }]} />\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</Animated.View>\n\t\t\t\t</View>\n\t\t\t\t<Animated.View style={[styles.timestamp, animatedStyle]} />\n\t\t\t</View>\n\t\t</View>\n\t);\n}\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\tflexDirection: \"row\",\n\t\twidth: \"100%\",\n\t},\n\tcontainerLeft: {\n\t\tjustifyContent: \"flex-start\",\n\t},\n\tcontainerRight: {\n\t\tjustifyContent: \"flex-end\",\n\t},\n\tcontent: {\n\t\tmaxWidth: \"80%\",\n\t\twidth: \"100%\",\n\t},\n\tcontentLeft: {\n\t\talignItems: \"flex-start\",\n\t},\n\tcontentRight: {\n\t\talignItems: \"flex-end\",\n\t},\n\tbubble: {\n\t\tborderRadius: 8,\n\t\tpadding: 12,\n\t\twidth: \"100%\",\n\t},\n\tbubbleLeft: {\n\t\tbackgroundColor: \"#F5F5F5\",\n\t},\n\tbubbleRight: {\n\t\tbackgroundColor: \"rgba(0, 122, 255, 0.2)\",\n\t},\n\tskeletonContainer: {\n\t\tgap: 8,\n\t},\n\tskeletonLine: {\n\t\theight: 12,\n\t\tbackgroundColor: \"rgba(0, 0, 0, 0.2)\",\n\t\tborderRadius: 4,\n\t},\n\ttimestamp: {\n\t\theight: 8,\n\t\twidth: 64,\n\t\tbackgroundColor: \"rgba(0, 0, 0, 0.2)\",\n\t\tborderRadius: 4,\n\t\tmarginTop: 4,\n\t},\n});\n","import React, { useRef, useEffect } from \"react\";\nimport { View, Text, FlatList, StyleSheet } from \"react-native\";\nimport { Bot } from \"lucide-react-native\";\nimport Animated, { FadeIn } from \"react-native-reanimated\";\nimport type { MessageListProps } from \"../../types\";\nimport { MessageRow } from \"../MessageRow\";\nimport { MessageRowSkeleton } from \"../MessageRowSkeleton\";\n\nexport function MessageList({\n\tmessages,\n\tisLoading = false,\n\temptyStateText = \"What can I help with?\",\n\tshowEmptyStateIcon = true,\n\tlayout = \"full-width\",\n\tshowTimestamps = false,\n\tstage = \"DEV\",\n\tanimated = false,\n\tshowAgentName = false,\n\tagentName = \"Paygent\",\n\tshowAvatars = false,\n\tshowUserAvatar,\n\tshowAssistantAvatar,\n\tshowExecutionSteps = false,\n\tshowStreamingDot = false,\n\tstreamingStepsText,\n\tcompletedStepsText,\n\tonExecutionTraceClick,\n\tclassName,\n}: MessageListProps) {\n\tconst flatListRef = useRef<FlatList>(null);\n\n\t// Auto-scroll to bottom when new messages arrive\n\tuseEffect(() => {\n\t\tif (messages.length > 0) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tflatListRef.current?.scrollToEnd({ animated: true });\n\t\t\t}, 100);\n\t\t}\n\t}, [messages.length]);\n\n\tif (isLoading) {\n\t\treturn (\n\t\t\t<View style={styles.container}>\n\t\t\t\t<View style={styles.content}>\n\t\t\t\t\t{Array.from({ length: 6 }).map((_, index) => (\n\t\t\t\t\t\t<MessageRowSkeleton\n\t\t\t\t\t\t\tkey={`skeleton-${index}`}\n\t\t\t\t\t\t\tisRightAligned={index % 3 === 0}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</View>\n\t\t\t</View>\n\t\t);\n\t}\n\n\tif (messages.length === 0) {\n\t\treturn (\n\t\t\t<View style={styles.emptyContainer}>\n\t\t\t\t<Animated.View\n\t\t\t\t\tentering={FadeIn.duration(500)}\n\t\t\t\t\tstyle={styles.emptyContent}\n\t\t\t\t>\n\t\t\t\t\t{/* Bot Icon - Optional */}\n\t\t\t\t\t{showEmptyStateIcon && (\n\t\t\t\t\t\t<View style={styles.iconContainer}>\n\t\t\t\t\t\t\t<Bot size={24} color=\"#999\" />\n\t\t\t\t\t\t</View>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{/* Empty state text - supports multiline with \\n */}\n\t\t\t\t\t{emptyStateText.split(\"\\n\").map((line, index) => (\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\tindex === 0\n\t\t\t\t\t\t\t\t\t? layout === \"centered\"\n\t\t\t\t\t\t\t\t\t\t? styles.emptyTitle\n\t\t\t\t\t\t\t\t\t\t: styles.emptyTitleDefault\n\t\t\t\t\t\t\t\t\t: styles.emptySubtitle,\n\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{line}\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t))}\n\t\t\t\t</Animated.View>\n\t\t\t</View>\n\t\t);\n\t}\n\n\treturn (\n\t\t<FlatList\n\t\t\tref={flatListRef}\n\t\t\tdata={messages}\n\t\t\tkeyExtractor={(item) => item.id}\n\t\t\trenderItem={({ item }) => (\n\t\t\t\t<MessageRow\n\t\t\t\t\tmessage={item}\n\t\t\t\t\tstage={stage}\n\t\t\t\t\tanimated={animated}\n\t\t\t\t\tshowAgentName={showAgentName}\n\t\t\t\t\tagentName={agentName}\n\t\t\t\t\tshowAvatars={showAvatars}\n\t\t\t\t\tshowUserAvatar={showUserAvatar}\n\t\t\t\t\tshowAssistantAvatar={showAssistantAvatar}\n\t\t\t\t\tshowExecutionSteps={showExecutionSteps}\n\t\t\t\t\tshowStreamingDot={showStreamingDot}\n\t\t\t\t\tstreamingStepsText={streamingStepsText}\n\t\t\t\t\tcompletedStepsText={completedStepsText}\n\t\t\t\t\tonExecutionTraceClick={onExecutionTraceClick}\n\t\t\t\t/>\n\t\t\t)}\n\t\t\tcontentContainerStyle={[\n\t\t\t\tstyles.listContent,\n\t\t\t\tlayout === \"centered\" && styles.listContentCentered,\n\t\t\t]}\n\t\t\tshowsVerticalScrollIndicator={true}\n\t\t/>\n\t);\n}\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\tflex: 1,\n\t},\n\tcontent: {\n\t\tpadding: 16,\n\t\tgap: 16,\n\t},\n\temptyContainer: {\n\t\tflex: 1,\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tpadding: 16,\n\t},\n\temptyContent: {\n\t\talignItems: \"center\",\n\t\tgap: 16,\n\t},\n\ticonContainer: {\n\t\twidth: 48,\n\t\theight: 48,\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t},\n\temptyTitle: {\n\t\tfontSize: 24,\n\t\tfontWeight: \"600\",\n\t\tcolor: \"#007AFF\",\n\t\ttextAlign: \"center\",\n\t},\n\temptyTitleDefault: {\n\t\tfontSize: 24,\n\t\tfontWeight: \"600\",\n\t\tcolor: \"#000\",\n\t\ttextAlign: \"center\",\n\t},\n\temptySubtitle: {\n\t\tfontSize: 14,\n\t\tcolor: \"#999\",\n\t\ttextAlign: \"center\",\n\t},\n\tlistContent: {\n\t\tpadding: 16,\n\t\tgap: 16,\n\t},\n\tlistContentCentered: {\n\t\tmaxWidth: 672,\n\t\talignSelf: \"center\",\n\t\twidth: \"100%\",\n\t},\n});\n","import React, { useMemo, useState } from \"react\";\nimport { View, Text, StyleSheet, KeyboardAvoidingView, Platform } from \"react-native\";\nimport { useChat } from \"@paymanai/payman-typescript-ask-sdk\";\nimport { PaymanChatContext } from \"../../contexts\";\nimport type { PaymanChatProps } from \"../../types\";\nimport { ChatInput } from \"../ChatInput\";\nimport { MessageList } from \"../MessageList\";\n\nexport function PaymanChat({\n\tconfig,\n\tcallbacks = {},\n\tclassName,\n\tstyle,\n\tchildren,\n}: PaymanChatProps) {\n\tconst [inputValue, setInputValue] = useState(\"\");\n\n\t// Use the chat hook - it handles everything internally\n\tconst {\n\t\tmessages,\n\t\tsendMessage,\n\t\tisWaitingForResponse,\n\t\tresetSession,\n\t\tclearMessages,\n\t\tcancelStream,\n\t\tgetSessionId,\n\t\tgetMessages,\n\t} = useChat(config, callbacks);\n\n\t// Create context value with control methods\n\tconst contextValue = useMemo(\n\t\t() => ({\n\t\t\tresetSession,\n\t\t\tclearMessages,\n\t\t\tcancelStream,\n\t\t\tgetSessionId,\n\t\t\tgetMessages,\n\t\t\tisWaitingForResponse,\n\t\t}),\n\t\t[\n\t\t\tresetSession,\n\t\t\tclearMessages,\n\t\t\tcancelStream,\n\t\t\tgetSessionId,\n\t\t\tgetMessages,\n\t\t\tisWaitingForResponse,\n\t\t]\n\t);\n\n\t// Extract callbacks\n\tconst { onExecutionTraceClick } = callbacks;\n\n\t// Extract config with hardcoded UI defaults\n\tconst {\n\t\tplaceholder = \"Type your message...\",\n\t\temptyStateText = \"What can I help with?\",\n\t\tsessionParams,\n\t\tdisableInput = false,\n\t\thasAskPermission = true,\n\t\tstreamingStepsText,\n\t\tcompletedStepsText,\n\t\tshowAvatars = false,\n\t\tshowUserAvatar,\n\t\tshowAssistantAvatar,\n\t\tshowAgentName = true,\n\t\tagentName = \"Assistant\",\n\t\tshowExecutionSteps = true,\n\t\tshowStreamingDot = true,\n\t\tlayout = \"full-width\",\n\t\tshowTimestamps = false,\n\t\tanimated = true,\n\t\tisChatDisabled = false,\n\t\tdisabledComponent,\n\t\tshowEmptyStateIcon = true,\n\t\tinputStyle = \"rounded\",\n\t} = config;\n\n\t// Check if session params are configured\n\tconst isSessionParamsConfigured = useMemo(() => {\n\t\tif (!sessionParams) return false;\n\t\treturn !!(sessionParams.id?.trim() && sessionParams.name?.trim());\n\t}, [sessionParams?.id, sessionParams?.name]);\n\n\tconst handleSend = () => {\n\t\tif (inputValue.trim() && !disableInput && isSessionParamsConfigured) {\n\t\t\tsendMessage(inputValue.trim());\n\t\t\tsetInputValue(\"\");\n\t\t}\n\t};\n\n\tconst isInputDisabled =\n\t\tisWaitingForResponse || !isSessionParamsConfigured || disableInput;\n\n\t// If chat is disabled, show custom component or default disabled UI\n\tif (isChatDisabled) {\n\t\tif (disabledComponent) {\n\t\t\treturn (\n\t\t\t\t<PaymanChatContext.Provider value={contextValue}>\n\t\t\t\t\t<View style={[styles.container, style]}>\n\t\t\t\t\t\t{/* Custom header can be passed as children */}\n\t\t\t\t\t\t{children}\n\t\t\t\t\t\t{/* Custom disabled component */}\n\t\t\t\t\t\t{disabledComponent}\n\t\t\t\t\t</View>\n\t\t\t\t</PaymanChatContext.Provider>\n\t\t\t);\n\t\t}\n\n\t\t// Default disabled UI\n\t\treturn (\n\t\t\t<PaymanChatContext.Provider value={contextValue}>\n\t\t\t\t<View style={[styles.container, style]}>\n\t\t\t\t\t{/* Custom header can be passed as children */}\n\t\t\t\t\t{children}\n\t\t\t\t\t{/* Default disabled state */}\n\t\t\t\t\t<View style={styles.disabledContainer}>\n\t\t\t\t\t\t<Text style={styles.disabledText}>\n\t\t\t\t\t\t\tChat is currently disabled\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</View>\n\t\t\t\t</View>\n\t\t\t</PaymanChatContext.Provider>\n\t\t);\n\t}\n\n\treturn (\n\t\t<PaymanChatContext.Provider value={contextValue}>\n\t\t\t<KeyboardAvoidingView\n\t\t\t\tstyle={[styles.container, style]}\n\t\t\t\tbehavior={Platform.OS === \"ios\" ? \"padding\" : \"height\"}\n\t\t\t\tkeyboardVerticalOffset={Platform.OS === \"ios\" ? 90 : 0}\n\t\t\t>\n\t\t\t\t{/* Custom header can be passed as children */}\n\t\t\t\t{children}\n\n\t\t\t\t{/* Messages Area */}\n\t\t\t\t<MessageList\n\t\t\t\t\tmessages={messages}\n\t\t\t\t\tisLoading={false}\n\t\t\t\t\temptyStateText={emptyStateText}\n\t\t\t\t\tshowEmptyStateIcon={showEmptyStateIcon}\n\t\t\t\t\tlayout={layout}\n\t\t\t\t\tshowTimestamps={showTimestamps}\n\t\t\t\t\tstage={config.stage || \"DEV\"}\n\t\t\t\t\tanimated={animated}\n\t\t\t\t\tshowAgentName={showAgentName}\n\t\t\t\t\tagentName={agentName}\n\t\t\t\t\tshowAvatars={showAvatars}\n\t\t\t\t\tshowUserAvatar={showUserAvatar}\n\t\t\t\t\tshowAssistantAvatar={showAssistantAvatar}\n\t\t\t\t\tshowExecutionSteps={showExecutionSteps}\n\t\t\t\t\tshowStreamingDot={showStreamingDot}\n\t\t\t\t\tstreamingStepsText={streamingStepsText}\n\t\t\t\t\tcompletedStepsText={completedStepsText}\n\t\t\t\t\tonExecutionTraceClick={onExecutionTraceClick}\n\t\t\t\t/>\n\n\t\t\t\t{/* Chat Input Area - Only show if user has ask permission */}\n\t\t\t\t{hasAskPermission && (\n\t\t\t\t\t<ChatInput\n\t\t\t\t\t\tvalue={inputValue}\n\t\t\t\t\t\tonChange={setInputValue}\n\t\t\t\t\t\tonSend={handleSend}\n\t\t\t\t\t\tonPause={cancelStream}\n\t\t\t\t\t\tdisabled={isInputDisabled}\n\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\tisWaitingForResponse={isWaitingForResponse}\n\t\t\t\t\t\thasSelectedSession={true}\n\t\t\t\t\t\tisSessionParamsConfigured={isSessionParamsConfigured}\n\t\t\t\t\t\tinputStyle={inputStyle}\n\t\t\t\t\t\tlayout={layout}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</KeyboardAvoidingView>\n\t\t</PaymanChatContext.Provider>\n\t);\n}\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\tflex: 1,\n\t\tbackgroundColor: \"#FFF\",\n\t\tborderWidth: 1,\n\t\tborderColor: \"#E5E5E5\",\n\t\tborderRadius: 8,\n\t\toverflow: \"hidden\",\n\t},\n\tdisabledContainer: {\n\t\tflex: 1,\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\tpadding: 16,\n\t},\n\tdisabledText: {\n\t\tfontSize: 14,\n\t\tcolor: \"#999\",\n\t\ttextAlign: \"center\",\n\t},\n});\n"]}
|
package/dist/styles.css
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/* src/styles.css */
|
|
2
|
+
.payman-chat {
|
|
3
|
+
--primary: 222.2 47.4% 11.2%;
|
|
4
|
+
--primary-foreground: 210 40% 98%;
|
|
5
|
+
--card: 0 0% 100%;
|
|
6
|
+
--card-foreground: 222.2 84% 4.9%;
|
|
7
|
+
--border: 214.3 31.8% 91.4%;
|
|
8
|
+
--input: 214.3 31.8% 91.4%;
|
|
9
|
+
--muted: 210 40% 96.1%;
|
|
10
|
+
--muted-foreground: 215.4 16.3% 46.9%;
|
|
11
|
+
--foreground: 222.2 84% 4.9%;
|
|
12
|
+
--destructive: 0 84.2% 60.2%;
|
|
13
|
+
--highlight: 217.2 91.2% 59.8%;
|
|
14
|
+
}
|
|
15
|
+
.markdown-content {
|
|
16
|
+
line-height: 1.6;
|
|
17
|
+
}
|
|
18
|
+
.markdown-content > *:first-child {
|
|
19
|
+
margin-top: 0;
|
|
20
|
+
}
|
|
21
|
+
.markdown-content > *:last-child {
|
|
22
|
+
margin-bottom: 0;
|
|
23
|
+
}
|
|
24
|
+
.markdown-content pre {
|
|
25
|
+
overflow-x: auto;
|
|
26
|
+
}
|
|
27
|
+
.markdown-content code {
|
|
28
|
+
font-family:
|
|
29
|
+
ui-monospace,
|
|
30
|
+
SFMono-Regular,
|
|
31
|
+
Menlo,
|
|
32
|
+
Monaco,
|
|
33
|
+
Consolas,
|
|
34
|
+
"Liberation Mono",
|
|
35
|
+
"Courier New",
|
|
36
|
+
monospace;
|
|
37
|
+
}
|
|
38
|
+
@keyframes spin {
|
|
39
|
+
from {
|
|
40
|
+
transform: rotate(0deg);
|
|
41
|
+
}
|
|
42
|
+
to {
|
|
43
|
+
transform: rotate(360deg);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
.animate-spin {
|
|
47
|
+
animation: spin 1s linear infinite;
|
|
48
|
+
}
|
|
49
|
+
@keyframes pulse {
|
|
50
|
+
0%, 100% {
|
|
51
|
+
opacity: 1;
|
|
52
|
+
}
|
|
53
|
+
50% {
|
|
54
|
+
opacity: 0.5;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
.animate-pulse {
|
|
58
|
+
animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
|
59
|
+
}
|
|
60
|
+
@keyframes ping {
|
|
61
|
+
75%, 100% {
|
|
62
|
+
transform: scale(2);
|
|
63
|
+
opacity: 0;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
.animate-ping {
|
|
67
|
+
animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;
|
|
68
|
+
}
|
|
69
|
+
@keyframes thinking {
|
|
70
|
+
0%, 60%, 100% {
|
|
71
|
+
opacity: 0;
|
|
72
|
+
}
|
|
73
|
+
30% {
|
|
74
|
+
opacity: 1;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
.thinking-dot {
|
|
78
|
+
animation: thinking 1.4s ease-in-out infinite;
|
|
79
|
+
}
|
|
80
|
+
.thinking-dot:nth-child(2) {
|
|
81
|
+
animation-delay: 0.2s;
|
|
82
|
+
}
|
|
83
|
+
.thinking-dot:nth-child(3) {
|
|
84
|
+
animation-delay: 0.4s;
|
|
85
|
+
}
|
|
86
|
+
/*# sourceMappingURL=styles.css.map */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/styles.css"],"sourcesContent":["/* Payman Ask SDK Styles */\n\n/* Base styles - These assume Tailwind CSS is available in the parent project */\n.payman-chat {\n\t/* If Tailwind is not available, these would be the fallback styles */\n\t--primary: 222.2 47.4% 11.2%;\n\t--primary-foreground: 210 40% 98%;\n\t--card: 0 0% 100%;\n\t--card-foreground: 222.2 84% 4.9%;\n\t--border: 214.3 31.8% 91.4%;\n\t--input: 214.3 31.8% 91.4%;\n\t--muted: 210 40% 96.1%;\n\t--muted-foreground: 215.4 16.3% 46.9%;\n\t--foreground: 222.2 84% 4.9%;\n\t--destructive: 0 84.2% 60.2%;\n\t--highlight: 217.2 91.2% 59.8%;\n}\n\n/* Markdown content styling */\n.markdown-content {\n\tline-height: 1.6;\n}\n\n.markdown-content > *:first-child {\n\tmargin-top: 0;\n}\n\n.markdown-content > *:last-child {\n\tmargin-bottom: 0;\n}\n\n/* Code block styling */\n.markdown-content pre {\n\toverflow-x: auto;\n}\n\n.markdown-content code {\n\tfont-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas,\n\t\t\"Liberation Mono\", \"Courier New\", monospace;\n}\n\n/* Animation utilities */\n@keyframes spin {\n\tfrom {\n\t\ttransform: rotate(0deg);\n\t}\n\tto {\n\t\ttransform: rotate(360deg);\n\t}\n}\n\n.animate-spin {\n\tanimation: spin 1s linear infinite;\n}\n\n@keyframes pulse {\n\t0%,\n\t100% {\n\t\topacity: 1;\n\t}\n\t50% {\n\t\topacity: 0.5;\n\t}\n}\n\n.animate-pulse {\n\tanimation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n}\n\n@keyframes ping {\n\t75%,\n\t100% {\n\t\ttransform: scale(2);\n\t\topacity: 0;\n\t}\n}\n\n.animate-ping {\n\tanimation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;\n}\n\n/* Thinking dots animation */\n@keyframes thinking {\n\t0%, 60%, 100% {\n\t\topacity: 0;\n\t}\n\t30% {\n\t\topacity: 1;\n\t}\n}\n\n.thinking-dot {\n\tanimation: thinking 1.4s ease-in-out infinite;\n}\n\n.thinking-dot:nth-child(2) {\n\tanimation-delay: 0.2s;\n}\n\n.thinking-dot:nth-child(3) {\n\tanimation-delay: 0.4s;\n}\n"],"mappings":";AAGA,CAAC;AAEA,aAAW,MAAM,MAAM;AACvB,wBAAsB,IAAI,IAAI;AAC9B,UAAQ,EAAE,GAAG;AACb,qBAAmB,MAAM,IAAI;AAC7B,YAAU,MAAM,MAAM;AACtB,WAAS,MAAM,MAAM;AACrB,WAAS,IAAI,IAAI;AACjB,sBAAoB,MAAM,MAAM;AAChC,gBAAc,MAAM,IAAI;AACxB,iBAAe,EAAE,MAAM;AACvB,eAAa,MAAM,MAAM;AAC1B;AAGA,CAAC;AACA,eAAa;AACd;AAEA,CAJC,iBAIiB,EAAE,CAAC;AACpB,cAAY;AACb;AAEA,CARC,iBAQiB,EAAE,CAAC;AACpB,iBAAe;AAChB;AAGA,CAbC,iBAaiB;AACjB,cAAY;AACb;AAEA,CAjBC,iBAiBiB;AACjB;AAAA,IAAa,YAAY;AAAA,IAAE,cAAc;AAAA,IAAE,KAAK;AAAA,IAAE,MAAM;AAAA,IAAE,QAAQ;AAAA,IACjE,iBAAiB;AAAA,IAAE,aAAa;AAAA,IAAE;AACpC;AAGA,WAAW;AACV;AACC,eAAW,OAAO;AACnB;AACA;AACC,eAAW,OAAO;AACnB;AACD;AAEA,CAAC;AACA,aAAW,KAAK,GAAG,OAAO;AAC3B;AAEA,WAAW;AACV;AAEC,aAAS;AACV;AACA;AACC,aAAS;AACV;AACD;AAEA,CAAC;AACA,aAAW,MAAM,GAAG,aAAa,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG;AAClD;AAEA,WAAW;AACV;AAEC,eAAW,MAAM;AACjB,aAAS;AACV;AACD;AAEA,CAAC;AACA,aAAW,KAAK,GAAG,aAAa,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG;AAC/C;AAGA,WAAW;AACV;AACC,aAAS;AACV;AACA;AACC,aAAS;AACV;AACD;AAEA,CAAC;AACA,aAAW,SAAS,KAAK,YAAY;AACtC;AAEA,CAJC,YAIY;AACZ,mBAAiB;AAClB;AAEA,CARC,YAQY;AACZ,mBAAiB;AAClB;","names":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@paymanai/payman-ask-sdk",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Reusable chat SDK for Payman workflows with streaming support (Web & React Native)",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"module": "dist/index.mjs",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"react-native": "dist/index.native.js",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"react-native": "./dist/index.native.js",
|
|
13
|
+
"import": "./dist/index.mjs",
|
|
14
|
+
"require": "./dist/index.js"
|
|
15
|
+
},
|
|
16
|
+
"./styles.css": "./dist/styles.css",
|
|
17
|
+
"./dist/styles.css": "./dist/styles.css"
|
|
18
|
+
},
|
|
19
|
+
"files": [
|
|
20
|
+
"dist",
|
|
21
|
+
"README.md"
|
|
22
|
+
],
|
|
23
|
+
"sideEffects": [
|
|
24
|
+
"**/*.css"
|
|
25
|
+
],
|
|
26
|
+
"scripts": {
|
|
27
|
+
"build": "tsup",
|
|
28
|
+
"build:widget": "vite build --config vite.config.widget.ts",
|
|
29
|
+
"dev": "tsup --watch",
|
|
30
|
+
"clean": "rm -rf dist",
|
|
31
|
+
"type-check": "tsc --noEmit"
|
|
32
|
+
},
|
|
33
|
+
"keywords": [
|
|
34
|
+
"payman",
|
|
35
|
+
"chat",
|
|
36
|
+
"workflow",
|
|
37
|
+
"streaming",
|
|
38
|
+
"react"
|
|
39
|
+
],
|
|
40
|
+
"author": "Payman",
|
|
41
|
+
"license": "MIT",
|
|
42
|
+
"peerDependencies": {
|
|
43
|
+
"framer-motion": ">=10.0.0",
|
|
44
|
+
"lucide-react": ">=0.300.0",
|
|
45
|
+
"lucide-react-native": ">=0.300.0",
|
|
46
|
+
"react": ">=18.0.0",
|
|
47
|
+
"react-dom": ">=18.0.0",
|
|
48
|
+
"react-markdown": ">=9.0.0",
|
|
49
|
+
"react-native": "*",
|
|
50
|
+
"react-native-markdown-display": ">=7.0.0",
|
|
51
|
+
"react-native-reanimated": ">=3.0.0",
|
|
52
|
+
"remark-gfm": ">=4.0.0"
|
|
53
|
+
},
|
|
54
|
+
"peerDependenciesMeta": {
|
|
55
|
+
"react-dom": {
|
|
56
|
+
"optional": true
|
|
57
|
+
},
|
|
58
|
+
"react-native": {
|
|
59
|
+
"optional": true
|
|
60
|
+
},
|
|
61
|
+
"framer-motion": {
|
|
62
|
+
"optional": true
|
|
63
|
+
},
|
|
64
|
+
"lucide-react": {
|
|
65
|
+
"optional": true
|
|
66
|
+
},
|
|
67
|
+
"lucide-react-native": {
|
|
68
|
+
"optional": true
|
|
69
|
+
},
|
|
70
|
+
"react-markdown": {
|
|
71
|
+
"optional": true
|
|
72
|
+
},
|
|
73
|
+
"react-native-markdown-display": {
|
|
74
|
+
"optional": true
|
|
75
|
+
},
|
|
76
|
+
"react-native-reanimated": {
|
|
77
|
+
"optional": true
|
|
78
|
+
},
|
|
79
|
+
"remark-gfm": {
|
|
80
|
+
"optional": true
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
"dependencies": {
|
|
84
|
+
"@paymanai/payman-typescript-ask-sdk": "^1.0.0",
|
|
85
|
+
"clsx": "^2.1.1",
|
|
86
|
+
"tailwind-merge": "^3.3.1"
|
|
87
|
+
},
|
|
88
|
+
"devDependencies": {
|
|
89
|
+
"@types/node": "^24.10.1",
|
|
90
|
+
"@types/react": "^19.1.8",
|
|
91
|
+
"@types/react-dom": "^19.1.6",
|
|
92
|
+
"@vitejs/plugin-react": "^4.6.0",
|
|
93
|
+
"autoprefixer": "^10.4.24",
|
|
94
|
+
"framer-motion": "^12.23.0",
|
|
95
|
+
"lucide-react": "^0.525.0",
|
|
96
|
+
"postcss": "^8.5.6",
|
|
97
|
+
"react": "^19.2.1",
|
|
98
|
+
"react-dom": "^19.2.1",
|
|
99
|
+
"react-markdown": "^10.1.0",
|
|
100
|
+
"remark-gfm": "^4.0.1",
|
|
101
|
+
"tailwindcss": "^3.4.0",
|
|
102
|
+
"tsup": "^8.3.5",
|
|
103
|
+
"typescript": "~5.8.3",
|
|
104
|
+
"vite": "^7.0.1"
|
|
105
|
+
}
|
|
106
|
+
}
|