@deepagents/react-genai 7.0.0 → 7.0.2
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/dist/index.js +1327 -2361
- package/dist/index.js.map +1 -1
- package/package.json +8 -8
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["PendingPrefill","prompt","targetChatId","STORAGE_KEY","readPrefill","raw","sessionStorage","getItem","parsed","JSON","parse","removeItem","writePrefill","data","setItem","stringify","clearPrefill","UIMessage","UseChatHelpers","ChatStatus","UIDataTypes","UITools","ComposerDraftSource","clearPrefill","readPrefill","writePrefill","ZukhrufChatTransport","UploadFile","ChatSubmission","prompt","persistedPrompt","editableSource","metadata","Record","files","File","QueuedMessage","id","uploads","Awaited","ReturnType","PreparedSubmission","Omit","Listener","ChatHelpers","ChatManagerOptions","queueEnabled","hasSubmitted","initialMessages","enableResume","uploadFile","onResetChat","chatId","isBusy","status","ChatManager","chat","prevStatus","listeners","Set","_queue","_queueEnabled","_hasSubmitted","_initialMessages","_initialMessagesApplied","_enableResume","_resumed","pendingSubmissions","Promise","sentAwaitingStatus","constructor","options","bind","syncStatus","prev","processQueue","initialize","length","messages","setMessages","notify","resumeStream","consumePrefill","submit","submission","resolve","message","dispatch","current","then","assertCurrentChat","uploadFiles","settled","catch","undefined","all","map","file","Error","isChatBusy","crypto","randomUUID","directSubmit","sendMessage","role","parts","type","text","next","rest","queueMicrotask","removeFromQueue","filter","msg","clearQueue","queue","clearChat","setChat","stop","resetChat","nextChatId","targetChatId","prefill","getTriggeringUserMessage","toolCallId","idx","findIndex","some","p","userMsg","getLastUserMessageId","i","getLastAssistantMessage","value","subscribe","listener","add","delete","UIMessage","UseChatHelpers","UIDataTypes","UITools","ComponentRegistry","ChatHelpers","ToolCall","toolCallId","toolName","completeRenderedClientTool","chat","registry","toolCall","Promise","clientTool","startsWith","static","requiresUserInput","addToolOutput","tool","output","state","useChat","ChatOnDataCallback","ChatOnFinishCallback","ChatTransport","UIDataTypes","UIMessage","UITools","lastAssistantMessageIsCompleteWithApprovalResponses","lastAssistantMessageIsCompleteWithToolCalls","AnimatePresence","motion","React","useStickToBottom","cn","ComponentRegistry","useAgentMeta","completeRenderedClientTool","useAgentChatSetup","props","$","_c","$i","Symbol","for","chat","id","chatId","experimental_throttle","messages","initialMessages","transport","sendAutomaticallyWhen","_temp","onToolCall","t0","toolCall","registry","onData","onFinish","options","ChatBot","AgentScrollArea","initial","scrollRef","contentRef","hasSubmitted","t1","className","t2","t3","t4","children","t5","AgentHeaderRoot","layout","type","ease","duration","displayName","AgentHeaderHero","icon","opacity","AgentHeaderTitle","AgentHeaderDescription","delay","AgentHeader","Root","Hero","Title","Description","UIMessage","UseChatHelpers","ChatOnDataCallback","ChatOnFinishCallback","ChatStatus","ChatTransport","UIDataTypes","UITools","ReactNode","createContext","useCallback","useContext","useEffect","useMemo","useRef","useState","useSyncExternalStore","ComponentRegistry","ChatManager","ChatSubmission","useAgentChatSetup","ZukhrufChatTransport","AgentConfigContextValue","chatId","registry","debugMode","toggleDebugMode","clearChat","resetChat","prompt","submit","submission","Promise","setChat","messages","getTriggeringUserMessage","toolCallId","getLastUserMessageId","stop","AgentMessagesContextValue","AgentConfigContext","undefined","AgentStatusContext","AgentMessagesContext","ChatManagerContext","AgentProvider","children","skipInitialView","debugOn","initialMessages","transport","resume","onData","onFinish","onResetChat","queueEnabled","Pick","agent","setDebugMode","prev","onResetChatRef","current","forwardResetChat","id","manager","hasSubmitted","length","enableResume","uploadFile","bind","initialize","syncStatus","status","managerMethods","configValue","messagesValue","error","useAgent","$","_c","$i","Symbol","for","context","Error","useAgentStatus","t0","useAgentMeta","t1","subscribe","t2","useAgentMessages","useChatManager","UIMessage","CitationSource","url","title","extractSourcesFromMessages","messages","seen","Set","sources","message","part","parts","type","has","add","push","citationIndexOf","i","findIndex","s","ChatTransport","UIMessage","UIMessageChunk","ReadOnlyChatTransport","sendMessages","Promise","ReadableStream","reject","Error","reconnectToStream","resolve","ChatStatus","ToolUIPart","useAgentStatus","isToolStateAborted","state","status","isToolAborted","part","useIsToolAborted","$","_c","$i","Symbol","for","t0","z","ComponentRegistry","SerializedToolRegistry","Record","inputSchema","core","JSONSchema","BaseSchema","description","serializeToolsRegistry","registry","Object","entries","reduce","acc","toolName","tool","static","toJSONSchema","io","unrepresentable","ElementType","ReactNode","cn","TextShimmerProps","children","as","className","duration","enabled","TextShimmer","t0","$","_c","$i","Symbol","for","t1","t2","Component","undefined","t3","t4","t5","animationDuration","t6","ChevronRight","cn","CompactDisclosureChevron","t0","$","_c","$i","Symbol","for","className","t1","t2","compactDisclosureTriggerClass","extra","UIMessage","Fragment","ReactNode","createContext","useContext","useMemo","useState","useStickToBottom","Collapsible","CollapsibleContent","CollapsibleTrigger","cn","TextShimmer","CompactDisclosureChevron","compactDisclosureTriggerClass","INDEX_PROGRESS_PART_TYPE","STICK_TO_BOTTOM_OPTS","initial","resize","const","IndexProgressEventType","IndexProgressEvent","type","adapter","phase","table","message","current","total","AdapterStatus","AdapterState","name","status","errorMessage","IndexState","adapters","totalAdapters","GroupedProgressEvents","byAdapter","Map","globalEvents","ProgressOpenStatus","OpenOverride","key","open","isIndexProgressPart","part","data","getIndexProgressEvents","parts","filter","map","aggregateEvents","events","byName","upsert","patch","Partial","prev","get","set","event","Array","from","values","useIndexProgressState","$","_c","$i","Symbol","for","t0","useProgressOpenState","resetKey","controlledOpen","onOpenChange","openOverride","setOpenOverride","isOpen","t1","next","undefined","handleOpenChange","t2","shouldHideIndexProgress","state","length","every","a","getIndexRunKey","getAdapterRunKey","includes","getBreadcrumbSegments","totalCount","isMultiAdapter","failed","find","segments","push","active","getAdapterBreadcrumbSegments","getGlobalErrorSegments","IndexProgressContextValue","IndexProgressContext","useIndexProgress","component","ctx","Error","RootProps","children","className","Root","t3","t4","t5","t6","t7","t8","Trigger","getProgressTriggerClassName","ProgressBreadcrumb","isRunning","lastIdx","segment","idx","ProgressBreadcrumbSegment","index","isLast","DisclosureChevron","Content","EventRow","useGroupedProgressEvents","global","arr","EventLog","groupedEvents","containerClass","size","StickyScroll","contentClassName","scrollRef","contentRef","SingleEventLog","_temp","GroupedEventLog","_temp2","entries","_temp3","AdapterEventGroup","_temp4","PerAdapterProps","showCacheHits","PerAdapter","_temp5","globalErrorEvents","AdapterProgressItem","t9","t10","t11","t12","AdapterProgressEventLog","GlobalErrorProgressItem","IndexProgress","ChatStatus","UIMessage","createContext","use","GenAIInteractiveElement","useAgentStatus","MessagesContextValue","messages","elements","status","MessageItemContextValue","message","index","MessagesCtx","undefined","MessageItemCtx","useMessagesContext","ctx","Error","useMessagesStatus","$","_c","$i","Symbol","for","useMessageItem","CitationSource","CitationPill","t0","$","_c","$i","Symbol","for","source","index","t1","title","url","t2","React","Card","CardAction","CardContent","CardDescription","CardHeader","CardTitle","cn","TablePanelRoot","forwardRef","HTMLDivElement","ComponentPropsWithoutRef","t0","ref","$","_c","$i","Symbol","for","className","props","t1","t2","displayName","TablePanelHeader","TablePanelHeading","TablePanelTitle","TablePanelDescription","TablePanelActions","TablePanelContent","TablePanel","Object","assign","Header","Heading","Title","Description","Actions","Content","OPENING_TAG_PATTERN","DOUBLE_QUOTED_ATTRIBUTE_PATTERN","normalizeAttributeEscapes","input","replace","tag","_match","name","value","normalizeStreamdownChildren","children","tagNames","result","_m","attrs","close","collapsed","escaped","_","v","wrapElements","nested","customSet","length","Set","isCustom","has","includes","out","i","nameEnd","test","tagName","slice","tagEnd","skipToTagEnd","findClosingTag","openTag","processedInner","innerContent","start","closeTag","end","ensureBlankLine","pos","depth","open","lt","indexOf","startsWith","gt","text","endsWith","Root","Table","LeafDirective","toString","React","ComponentProps","useMemo","remarkDirective","remarkGfm","remarkParse","AllowedTags","Block","BlockProps","ExtraProps","Streamdown","TableCopyDropdown","TableDownloadDropdown","defaultRemarkPlugins","detectTextDirection","parseMarkdownIntoBlocks","unified","SKIP","visit","buttonVariants","cn","TablePanel","normalizeStreamdownChildren","TablePanelStreamdownProps","Omit","tableActions","ReactNode","StreamdownBlockComponent","NonNullable","tablePanelTag","tablePanelAttributes","tableActionClassName","variant","size","TablePanelNode","type","data","hName","hProperties","Record","children","BlockContentMap","tablePanel","RootContentMap","tableDirectiveParser","use","SourceRange","start","end","parseMarkdownWithTableDirectives","markdown","blocks","directiveRanges","tableDirectiveRanges","length","offset","blockRanges","map","block","range","mergeWithPrevious","Set","directiveRange","foundFirstBlock","index","blockRange","entries","overlapsDirective","add","reduce","groupedBlocks","has","push","isMarkdownTableDirective","node","name","tableDirectiveBefore","undefined","previous","ranges","tree","parse","table","parent","directive","position","directiveAttribute","attribute","value","attributes","trim","tableDirectiveTextDirection","hasTableDirective","next","metadata","filter","Boolean","join","includeHtml","DefaultStreamdownBlock","props","$","_c","$i","Symbol","for","t0","createDirectionAwareBlock","BlockComponent","DirectionAwareBlock","content","dir","direction","t1","displayName","createTablePanelNode","title","description","Object","keys","tablePanelRemarkPlugin","panelIndex","replacedNodeCount","splice","defaultTablePanelRemarkPlugins","values","MarkdownTableContextValue","actions","controls","MarkdownTableContext","createContext","isTableActionEnabled","action","tableControls","withoutBuiltInTableControls","MarkdownTablePanelProps","className","MarkdownTablePanel","useContext","showCopy","t2","showDownload","hasMetadata","hasActions","t3","t4","t5","t6","t7","TablePanelStreamdown","allowedTags","components","mode","remarkPlugins","bb0","tablePanelPlugins","tablePanelAllowedTags","tablePanelComponents","tableContext","bb1","tablePanelBlockComponent","bb2","streamdownDirection","t8","t9","t10","React","memo","cn","TablePanelStreamdown","TablePanelStreamdownProps","ResponseProps","ErrorBoundaryState","hasError","error","Error","StreamdownErrorBoundary","Component","children","ReactNode","fallback","state","getDerivedStateFromError","render","props","message","Response","t0","$","_c","$i","Symbol","for","className","t1","t2","displayName","useEffect","useRef","useState","useCopyFeedback","t0","$","_c","$i","Symbol","for","timeout","undefined","copied","setCopied","timerRef","t1","t2","current","clearTimeout","t3","value","navigator","clipboard","writeText","setTimeout","copy","t4","const","CheckIcon","CopyIcon","ComponentProps","HTMLAttributes","ReactNode","createContext","useContext","Prism","SyntaxHighlighter","oneDark","oneLight","Button","cn","useCopyFeedback","CodeBlockContextType","code","CodeBlockContext","CodeBlockProps","HTMLDivElement","language","showLineNumbers","wrap","children","CodeBlock","t0","$","_c","$i","Symbol","for","className","props","t1","t2","undefined","t3","t4","t5","t6","margin","padding","fontSize","background","color","t7","paddingRight","minWidth","t8","t10","t9","t11","t12","t13","t14","t15","t16","CodeBlockCopyButtonProps","onCopy","onError","error","Error","timeout","CodeBlockCopyButton","isCopied","copy","copyToClipboard","window","navigator","clipboard","writeText","Icon","ToolUIPart","CheckCircleIcon","ChevronDownIcon","CircleIcon","ClockIcon","WrenchIcon","XCircleIcon","ComponentProps","ReactNode","isValidElement","Badge","Collapsible","CollapsibleContent","CollapsibleTrigger","cn","CodeBlock","ToolProps","Tool","t0","$","_c","$i","Symbol","for","className","props","t1","t2","ToolHeaderProps","title","type","state","getStatusBadge","status","labels","Record","icons","ToolHeader","t3","split","slice","join","t4","t5","t6","t7","t8","ToolContentProps","ToolContent","ToolInputProps","input","ToolInput","JSON","stringify","ToolOutputProps","output","errorText","ToolOutput","Output","t9","t10","DynamicToolUIPart","ToolUIPart","getToolName","Response","Tool","ToolContent","ToolHeader","ToolInput","ToolOutput","ToolDebug","t0","$","_c","$i","Symbol","for","part","t1","toolName","t2","t3","state","type","t4","input","t5","output","JSON","stringify","t6","t7","errorText","t8","t9","DynamicToolDebug","Loader2","LucideIcon","useEffect","useState","Button","Tooltip","TooltipContent","TooltipTrigger","cn","TheButtonProps","React","ComponentProps","loading","icon","ReactNode","delay","tooltip","useDelayedLoading","$","_c","$i","Symbol","for","isLoading","delayPassed","setDelayPassed","t0","t1","timerId","setTimeout","clearTimeout","queueMicrotask","isComponent","value","ComponentType","className","Record","render","IconRenderer","Icon","LoadingSpinner","IconButtonContent","showSpinner","t2","t3","t4","t5","t6","TextButtonContent","children","t7","WithTooltip","TheButton","disabled","size","props","undefined","startsWith","isIconButton","T0","T1","COPY_EXCLUSION_ATTRIBUTE","COPY_EXCLUSION_MODES","image","assistantSnapshot","const","CopyExclusionMode","AttributeReader","getAttribute","name","ClipboardLike","write","writeText","CopyToClipboardStrategy","isAttributeReader","value","hasCopyExclusion","node","mode","attributeValue","split","includes","shouldIncludeInCopyImage","resolveCopyToClipboardStrategy","clipboard","ClipboardItem","createContext","SnapshotRenderContext","ReactNode","RefObject","createPortal","SnapshotRenderContext","waitForNextPaint","Promise","resolve","requestAnimationFrame","SnapshotRenderPortal","t0","$","_c","$i","Symbol","for","contentRef","children","width","t1","padding","t2","className","t3","undefined","document","t4","position","top","left","pointerEvents","zIndex","t5","boxSizing","t6","body","RefObject","useCallback","useEffect","useRef","useState","CopyExclusionMode","resolveCopyToClipboardStrategy","shouldIncludeInCopyImage","CopySuccessMode","CopyImageFeedback","kind","mode","message","resolveImageBackgroundColor","element","HTMLElement","elementBackground","getComputedStyle","backgroundColor","bodyBackground","document","body","undefined","useCopyElementAsImage","elementRef","excludeMode","fallbackText","isCopying","setIsCopying","feedback","setFeedback","feedbackTimeoutRef","clearFeedbackTimeout","current","window","clearTimeout","setTimedFeedback","nextFeedback","Exclude","setTimeout","copyText","navigator","clipboard","writeText","trim","length","copyImage","Error","toBlob","blob","pixelRatio","filter","node","write","ClipboardItem","type","copy","strategy","error","UIMessage","isTextUIPart","Check","Copy","ReactNode","useCallback","useContext","useMemo","useRef","useState","cn","TheButton","COPY_EXCLUSION_MODES","SnapshotRenderContext","SnapshotRenderPortal","waitForNextPaint","useCopyElementAsImage","extractAssistantRawText","message","parts","filter","map","part","text","join","useIsAssistantSnapshotRender","$","_c","$i","Symbol","for","AssistantSnapshot","t0","renderContent","className","snapshotRef","showSnapshot","setShowSnapshot","t1","fallbackText","t2","elementRef","excludeMode","assistantSnapshot","copy","feedback","isCopying","t3","handleCopy","label","kind","mode","t4","t5","t6","t7","t8","t9","t10","ToolUIPart","UIMessage","isToolUIPart","ComponentRegistry","isSubagentPart","part","toolMetadata","kind","subagentDisplayName","name","displayName","resolveToolEntry","Pick","registry","toolKey","type","replace","toolEntry","isActiveClientInputTool","state","static","requiresUserInput","React","MarkdownParagraph","t0","$","_c","$i","Symbol","for","children","childArray","Children","toArray","hasCustomElement","some","_temp","t1","isAllCustom","length","every","_temp2","child_0","isValidElement","child","type","useMemo","assertNoReservedAttributes","MarkdownParagraph","Response","ResponseProps","GenAIInteractiveElement","InteractiveResponseProps","Omit","elements","buildStreamdownRegistry","entries","components","Record","p","allowedTags","entry","name","component","allowedAttributes","InteractiveResponse","t0","$","_c","$i","Symbol","for","props","t1","t2","registry","t3","ToolUIPart","Loader","Button","useAgent","useAgentMessages","ToolOutput","ToolApproval","t0","$","_c","$i","Symbol","for","part","addToolApprovalResponse","state","t1","title","type","slice","name","t2","t3","t4","approval","requestReason","t5","t6","id","approved","t7","t8","t9","RenderPart","registry","input","undefined","errorText","output","customRenderer","replace","Renderer","component","progress","ToolUIPart","Attachment","cn","GenAIInteractiveElement","InteractiveResponse","ToolDebug","useIsAssistantSnapshotRender","RenderPart","useAgent","useAgentStatus","SLIDE_UP_ANIMATED","animation","const","MessageAttachmentPartProps","filename","mediaType","url","ImageFilePart","t0","$","_c","$i","Symbol","for","t1","t2","FileAttachmentPart","name","startsWith","player","undefined","t3","t4","t5","t6","MessageAttachmentPart","AssistantTextPart","text","elements","className","status","isSnapshotRender","ToolPartContent","part","showDebug","useShowDebug","debugMode","ToolUIPart","ReactNode","cn","useIsAssistantSnapshotRender","ToolLabel","isToolRunning","state","useToolActionsVisible","t0","$","_c","$i","Symbol","for","label","part","isSnapshotRender","t1","actions","ToolLabelInline","Icon","icon","Actions","showActions","t2","isError","t3","name","t4","t5","t6","ToolArg","value","ToolLabelBlock","children","args","Object","entries","map","_temp","detail","t7","key","ToolUIPart","UIMessage","isStaticToolUIPart","ReactNode","createContext","use","useMemo","Fragment","Collapsible","CollapsibleContent","CollapsibleTrigger","CitationPill","DynamicToolDebug","useIsAssistantSnapshotRender","Response","isActiveClientInputTool","resolveToolEntry","ToolLabel","useAgent","useAgentMessages","citationIndexOf","extractSourcesFromMessages","AssistantTextPart","MessageAttachmentPart","SLIDE_UP_ANIMATED","ToolPartContent","useShowDebug","isToolAborted","MessagesContextValue","useMessagesStatus","ToolLabelBlock","MessageTrajectorySegment","isCommentaryTextPart","part","type","providerMetadata","openai","phase","SegmentText","t0","$","_c","$i","Symbol","for","segment","elements","className","t1","parts","t2","t3","idx","text","map","SegmentFile","filename","mediaType","url","SegmentSource","messages","sources","t4","index","title","SegmentReasoning","status","isSnapshotRender","SegmentDynamicTool","showDebug","ToolSegmentContextValue","label","aborted","activeClientInput","defaultOpen","ToolSegmentContext","ToolSegmentMarkerContext","state","useToolSegment","context","Error","SegmentTool","children","agent","toolEntry","toolPart","registry","bb0","baseLabel","name","replace","isError","detail","static","requiresUserInput","t5","t6","t7","t8","SegmentToolContent","SegmentToolDisclosure","Segment","Text","File","Source","Reasoning","DynamicTool","Tool","ToolDisclosure","ToolContent","UIMessage","isStaticToolUIPart","TimelineNodeKind","MessageTrajectorySegment","kind","parts","part","idx","classifyPart","type","text","isVisibleTrajectoryNode","segment","debugMode","shouldShowConnector","segments","segmentIndex","next","buildMessageTrajectorySegments","i","length","nodeKind","push","last","getSegmentKey","fallback","UIMessage","isToolUIPart","memo","useMemo","cn","Segment","buildMessageTrajectorySegments","getSegmentKey","MessageTrajectorySegment","getSegmentCacheKey","segment","index","prefix","kind","text","parts","map","part","type","join","error","state","errorText","preliminary","toolCallId","url","mediaType","filename","isCompletedSegment","segmentCount","NestedTrajectorySegmentProps","cacheKey","complete","NestedTrajectorySegment","t0","$","_c","$i","Symbol","for","t1","areNestedTrajectorySegmentPropsEqual","previous","next","NestedTrajectory","className","segments","length","t2","t3","t4","key","HTMLMotionProps","motion","React","cn","AgentActionButtonProps","Omit","icon","ReactNode","ChatActionButton","t0","$","_c","$i","Symbol","for","className","props","t1","scale","t2","t3","t4","Braces","Check","Copy","RefreshCw","Children","ReactNode","cn","ChatActionButton","extractAssistantRawText","useCopyFeedback","useAgentMessages","useMessageItem","useMessagesContext","useMessagesStatus","useMessageComplete","$","_c","$i","Symbol","for","index","messages","status","isLastMessage","length","isBusy","MessagesActions","t0","className","children","complete","toArray","t1","t2","CopyAssistantMessageAction","message","copied","copy","t3","t4","t5","RegenerateAction","regenerate","id","messageId","CopyAssistantMessageJsonAction","JSON","stringify","Button","Response","RetryBlock","t0","$","_c","$i","Symbol","for","onTryAgain","error","t1","Error","message","t2","t3","t4","MessagesError","onRetry","ChatStatus","UIMessage","useMemo","cn","GenAIInteractiveElement","MessageItemCtx","MessagesContextValue","MessagesCtx","MessagesRoot","t0","$","_c","$i","Symbol","for","messages","className","elements","status","children","t1","value","t2","t3","t4","t5","MessagesList","MessagesItem","message","index","ToolUIPart","isStaticToolUIPart","Activity","PropsWithChildren","useMemo","cn","useAgent","useAgentMessages","ComponentTool","ActivePendingTool","part","entry","useActivePendingToolInput","registry","agent","messages","i","length","message","role","parts","state","toolKey","type","replace","static","requiresUserInput","PendingToolInput","t0","$","_c","$i","Symbol","for","children","className","activeTool","Renderer","component","t1","t2","t3","toolCallId","t4","ChatStatus","UIMessage","isReasoningUIPart","isTextUIPart","isToolUIPart","thinking","status","message","role","i","parts","length","part","text","providerMetadata","openai","phase","lastPart","input","Record","candidates","candidate","value","toolCallId","TimelineDot","t0","$","_c","$i","Symbol","for","isLast","t1","undefined","t2","t3","t4","ReactNode","cn","TimelineItem","t0","$","_c","$i","Symbol","for","marker","children","className","t1","t2","useActivePendingToolInput","TextShimmer","useMessagesContext","useMessagesStatus","thinking","TimelineDot","TimelineItem","TrajectoryThinking","$","_c","$i","Symbol","for","status","messages","activePendingTool","t0","length","t1","thinkingHint","t2","t3","UIMessage","get","useMemo","formatCompactNumber","formatNullableNumber","useAgentMessages","UsageDisplay","inputTokens","outputTokens","reasoningTokens","cachedInputTokens","totalTokens","UsageTracking","assistantUsageByMessageId","Record","chatUsageSummary","TOKEN_FIELDS","USAGE_FIELD_PATHS","toFiniteToken","value","Number","isFinite","trim","length","parsed","parseUsage","source","field","path","token","some","parseMetadataUsage","metadata","record","totalUsage","usage","diffUsage","current","previous","diff","currentValue","previousValue","delta","sumUsage","usages","summed","fieldSum","hasValue","computeUsageTracking","messages","messageUsages","previousCumulativeUsage","latestCumulativeUsage","message","role","perMessageUsage","id","push","useNormalizedUsageTracking","$","_c","$i","Symbol","for","agent","t0","formatUsageValue","formatUsageBreakdown","parts","toLocaleString","join","DefaultChatTransport","UIMessage","z","ElementDescriptor","toDescriptor","GenAIInteractiveElement","SerializedToolRegistry","UPLOAD_FILENAME_HEADER","uploadReceiptSchema","strictObject","path","string","startsWith","name","min","mediaType","enum","size","int","nonnegative","url","ZukhrufChatTransportOptions","api","fetch","globalThis","tools","elements","AcceptedTurn","ok","sessionId","turnId","ZukhrufChatTransport","sessionsApi","request","constructor","input","init","trimTrailingSlash","descriptors","map","response","method","toUpperCase","accepted","json","isAcceptedTurn","Error","sessionApi","String","decodeURIComponent","slice","lastIndexOf","signal","cancel","catch","undefined","addEventListener","once","headers","accept","prepareSendMessagesRequest","id","messages","trigger","message","length","body","Object","keys","prepareReconnectToStreamRequest","uploadFile","file","File","type","encodeURIComponent","describeUploadFailure","receipt","safeParse","success","data","Response","Promise","summary","status","reason","failureReason","cause","code","detail","error","filter","part","join","value","replace","ChevronDown","ReactNode","Collapsible","CollapsibleContent","CollapsibleTrigger","cn","CollapsibleDisclosure","t0","$","_c","$i","Symbol","for","label","open","onOpenChange","children","className","triggerClassName","contentClassName","chevronClassName","t1","t2","t3","t4","t5","t6","t7","t8","t9","UIMessage","memo","useMemo","useState","UserReminderMetadata","stripReminders","PersistedPromptText","AttachmentGroup","AttachmentMedia","cn","formatUsageBreakdown","parseMetadataUsage","uploadReceiptSchema","useMessageItem","CollapsibleDisclosure","MessageMetadata","t0","$","_c","$i","Symbol","for","metadata","t1","t2","t3","bb0","usage","t4","extractReminders","message","raw","Record","reminders","Array","isArray","filter","r","candidate","Partial","id","length","text","trim","extractUploads","uploads","flatMap","value","receipt","safeParse","success","data","ReminderItem","expanded","setExpanded","_temp","v","UserMessageReminders","open","setOpen","label","map","_temp2","UploadTile","upload","mediaType","startsWith","name","url","UserMessageAttachments","T0","t5","_temp3","t6","path","UserBubbleShell","body","undefined","UserMessageContent","rawMessage","remindersRef","rawAlias","alias","parts","part","partIndex","type","MessagesUserBubble","className","ChatStatus","ToolUIPart","UIMessage","isStaticToolUIPart","isToolUIPart","ReactNode","createContext","memo","use","useMemo","useState","useStickToBottom","Collapsible","CollapsibleContent","CollapsibleTrigger","cn","TextShimmer","isSubagentPart","resolveToolEntry","ComponentRegistry","ToolLabel","useAgent","isToolStateAborted","CompactDisclosureChevron","compactDisclosureTriggerClass","useMessageItem","useMessagesContext","useMessagesStatus","Segment","isCommentaryTextPart","MessageTrajectorySegment","buildMessageTrajectorySegments","getSegmentKey","CopyAssistantMessageAction","CopyAssistantMessageJsonAction","MessagesActions","RegenerateAction","MessagesError","MessagesItem","MessagesList","MessagesRoot","TrajectoryThinking","MessagesUserBubble","CompactNodeGroupItem","segment","CompactRenderItem","kind","segmentIndex","items","hasLaterText","firstIndex","isCompactNodeSegment","part","isVisibleCompactNode","debugMode","hasVisibleTranscriptText","parts","some","type","buildCompactRenderItems","segments","i","length","push","group","nodeSegment","slice","next","getToolPartState","undefined","state","CompactSegmentLabel","name","args","detail","isError","CompactGroupStatus","CompactGroupTone","title","chevron","getCompactGroupTone","groupStatus","labelCount","tone","isPlainRecord","value","Record","Array","isArray","shorten","maxLength","normalized","replace","trim","trimEnd","stringifyArgValue","String","getFallbackArgs","input","preferredKeys","orderedEntries","filter","key","map","const","Object","entries","includes","stringValue","keys","getFallbackDetail","getReasoningPreview","text","getSegmentLabel","registry","dynamicToolPart","toolName","toolPart","toolEntry","toolKey","label","formatArgs","entry","join","formatCallLabel","isTerminalToolState","isPendingToolState","isPendingToolAborted","status","getGroupStatus","labels","every","sentenceCase","toUpperCase","getFallbackToolCount","formatFallbackToolSummary","toolCount","isRunning","verb","getPlainCountSummary","baseTitle","getCompactSummaryText","activeHint","singleLabel","callLabel","getCompactSummaryDetail","names","from","Set","sort","a","b","getActiveGroupHint","reasoningHint","hint","hasCurrentCompactNodeGroup","message","role","item","CompactTrajectorySegmentItem","CompactTrajectoryGroupItem","CompactTrajectoryItem","useTrajectoryItems","$","_c","$i","Symbol","for","t0","t1","id","t2","CompactGroupContextValue","messageId","CompactGroupContext","useCompactGroup","context","Error","CompactTrajectoryGroup","children","isOpen","setIsOpen","t3","t4","CompactTrajectoryGroupTrigger","useCompactGroupSummary","CompactTrajectoryGroupTitle","titleOverride","suffix","defaultTitle","t5","CompactTrajectoryGroupChevron","CompactTrajectoryGroupDetail","detailOverride","defaultDetail","CompactTrajectoryGroupContent","initial","resize","scrollRef","contentRef","t6","t7","t8","CompactTrajectorySegment","textClassName","elements","_temp","visibleParts","CompactTrajectory","Group","GroupTrigger","GroupTitle","GroupChevron","GroupDetail","GroupContent","CompactThinking","messages","latestMessage","CompactAssistantContent","className","_temp2","CompactMessages","Root","List","Item","UserBubble","AssistantContent","Actions","CopyAction","CopyDebugJsonAction","Thinking","ReasoningUIPart","ToolUIPart","UIMessage","isStaticToolUIPart","AlertCircle","ReactNode","memo","useState","cn","TextShimmer","DynamicToolDebug","Response","isActiveClientInputTool","resolveToolEntry","useAgent","AssistantTextPart","MessageAttachmentPart","ToolPartContent","useShowDebug","useMessageItem","useMessagesContext","useMessagesStatus","ToolLabelInline","CollapsibleDisclosure","CopyAssistantMessageAction","CopyAssistantMessageJsonAction","MessagesActions","RegenerateAction","MessagesError","MessagesItem","MessagesList","MessagesRoot","thinking","MessagesUserBubble","ErrorPill","t0","$","_c","$i","Symbol","for","message","className","t1","t2","t3","t4","StaticToolPart","part","config","registry","bb0","toolEntry","state","label","Icon","icon","firstArg","args","Object","values","undefined","name","label_0","isError","detail","t5","t6","ReasoningPart","isOpen","setIsOpen","text","AssistantPart","elements","debugMode","type","providerMetadata","openai","phase","filename","mediaType","url","MessagesAssistantContent","id","parts","partIndex","map","ThinkingIndicator","split","filter","_temp","pop","displayText","line","trim","MessagesThinking","status","messages","length","thinkingHint","Messages","Root","List","Item","UserBubble","AssistantContent","Thinking","Error","Actions","CopyAction","CopyDebugJsonAction","useEffect","useState","cn","spinners","braille","frames","interval","pulse","clock","limerence","const","SpinnerVariant","UnicodeSpinner","t0","$","_c","$i","Symbol","for","className","props","t1","variant","undefined","frameIndex","setFrameIndex","t2","t3","length","mq","window","matchMedia","matches","timer","setInterval","i","clearInterval","t4","t5","t6","ToolUIPart","BanIcon","ReactNode","use","Collapsible","CollapsibleContent","CollapsibleTrigger","cn","ToolLabel","UnicodeSpinner","ToolSegmentMarkerContext","ToolLabelBlock","TimelineDot","TimelineItem","TimelineIconMarker","t0","$","_c","$i","Symbol","for","Icon","isLast","isLoading","aborted","state","isError","t1","t2","t3","TimelineRow","label","children","toolMarker","effectiveLabel","effectiveState","effectiveAborted","icon","marker","t4","t5","TimelineDisclosure","part","defaultOpen","undefined","Timeline","Item","Disclosure","Lightbulb","memo","useMemo","useIsAssistantSnapshotRender","useAgent","useShowDebug","useMessageItem","useMessagesContext","Segment","buildMessageTrajectorySegments","getSegmentKey","shouldShowConnector","CopyAssistantMessageAction","CopyAssistantMessageJsonAction","MessagesActions","RegenerateAction","MessagesError","MessagesItem","MessagesList","MessagesRoot","Timeline","TrajectoryThinking","MessagesUserBubble","TimelinedAssistantContent","t0","$","_c","$i","Symbol","for","className","message","elements","debugMode","showDebug","isSnapshotRender","t1","parts","segments","t2","id","map","segment","segmentIndex","key","kind","isLast","part","type","isLast_0","label","name","icon","args","text","slice","join","isLast_1","t3","TimelinedMessages","Root","List","Item","UserBubble","AssistantContent","Actions","CopyAction","CopyDebugJsonAction","Thinking","Error","Paperclip","Plus","ComponentProps","Composer","ComposerAttachFilesProps","ComposerAttachmentsProps","ComposerContentProps","ComposerEditorProps","ComposerRootProps","ComposerToolbarProps","useComposer","cn","useAgentMeta","ChatActionButton","ChatComposerProvider","t0","$","_c","$i","Symbol","for","className","props","hasSubmitted","t1","t2","ChatComposerRoot","ChatComposerContent","ChatComposerEditor","ChatComposerAttachments","ChatComposerToolbar","ChatComposerAttachFiles","ChatComposerCommandButton","actions","meta","activePopup","trigger","event","stopPropagation","toggleSlashMenu","t3","ChatComposer","Provider","Root","Popup","Content","Attachments","Editor","Error","Toolbar","CommandButton","AttachFiles","Ref","TextareaHTMLAttributes","cn","ChatTextareaProps","HTMLTextAreaElement","ref","ChatTextarea","t0","$","_c","$i","Symbol","for","className","props","t1","t2","ListPlus","Trash2","ReactNode","PersistedPromptText","cn","MessageQueueRoot","t0","$","_c","$i","Symbol","for","children","className","t1","t2","MessageQueueItem","MessageQueueIcon","MessageQueueText","t3","MessageQueueRemove","onClick","MessageQueue","Root","Item","Icon","Text","Remove","Variants","motion","useAnimation","HTMLAttributes","forwardRef","useCallback","useImperativeHandle","useRef","cn","ArrowUpIconHandle","startAnimation","stopAnimation","ArrowUpIconProps","HTMLDivElement","size","PATH_VARIANTS","normal","d","translateY","animate","transition","duration","SECOND_PATH_VARIANTS","ArrowUpIcon","t0","ref","$","_c","$i","Symbol","for","className","onMouseEnter","onMouseLeave","props","t1","undefined","controls","isControlledRef","t2","current","start","t3","e","handleMouseEnter","t4","e_0","handleMouseLeave","t5","t6","t7","t8","t9","displayName","AnimatePresence","HTMLMotionProps","motion","useReducedMotion","ReactNode","cn","ArrowUpIcon","SubmitButtonVariant","SubmitButtonProps","Omit","variant","BUTTON_TRANSITION","duration","ease","const","ICON_TRANSITION","SubmitButton","t0","$","_c","$i","Symbol","for","className","disabled","rest","reducedMotion","isStop","t1","opacity","scale","t2","t3","undefined","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","ChatIcon","children","ChatSendIcon","ChatStopIcon","ToolUIPart","getToolName","AlertCircle","RefreshCw","ZodError","Alert","AlertDescription","AlertTitle","Button","Card","CardContent","CardFooter","CardHeader","CardTitle","useAgentMessages","ToolErrorProps","title","detail","detailLabel","part","error","ToolError","t0","$","_c","$i","Symbol","for","t1","t2","undefined","agent","t3","issues","map","_temp","join","errorMessage","t4","t5","t6","t7","t8","t9","t10","t11","retryPrompt","JSON","stringify","input","addToolOutput","toolCallId","tool","output","state","t12","t13","t14","e","path","message","React","PropsWithChildren","createContext","use","useEffect","useEffectEvent","useRef","useState","useAgent","useAgentStatus","Tip","id","content","context","C","Promise","cooldownSessions","isRelevant","TipValueContext","useTipValue","HISTORY_KEY","SESSION_KEY","TipHistory","Record","readHistory","JSON","parse","localStorage","getItem","writeShown","tipId","session","history","setItem","stringify","resolveSession","chatId","raw","state","n","staleness","lastShown","Infinity","selectTip","tips","text","flags","all","map","t","relevant","filter","_","i","length","eligible","pool","sort","a","b","selected","TipProvider","t0","$","_c","$i","Symbol","for","streaming","children","t1","tip","setTip","prevStreaming","selecting","t2","current","then","result","finally","pick","t3","t4","t5","justStarted","t6","t7","Tips","status","Lightbulb","useEffect","useState","cn","TextShimmer","useTipValue","SHIMMER_DURATION","TipLine","t0","$","_c","$i","Symbol","for","className","tip","prevTip","setPrevTip","shimmerEnabled","setShimmerEnabled","t1","t2","timer","setTimeout","clearTimeout","t3","t4","t5","t6","AlertCircle","RefreshCw","React","Alert","AlertDescription","AlertTitle","Button","Card","CardContent","CardFooter","CardHeader","CardTitle","ErrorBoundaryProps","children","ReactNode","code","onRetry","errorMessage","ErrorBoundaryState","hasError","error","Error","DynamicUIErrorBoundary","Component","constructor","props","state","getDerivedStateFromError","handleRetry","message","setState","render","undefined","DynamicUIError","t0","$","_c","$i","Symbol","for","t1","t2","t3","t4","t5","t6","t7","t8","t9","t10","React","ShadcnComponents","safeReactHooks","useState","useEffect","useMemo","useCallback","useReducer","useId","safeReactUtils","Fragment","createElement","createSafeScope","Record","window","undefined","document","localStorage","sessionStorage","fetch","XMLHttpRequest","WebSocket","eval","Function","setTimeout","setInterval","importScripts","navigator","location","history","console","alert","confirm","prompt","getScopeKeys","Object","keys","getScopeValues","values","transform","TranspileResult","success","code","error","preprocessCode","replace","trim","transpileJSX","preprocessed","result","transforms","jsxRuntime","production","Error","message","extractComponentNames","patterns","names","Set","pattern","match","exec","add","Array","from","wrapAsComponent","transpiledCode","componentNames","checks","map","name","join","React","DynamicUIError","DynamicUIErrorBoundary","getScopeKeys","getScopeValues","transpileJSX","wrapAsComponent","DynamicRendererProps","code","onRetry","errorMessage","EvalResult","success","Component","ComponentType","error","evalCode","transpileResult","wrappedCode","scopeKeys","scopeValues","factory","Function","Error","message","DynamicRenderer","t0","$","_c","$i","Symbol","for","t1","result","t2","t3","undefined","t4","ChatStatus","FileUIPart","CornerDownLeftIcon","ImageIcon","Loader2Icon","MicIcon","PaperclipIcon","PlusIcon","SquareIcon","XIcon","nanoid","ChangeEvent","ChangeEventHandler","Children","ClipboardEventHandler","ComponentProps","FormEvent","FormEventHandler","Fragment","HTMLAttributes","KeyboardEventHandler","PropsWithChildren","ReactNode","RefObject","createContext","startTransition","useCallback","useContext","useEffect","useMemo","useRef","useState","Button","Command","CommandEmpty","CommandGroup","CommandInput","CommandItem","CommandList","CommandSeparator","DropdownMenu","DropdownMenuContent","DropdownMenuItem","DropdownMenuTrigger","HoverCard","HoverCardContent","HoverCardTrigger","InputGroup","InputGroupAddon","InputGroupButton","InputGroupTextarea","Select","SelectContent","SelectItem","SelectTrigger","SelectValue","cn","AttachmentsContext","files","id","add","File","FileList","remove","clear","openFileDialog","fileInputRef","HTMLInputElement","TextInputContext","value","setInput","v","PromptInputControllerProps","textInput","attachments","__registerFileInput","ref","open","PromptInputController","ProviderAttachmentsContext","usePromptInputController","$","_c","$i","Symbol","for","ctx","Error","useOptionalPromptInputController","useProviderAttachments","useOptionalProviderAttachments","PromptInputProviderProps","initialInput","PromptInputProvider","initialTextInput","children","setTextInput","clearInput","attachmentFiles","setAttachmentFiles","openRef","incoming","Array","from","length","prev","concat","map","file","type","const","url","URL","createObjectURL","mediaType","filename","name","found","find","f","revokeObjectURL","filter","attachmentsRef","current","controller","LocalAttachmentsContext","usePromptInputAttachments","provider","local","context","PromptInputAttachmentProps","HTMLDivElement","data","className","PromptInputAttachment","t0","props","startsWith","isImage","attachmentLabel","t1","t2","t3","t4","e","stopPropagation","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","PromptInputAttachmentsProps","Omit","attachment","PromptInputAttachments","PromptInputActionAddAttachmentsProps","label","PromptInputActionAddAttachments","undefined","preventDefault","PromptInputMessage","text","PromptInputProps","HTMLFormElement","accept","multiple","globalDrop","syncHiddenInput","maxFiles","maxFileSize","onError","err","code","message","onSubmit","event","Promise","PromptInput","usingProvider","inputRef","formRef","items","setItems","filesRef","openFileDialogLocal","click","matchesAccept","trim","patterns","split","s","Boolean","some","pattern","endsWith","prefix","slice","addLocal","fileList","accepted","withinSize","size","sized","capacity","Math","max","capped","next","push","removeLocal","clearLocal","form","onDragOver","DragEvent","dataTransfer","types","includes","onDrop","addEventListener","removeEventListener","document","handleChange","currentTarget","convertBlobUrlToDataUrl","response","fetch","blob","resolve","reader","FileReader","onloadend","result","onerror","readAsDataURL","item","handleSubmit","formData","FormData","get","reset","all","dataUrl","then","convertedFiles","catch","inner","PromptInputBodyProps","PromptInputBody","PromptInputTextareaProps","PromptInputTextarea","onChange","placeholder","isComposing","setIsComposing","key","nativeEvent","shiftKey","submitButton","querySelector","disabled","requestSubmit","lastAttachment","handleKeyDown","clipboardData","kind","getAsFile","handlePaste","e_0","controlledProps","PromptInputHeaderProps","PromptInputHeader","PromptInputFooterProps","PromptInputFooter","PromptInputToolsProps","PromptInputTools","PromptInputButtonProps","PromptInputButton","variant","count","newSize","PromptInputActionMenuProps","PromptInputActionMenu","PromptInputActionMenuTriggerProps","PromptInputActionMenuTrigger","PromptInputActionMenuContentProps","PromptInputActionMenuContent","PromptInputActionMenuItemProps","PromptInputActionMenuItem","PromptInputSubmitProps","status","PromptInputSubmit","Icon","SpeechRecognition","EventTarget","continuous","interimResults","lang","start","stop","onstart","this","ev","Event","onend","onresult","SpeechRecognitionEvent","SpeechRecognitionErrorEvent","results","SpeechRecognitionResultList","resultIndex","index","SpeechRecognitionResult","SpeechRecognitionAlternative","isFinal","transcript","confidence","error","global","Window","webkitSpeechRecognition","PromptInputSpeechButtonProps","textareaRef","HTMLTextAreaElement","onTranscriptionChange","PromptInputSpeechButton","isListening","setIsListening","recognition","setRecognition","recognitionRef","window","speechRecognition","finalTranscript","i","textarea","currentValue","newValue","dispatchEvent","bubbles","event_0","console","toggleListening","PromptInputSelectProps","PromptInputSelect","PromptInputSelectTriggerProps","PromptInputSelectTrigger","PromptInputSelectContentProps","PromptInputSelectContent","PromptInputSelectItemProps","PromptInputSelectItem","PromptInputSelectValueProps","PromptInputSelectValue","PromptInputHoverCardProps","PromptInputHoverCard","PromptInputHoverCardTriggerProps","PromptInputHoverCardTrigger","delay","closeDelay","PromptInputHoverCardContentProps","PromptInputHoverCardContent","align","PromptInputTabsListProps","PromptInputTabsList","PromptInputTabProps","PromptInputTab","PromptInputTabLabelProps","HTMLHeadingElement","PromptInputTabLabel","PromptInputTabBodyProps","PromptInputTabBody","PromptInputTabItemProps","PromptInputTabItem","PromptInputCommandProps","PromptInputCommand","PromptInputCommandInputProps","PromptInputCommandInput","PromptInputCommandListProps","PromptInputCommandList","PromptInputCommandEmptyProps","PromptInputCommandEmpty","PromptInputCommandGroupProps","PromptInputCommandGroup","PromptInputCommandItemProps","PromptInputCommandItem","PromptInputCommandSeparatorProps","PromptInputCommandSeparator","useState","OnClickYieldResult","loading","error","useAsyncGenerator","state","setState","execute","generator","AsyncGenerator","value","prev","useCallback","useEffect","useRef","UseAutoResizeTextareaProps","minHeight","maxHeight","value","useAutoResizeTextarea","t0","$","_c","$i","Symbol","for","textareaRef","t1","reset","textarea","current","style","height","newHeight","Math","max","min","scrollHeight","Number","POSITIVE_INFINITY","adjustHeight","t2","t3","textarea_0","t4","t5","t6","t7","handleResize","window","addEventListener","removeEventListener","t8","useEffect","KeyHandler","e","KeyboardEvent","UseKeyboardOptions","enabled","handlers","Record","getKeyCombo","parts","ctrlKey","push","metaKey","altKey","shiftKey","key","toLowerCase","join","useKeyboard","t0","$","_c","$i","Symbol","for","t1","undefined","t2","t3","handleKeyDown","keyCombo","handler","preventDefault","stopPropagation","document","addEventListener","removeEventListener"],"sources":["../src/lib/chat/prefill.ts","../src/lib/chat/chat-manager.ts","../src/lib/chat/client-tool-output.ts","../src/lib/chat/chat.tsx","../src/lib/chat/agent-context.tsx","../src/lib/chat/citations.ts","../src/lib/chat/read-only-transport.ts","../src/lib/chat/tool-abort.ts","../src/lib/chat/tools-schema.ts","../src/lib/components/text-shimmer.tsx","../src/lib/chat/trajectory/compact-disclosure.tsx","../src/lib/chat/trajectory/IndexProgressSegment.tsx","../src/lib/chat/trajectory/messages-context.ts","../src/lib/components/CitationPill.tsx","../src/lib/ui/TablePanel.tsx","../src/lib/elements/normalize-streamdown-children.ts","../src/lib/elements/table-panel-extension.tsx","../src/lib/elements/Response.tsx","../src/lib/ui/use-copy-feedback.ts","../src/lib/elements/CodeBlock.tsx","../src/lib/elements/Tool.tsx","../src/lib/components/tool-debug.tsx","../src/lib/ui/TheButton.tsx","../src/lib/copy/copy-image.ts","../src/lib/copy/snapshot-context.ts","../src/lib/copy/snapshot-render.tsx","../src/lib/copy/use-copy-element-as-image.ts","../src/lib/copy/assistant-snapshot.tsx","../src/lib/tools/helpers.ts","../src/lib/chat/markdown-paragraph.tsx","../src/lib/components/InteractiveResponse.tsx","../src/lib/renderers/render-part.tsx","../src/lib/chat/message-parts.tsx","../src/lib/chat/trajectory/tool-label.tsx","../src/lib/chat/trajectory/segments/index.tsx","../src/lib/chat/trajectory/trajectory-segments.ts","../src/lib/chat/trajectory/nested-trajectory.tsx","../src/lib/components/ChatAction.tsx","../src/lib/chat/trajectory/trajectories/message-actions.tsx","../src/lib/chat/trajectory/trajectories/messages-error.tsx","../src/lib/chat/trajectory/trajectories/messages-shell.tsx","../src/lib/components/PendingToolInput.tsx","../src/lib/chat/trajectory/trajectories/thinking-hint.ts","../src/lib/chat/trajectory/trajectories/timeline-dot.tsx","../src/lib/chat/trajectory/trajectories/timeline-item.tsx","../src/lib/chat/trajectory/trajectories/trajectory-thinking.tsx","../src/lib/chat/usage.ts","../src/lib/chat/zukhruf-chat-transport.ts","../src/lib/chat/trajectory/trajectories/collapsible-disclosure.tsx","../src/lib/chat/trajectory/trajectories/user-message.tsx","../src/lib/chat/trajectory/trajectories/compact-messages.tsx","../src/lib/chat/trajectory/trajectories/messages.tsx","../src/lib/ui/UnicodeSpinner.tsx","../src/lib/chat/trajectory/trajectories/timeline.tsx","../src/lib/chat/trajectory/trajectories/timelined-messages.tsx","../src/lib/components/ChatComposer.tsx","../src/lib/components/ChatTextarea.tsx","../src/lib/components/queue.tsx","../src/lib/ui/ArrowUpIcon.tsx","../src/lib/components/SubmitButton.tsx","../src/lib/components/tool-error.tsx","../src/lib/components/Tip/TipProvider.tsx","../src/lib/components/Tip/TipLine.tsx","../src/lib/dynamic-ui/error-boundary.tsx","../src/lib/dynamic-ui/safe-scope.ts","../src/lib/dynamic-ui/transpiler.ts","../src/lib/dynamic-ui/DynamicRenderer.tsx","../src/lib/elements/PromptInput.tsx","../src/lib/hooks/use-async-generator.ts","../src/lib/hooks/use-auto-resize-textarea.ts","../src/lib/hooks/use-keyboard.ts"],"sourcesContent":["export type PendingPrefill = {\n prompt: string;\n targetChatId: string;\n};\n\nconst STORAGE_KEY = 'pending-chat-prefill';\n\nexport function readPrefill(): PendingPrefill | null {\n try {\n const raw = sessionStorage.getItem(STORAGE_KEY);\n if (!raw) return null;\n const parsed: PendingPrefill = JSON.parse(raw);\n return parsed;\n } catch {\n sessionStorage.removeItem(STORAGE_KEY);\n return null;\n }\n}\n\nexport function writePrefill(data: PendingPrefill) {\n sessionStorage.setItem(STORAGE_KEY, JSON.stringify(data));\n}\n\nexport function clearPrefill() {\n sessionStorage.removeItem(STORAGE_KEY);\n}\n","import type { UIMessage, UseChatHelpers } from '@ai-sdk/react';\nimport type { ChatStatus, UIDataTypes, UITools } from 'ai';\n\nimport type { ComposerDraftSource } from '@deepagents/react-input/browser';\n\nimport { clearPrefill, readPrefill, writePrefill } from './prefill.ts';\nimport type { ZukhrufChatTransport } from './zukhruf-chat-transport.ts';\n\ntype UploadFile = ZukhrufChatTransport['uploadFile'];\n\nexport interface ChatSubmission {\n prompt: string;\n persistedPrompt: string;\n editableSource?: ComposerDraftSource;\n metadata?: Record<string, unknown>;\n /** Image files referenced from `prompt`, in `[Image #N]` order. */\n files?: File[];\n}\n\nexport interface QueuedMessage {\n id: string;\n prompt: string;\n persistedPrompt: string;\n editableSource?: ComposerDraftSource;\n metadata?: Record<string, unknown>;\n /** Receipts for the submission's files, in `[Image #N]` order; sent as `metadata.uploads`. */\n uploads?: Awaited<ReturnType<UploadFile>>[];\n}\n\ntype PreparedSubmission = Omit<QueuedMessage, 'id'>;\n\ntype Listener = () => void;\n\ntype ChatHelpers = UseChatHelpers<UIMessage<unknown, UIDataTypes, UITools>>;\n\nexport interface ChatManagerOptions {\n queueEnabled?: boolean;\n hasSubmitted?: boolean;\n initialMessages?: UIMessage[];\n enableResume?: boolean;\n uploadFile: UploadFile;\n onResetChat: (chatId: string) => void;\n}\n\nfunction isBusy(status: ChatStatus): boolean {\n return status === 'streaming' || status === 'submitted';\n}\n\nexport class ChatManager {\n private chat: ChatHelpers | null = null;\n private prevStatus: ChatStatus = 'ready';\n private listeners = new Set<Listener>();\n private _queue: QueuedMessage[] = [];\n private _queueEnabled: boolean;\n private _hasSubmitted: boolean;\n private _initialMessages?: UIMessage[];\n private _initialMessagesApplied = false;\n private _enableResume: boolean;\n private _resumed = false;\n private readonly uploadFile: UploadFile;\n /**\n * Submissions still preparing their files, in order. Later submissions chain\n * behind it so a text-only message never overtakes an image that is\n * uploading; `null` once nothing is in flight.\n */\n private pendingSubmissions: Promise<void> | null = null;\n /**\n * `sendMessage` ran but the bound helpers still report the pre-send status\n * (they are a render snapshot), so treat the chat as busy until the next\n * status sync.\n */\n private sentAwaitingStatus = false;\n\n onResetChat: (chatId: string) => void;\n\n constructor(options: ChatManagerOptions) {\n this._queueEnabled = options.queueEnabled ?? true;\n this._hasSubmitted = options.hasSubmitted ?? false;\n this._initialMessages = options.initialMessages;\n this._enableResume = options.enableResume ?? false;\n this.uploadFile = options.uploadFile;\n this.onResetChat = options.onResetChat;\n }\n\n bind(chat: ChatHelpers): void {\n this.chat = chat;\n }\n\n syncStatus(status: ChatStatus): void {\n this.sentAwaitingStatus = false;\n const prev = this.prevStatus;\n this.prevStatus = status;\n if (isBusy(prev) && status === 'ready') {\n this.processQueue();\n }\n }\n\n initialize(chatId?: string): void {\n if (!this.chat) return;\n\n if (!this._initialMessagesApplied) {\n if (\n this._initialMessages &&\n this._initialMessages.length > 0 &&\n this.chat.messages.length === 0\n ) {\n this.chat.setMessages(this._initialMessages);\n this._hasSubmitted = true;\n this.notify();\n }\n this._initialMessagesApplied = true;\n }\n\n if (this._enableResume && !this._resumed) {\n this.chat.resumeStream();\n this._resumed = true;\n }\n\n if (chatId) this.consumePrefill(chatId);\n }\n\n /**\n * Resolves once the message is queued or handed to the chat. Submissions\n * without files keep the synchronous path; rejects, sending nothing, when a\n * file cannot be prepared or uploaded.\n */\n submit(submission: ChatSubmission): Promise<void> {\n if (!this.chat) return Promise.resolve();\n const { files = [], ...message } = submission;\n if (files.length === 0 && !this.pendingSubmissions) {\n this.dispatch(message);\n return Promise.resolve();\n }\n const chatId = this.chat.id;\n const current = (this.pendingSubmissions ?? Promise.resolve()).then(\n async () => {\n if (files.length === 0) {\n this.assertCurrentChat(chatId);\n this.dispatch(message);\n return;\n }\n const uploads = await this.uploadFiles(chatId, files);\n this.assertCurrentChat(chatId);\n this.dispatch({ ...message, uploads });\n },\n );\n const settled: Promise<void> = current\n .catch(() => undefined)\n .then(() => {\n if (this.pendingSubmissions === settled) this.pendingSubmissions = null;\n });\n this.pendingSubmissions = settled;\n return current;\n }\n\n private async uploadFiles(chatId: string, files: readonly File[]) {\n return Promise.all(files.map((file) => this.uploadFile(chatId, file)));\n }\n\n private assertCurrentChat(chatId: string): void {\n if (this.chat?.id !== chatId) {\n throw new Error('The chat changed before the submission was sent.');\n }\n }\n\n private dispatch(message: PreparedSubmission): void {\n if (!this.chat) return;\n if (this._queueEnabled && this.isChatBusy()) {\n this._queue = [...this._queue, { id: crypto.randomUUID(), ...message }];\n this.notify();\n return;\n }\n this.directSubmit(message);\n }\n\n private isChatBusy(): boolean {\n return (\n this.sentAwaitingStatus ||\n (this.chat !== null && isBusy(this.chat.status))\n );\n }\n\n private directSubmit(message: PreparedSubmission): void {\n if (!this.chat) return;\n this._hasSubmitted = true;\n this.sentAwaitingStatus = true;\n this.chat.sendMessage({\n role: 'user',\n parts: [{ type: 'text', text: message.prompt }],\n metadata: message.uploads\n ? { ...message.metadata, uploads: message.uploads }\n : message.metadata,\n });\n this.notify();\n }\n\n private processQueue(): void {\n if (!this._queueEnabled || this._queue.length === 0) return;\n const [next, ...rest] = this._queue;\n this._queue = rest;\n this.notify();\n queueMicrotask(() => this.directSubmit(next));\n }\n\n removeFromQueue(id: string): void {\n const next = this._queue.filter((msg) => msg.id !== id);\n if (next.length === this._queue.length) return;\n this._queue = next;\n this.notify();\n }\n\n clearQueue(): void {\n if (this._queue.length === 0) return;\n this._queue = [];\n this.notify();\n }\n\n get queue(): readonly QueuedMessage[] {\n return this._queue;\n }\n\n get queueEnabled(): boolean {\n return this._queueEnabled;\n }\n\n clearChat(): void {\n if (!this.chat) return;\n this.chat.setMessages([]);\n this._hasSubmitted = false;\n this.clearQueue();\n this.notify();\n }\n\n setChat(messages: UIMessage[]): void {\n if (!this.chat) return;\n this.chat.setMessages(messages);\n this._hasSubmitted = messages.length > 0;\n this.notify();\n }\n\n stop(): void {\n if (!this.chat) return;\n this.chat.stop();\n }\n\n resetChat(prompt?: string): void {\n const nextChatId = crypto.randomUUID();\n if (prompt) {\n writePrefill({ prompt, targetChatId: nextChatId });\n }\n this.onResetChat(nextChatId);\n }\n\n consumePrefill(chatId: string): void {\n const prefill = readPrefill();\n if (!prefill || prefill.targetChatId !== chatId) return;\n clearPrefill();\n void this.submit({\n prompt: prefill.prompt,\n persistedPrompt: prefill.prompt,\n });\n }\n\n getTriggeringUserMessage(toolCallId: string): UIMessage | null {\n if (!this.chat) return null;\n const { messages } = this.chat;\n const idx = messages.findIndex(\n (msg) =>\n msg.role === 'assistant' &&\n msg.parts.some((p) => 'toolCallId' in p && p.toolCallId === toolCallId),\n );\n if (idx <= 0) return null;\n const userMsg = messages[idx - 1];\n return userMsg?.role === 'user' ? userMsg : null;\n }\n\n getLastUserMessageId(): string | null {\n if (!this.chat) return null;\n const { messages } = this.chat;\n for (let i = messages.length - 1; i >= 0; i--) {\n if (messages[i].role === 'user') return messages[i].id;\n }\n return null;\n }\n\n getLastAssistantMessage(): UIMessage | null {\n if (!this.chat) return null;\n const { messages } = this.chat;\n for (let i = messages.length - 1; i >= 0; i--) {\n if (messages[i].role === 'assistant') return messages[i];\n }\n return null;\n }\n\n get hasSubmitted(): boolean {\n return this._hasSubmitted;\n }\n\n set hasSubmitted(value: boolean) {\n if (this._hasSubmitted === value) return;\n this._hasSubmitted = value;\n this.notify();\n }\n\n subscribe = (listener: Listener): (() => void) => {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n };\n\n private notify(): void {\n for (const listener of this.listeners) {\n listener();\n }\n }\n}\n","import type { UIMessage, UseChatHelpers } from '@ai-sdk/react';\nimport type { UIDataTypes, UITools } from 'ai';\n\nimport type { ComponentRegistry } from '../tools/registry.ts';\n\ntype ChatHelpers = UseChatHelpers<UIMessage<unknown, UIDataTypes, UITools>>;\n\ninterface ToolCall {\n toolCallId: string;\n toolName: string;\n}\n\nexport async function completeRenderedClientTool(\n chat: ChatHelpers,\n registry: ComponentRegistry | undefined,\n toolCall: ToolCall,\n): Promise<void> {\n const clientTool = registry?.[toolCall.toolName];\n if (\n toolCall.toolName.startsWith('render') &&\n clientTool?.static === false &&\n clientTool.requiresUserInput !== true\n ) {\n await chat.addToolOutput({\n toolCallId: toolCall.toolCallId,\n tool: toolCall.toolName,\n output: 'rendered',\n state: 'output-available',\n });\n }\n}\n","import { useChat } from '@ai-sdk/react';\nimport {\n type ChatOnDataCallback,\n type ChatOnFinishCallback,\n type ChatTransport,\n type UIDataTypes,\n type UIMessage,\n type UITools,\n lastAssistantMessageIsCompleteWithApprovalResponses,\n lastAssistantMessageIsCompleteWithToolCalls,\n} from 'ai';\nimport { AnimatePresence, motion } from 'motion/react';\nimport * as React from 'react';\nimport { useStickToBottom } from 'use-stick-to-bottom';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nimport type { ComponentRegistry } from '../tools/registry.ts';\nimport { useAgentMeta } from './agent-context.tsx';\nimport { completeRenderedClientTool } from './client-tool-output.ts';\n\nexport function useAgentChatSetup(props: {\n chatId: string;\n transport: ChatTransport<UIMessage<unknown, UIDataTypes, UITools>>;\n initialMessages?: UIMessage<unknown, UIDataTypes, UITools>[];\n registry?: ComponentRegistry;\n onData?: ChatOnDataCallback<UIMessage<unknown, UIDataTypes, UITools>>;\n onFinish?: ChatOnFinishCallback<UIMessage<unknown, UIDataTypes, UITools>>;\n}) {\n const chat = useChat({\n id: props.chatId,\n experimental_throttle: 50,\n messages: props.initialMessages,\n transport: props.transport,\n sendAutomaticallyWhen: (options) =>\n lastAssistantMessageIsCompleteWithToolCalls(options) ||\n lastAssistantMessageIsCompleteWithApprovalResponses(options),\n async onToolCall({ toolCall }) {\n await completeRenderedClientTool(chat, props.registry, toolCall);\n },\n onData: props.onData,\n onFinish: props.onFinish,\n });\n\n return chat;\n}\n\nexport function ChatBot(\n props: React.PropsWithChildren<{\n className?: string;\n }>,\n) {\n return <AgentScrollArea {...props} />;\n}\n\nexport function AgentScrollArea(\n props: React.PropsWithChildren<{ className?: string }>,\n) {\n const { scrollRef, contentRef } = useStickToBottom({\n initial: 'smooth',\n });\n const { hasSubmitted } = useAgentMeta();\n return (\n <div\n id=\"agent\"\n data-slot=\"agent\"\n className={cn(\n '@container mx-auto h-full w-full overflow-y-auto',\n props.className,\n )}\n ref={scrollRef}\n >\n <div\n ref={contentRef}\n data-slot=\"content\"\n className={cn(\n 'relative mx-auto flex w-full flex-col',\n hasSubmitted ? 'min-h-full' : 'h-full justify-center',\n )}\n >\n {props.children}\n </div>\n </div>\n );\n}\n\nfunction AgentHeaderRoot(props: {\n className?: string;\n children: React.ReactNode;\n}) {\n const { hasSubmitted } = useAgentMeta();\n return (\n <motion.div\n layout\n className={cn(\n hasSubmitted\n ? cn(\n 'bg-background sticky top-0 z-10 shrink-0 space-y-1 backdrop-blur-md',\n props.className,\n )\n : 'relative flex justify-center py-4',\n )}\n transition={{\n layout: { type: 'tween', ease: [0.4, 0, 0.2, 1], duration: 0.4 },\n }}\n >\n <div className={cn(hasSubmitted ? 'text-left' : 'space-y-3 text-center')}>\n {props.children}\n </div>\n </motion.div>\n );\n}\nAgentHeaderRoot.displayName = 'AgentHeader.Root';\n\nfunction AgentHeaderHero(props: {\n icon?: React.ReactNode;\n children?: React.ReactNode;\n}) {\n const { hasSubmitted } = useAgentMeta();\n return (\n <AnimatePresence mode=\"sync\">\n {!hasSubmitted && (\n <motion.div\n key=\"agent-header-initial\"\n exit={{ opacity: 0 }}\n transition={{ duration: 0.2 }}\n >\n <h1 className=\"flex items-center justify-center gap-2 text-2xl font-medium tracking-tight\">\n {props.icon}\n {props.children ?? 'How can I help today?'}\n </h1>\n </motion.div>\n )}\n </AnimatePresence>\n );\n}\nAgentHeaderHero.displayName = 'AgentHeader.Hero';\n\nfunction AgentHeaderTitle(props: { children?: React.ReactNode }) {\n return (\n <motion.h2\n layout=\"position\"\n className=\"text-muted-foreground text-sm font-medium\"\n >\n {props.children}\n </motion.h2>\n );\n}\nAgentHeaderTitle.displayName = 'AgentHeader.Title';\n\nfunction AgentHeaderDescription(props: { children?: React.ReactNode }) {\n const { hasSubmitted } = useAgentMeta();\n return (\n <AnimatePresence>\n {hasSubmitted && props.children && (\n <motion.p\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ delay: 0.25 }}\n className=\"text-muted-foreground text-sm\"\n >\n {props.children}\n </motion.p>\n )}\n </AnimatePresence>\n );\n}\nAgentHeaderDescription.displayName = 'AgentHeader.Description';\n\nexport const AgentHeader = {\n Root: AgentHeaderRoot,\n Hero: AgentHeaderHero,\n Title: AgentHeaderTitle,\n Description: AgentHeaderDescription,\n};\n","import { type UIMessage, type UseChatHelpers } from '@ai-sdk/react';\nimport type {\n ChatOnDataCallback,\n ChatOnFinishCallback,\n ChatStatus,\n ChatTransport,\n UIDataTypes,\n UITools,\n} from 'ai';\nimport {\n type ReactNode,\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n} from 'react';\n\nimport type { ComponentRegistry } from '../tools/registry.ts';\nimport { ChatManager, type ChatSubmission } from './chat-manager.ts';\nimport { useAgentChatSetup } from './chat.tsx';\nimport type { ZukhrufChatTransport } from './zukhruf-chat-transport.ts';\n\nexport interface AgentConfigContextValue {\n chatId: string;\n registry?: ComponentRegistry;\n debugMode?: boolean;\n toggleDebugMode: () => void;\n clearChat: () => void;\n resetChat: (prompt?: string) => void;\n /** Settles once the submission is queued or sent; rejects when a file upload fails. */\n submit: (submission: ChatSubmission) => Promise<void>;\n setChat: (messages: UIMessage[]) => void;\n getTriggeringUserMessage: (toolCallId: string) => UIMessage | null;\n getLastUserMessageId: () => string | null;\n stop: () => void;\n}\n\ntype AgentMessagesContextValue = UseChatHelpers<\n UIMessage<unknown, UIDataTypes, UITools>\n>;\n\nconst AgentConfigContext = createContext<AgentConfigContextValue | undefined>(\n undefined,\n);\nconst AgentStatusContext = createContext<ChatStatus>('ready');\nconst AgentMessagesContext = createContext<\n AgentMessagesContextValue | undefined\n>(undefined);\nconst ChatManagerContext = createContext<ChatManager | null>(null);\n\nexport function AgentProvider({\n chatId,\n children,\n skipInitialView,\n debugMode: debugOn,\n registry,\n initialMessages,\n transport,\n resume,\n onData,\n onFinish,\n onResetChat,\n queueEnabled = true,\n}: {\n chatId: string;\n children: ReactNode;\n skipInitialView?: boolean;\n debugMode?: boolean;\n registry?: ComponentRegistry;\n initialMessages?: UIMessage[];\n transport: ChatTransport<UIMessage<unknown, UIDataTypes, UITools>> &\n Pick<ZukhrufChatTransport, 'uploadFile'>;\n /** Reconnect to the chat's active stream once, on mount. */\n resume?: boolean;\n /** Observes every streamed data part, transient ones included. */\n onData?: ChatOnDataCallback<UIMessage<unknown, UIDataTypes, UITools>>;\n /** Observes completion of each assistant response. */\n onFinish?: ChatOnFinishCallback<UIMessage<unknown, UIDataTypes, UITools>>;\n onResetChat: (chatId: string) => void;\n queueEnabled?: boolean;\n}) {\n const agent = useAgentChatSetup({\n chatId,\n transport,\n registry,\n initialMessages,\n onData,\n onFinish,\n });\n\n const [debugMode, setDebugMode] = useState(debugOn);\n const toggleDebugMode = useCallback(() => setDebugMode((prev) => !prev), []);\n\n const onResetChatRef = useRef(onResetChat);\n useEffect(() => {\n onResetChatRef.current = onResetChat;\n }, [onResetChat]);\n const forwardResetChat = useCallback((id: string) => {\n onResetChatRef.current(id);\n }, []);\n\n const [manager] = useState(\n // eslint-disable-next-line react-hooks/refs -- forwardResetChat reads its ref only at call time: ChatManager stores the callback (chat-manager.ts constructor) and invokes it solely from resetChat(), never during construction/render. The analyzer cannot see past the opaque constructor.\n () =>\n new ChatManager({\n queueEnabled,\n hasSubmitted: !!skipInitialView || (initialMessages?.length ?? 0) > 0,\n initialMessages,\n enableResume: resume,\n uploadFile: transport.uploadFile.bind(transport),\n onResetChat: forwardResetChat,\n }),\n );\n manager.bind(agent);\n\n useEffect(() => {\n manager.initialize(chatId);\n }, [manager, chatId]);\n\n useEffect(() => {\n manager.syncStatus(agent.status);\n }, [manager, agent.status]);\n\n const managerMethods = useMemo(\n () => ({\n clearChat: () => manager.clearChat(),\n resetChat: (prompt?: string) => manager.resetChat(prompt),\n submit: (submission: ChatSubmission) => manager.submit(submission),\n setChat: (messages: UIMessage[]) => manager.setChat(messages),\n getTriggeringUserMessage: (id: string) =>\n manager.getTriggeringUserMessage(id),\n getLastUserMessageId: () => manager.getLastUserMessageId(),\n stop: () => manager.stop(),\n }),\n [manager],\n );\n\n const configValue = useMemo<AgentConfigContextValue>(\n () => ({\n chatId,\n registry,\n debugMode,\n toggleDebugMode,\n ...managerMethods,\n }),\n [chatId, registry, debugMode, toggleDebugMode, managerMethods],\n );\n\n // useChat() returns a new object every render, but its fields (messages, status, error)\n // are from useSyncExternalStore — referentially stable when unchanged. Methods (sendMessage,\n // setMessages, etc.) are stable chatRef.current accessors. So memoizing on the three\n // changing fields is safe: cached object's methods still point to the same Chat instance.\n const messagesValue = useMemo(\n () => agent,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [agent.messages, agent.status, agent.error],\n );\n\n return (\n <ChatManagerContext value={manager}>\n <AgentConfigContext.Provider value={configValue}>\n <AgentStatusContext.Provider value={agent.status}>\n <AgentMessagesContext.Provider value={messagesValue}>\n {children}\n </AgentMessagesContext.Provider>\n </AgentStatusContext.Provider>\n </AgentConfigContext.Provider>\n </ChatManagerContext>\n );\n}\n\nexport function useAgent() {\n const context = useContext(AgentConfigContext);\n if (context === undefined) {\n throw new Error('useAgent must be used within an AgentProvider');\n }\n return context;\n}\n\nexport function useAgentStatus() {\n const status = useContext(AgentStatusContext);\n return { status };\n}\n\nexport function useAgentMeta() {\n const manager = useContext(ChatManagerContext);\n if (!manager) {\n throw new Error('useAgentMeta must be used within an AgentProvider');\n }\n const hasSubmitted = useSyncExternalStore(\n manager.subscribe,\n () => manager.hasSubmitted,\n () => manager.hasSubmitted,\n );\n return { hasSubmitted };\n}\n\nexport function useAgentMessages() {\n const context = useContext(AgentMessagesContext);\n if (context === undefined) {\n throw new Error('useAgentMessages must be used within an AgentProvider');\n }\n return context;\n}\n\nexport function useChatManager() {\n const manager = useContext(ChatManagerContext);\n if (!manager) {\n throw new Error('useChatManager must be used within an AgentProvider');\n }\n return manager;\n}\n","import type { UIMessage } from 'ai';\n\nexport interface CitationSource {\n url: string;\n title?: string;\n}\n\n/**\n * Flatten all `source-url` parts across the given messages, deduped by URL,\n * preserving first-seen order. Used by both the inline CitationPill renderer\n * and the WorkspaceBody Sources panel so their numbering stays in sync.\n */\nexport function extractSourcesFromMessages(\n messages: UIMessage[],\n): CitationSource[] {\n const seen = new Set<string>();\n const sources: CitationSource[] = [];\n for (const message of messages) {\n for (const part of message.parts) {\n if (part.type !== 'source-url') continue;\n if (seen.has(part.url)) continue;\n seen.add(part.url);\n sources.push({ url: part.url, title: part.title });\n }\n }\n return sources;\n}\n\n/**\n * Look up the 1-based citation index for a given URL within a deduped source\n * list. Returns null when the URL is not present (defensive — shouldn't happen\n * in practice when the same `extractSourcesFromMessages` output is used).\n */\nexport function citationIndexOf(\n sources: CitationSource[],\n url: string,\n): number | null {\n const i = sources.findIndex((s) => s.url === url);\n return i === -1 ? null : i + 1;\n}\n","import type { ChatTransport, UIMessage, UIMessageChunk } from 'ai';\n\n/**\n * Transport for surfaces that only render stored messages (shared transcripts,\n * fixtures). Sending from such a surface is a programming error, so it rejects\n * loudly instead of reaching for a network; there is never an active stream\n * to resume.\n */\nexport class ReadOnlyChatTransport implements ChatTransport<UIMessage> {\n sendMessages(): Promise<ReadableStream<UIMessageChunk>> {\n return Promise.reject(\n new Error(\n 'This chat is read-only: it has no transport to send messages through.',\n ),\n );\n }\n\n reconnectToStream(): Promise<null> {\n return Promise.resolve(null);\n }\n}\n","import type { ChatStatus, ToolUIPart } from 'ai';\n\nimport { useAgentStatus } from './agent-context.tsx';\n\nexport function isToolStateAborted(\n state: ToolUIPart['state'] | undefined,\n status: ChatStatus,\n): boolean {\n if (status === 'streaming' || status === 'submitted') return false;\n return state === 'input-streaming' || state === 'input-available';\n}\n\nexport function isToolAborted(part: ToolUIPart, status: ChatStatus): boolean {\n return isToolStateAborted(part.state, status);\n}\n\nexport function useIsToolAborted(part: ToolUIPart): boolean {\n const { status } = useAgentStatus();\n return isToolAborted(part, status);\n}\n","import { z } from 'zod';\n\nimport type { ComponentRegistry } from '../tools/registry.ts';\n\nexport type SerializedToolRegistry = Record<\n string,\n {\n inputSchema: z.core.JSONSchema.BaseSchema;\n description: string;\n }\n>;\n\nexport function serializeToolsRegistry(\n registry: ComponentRegistry,\n): SerializedToolRegistry {\n return Object.entries(registry).reduce<SerializedToolRegistry>(\n (acc, [toolName, tool]) => {\n if (tool.static) {\n return acc;\n }\n acc[toolName] = {\n inputSchema: z.toJSONSchema(tool.inputSchema, {\n io: 'input',\n unrepresentable: 'any',\n }),\n description: tool.description,\n };\n return acc;\n },\n {},\n );\n}\n","import type { ElementType, ReactNode } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nexport type TextShimmerProps = {\n children: ReactNode;\n as?: ElementType;\n className?: string;\n /** Sweep duration in seconds; the shimmer utility defaults to 2s. */\n duration?: number;\n enabled?: boolean;\n};\n\nexport function TextShimmer({\n children,\n as: Component = 'p',\n className,\n duration,\n enabled = true,\n}: TextShimmerProps) {\n return (\n <Component\n className={cn(enabled && 'shimmer', className)}\n style={\n enabled && duration !== undefined\n ? { animationDuration: `${duration}s` }\n : undefined\n }\n >\n {children}\n </Component>\n );\n}\n","import { ChevronRight } from 'lucide-react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nexport function CompactDisclosureChevron({\n className,\n}: {\n className?: string;\n}) {\n return (\n <ChevronRight\n aria-hidden\n className={cn(\n 'size-3.5 shrink-0 transition-transform group-data-[panel-open]:rotate-90',\n className,\n )}\n />\n );\n}\n\nexport function compactDisclosureTriggerClass(extra?: string) {\n return cn(\n 'group hover:bg-muted/30 flex min-h-7 w-full gap-2 rounded-sm py-1 text-left transition-colors',\n extra,\n );\n}\n","import type { UIMessage } from 'ai';\nimport {\n Fragment,\n type ReactNode,\n createContext,\n useContext,\n useMemo,\n useState,\n} from 'react';\nimport { useStickToBottom } from 'use-stick-to-bottom';\n\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n cn,\n} from '@deepagents/react-shadcn';\n\nimport { TextShimmer } from '../../components/text-shimmer.tsx';\nimport {\n CompactDisclosureChevron,\n compactDisclosureTriggerClass,\n} from './compact-disclosure.tsx';\n\nconst INDEX_PROGRESS_PART_TYPE = 'data-text2sql-index-progress';\n\nconst STICK_TO_BOTTOM_OPTS = {\n initial: 'instant',\n resize: 'instant',\n} as const;\n\nexport type IndexProgressEventType =\n | 'index:start'\n | 'index:end'\n | 'adapter:start'\n | 'adapter:end'\n | 'adapter:cache-hit'\n | 'adapter:cache-miss'\n | 'phase:start'\n | 'phase:progress'\n | 'phase:end'\n | 'adapter:error'\n | 'index:error';\n\nexport type IndexProgressEvent = {\n type: IndexProgressEventType;\n adapter?: string;\n phase?: string;\n table?: string;\n message: string;\n current?: number;\n total?: number;\n};\n\ntype AdapterStatus = 'queued' | 'running' | 'cache-hit' | 'fresh' | 'error';\n\ntype AdapterState = {\n name: string;\n status: AdapterStatus;\n phase?: string;\n table?: string;\n current?: number;\n total?: number;\n errorMessage?: string;\n};\n\ntype IndexState = {\n status: 'running' | 'complete' | 'error';\n adapters: AdapterState[];\n totalAdapters?: number;\n errorMessage?: string;\n};\n\ntype GroupedProgressEvents = {\n byAdapter: Map<string, IndexProgressEvent[]>;\n globalEvents: IndexProgressEvent[];\n};\n\ntype ProgressOpenStatus = IndexState['status'] | AdapterStatus;\n\ntype OpenOverride = {\n key: string;\n open: boolean;\n};\n\nfunction isIndexProgressPart(\n part: UIMessage['parts'][number],\n): part is UIMessage['parts'][number] & {\n type: typeof INDEX_PROGRESS_PART_TYPE;\n data: IndexProgressEvent;\n} {\n return part.type === INDEX_PROGRESS_PART_TYPE;\n}\n\nexport function getIndexProgressEvents(\n message: UIMessage,\n): IndexProgressEvent[] {\n return message.parts.filter(isIndexProgressPart).map((part) => part.data);\n}\n\nfunction aggregateEvents(events: IndexProgressEvent[]): IndexState {\n const byName = new Map<string, AdapterState>();\n let status: IndexState['status'] = 'running';\n let totalAdapters: number | undefined;\n let errorMessage: string | undefined;\n\n const upsert = (name: string, patch: Partial<AdapterState>) => {\n const prev = byName.get(name) ?? { name, status: 'queued' as const };\n byName.set(name, { ...prev, ...patch, name });\n };\n\n for (const event of events) {\n switch (event.type) {\n case 'index:start':\n totalAdapters = event.total;\n status = 'running';\n break;\n case 'adapter:start':\n if (event.adapter) upsert(event.adapter, { status: 'running' });\n break;\n case 'adapter:cache-hit':\n if (event.adapter) upsert(event.adapter, { status: 'cache-hit' });\n break;\n case 'adapter:cache-miss':\n if (event.adapter) upsert(event.adapter, { status: 'running' });\n break;\n case 'phase:start':\n case 'phase:progress':\n case 'phase:end':\n if (event.adapter) {\n upsert(event.adapter, {\n phase: event.phase,\n table: event.table,\n current: event.current,\n total: event.total,\n });\n }\n break;\n case 'adapter:end':\n if (event.adapter) {\n const prev = byName.get(event.adapter);\n if (prev?.status !== 'cache-hit' && prev?.status !== 'error') {\n upsert(event.adapter, { status: 'fresh' });\n }\n }\n break;\n case 'adapter:error':\n if (event.adapter) {\n upsert(event.adapter, {\n status: 'error',\n errorMessage: event.message,\n });\n }\n break;\n case 'index:end':\n status = 'complete';\n for (const [name, adapter] of byName) {\n if (adapter.status === 'running') {\n upsert(name, { status: 'fresh' });\n }\n }\n break;\n case 'index:error':\n status = 'error';\n errorMessage = event.message;\n break;\n }\n }\n\n return {\n status,\n adapters: Array.from(byName.values()),\n totalAdapters,\n errorMessage,\n };\n}\n\nfunction useIndexProgressState(events: IndexProgressEvent[]): IndexState {\n return useMemo(() => aggregateEvents(events), [events]);\n}\n\nfunction useProgressOpenState({\n status,\n resetKey,\n controlledOpen,\n onOpenChange,\n}: {\n status: ProgressOpenStatus;\n resetKey: string | number;\n controlledOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const key = `${resetKey}:${status}`;\n const [openOverride, setOpenOverride] = useState<OpenOverride | null>(null);\n\n const isOpen =\n controlledOpen ??\n (openOverride?.key === key ? openOverride.open : status === 'running');\n\n const handleOpenChange = (next: boolean) => {\n if (controlledOpen === undefined) {\n setOpenOverride({ key, open: next });\n }\n onOpenChange?.(next);\n };\n\n return { isOpen, handleOpenChange };\n}\n\nfunction shouldHideIndexProgress(\n events: IndexProgressEvent[],\n state: IndexState,\n) {\n if (events.length === 0) return true;\n if (state.status !== 'complete' || state.adapters.length === 0) return false;\n return state.adapters.every((a) => a.status === 'cache-hit');\n}\n\nfunction getIndexRunKey(events: IndexProgressEvent[]) {\n return events.filter((event) => event.type === 'index:start').length;\n}\n\nfunction getAdapterRunKey(events: IndexProgressEvent[]) {\n return events.filter((event) =>\n ['adapter:start', 'adapter:cache-hit', 'adapter:cache-miss'].includes(\n event.type,\n ),\n ).length;\n}\n\nfunction getBreadcrumbSegments(state: IndexState): string[] {\n const totalCount = state.totalAdapters ?? state.adapters.length;\n const isMultiAdapter = totalCount > 1;\n\n if (state.status === 'error') {\n const failed = state.adapters.find((a) => a.status === 'error');\n if (failed) {\n const segments = ['Failed'];\n if (isMultiAdapter) segments.push(failed.name);\n segments.push(failed.errorMessage ?? 'unknown error');\n return segments;\n }\n return ['Failed', state.errorMessage ?? 'unknown error'];\n }\n\n if (state.status === 'running') {\n const segments: string[] = ['Indexing'];\n const active = state.adapters.find((a) => a.status === 'running');\n if (active) {\n if (isMultiAdapter) segments.push(active.name);\n if (active.phase) segments.push(active.phase);\n if (active.current != null && active.total != null) {\n segments.push(`${active.current}/${active.total}`);\n }\n if (active.table) segments.push(active.table);\n }\n return segments;\n }\n\n if (state.adapters.length === 0 || !isMultiAdapter) {\n return ['Schema indexed'];\n }\n return ['Schema indexed', `${state.adapters.length} adapters`];\n}\n\nfunction getAdapterBreadcrumbSegments(adapter: AdapterState): string[] {\n if (adapter.status === 'error') {\n return ['Failed', adapter.name, adapter.errorMessage ?? 'unknown error'];\n }\n\n if (adapter.status === 'running') {\n const segments = ['Indexing', adapter.name];\n if (adapter.phase) segments.push(adapter.phase);\n if (adapter.current != null && adapter.total != null) {\n segments.push(`${adapter.current}/${adapter.total}`);\n }\n if (adapter.table) segments.push(adapter.table);\n return segments;\n }\n\n if (adapter.status === 'cache-hit') {\n return ['Schema indexed', adapter.name, 'cache hit'];\n }\n\n if (adapter.status === 'fresh') {\n return ['Schema indexed', adapter.name, 'refreshed'];\n }\n\n return ['Indexing', adapter.name, 'queued'];\n}\n\nfunction getGlobalErrorSegments(state: IndexState): string[] {\n return ['Failed', state.errorMessage ?? 'unknown error'];\n}\n\ntype IndexProgressContextValue = {\n state: IndexState;\n events: IndexProgressEvent[];\n};\n\nconst IndexProgressContext = createContext<IndexProgressContextValue | null>(\n null,\n);\n\nfunction useIndexProgress(component: string): IndexProgressContextValue {\n const ctx = useContext(IndexProgressContext);\n if (!ctx) {\n throw new Error(\n `<IndexProgress.${component}> must be used inside <IndexProgress.Root>`,\n );\n }\n return ctx;\n}\n\ntype RootProps = {\n events: IndexProgressEvent[];\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n children: ReactNode;\n className?: string;\n};\n\nfunction Root({\n events,\n open: controlledOpen,\n onOpenChange,\n children,\n className,\n}: RootProps) {\n const state = useIndexProgressState(events);\n const { isOpen, handleOpenChange } = useProgressOpenState({\n status: state.status,\n resetKey: getIndexRunKey(events),\n controlledOpen,\n onOpenChange,\n });\n\n if (shouldHideIndexProgress(events, state)) return null;\n\n return (\n <IndexProgressContext.Provider value={{ state, events }}>\n <Collapsible\n open={isOpen}\n onOpenChange={handleOpenChange}\n data-slot=\"index-progress-root\"\n data-status={state.status}\n className={cn('w-full', className)}\n >\n {children}\n </Collapsible>\n </IndexProgressContext.Provider>\n );\n}\n\nfunction Trigger({ className }: { className?: string }) {\n const { state } = useIndexProgress('Trigger');\n\n return (\n <CollapsibleTrigger\n render={\n <button\n type=\"button\"\n data-slot=\"index-progress-trigger\"\n className={getProgressTriggerClassName(className)}\n />\n }\n >\n <ProgressBreadcrumb\n segments={getBreadcrumbSegments(state)}\n isRunning={state.status === 'running'}\n />\n <DisclosureChevron />\n </CollapsibleTrigger>\n );\n}\n\nfunction getProgressTriggerClassName(className?: string) {\n return compactDisclosureTriggerClass(cn('items-baseline px-1', className));\n}\n\nfunction ProgressBreadcrumb({\n segments,\n isRunning,\n}: {\n segments: string[];\n isRunning: boolean;\n}) {\n const lastIdx = segments.length - 1;\n\n return (\n <TextShimmer\n as=\"span\"\n enabled={isRunning}\n className=\"text-muted-foreground min-w-0 flex-1 truncate text-xs\"\n >\n {segments.map((segment, idx) => (\n <ProgressBreadcrumbSegment\n key={idx}\n segment={segment}\n index={idx}\n isLast={idx === lastIdx}\n />\n ))}\n </TextShimmer>\n );\n}\n\nfunction ProgressBreadcrumbSegment({\n segment,\n index,\n isLast,\n}: {\n segment: string;\n index: number;\n isLast: boolean;\n}) {\n return (\n <Fragment>\n {index > 0 && (\n <span aria-hidden className=\"text-muted-foreground/40 mx-1.5\">\n ›\n </span>\n )}\n <span\n className={cn(\n isLast ? 'text-foreground/90' : 'text-muted-foreground/70',\n index === 0 && 'lowercase',\n )}\n >\n {segment}\n </span>\n </Fragment>\n );\n}\n\nfunction DisclosureChevron() {\n return (\n <CompactDisclosureChevron className=\"text-muted-foreground/60 size-3\" />\n );\n}\n\nfunction Content({\n className,\n children,\n}: {\n className?: string;\n children: ReactNode;\n}) {\n return (\n <CollapsibleContent\n data-slot=\"index-progress-content\"\n className={className}\n >\n {children}\n </CollapsibleContent>\n );\n}\n\nfunction EventRow({ event }: { event: IndexProgressEvent }) {\n return (\n <li className=\"text-muted-foreground/90 flex items-baseline gap-3\">\n <span className=\"text-muted-foreground/50 w-40 shrink-0 truncate\">\n {event.type}\n </span>\n <span className=\"text-foreground/80 min-w-0 flex-1 truncate\">\n {event.message}\n </span>\n {typeof event.current === 'number' && typeof event.total === 'number' && (\n <span className=\"text-muted-foreground/60 tabular-nums\">\n {event.current}/{event.total}\n </span>\n )}\n </li>\n );\n}\n\nfunction useGroupedProgressEvents(\n events: IndexProgressEvent[],\n): GroupedProgressEvents {\n return useMemo(() => {\n const map = new Map<string, IndexProgressEvent[]>();\n const global: IndexProgressEvent[] = [];\n\n for (const event of events) {\n if (event.adapter) {\n const arr = map.get(event.adapter) ?? [];\n arr.push(event);\n map.set(event.adapter, arr);\n } else {\n global.push(event);\n }\n }\n\n return { byAdapter: map, globalEvents: global };\n }, [events]);\n}\n\nfunction EventLog({ className }: { className?: string }) {\n const { events } = useIndexProgress('EventLog');\n const groupedEvents = useGroupedProgressEvents(events);\n const containerClass = cn(\n 'mt-2 ml-4 max-h-64 overflow-y-auto font-mono text-[11px]',\n className,\n );\n\n if (groupedEvents.byAdapter.size <= 1) {\n return <SingleEventLog events={events} className={containerClass} />;\n }\n\n return (\n <GroupedEventLog groupedEvents={groupedEvents} className={containerClass} />\n );\n}\n\nfunction StickyScroll({\n className,\n contentClassName,\n children,\n}: {\n className?: string;\n contentClassName?: string;\n children: ReactNode;\n}) {\n const { scrollRef, contentRef } = useStickToBottom(STICK_TO_BOTTOM_OPTS);\n return (\n <div ref={scrollRef} className={className}>\n <div\n ref={contentRef}\n data-slot=\"index-progress-event-log\"\n className={contentClassName}\n >\n {children}\n </div>\n </div>\n );\n}\n\nfunction SingleEventLog({\n events,\n className,\n}: {\n events: IndexProgressEvent[];\n className: string;\n}) {\n return (\n <StickyScroll className={className}>\n <ul className=\"space-y-0.5\">\n {events.map((event, index) => (\n <EventRow key={`${event.type}-${index}`} event={event} />\n ))}\n </ul>\n </StickyScroll>\n );\n}\n\nfunction GroupedEventLog({\n groupedEvents,\n className,\n}: {\n groupedEvents: GroupedProgressEvents;\n className: string;\n}) {\n return (\n <StickyScroll className={className} contentClassName=\"space-y-2\">\n {groupedEvents.globalEvents.length > 0 && (\n <ul className=\"space-y-0.5\">\n {groupedEvents.globalEvents.map((event, index) => (\n <EventRow key={`${event.type}-${index}`} event={event} />\n ))}\n </ul>\n )}\n {Array.from(groupedEvents.byAdapter.entries()).map(([name, events]) => (\n <AdapterEventGroup key={name} name={name} events={events} />\n ))}\n </StickyScroll>\n );\n}\n\nfunction AdapterEventGroup({\n name,\n events,\n}: {\n name: string;\n events: IndexProgressEvent[];\n}) {\n return (\n <div className=\"space-y-0.5\">\n <div className=\"text-foreground/90\">{name}</div>\n <ul className=\"space-y-0.5\">\n {events.map((event, index) => (\n <EventRow key={`${event.type}-${index}`} event={event} />\n ))}\n </ul>\n </div>\n );\n}\n\ntype PerAdapterProps = {\n events: IndexProgressEvent[];\n className?: string;\n showCacheHits?: boolean;\n};\n\nfunction PerAdapter({\n events,\n className,\n showCacheHits = false,\n}: PerAdapterProps) {\n const state = useIndexProgressState(events);\n const groupedEvents = useGroupedProgressEvents(events);\n const globalErrorEvents = groupedEvents.globalEvents.filter(\n (event) => event.type === 'index:error',\n );\n\n if (events.length === 0) return null;\n if (!showCacheHits && shouldHideIndexProgress(events, state)) return null;\n\n if (state.adapters.length === 0) {\n return (\n <Root events={events} className={className}>\n <Trigger />\n <Content>\n <EventLog />\n </Content>\n </Root>\n );\n }\n\n return (\n <div\n data-slot=\"index-progress-per-adapter\"\n data-status={state.status}\n className={cn('w-full space-y-1', className)}\n >\n {state.adapters.map((adapter) => (\n <AdapterProgressItem\n key={adapter.name}\n adapter={adapter}\n events={groupedEvents.byAdapter.get(adapter.name) ?? []}\n />\n ))}\n {globalErrorEvents.length > 0 && (\n <GlobalErrorProgressItem state={state} events={globalErrorEvents} />\n )}\n </div>\n );\n}\n\nfunction AdapterProgressItem({\n adapter,\n events,\n}: {\n adapter: AdapterState;\n events: IndexProgressEvent[];\n}) {\n const { isOpen, handleOpenChange } = useProgressOpenState({\n status: adapter.status,\n resetKey: getAdapterRunKey(events),\n });\n\n return (\n <Collapsible\n open={isOpen}\n onOpenChange={handleOpenChange}\n data-slot=\"index-progress-adapter\"\n data-status={adapter.status}\n className=\"w-full\"\n >\n <CollapsibleTrigger\n render={\n <button\n type=\"button\"\n data-slot=\"index-progress-adapter-trigger\"\n className={getProgressTriggerClassName()}\n />\n }\n >\n <ProgressBreadcrumb\n segments={getAdapterBreadcrumbSegments(adapter)}\n isRunning={adapter.status === 'running'}\n />\n <DisclosureChevron />\n </CollapsibleTrigger>\n <CollapsibleContent data-slot=\"index-progress-adapter-content\">\n <AdapterProgressEventLog events={events} />\n </CollapsibleContent>\n </Collapsible>\n );\n}\n\nfunction AdapterProgressEventLog({ events }: { events: IndexProgressEvent[] }) {\n if (events.length === 0) return null;\n\n return (\n <SingleEventLog\n events={events}\n className=\"mt-2 ml-4 max-h-64 overflow-y-auto font-mono text-[11px]\"\n />\n );\n}\n\nfunction GlobalErrorProgressItem({\n state,\n events,\n}: {\n state: IndexState;\n events: IndexProgressEvent[];\n}) {\n const { isOpen, handleOpenChange } = useProgressOpenState({\n status: state.status,\n resetKey: events.length,\n });\n\n return (\n <Collapsible\n open={isOpen}\n onOpenChange={handleOpenChange}\n data-slot=\"index-progress-global-error\"\n data-status={state.status}\n className=\"w-full\"\n >\n <CollapsibleTrigger\n render={\n <button\n type=\"button\"\n data-slot=\"index-progress-global-error-trigger\"\n className={getProgressTriggerClassName()}\n />\n }\n >\n <ProgressBreadcrumb\n segments={getGlobalErrorSegments(state)}\n isRunning={state.status === 'running'}\n />\n <DisclosureChevron />\n </CollapsibleTrigger>\n <CollapsibleContent data-slot=\"index-progress-global-error-content\">\n <AdapterProgressEventLog events={events} />\n </CollapsibleContent>\n </Collapsible>\n );\n}\n\nexport const IndexProgress = {\n Root,\n Trigger,\n Content,\n EventLog,\n PerAdapter,\n};\n","import type { ChatStatus, UIMessage } from 'ai';\nimport { createContext, use } from 'react';\n\nimport type { GenAIInteractiveElement } from '../../components/InteractiveResponse.tsx';\nimport { useAgentStatus } from '../agent-context.tsx';\n\nexport type MessagesContextValue = {\n messages: UIMessage[];\n elements?: GenAIInteractiveElement[];\n status?: ChatStatus;\n};\n\ntype MessageItemContextValue = {\n message: UIMessage;\n index: number;\n};\n\nexport const MessagesCtx = createContext<MessagesContextValue | undefined>(\n undefined,\n);\nexport const MessageItemCtx = createContext<\n MessageItemContextValue | undefined\n>(undefined);\n\nexport function useMessagesContext() {\n const ctx = use(MessagesCtx);\n if (!ctx) {\n throw new Error('useMessagesContext must be used within <Messages>');\n }\n return ctx;\n}\n\nexport function useMessagesStatus() {\n const ctx = use(MessagesCtx);\n const { status } = useAgentStatus();\n // Soft fallback: status is derivable from agent context, so we don't\n // force callers to wrap in <Messages.Root> or pass status= just to read it.\n return ctx?.status ?? status;\n}\n\nexport function useMessageItem() {\n const ctx = use(MessageItemCtx);\n if (!ctx) {\n throw new Error('useMessageItem must be used within <Messages.Item>');\n }\n return ctx;\n}\n","import type { CitationSource } from '../chat/citations.ts';\n\nexport function CitationPill({\n source,\n index,\n}: {\n source: CitationSource;\n index: number;\n}) {\n return (\n <sup className=\"ml-0.5 inline-block\">\n <a\n href={source.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n title={source.title ?? source.url}\n className=\"text-primary bg-primary/10 hover:bg-primary/20 focus-visible:ring-ring focus-visible:ring-offset-background inline-block rounded px-1 font-mono text-[10px] leading-tight no-underline transition-colors focus-visible:ring-2 focus-visible:ring-offset-1 focus-visible:outline-none\"\n >\n {index}\n </a>\n </sup>\n );\n}\n","import * as React from 'react';\n\nimport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n cn,\n} from '@deepagents/react-shadcn';\n\nconst TablePanelRoot = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'>\n>(function TablePanelRoot({ className, ...props }, ref) {\n return (\n <Card\n ref={ref}\n data-slot=\"table-panel\"\n size=\"default\"\n className={cn(\n 'border-border bg-background relative min-w-0 gap-0 overflow-visible rounded-md border py-0 text-sm/normal ring-0',\n className,\n )}\n {...props}\n />\n );\n});\nTablePanelRoot.displayName = 'TablePanel.Root';\n\nfunction TablePanelHeader({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <CardHeader\n data-slot=\"table-panel-header\"\n className={cn(\n 'border-border flex items-center justify-between gap-4 border-b px-4 py-3',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TablePanelHeading({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"table-panel-heading\"\n className={cn('min-w-0', className)}\n {...props}\n />\n );\n}\n\nfunction TablePanelTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <CardTitle\n data-slot=\"table-panel-title\"\n className={cn(\n 'text-base font-medium text-balance wrap-anywhere',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TablePanelDescription({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <CardDescription\n data-slot=\"table-panel-description\"\n className={cn(\n 'text-muted-foreground text-xs text-pretty wrap-anywhere',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TablePanelActions({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <CardAction\n data-slot=\"table-panel-actions\"\n className={cn('flex shrink-0 items-center gap-1', className)}\n {...props}\n />\n );\n}\n\nfunction TablePanelContent({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <CardContent\n data-slot=\"table-panel-content\"\n className={cn('min-w-0 flex-1 overflow-auto p-0', className)}\n {...props}\n />\n );\n}\n\nexport const TablePanel = Object.assign(TablePanelRoot, {\n Header: TablePanelHeader,\n Heading: TablePanelHeading,\n Title: TablePanelTitle,\n Description: TablePanelDescription,\n Actions: TablePanelActions,\n Content: TablePanelContent,\n});\n","const OPENING_TAG_PATTERN = /<\\w[\\w-]*(?:\"(?:\\\\.|[^\"])*\"|[^>\"])*>/g;\nconst DOUBLE_QUOTED_ATTRIBUTE_PATTERN = /\\b([\\w-]+)=\"((?:\\\\.|[^\"])*)\"/g;\n\nfunction normalizeAttributeEscapes(input: string): string {\n return input.replace(OPENING_TAG_PATTERN, (tag) =>\n tag.replace(\n DOUBLE_QUOTED_ATTRIBUTE_PATTERN,\n (_match: string, name: string, value: string) =>\n `${name}=\"${value.replace(/\\\\\"/g, '"')}\"`,\n ),\n );\n}\n\nexport function normalizeStreamdownChildren(\n children: string | undefined,\n tagNames?: string[],\n) {\n if (typeof children !== 'string') {\n return children;\n }\n\n let result = normalizeAttributeEscapes(children).replace(\n /<(\\w[\\w-]*)((?:\\s+[\\w-]+=\"[^\"]*\")+)\\s*(\\/?>)/g,\n (_m, tag: string, attrs: string, close: string) => {\n const collapsed = attrs.replace(/\\s+/g, ' ');\n const escaped = collapsed.replace(\n /\"([^\"]*)\"/g,\n (_, v: string) => `\"${v.replace(/\\*/g, '*')}\"`,\n );\n return `<${tag}${escaped}${close}`;\n },\n );\n\n result = result.replace(/\\/>\\s*</g, '/>\\n\\n<');\n\n return wrapElements(result, tagNames);\n}\n\n/**\n * The wrapper divs emitted here must stay bare (no attributes). Their minimal\n * shape is part of the rendering contract, allowing consumers to make the\n * structural wrapper layout-transparent. Pinned by \"top-level custom elements\n * stay wrapped in a bare class-less div\" in InteractiveResponse.test.tsx.\n */\nfunction wrapElements(\n input: string,\n tagNames?: string[],\n nested = false,\n): string {\n const customSet = tagNames?.length ? new Set(tagNames) : null;\n const isCustom = customSet\n ? (name: string) => customSet.has(name)\n : (name: string) => name.includes('-');\n\n let out = '';\n let i = 0;\n\n while (i < input.length) {\n if (input[i] !== '<' || input[i + 1] === '/') {\n out += input[i++];\n continue;\n }\n\n let nameEnd = i + 1;\n while (nameEnd < input.length && /[\\w-]/.test(input[nameEnd])) nameEnd++;\n const tagName = input.slice(i + 1, nameEnd);\n\n if (!tagName || !isCustom(tagName)) {\n out += input[i++];\n continue;\n }\n\n const tagEnd = skipToTagEnd(input, i);\n if (tagEnd < 0) {\n out += input[i++];\n continue;\n }\n\n if (input[tagEnd - 1] === '/') {\n if (nested) {\n out += '<div>' + input.slice(i, tagEnd + 1) + '</div>';\n } else {\n out += input.slice(i, tagEnd + 1);\n }\n i = tagEnd + 1;\n continue;\n }\n\n const close = findClosingTag(input, tagEnd + 1, tagName);\n if (!close) {\n // The model opened this element but never closed it (a dropped\n // </column> etc.). Inside a parent, adopt the rest of that parent's\n // content as children and auto-close, so siblings still wrap\n // symmetrically and Row's wrapper-flattening can't dissolve a bare one.\n if (nested) {\n const openTag = input.slice(i, tagEnd + 1);\n const processedInner = wrapElements(\n input.slice(tagEnd + 1),\n tagNames,\n true,\n );\n out += '<div>' + openTag + processedInner + '</' + tagName + '></div>';\n return out;\n }\n out += input.slice(i, tagEnd + 1);\n i = tagEnd + 1;\n continue;\n }\n\n const openTag = input.slice(i, tagEnd + 1);\n const innerContent = input.slice(tagEnd + 1, close.start);\n const closeTag = input.slice(close.start, close.end);\n const processedInner = wrapElements(innerContent, tagNames, true);\n\n if (nested) {\n out += '<div>' + openTag + processedInner + closeTag + '</div>';\n } else {\n out =\n ensureBlankLine(out) +\n '<div>' +\n openTag +\n processedInner +\n closeTag +\n '</div>';\n }\n i = close.end;\n }\n\n return out;\n}\n\nfunction skipToTagEnd(input: string, pos: number): number {\n let i = pos + 1;\n while (i < input.length) {\n if (input[i] === '\"') {\n i++;\n while (i < input.length && input[i] !== '\"') i++;\n } else if (input[i] === '>') {\n return i;\n }\n i++;\n }\n return -1;\n}\n\nfunction findClosingTag(\n input: string,\n start: number,\n tagName: string,\n): { start: number; end: number } | null {\n let depth = 1;\n let i = start;\n const open = '<' + tagName;\n const close = '</' + tagName;\n\n while (i < input.length) {\n const lt = input.indexOf('<', i);\n if (lt < 0) return null;\n\n if (\n input.startsWith(close, lt) &&\n !/[\\w-]/.test(input[lt + close.length] || '')\n ) {\n depth--;\n if (depth === 0) {\n const end = skipToTagEnd(input, lt);\n return end < 0 ? null : { start: lt, end: end + 1 };\n }\n const gt = input.indexOf('>', lt + close.length);\n i = gt < 0 ? lt + 1 : gt + 1;\n } else if (\n input.startsWith(open, lt) &&\n !/[\\w-]/.test(input[lt + open.length] || '')\n ) {\n const end = skipToTagEnd(input, lt);\n if (end >= 0 && input[end - 1] !== '/') {\n depth++;\n }\n i = end < 0 ? lt + 1 : end + 1;\n } else if (/[a-zA-Z/]/.test(input[lt + 1] || '')) {\n const end = skipToTagEnd(input, lt);\n i = end < 0 ? lt + 1 : end + 1;\n } else {\n i = lt + 1;\n }\n }\n\n return null;\n}\n\nfunction ensureBlankLine(text: string): string {\n if (text.length === 0) return '\\n\\n';\n if (text.endsWith('\\n\\n')) return text;\n if (text.endsWith('\\n')) return text + '\\n';\n return text + '\\n\\n';\n}\n","import type { Root, Table } from 'mdast';\nimport type { LeafDirective } from 'mdast-util-directive';\nimport { toString } from 'mdast-util-to-string';\nimport * as React from 'react';\nimport { type ComponentProps, useMemo } from 'react';\nimport remarkDirective from 'remark-directive';\nimport remarkGfm from 'remark-gfm';\nimport remarkParse from 'remark-parse';\nimport {\n type AllowedTags,\n Block,\n type BlockProps,\n type ExtraProps,\n Streamdown,\n TableCopyDropdown,\n TableDownloadDropdown,\n defaultRemarkPlugins,\n detectTextDirection,\n parseMarkdownIntoBlocks,\n} from 'streamdown';\nimport { unified } from 'unified';\nimport { SKIP, visit } from 'unist-util-visit';\n\nimport { buttonVariants, cn } from '@deepagents/react-shadcn';\n\nimport { TablePanel } from '../ui/TablePanel.tsx';\nimport { normalizeStreamdownChildren } from './normalize-streamdown-children.ts';\n\nexport type TablePanelStreamdownProps = Omit<\n ComponentProps<typeof Streamdown>,\n 'parseMarkdownIntoBlocksFn'\n> & {\n tableActions?: React.ReactNode;\n};\n\ntype StreamdownBlockComponent = NonNullable<\n TablePanelStreamdownProps['BlockComponent']\n>;\n\nconst tablePanelTag = 'response-table-panel';\nconst tablePanelAttributes = ['title', 'description'];\nconst tableActionClassName = buttonVariants({\n variant: 'ghost',\n size: 'icon-sm',\n});\n\ninterface TablePanelNode {\n type: 'tablePanel';\n data: {\n hName: string;\n hProperties?: Record<string, string>;\n };\n children: [Table];\n}\n\ndeclare module 'mdast' {\n interface BlockContentMap {\n tablePanel: TablePanelNode;\n }\n\n interface RootContentMap {\n tablePanel: TablePanelNode;\n }\n}\n\nconst tableDirectiveParser = unified()\n .use(remarkParse)\n .use(remarkGfm)\n .use(remarkDirective);\n\ninterface SourceRange {\n start: number;\n end: number;\n}\n\nconst parseMarkdownWithTableDirectives: NonNullable<\n ComponentProps<typeof Streamdown>['parseMarkdownIntoBlocksFn']\n> = (markdown) => {\n const blocks = parseMarkdownIntoBlocks(markdown);\n const directiveRanges = tableDirectiveRanges(markdown);\n\n if (directiveRanges.length === 0) return blocks;\n\n let offset = 0;\n const blockRanges = blocks.map((block) => {\n const range = { start: offset, end: offset + block.length };\n offset = range.end;\n return range;\n });\n const mergeWithPrevious = new Set<number>();\n\n for (const directiveRange of directiveRanges) {\n let foundFirstBlock = false;\n\n for (const [index, blockRange] of blockRanges.entries()) {\n const overlapsDirective =\n blockRange.start < directiveRange.end &&\n blockRange.end > directiveRange.start;\n\n if (!overlapsDirective) continue;\n if (foundFirstBlock) mergeWithPrevious.add(index);\n foundFirstBlock = true;\n }\n }\n\n return blocks.reduce<string[]>((groupedBlocks, block, index) => {\n if (mergeWithPrevious.has(index) && groupedBlocks.length > 0) {\n groupedBlocks[groupedBlocks.length - 1] += block;\n } else {\n groupedBlocks.push(block);\n }\n return groupedBlocks;\n }, []);\n};\n\nfunction isMarkdownTableDirective(\n node: { type: string } | undefined,\n): node is LeafDirective {\n return (\n node?.type === 'leafDirective' && 'name' in node && node.name === 'table'\n );\n}\n\nfunction tableDirectiveBefore(\n children: readonly { type: string }[],\n index: number | undefined,\n) {\n if (index === undefined) return undefined;\n const previous = children[index - 1];\n return isMarkdownTableDirective(previous) ? previous : undefined;\n}\n\nfunction tableDirectiveRanges(markdown: string): SourceRange[] {\n const ranges: SourceRange[] = [];\n const tree = tableDirectiveParser.parse(markdown);\n\n visit(tree, 'table', (table, index, parent) => {\n if (!parent) return;\n const directive = tableDirectiveBefore(parent.children, index);\n const start = directive?.position?.start.offset;\n const end = table.position?.end.offset;\n\n if (start !== undefined && end !== undefined) {\n ranges.push({ start, end });\n }\n });\n\n return ranges;\n}\n\nfunction directiveAttribute(\n directive: LeafDirective,\n attribute: 'title' | 'description',\n) {\n const value = directive.attributes?.[attribute]?.trim();\n return value || undefined;\n}\n\nfunction tableDirectiveTextDirection(markdown: string) {\n const tree = tableDirectiveParser.parse(markdown);\n let hasTableDirective = false;\n\n visit(tree, 'leafDirective', (directive, index, parent) => {\n const next = index === undefined ? undefined : parent?.children[index + 1];\n if (directive.name !== 'table' || next?.type !== 'table') return;\n\n hasTableDirective = true;\n const metadata = [\n directiveAttribute(directive, 'title'),\n directiveAttribute(directive, 'description'),\n ]\n .filter(Boolean)\n .join(' ');\n directive.children = metadata ? [{ type: 'text', value: metadata }] : [];\n });\n\n if (!hasTableDirective) return undefined;\n return detectTextDirection(toString(tree, { includeHtml: false }));\n}\n\nfunction DefaultStreamdownBlock(props: BlockProps) {\n return <Block {...props} />;\n}\n\nfunction createDirectionAwareBlock(BlockComponent: StreamdownBlockComponent) {\n function DirectionAwareBlock(props: BlockProps) {\n const direction = tableDirectiveTextDirection(props.content) ?? props.dir;\n return <BlockComponent {...props} dir={direction} />;\n }\n\n DirectionAwareBlock.displayName = 'DirectionAwareTableBlock';\n return DirectionAwareBlock;\n}\n\nfunction createTablePanelNode(\n table: Table,\n directive?: LeafDirective,\n): TablePanelNode {\n const title = directive && directiveAttribute(directive, 'title');\n const description = directive && directiveAttribute(directive, 'description');\n const hProperties = {\n ...(title ? { title } : {}),\n ...(description ? { description } : {}),\n };\n\n return {\n type: 'tablePanel',\n data: {\n hName: tablePanelTag,\n ...(Object.keys(hProperties).length > 0 ? { hProperties } : {}),\n },\n children: [table],\n };\n}\n\nfunction tablePanelRemarkPlugin() {\n return (tree: Root) => {\n visit(tree, 'table', (table, index, parent) => {\n if (index === undefined || !parent) return;\n\n const directive = tableDirectiveBefore(parent.children, index);\n const panelIndex = directive ? index - 1 : index;\n const replacedNodeCount = directive ? 2 : 1;\n\n parent.children.splice(\n panelIndex,\n replacedNodeCount,\n createTablePanelNode(table, directive),\n );\n\n return [SKIP, panelIndex + 1];\n });\n };\n}\n\nconst defaultTablePanelRemarkPlugins: NonNullable<\n TablePanelStreamdownProps['remarkPlugins']\n> = [\n ...Object.values(defaultRemarkPlugins),\n remarkDirective,\n tablePanelRemarkPlugin,\n];\n\ninterface MarkdownTableContextValue {\n actions: React.ReactNode;\n controls: TablePanelStreamdownProps['controls'];\n}\n\nconst MarkdownTableContext = React.createContext<MarkdownTableContextValue>({\n actions: null,\n controls: true,\n});\n\nfunction isTableActionEnabled(\n controls: TablePanelStreamdownProps['controls'],\n action: 'copy' | 'download',\n) {\n if (controls === false) return false;\n if (controls === true || controls === undefined) return true;\n\n const tableControls = controls.table;\n if (tableControls === false) return false;\n if (tableControls === true || tableControls === undefined) return true;\n return tableControls[action] !== false;\n}\n\nfunction withoutBuiltInTableControls(\n controls: TablePanelStreamdownProps['controls'],\n): NonNullable<TablePanelStreamdownProps['controls']> {\n if (controls === false) return false;\n if (controls === true || controls === undefined) return { table: false };\n return { ...controls, table: false };\n}\n\ninterface MarkdownTablePanelProps extends ExtraProps {\n children?: React.ReactNode;\n className?: string;\n title?: string;\n description?: string;\n}\n\nfunction MarkdownTablePanel({\n children,\n className,\n title,\n description,\n}: MarkdownTablePanelProps) {\n const { actions, controls } = React.useContext(MarkdownTableContext);\n const showCopy = isTableActionEnabled(controls, 'copy');\n const showDownload = isTableActionEnabled(controls, 'download');\n const hasMetadata = Boolean(title || description);\n const hasActions = Boolean(showCopy || showDownload || actions);\n\n if (!children) return null;\n\n return (\n <TablePanel\n data-streamdown=\"table-wrapper\"\n className={cn('my-4', className)}\n >\n {(hasMetadata || hasActions) && (\n <TablePanel.Header className={cn(!hasMetadata && 'justify-end')}>\n {hasMetadata && (\n <TablePanel.Heading>\n {title && <TablePanel.Title>{title}</TablePanel.Title>}\n {description && (\n <TablePanel.Description className={cn(title && 'mt-1')}>\n {description}\n </TablePanel.Description>\n )}\n </TablePanel.Heading>\n )}\n {hasActions && (\n <TablePanel.Actions data-copy-exclude=\"assistant-snapshot\">\n {showCopy && (\n <TableCopyDropdown className={tableActionClassName} />\n )}\n {showDownload && (\n <TableDownloadDropdown className={tableActionClassName} />\n )}\n {actions}\n </TablePanel.Actions>\n )}\n </TablePanel.Header>\n )}\n <TablePanel.Content\n className={cn(\n 'overflow-hidden',\n '[&>[data-streamdown=table-wrapper]]:m-0 [&>[data-streamdown=table-wrapper]]:gap-0 [&>[data-streamdown=table-wrapper]]:rounded-none [&>[data-streamdown=table-wrapper]]:border-0 [&>[data-streamdown=table-wrapper]]:bg-transparent [&>[data-streamdown=table-wrapper]]:p-0',\n '[&>[data-streamdown=table-wrapper]>div:last-child]:rounded-none [&>[data-streamdown=table-wrapper]>div:last-child]:border-0',\n '[&_[data-streamdown=table]]:tabular-nums',\n '[&_[data-streamdown=table-header]]:bg-muted/30',\n '[&_[data-streamdown=table-header-cell]]:text-muted-foreground [&_[data-streamdown=table-header-cell]]:text-xs [&_[data-streamdown=table-header-cell]]:font-medium',\n '[&_[data-streamdown=table-cell]]:py-2',\n '[&_[data-streamdown=table-row]]:hover:bg-muted/30',\n )}\n >\n {children}\n </TablePanel.Content>\n </TablePanel>\n );\n}\n\nexport function TablePanelStreamdown({\n allowedTags,\n BlockComponent,\n children,\n components,\n controls,\n dir,\n mode,\n remarkPlugins,\n tableActions,\n ...props\n}: TablePanelStreamdownProps) {\n const tablePanelPlugins = useMemo(() => {\n if (!remarkPlugins) {\n return defaultTablePanelRemarkPlugins;\n }\n return [...remarkPlugins, remarkDirective, tablePanelRemarkPlugin];\n }, [remarkPlugins]);\n\n const tablePanelAllowedTags = useMemo<AllowedTags>(\n () => ({\n ...allowedTags,\n [tablePanelTag]: tablePanelAttributes,\n }),\n [allowedTags],\n );\n\n const tablePanelComponents = useMemo(\n () => ({ ...components, [tablePanelTag]: MarkdownTablePanel }),\n [components],\n );\n\n const tableContext = useMemo<MarkdownTableContextValue>(\n () => ({ actions: tableActions, controls }),\n [controls, tableActions],\n );\n\n const tablePanelBlockComponent = useMemo(() => {\n if (dir !== 'auto' || mode === 'static') return BlockComponent;\n return createDirectionAwareBlock(BlockComponent ?? DefaultStreamdownBlock);\n }, [BlockComponent, dir, mode]);\n\n const streamdownDirection = useMemo(() => {\n if (dir !== 'auto' || mode !== 'static' || typeof children !== 'string') {\n return dir;\n }\n return tableDirectiveTextDirection(children) ?? dir;\n }, [children, dir, mode]);\n\n return (\n <MarkdownTableContext.Provider value={tableContext}>\n <Streamdown\n allowedTags={tablePanelAllowedTags}\n BlockComponent={tablePanelBlockComponent}\n components={tablePanelComponents}\n controls={withoutBuiltInTableControls(controls)}\n dir={streamdownDirection}\n mode={mode}\n parseMarkdownIntoBlocksFn={parseMarkdownWithTableDirectives}\n remarkPlugins={tablePanelPlugins}\n {...props}\n >\n {normalizeStreamdownChildren(\n children,\n Object.keys(tablePanelAllowedTags),\n )}\n </Streamdown>\n </MarkdownTableContext.Provider>\n );\n}\n","import * as React from 'react';\nimport { memo } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nimport {\n TablePanelStreamdown,\n type TablePanelStreamdownProps,\n} from './table-panel-extension.tsx';\n\nexport type ResponseProps = TablePanelStreamdownProps;\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n error: Error | null;\n}\n\nclass StreamdownErrorBoundary extends React.Component<\n { children: React.ReactNode; fallback?: React.ReactNode },\n ErrorBoundaryState\n> {\n override state: ErrorBoundaryState = { hasError: false, error: null };\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { hasError: true, error };\n }\n\n override render() {\n if (this.state.hasError) {\n return (\n this.props.fallback || (\n <div className=\"text-destructive p-2 text-sm\">\n Failed to render content: {this.state.error?.message}\n </div>\n )\n );\n }\n return this.props.children;\n }\n}\n\nexport const Response = memo(({ className, ...props }: ResponseProps) => (\n <StreamdownErrorBoundary>\n <TablePanelStreamdown\n className={cn(\n 'size-full space-y-2 [&>*:first-child]:mt-0 [&>*:last-child]:mb-0',\n className,\n )}\n {...props}\n />\n </StreamdownErrorBoundary>\n));\n\nResponse.displayName = 'Response';\n","import { useEffect, useRef, useState } from 'react';\n\nexport function useCopyFeedback(timeout = 2000) {\n const [copied, setCopied] = useState(false);\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n return () => {\n if (timerRef.current) clearTimeout(timerRef.current);\n };\n }, []);\n\n const copy = async (value: string) => {\n await navigator.clipboard.writeText(value);\n setCopied(true);\n if (timerRef.current) clearTimeout(timerRef.current);\n timerRef.current = setTimeout(() => setCopied(false), timeout);\n };\n\n return [copied, copy] as const;\n}\n","import { CheckIcon, CopyIcon } from 'lucide-react';\nimport type { ComponentProps, HTMLAttributes, ReactNode } from 'react';\nimport { createContext, useContext } from 'react';\nimport { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';\nimport {\n oneDark,\n oneLight,\n} from 'react-syntax-highlighter/dist/esm/styles/prism/index.js';\n\nimport { Button, cn } from '@deepagents/react-shadcn';\n\nimport { useCopyFeedback } from '../ui/use-copy-feedback.ts';\n\ntype CodeBlockContextType = {\n code: string;\n};\n\nconst CodeBlockContext = createContext<CodeBlockContextType>({\n code: '',\n});\n\nexport type CodeBlockProps = HTMLAttributes<HTMLDivElement> & {\n code: string;\n language: string;\n showLineNumbers?: boolean;\n /**\n * Soft-wrap long lines. The container is `overflow-hidden`, so without this\n * anything past the right edge is clipped with no scrollbar to recover it.\n */\n wrap?: boolean;\n children?: ReactNode;\n};\n\nexport const CodeBlock = ({\n code,\n language,\n showLineNumbers = false,\n wrap = false,\n className,\n children,\n ...props\n}: CodeBlockProps) => (\n <CodeBlockContext.Provider value={{ code }}>\n <div\n className={cn(\n 'bg-background text-foreground relative w-full overflow-hidden rounded-md border',\n className,\n )}\n {...props}\n >\n <div className=\"relative\">\n <SyntaxHighlighter\n className=\"overflow-hidden dark:hidden\"\n codeTagProps={{\n className: 'font-mono text-xs',\n }}\n customStyle={{\n margin: 0,\n padding: '0.5rem',\n fontSize: '0.75rem',\n background: 'hsl(var(--background))',\n color: 'hsl(var(--foreground))',\n }}\n language={language}\n lineNumberStyle={{\n color: 'hsl(var(--muted-foreground))',\n paddingRight: '1rem',\n minWidth: '2.5rem',\n }}\n showLineNumbers={showLineNumbers}\n style={oneLight}\n wrapLongLines={wrap}\n >\n {code}\n </SyntaxHighlighter>\n <SyntaxHighlighter\n className=\"hidden overflow-hidden dark:block\"\n codeTagProps={{\n className: 'font-mono text-xs',\n }}\n customStyle={{\n margin: 0,\n padding: '0.5rem',\n fontSize: '0.75rem',\n background: 'hsl(var(--background))',\n color: 'hsl(var(--foreground))',\n }}\n language={language}\n lineNumberStyle={{\n color: 'hsl(var(--muted-foreground))',\n paddingRight: '1rem',\n minWidth: '2.5rem',\n }}\n showLineNumbers={showLineNumbers}\n style={oneDark}\n wrapLongLines={wrap}\n >\n {code}\n </SyntaxHighlighter>\n {children && (\n <div className=\"absolute top-1 right-1 flex items-center gap-1\">\n {children}\n </div>\n )}\n </div>\n </div>\n </CodeBlockContext.Provider>\n);\n\nexport type CodeBlockCopyButtonProps = ComponentProps<typeof Button> & {\n onCopy?: () => void;\n onError?: (error: Error) => void;\n timeout?: number;\n};\n\nexport const CodeBlockCopyButton = ({\n onCopy,\n onError,\n timeout = 2000,\n children,\n className,\n ...props\n}: CodeBlockCopyButtonProps) => {\n const [isCopied, copy] = useCopyFeedback(timeout);\n const { code } = useContext(CodeBlockContext);\n\n const copyToClipboard = async () => {\n if (typeof window === 'undefined' || !navigator.clipboard.writeText) {\n onError?.(new Error('Clipboard API not available'));\n return;\n }\n\n try {\n await copy(code);\n onCopy?.();\n } catch (error) {\n onError?.(error as Error);\n }\n };\n\n const Icon = isCopied ? CheckIcon : CopyIcon;\n\n return (\n <Button\n className={cn('shrink-0', className)}\n onClick={copyToClipboard}\n size=\"icon\"\n variant=\"ghost\"\n {...props}\n >\n {children ?? <Icon size={14} />}\n </Button>\n );\n};\n","import type { ToolUIPart } from 'ai';\nimport {\n CheckCircleIcon,\n ChevronDownIcon,\n CircleIcon,\n ClockIcon,\n WrenchIcon,\n XCircleIcon,\n} from 'lucide-react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { isValidElement } from 'react';\n\nimport {\n Badge,\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n cn,\n} from '@deepagents/react-shadcn';\n\nimport { CodeBlock } from './CodeBlock.tsx';\n\nexport type ToolProps = ComponentProps<typeof Collapsible>;\n\nexport const Tool = ({ className, ...props }: ToolProps) => (\n <Collapsible\n className={cn('not-prose mb-4 w-full rounded-md border', className)}\n {...props}\n />\n);\n\nexport type ToolHeaderProps = {\n title?: string;\n type: ToolUIPart['type'];\n state: ToolUIPart['state'];\n className?: string;\n};\n\nconst getStatusBadge = (status: ToolUIPart['state']) => {\n const labels: Record<\n | ToolUIPart['state']\n | 'approval-requested'\n | 'approval-responded'\n | 'output-denied',\n string\n > = {\n 'input-streaming': 'Pending',\n 'input-available': 'Running',\n 'approval-requested': 'Awaiting Approval',\n 'approval-responded': 'Responded',\n 'output-available': 'Completed',\n 'output-error': 'Error',\n 'output-denied': 'Denied',\n };\n\n const icons: Record<\n | ToolUIPart['state']\n | 'approval-requested'\n | 'approval-responded'\n | 'output-denied',\n ReactNode\n > = {\n 'input-streaming': <CircleIcon className=\"size-4\" />,\n 'input-available': <ClockIcon className=\"size-4 animate-pulse\" />,\n 'approval-requested': <ClockIcon className=\"size-4 text-yellow-600\" />,\n 'approval-responded': <CheckCircleIcon className=\"size-4 text-blue-600\" />,\n 'output-available': <CheckCircleIcon className=\"size-4 text-green-600\" />,\n 'output-error': <XCircleIcon className=\"size-4 text-red-600\" />,\n 'output-denied': <XCircleIcon className=\"size-4 text-orange-600\" />,\n };\n\n return (\n <Badge className=\"gap-1.5 rounded-full text-xs\" variant=\"secondary\">\n {icons[status]}\n {labels[status]}\n </Badge>\n );\n};\n\nexport const ToolHeader = ({\n className,\n title,\n type,\n state,\n ...props\n}: ToolHeaderProps) => (\n <CollapsibleTrigger\n className={cn(\n 'group flex w-full items-center justify-between gap-4 p-3',\n className,\n )}\n {...props}\n >\n <div className=\"flex items-center gap-2\">\n <WrenchIcon className=\"text-muted-foreground size-4\" />\n <span className=\"text-sm font-medium\">\n {title ?? type.split('-').slice(1).join('-')}\n </span>\n {getStatusBadge(state)}\n </div>\n <ChevronDownIcon className=\"text-muted-foreground size-4 transition-transform group-data-[panel-open]:rotate-180\" />\n </CollapsibleTrigger>\n);\n\nexport type ToolContentProps = ComponentProps<typeof CollapsibleContent>;\n\nexport const ToolContent = ({ className, ...props }: ToolContentProps) => (\n <CollapsibleContent\n className={cn(\n 'data-closed:fade-out-0 data-closed:slide-out-to-top-2 data-open:slide-in-from-top-2 text-popover-foreground data-closed:animate-out data-open:animate-in outline-none',\n className,\n )}\n {...props}\n />\n);\n\nexport type ToolInputProps = ComponentProps<'div'> & {\n input: ToolUIPart['input'];\n};\n\nexport const ToolInput = ({ className, input, ...props }: ToolInputProps) => (\n <div className={cn('space-y-2 overflow-hidden p-4', className)} {...props}>\n <h4 className=\"text-muted-foreground text-xs font-medium tracking-wide uppercase\">\n Parameters\n </h4>\n <div className=\"bg-muted/50 rounded-md\">\n <CodeBlock code={JSON.stringify(input, null, 2)} language=\"json\" />\n </div>\n </div>\n);\n\nexport type ToolOutputProps = ComponentProps<'div'> & {\n output: ToolUIPart['output'];\n errorText: ToolUIPart['errorText'];\n};\n\nexport const ToolOutput = ({\n className,\n output,\n errorText,\n ...props\n}: ToolOutputProps) => {\n if (!(output || errorText)) {\n return null;\n }\n\n let Output = <div>{output as ReactNode}</div>;\n\n if (typeof output === 'object' && !isValidElement(output)) {\n Output = (\n <CodeBlock code={JSON.stringify(output, null, 2)} language=\"json\" />\n );\n } else if (typeof output === 'string') {\n Output = <CodeBlock code={output} language=\"json\" />;\n }\n\n return (\n <div className={cn('space-y-2 p-4', className)} {...props}>\n <h4 className=\"text-muted-foreground text-xs font-medium tracking-wide uppercase\">\n {errorText ? 'Error' : 'Result'}\n </h4>\n <div\n className={cn(\n 'overflow-x-auto rounded-md text-xs [&_table]:w-full',\n errorText\n ? 'bg-destructive/10 text-destructive'\n : 'bg-muted/50 text-foreground',\n )}\n >\n {errorText && <div>{errorText}</div>}\n {Output}\n </div>\n </div>\n );\n};\n","import { type DynamicToolUIPart, type ToolUIPart, getToolName } from 'ai';\n\nimport { Response } from '../elements/Response.tsx';\nimport {\n Tool,\n ToolContent,\n ToolHeader,\n ToolInput,\n ToolOutput,\n} from '../elements/Tool.tsx';\n\nexport function ToolDebug({ part }: { part: ToolUIPart }) {\n const toolName = getToolName(part);\n\n return (\n <Tool data-copy-exclude=\"assistant-snapshot\">\n <ToolHeader\n title={`Executing ${toolName}`}\n state={part.state}\n type={part.type}\n />\n <ToolContent>\n <ToolInput input={part.input} />\n <ToolOutput\n output={\n <Response className=\"break-all\">\n {typeof part.output === 'string'\n ? part.output\n : JSON.stringify(part.output, null, 2)}\n </Response>\n }\n errorText={part.errorText}\n />\n </ToolContent>\n </Tool>\n );\n}\nexport function DynamicToolDebug({ part }: { part: DynamicToolUIPart }) {\n return (\n <Tool data-copy-exclude=\"assistant-snapshot\">\n <ToolHeader\n title={`Executing ${part.toolName}`}\n state={part.state}\n\n type={part.type as 'tool-dynamic'}\n />\n <ToolContent>\n <ToolInput input={part.input} />\n <ToolOutput\n output={\n <Response className=\"break-all\">\n {typeof part.output === 'string'\n ? part.output\n : JSON.stringify(part.output, null, 2)}\n </Response>\n }\n errorText={part.errorText}\n />\n </ToolContent>\n </Tool>\n );\n}\n","import { Loader2, type LucideIcon } from 'lucide-react';\nimport { useEffect, useState } from 'react';\n\nimport {\n Button,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cn,\n} from '@deepagents/react-shadcn';\n\ninterface TheButtonProps extends React.ComponentProps<typeof Button> {\n /**\n * Shows a loading spinner after the delay period.\n * Disables the button while loading.\n */\n loading?: boolean;\n /**\n * Icon to display before the button text.\n * Can be a React node or a Lucide icon component.\n */\n icon?: React.ReactNode | LucideIcon;\n /**\n * Delay in milliseconds before showing the loading spinner.\n * @default 300\n */\n delay?: number;\n /**\n * Tooltip text shown on hover. When provided with `size=\"icon\"`,\n * creates an icon-only button with tooltip.\n */\n tooltip?: string;\n}\n\n// --- Internal Components ---\n\nfunction useDelayedLoading(loading: boolean | undefined, delay: number) {\n const isLoading = !!loading;\n const [delayPassed, setDelayPassed] = useState(false);\n\n useEffect(() => {\n if (!isLoading) {\n return;\n }\n\n const timerId = setTimeout(() => {\n setDelayPassed(true);\n }, delay);\n\n return () => {\n clearTimeout(timerId);\n queueMicrotask(() => setDelayPassed(false));\n };\n }, [isLoading, delay]);\n\n return isLoading && delayPassed;\n}\n\nfunction isComponent(\n value: unknown,\n): value is React.ComponentType<{ className?: string }> {\n if (typeof value === 'function') return true;\n return (\n typeof value === 'object' &&\n value !== null &&\n '$$typeof' in value &&\n typeof (value as Record<string, unknown>).render === 'function'\n );\n}\n\nfunction IconRenderer({ icon }: { icon: React.ReactNode | LucideIcon }) {\n if (isComponent(icon)) {\n const Icon = icon;\n return <Icon className=\"size-4\" />;\n }\n // Not a useless fragment: `isComponent` takes `unknown` and narrows only its\n // positive branch, so `icon` is still `ReactNode | LucideIcon` here and\n // `LucideIcon` is not assignable to `ReactNode`. The fragment is what makes\n // this an Element. Returning `icon` bare fails with TS2786 at both call sites.\n // eslint-disable-next-line react/jsx-no-useless-fragment -- carries the type, see above\n return <>{icon}</>;\n}\n\nfunction LoadingSpinner() {\n return <Loader2 className=\"size-4 animate-spin\" />;\n}\n\nfunction IconButtonContent({\n icon,\n showSpinner,\n}: {\n icon?: React.ReactNode | LucideIcon;\n showSpinner: boolean;\n}) {\n return (\n <div className=\"relative size-4 overflow-hidden\">\n {icon && (\n <div\n className={cn(\n 'absolute inset-0 flex items-center justify-center transition-all duration-300 ease-in-out',\n showSpinner\n ? '-translate-x-full opacity-0'\n : 'translate-x-0 opacity-100',\n )}\n >\n <IconRenderer icon={icon} />\n </div>\n )}\n <div\n className={cn(\n 'absolute inset-0 transition-all duration-300 ease-in-out',\n showSpinner\n ? 'translate-x-0 opacity-100'\n : 'translate-x-full opacity-0',\n )}\n >\n <LoadingSpinner />\n </div>\n </div>\n );\n}\n\nfunction TextButtonContent({\n icon,\n showSpinner,\n children,\n}: {\n icon?: React.ReactNode | LucideIcon;\n showSpinner: boolean;\n children: React.ReactNode;\n}) {\n return (\n <>\n {icon && (\n <div\n className={cn(\n 'overflow-hidden transition-all duration-300 ease-in-out',\n showSpinner ? 'w-0 opacity-0' : 'w-4 opacity-100',\n )}\n >\n <IconRenderer icon={icon} />\n </div>\n )}\n <div\n className={cn(\n 'overflow-hidden transition-all duration-300 ease-in-out',\n showSpinner ? 'w-4 opacity-100' : '-ms-2 w-0 opacity-0',\n icon ? '-ms-2' : '',\n )}\n >\n <LoadingSpinner />\n </div>\n {children}\n </>\n );\n}\n\nfunction WithTooltip({\n tooltip,\n children,\n}: {\n tooltip?: string;\n children: React.ReactElement;\n}) {\n if (!tooltip) {\n return children;\n }\n\n return (\n <Tooltip>\n <TooltipTrigger render={children} />\n <TooltipContent>{tooltip}</TooltipContent>\n </Tooltip>\n );\n}\n\n/**\n * A versatile button component with loading state and tooltip support.\n *\n * Supports all standard Button variants and sizes from shadcn/ui,\n * plus additional features for loading states and icon-only buttons.\n *\n * @example\n * // Basic button\n * <TheButton>Click me</TheButton>\n *\n * @example\n * // Primary button with loading state\n * <TheButton loading={isSubmitting}>\n * Submit\n * </TheButton>\n *\n * @example\n * // Button with icon\n * <TheButton icon={<Save className=\"size-4\" />}>\n * Save Changes\n * </TheButton>\n *\n * @example\n * // Using Lucide icon directly\n * <TheButton icon={Trash}>\n * Delete\n * </TheButton>\n *\n * @example\n * // Icon-only button with tooltip\n * <TheButton\n * size=\"icon\"\n * variant=\"outline\"\n * icon={Settings}\n * tooltip=\"Open settings\"\n * />\n *\n * @example\n * // Destructive variant\n * <TheButton variant=\"destructive\" icon={Trash}>\n * Delete Item\n * </TheButton>\n *\n * @example\n * // Ghost variant (for toolbars, menus)\n * <TheButton variant=\"ghost\" size=\"sm\">\n * Cancel\n * </TheButton>\n *\n * @example\n * // Secondary variant\n * <TheButton variant=\"secondary\">\n * Secondary Action\n * </TheButton>\n *\n * @example\n * // Link variant\n * <TheButton variant=\"link\">\n * Learn more\n * </TheButton>\n *\n * @example\n * // Outline variant with custom delay\n * <TheButton variant=\"outline\" loading={isPending} delay={500}>\n * Processing...\n * </TheButton>\n *\n * @example\n * // Small size\n * <TheButton size=\"sm\" icon={Plus}>\n * Add Item\n * </TheButton>\n *\n * @example\n * // Large size\n * <TheButton size=\"lg\">\n * Get Started\n * </TheButton>\n */\nexport function TheButton({\n loading,\n disabled,\n children,\n delay = 300,\n icon,\n tooltip,\n size,\n ...props\n}: TheButtonProps) {\n const showSpinner = useDelayedLoading(loading, delay);\n const isIconButton = size?.startsWith('icon');\n\n return (\n <WithTooltip tooltip={tooltip}>\n <Button\n disabled={disabled || loading}\n size={size}\n {...props}\n className={cn('cursor-pointer gap-2', props.className)}\n >\n {isIconButton ? (\n <IconButtonContent icon={icon} showSpinner={showSpinner} />\n ) : (\n <TextButtonContent icon={icon} showSpinner={showSpinner}>\n {children}\n </TextButtonContent>\n )}\n </Button>\n </WithTooltip>\n );\n}\n","export const COPY_EXCLUSION_ATTRIBUTE = 'data-copy-exclude';\n\nexport const COPY_EXCLUSION_MODES = {\n image: 'image',\n assistantSnapshot: 'assistant-snapshot',\n} as const;\n\nexport type CopyExclusionMode =\n (typeof COPY_EXCLUSION_MODES)[keyof typeof COPY_EXCLUSION_MODES];\n\ntype AttributeReader = {\n getAttribute(name: string): string | null;\n};\n\ntype ClipboardLike = {\n write?: unknown;\n writeText?: unknown;\n} | null;\n\nexport type CopyToClipboardStrategy = 'image' | 'text' | 'none';\n\nfunction isAttributeReader(value: unknown): value is AttributeReader {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'getAttribute' in value &&\n typeof value.getAttribute === 'function'\n );\n}\n\nexport function hasCopyExclusion(\n node: unknown,\n mode: CopyExclusionMode,\n): boolean {\n if (!isAttributeReader(node)) {\n return false;\n }\n\n const attributeValue = node.getAttribute(COPY_EXCLUSION_ATTRIBUTE);\n if (!attributeValue) {\n return false;\n }\n\n return attributeValue.split(/\\s+/).includes(mode);\n}\n\nexport function shouldIncludeInCopyImage(\n node: unknown,\n mode: CopyExclusionMode,\n): boolean {\n return !hasCopyExclusion(node, mode);\n}\n\nexport function resolveCopyToClipboardStrategy({\n clipboard,\n ClipboardItem,\n}: {\n clipboard?: ClipboardLike;\n ClipboardItem?: unknown;\n}): CopyToClipboardStrategy {\n if (\n typeof clipboard?.write === 'function' &&\n typeof ClipboardItem === 'function'\n ) {\n return 'image';\n }\n\n if (typeof clipboard?.writeText === 'function') {\n return 'text';\n }\n\n return 'none';\n}\n","import { createContext } from 'react';\n\n/**\n * True while a subtree renders into a static artifact (clipboard image, saved\n * PNG, printed PDF) rather than onto the interactive surface. Lives in its own\n * module so the portal that provides it and `useIsAssistantSnapshotRender` —\n * which stays exported from `assistant-snapshot.tsx` for its existing consumers\n * — can share it without importing each other.\n */\nexport const SnapshotRenderContext = createContext(false);\n","import type { ReactNode, RefObject } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { SnapshotRenderContext } from './snapshot-context.ts';\n\nexport function waitForNextPaint() {\n return new Promise<void>((resolve) => {\n requestAnimationFrame(() => resolve());\n });\n}\n\n/**\n * Renders `children` off-screen at a fixed width so a capture (image, PDF) does\n * not depend on the current window size.\n *\n * A portal keeps the React tree intact while moving only the DOM node, so the\n * snapshot copy shares the surrounding providers — params, SQL interpolation,\n * and the React Query cache. Widgets therefore hydrate from cache instead of\n * re-running their queries, and the artifact shows the same numbers as the\n * screen.\n */\nexport function SnapshotRenderPortal({\n contentRef,\n children,\n width = 1120,\n padding = 24,\n className = 'bg-background text-foreground flex flex-col gap-3',\n}: {\n contentRef: RefObject<HTMLDivElement | null>;\n children: ReactNode;\n width?: number;\n padding?: number;\n className?: string;\n}) {\n if (typeof document === 'undefined') {\n return null;\n }\n\n return createPortal(\n <div\n aria-hidden=\"true\"\n style={{\n position: 'fixed',\n top: 0,\n left: '-100000px',\n pointerEvents: 'none',\n zIndex: -1,\n }}\n >\n <SnapshotRenderContext value={true}>\n <div\n ref={contentRef}\n className={className}\n style={{ width, padding, boxSizing: 'border-box' }}\n >\n {children}\n </div>\n </SnapshotRenderContext>\n </div>,\n document.body,\n );\n}\n","import type { RefObject } from 'react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport {\n type CopyExclusionMode,\n resolveCopyToClipboardStrategy,\n shouldIncludeInCopyImage,\n} from './copy-image.ts';\n\ntype CopySuccessMode = 'image' | 'text';\n\nexport type CopyImageFeedback =\n | { kind: 'success'; mode: CopySuccessMode }\n | { kind: 'error'; message: string }\n | null;\n\nfunction resolveImageBackgroundColor(element: HTMLElement): string | undefined {\n const elementBackground = getComputedStyle(element).backgroundColor;\n if (elementBackground !== 'rgba(0, 0, 0, 0)') {\n return elementBackground;\n }\n\n const bodyBackground = getComputedStyle(document.body).backgroundColor;\n return bodyBackground === 'rgba(0, 0, 0, 0)' ? undefined : bodyBackground;\n}\n\nexport function useCopyElementAsImage({\n elementRef,\n excludeMode,\n fallbackText,\n}: {\n elementRef: RefObject<HTMLElement | null>;\n excludeMode: CopyExclusionMode;\n fallbackText?: string;\n}) {\n const [isCopying, setIsCopying] = useState(false);\n const [feedback, setFeedback] = useState<CopyImageFeedback>(null);\n const feedbackTimeoutRef = useRef<number | null>(null);\n\n const clearFeedbackTimeout = useCallback(() => {\n if (feedbackTimeoutRef.current === null) {\n return;\n }\n\n window.clearTimeout(feedbackTimeoutRef.current);\n feedbackTimeoutRef.current = null;\n }, []);\n\n const setTimedFeedback = useCallback(\n (nextFeedback: Exclude<CopyImageFeedback, null>) => {\n clearFeedbackTimeout();\n setFeedback(nextFeedback);\n feedbackTimeoutRef.current = window.setTimeout(() => {\n setFeedback(null);\n feedbackTimeoutRef.current = null;\n }, 3000);\n },\n [clearFeedbackTimeout],\n );\n\n useEffect(\n () => () => {\n clearFeedbackTimeout();\n },\n [clearFeedbackTimeout],\n );\n\n const copyText = useCallback(async () => {\n if (\n typeof navigator === 'undefined' ||\n typeof navigator.clipboard?.writeText !== 'function' ||\n !fallbackText ||\n fallbackText.trim().length === 0\n ) {\n return false;\n }\n\n await navigator.clipboard.writeText(fallbackText);\n setTimedFeedback({ kind: 'success', mode: 'text' });\n return true;\n }, [fallbackText, setTimedFeedback]);\n\n const copyImage = useCallback(async () => {\n if (!elementRef.current) {\n throw new Error('Nothing is ready to copy yet.');\n }\n\n const { toBlob } = await import('html-to-image');\n const blob = await toBlob(elementRef.current, {\n backgroundColor: resolveImageBackgroundColor(elementRef.current),\n pixelRatio: 2,\n filter: (node) => shouldIncludeInCopyImage(node, excludeMode),\n });\n\n if (!blob) {\n throw new Error('Unable to render the image for copying.');\n }\n\n await navigator.clipboard.write([\n new ClipboardItem({\n [blob.type]: blob,\n }),\n ]);\n\n setTimedFeedback({ kind: 'success', mode: 'image' });\n }, [elementRef, excludeMode, setTimedFeedback]);\n\n const copy = useCallback(async () => {\n setIsCopying(true);\n setFeedback(null);\n\n try {\n const strategy = resolveCopyToClipboardStrategy({\n clipboard:\n typeof navigator === 'undefined' ? undefined : navigator.clipboard,\n ClipboardItem:\n typeof window === 'undefined' ? undefined : window.ClipboardItem,\n });\n\n if (strategy === 'image') {\n try {\n await copyImage();\n return;\n } catch (error) {\n if (await copyText()) {\n return;\n }\n\n throw error;\n }\n }\n\n if (strategy === 'text' && (await copyText())) {\n return;\n }\n\n setTimedFeedback({\n kind: 'error',\n message:\n strategy === 'none'\n ? 'Clipboard access is not available here.'\n : 'Image copy is not supported in this browser.',\n });\n } catch {\n setTimedFeedback({\n kind: 'error',\n message: 'Copy failed. Please try again.',\n });\n } finally {\n setIsCopying(false);\n }\n }, [copyImage, copyText, setTimedFeedback]);\n\n return { copy, feedback, isCopying };\n}\n","import { type UIMessage, isTextUIPart } from 'ai';\nimport { Check, Copy } from 'lucide-react';\nimport {\n type ReactNode,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nimport { TheButton } from '../ui/TheButton.tsx';\nimport { COPY_EXCLUSION_MODES } from './copy-image.ts';\nimport { SnapshotRenderContext } from './snapshot-context.ts';\nimport { SnapshotRenderPortal, waitForNextPaint } from './snapshot-render.tsx';\nimport { useCopyElementAsImage } from './use-copy-element-as-image.ts';\n\nexport function extractAssistantRawText(message: UIMessage): string {\n return message.parts\n .filter(isTextUIPart)\n .map((part) => part.text)\n .join('\\n');\n}\n\nexport function useIsAssistantSnapshotRender() {\n return useContext(SnapshotRenderContext);\n}\n\nexport function AssistantSnapshot({\n message,\n renderContent,\n className,\n}: {\n message: UIMessage;\n renderContent: () => ReactNode;\n className?: string;\n}) {\n const snapshotRef = useRef<HTMLDivElement>(null);\n const [showSnapshot, setShowSnapshot] = useState(false);\n const fallbackText = useMemo(\n () => extractAssistantRawText(message),\n [message],\n );\n const { copy, feedback, isCopying } = useCopyElementAsImage({\n elementRef: snapshotRef,\n excludeMode: COPY_EXCLUSION_MODES.assistantSnapshot,\n fallbackText,\n });\n\n const handleCopy = useCallback(async () => {\n if (!showSnapshot) {\n setShowSnapshot(true);\n }\n\n await waitForNextPaint();\n await copy();\n }, [copy, showSnapshot]);\n\n let label = 'Copy snapshot';\n if (isCopying) {\n label = 'Copying snapshot';\n } else if (feedback?.kind === 'success') {\n label = feedback.mode === 'image' ? 'Copied snapshot' : 'Copied text';\n }\n\n return (\n <>\n {showSnapshot && (\n <SnapshotRenderPortal contentRef={snapshotRef}>\n {renderContent()}\n </SnapshotRenderPortal>\n )}\n <div\n data-copy-exclude=\"assistant-snapshot\"\n className={cn('flex items-center gap-2', className)}\n >\n {feedback?.kind === 'error' && (\n <span className=\"text-destructive text-xs\">{feedback.message}</span>\n )}\n <TheButton\n type=\"button\"\n size=\"icon-sm\"\n variant=\"ghost\"\n loading={isCopying}\n onClick={handleCopy}\n aria-label={label}\n icon={\n feedback?.kind === 'success' ? (\n <Check className=\"size-4\" />\n ) : (\n <Copy className=\"size-4\" />\n )\n }\n />\n </div>\n </>\n );\n}\n","import type { ToolUIPart, UIMessage } from 'ai';\nimport { isToolUIPart } from 'ai';\n\nimport type { ComponentRegistry } from './registry.ts';\n\n/**\n * A subagent call is identified by the `toolMetadata` the backend attaches to\n * the tool definition, never by tool name — so every tool built by the subagent\n * factory renders as a chip without the UI enumerating them.\n */\nexport function isSubagentPart(part: UIMessage['parts'][number]) {\n return isToolUIPart(part) && part.toolMetadata?.kind === 'subagent';\n}\n\nexport function subagentDisplayName(part: ToolUIPart) {\n const name = part.toolMetadata?.displayName;\n return typeof name === 'string' ? name : 'Subagent';\n}\n\nexport function resolveToolEntry(\n part: Pick<UIMessage['parts'][number], 'type'>,\n registry: ComponentRegistry | undefined,\n) {\n const toolKey = part.type.replace('tool-', '');\n const toolEntry = registry?.[toolKey];\n return { toolKey, toolEntry };\n}\n\nexport function isActiveClientInputTool(\n toolEntry: ComponentRegistry[string] | undefined,\n state: ToolUIPart['state'] | undefined,\n): boolean {\n return (\n toolEntry?.static === false &&\n !!toolEntry?.requiresUserInput &&\n state === 'input-available'\n );\n}\n","import React from 'react';\n\nexport function MarkdownParagraph({\n children,\n}: {\n children?: React.ReactNode;\n}) {\n const childArray = React.Children.toArray(children);\n\n const hasCustomElement = childArray.some(\n (child) => React.isValidElement(child) && typeof child.type !== 'string',\n );\n\n if (!hasCustomElement) {\n return <p>{children}</p>;\n }\n\n const isAllCustom =\n childArray.length > 0 &&\n childArray.every(\n (child) => React.isValidElement(child) && typeof child.type !== 'string',\n );\n\n if (isAllCustom) {\n return children;\n }\n\n return <div>{children}</div>;\n}\n","import { useMemo } from 'react';\n\nimport { assertNoReservedAttributes } from '@deepagents/elements';\n\nimport { MarkdownParagraph } from '../chat/markdown-paragraph.tsx';\nimport { Response, type ResponseProps } from '../elements/Response.tsx';\nimport type { GenAIInteractiveElement } from '../elements/interactive-element.ts';\n\nexport type { GenAIInteractiveElement };\n\ntype InteractiveResponseProps = Omit<\n ResponseProps,\n 'components' | 'allowedTags'\n> & {\n elements?: GenAIInteractiveElement[];\n};\n\nfunction buildStreamdownRegistry(entries: GenAIInteractiveElement[]) {\n const components: Record<string, GenAIInteractiveElement['component']> = {\n p: MarkdownParagraph,\n };\n const allowedTags: Record<string, string[]> = {};\n for (const entry of entries) {\n assertNoReservedAttributes(entry);\n components[entry.name] = entry.component;\n allowedTags[entry.name] = entry.allowedAttributes;\n }\n return { components, allowedTags };\n}\n\nexport function InteractiveResponse({\n elements,\n ...props\n}: InteractiveResponseProps) {\n const registry = useMemo(\n () => buildStreamdownRegistry(elements ?? []),\n [elements],\n );\n return <Response {...registry} {...props} />;\n}\n","import { type ToolUIPart } from 'ai';\nimport { Loader } from 'lucide-react';\n\nimport { Button } from '@deepagents/react-shadcn';\n\nimport {\n useAgent,\n useAgentMessages,\n} from '../chat/agent-context.tsx';\nimport { ToolOutput } from '../elements/Tool.tsx';\n\nfunction ToolApproval({ part }: { part: ToolUIPart }) {\n const { addToolApprovalResponse } = useAgentMessages();\n if (part.state !== 'approval-requested') return null;\n\n const name = part.title ?? part.type.slice('tool-'.length);\n\n return (\n <div\n aria-label={`${name} approval`}\n className=\"border-border bg-muted/30 space-y-3 rounded-lg border p-3\"\n data-copy-exclude=\"assistant-snapshot\"\n role=\"group\"\n >\n <div className=\"space-y-1\">\n <p className=\"text-sm font-medium\">{name}</p>\n {part.approval.requestReason && (\n <p className=\"text-muted-foreground text-sm\">\n {part.approval.requestReason}\n </p>\n )}\n </div>\n <div className=\"flex justify-end gap-2\">\n <Button\n type=\"button\"\n variant=\"destructive\"\n onClick={() =>\n void addToolApprovalResponse({\n id: part.approval.id,\n approved: false,\n })\n }\n >\n Deny\n </Button>\n <Button\n type=\"button\"\n onClick={() =>\n void addToolApprovalResponse({\n id: part.approval.id,\n approved: true,\n })\n }\n >\n Approve\n </Button>\n </div>\n </div>\n );\n}\n\nexport function RenderPart({ part }: { part: ToolUIPart }) {\n const { registry } = useAgent();\n\n if (part.input === undefined) {\n return part.state === 'output-error' ? (\n <ToolOutput output={part.output} errorText={part.errorText} />\n ) : (\n <Loader className=\"size-4 animate-spin\" />\n );\n }\n\n const approval = <ToolApproval part={part} />;\n\n if (!registry) return approval;\n\n const customRenderer = registry[part.type.replace('tool-', '')];\n if (customRenderer) {\n const Renderer = customRenderer.component;\n return (\n <div className=\"space-y-2\">\n {registry.progress && <registry.progress.component part={part} />}\n <Renderer part={part} />\n {approval}\n </div>\n );\n } else {\n return (\n <>\n {registry.progress && <registry.progress.component part={part} />}\n {approval}\n </>\n );\n }\n}\n","import type { ToolUIPart } from 'ai';\n\nimport { Attachment, cn } from '@deepagents/react-shadcn';\n\nimport {\n type GenAIInteractiveElement,\n InteractiveResponse,\n} from '../components/InteractiveResponse.tsx';\nimport { ToolDebug } from '../components/tool-debug.tsx';\nimport { useIsAssistantSnapshotRender } from '../copy/assistant-snapshot.tsx';\nimport { RenderPart } from '../renderers/render-part.tsx';\nimport { useAgent, useAgentStatus } from './agent-context.tsx';\n\nexport const SLIDE_UP_ANIMATED = { animation: 'slideUp' } as const;\n\ntype MessageAttachmentPartProps = {\n filename?: string;\n mediaType: string;\n url: string;\n};\n\nfunction ImageFilePart({ filename, url }: { filename?: string; url: string }) {\n return (\n <img\n src={url}\n alt={filename ?? 'Attached image'}\n className=\"max-h-64 rounded-md border object-contain\"\n />\n );\n}\n\nfunction FileAttachmentPart({\n filename,\n mediaType,\n url,\n}: {\n filename?: string;\n mediaType: string;\n url?: string;\n}) {\n const name = filename || 'Untitled';\n const player = url?.startsWith('data:') ? null : url &&\n mediaType.startsWith('video/') ? (\n <video\n controls\n playsInline\n preload=\"metadata\"\n src={url}\n aria-label={name}\n className=\"max-h-96 w-full rounded-md bg-black\"\n />\n ) : url && mediaType.startsWith('audio/') ? (\n <audio\n controls\n preload=\"metadata\"\n src={url}\n aria-label={name}\n className=\"w-full\"\n />\n ) : null;\n return (\n <Attachment className=\"bg-muted/30 block w-full rounded-md p-3 text-sm text-inherit\">\n {player}\n <div className={player ? 'mt-2' : undefined}>\n <strong>File:</strong> {name} ({mediaType})\n {url ? (\n <>\n {' '}\n <a href={url} download={filename} className=\"underline\">\n Download\n </a>\n </>\n ) : null}\n </div>\n </Attachment>\n );\n}\n\nexport function MessageAttachmentPart({\n filename,\n mediaType,\n url,\n}: MessageAttachmentPartProps) {\n return mediaType.startsWith('image/') ? (\n <ImageFilePart filename={filename} url={url} />\n ) : (\n <FileAttachmentPart filename={filename} mediaType={mediaType} url={url} />\n );\n}\n\nexport function AssistantTextPart({\n text,\n elements,\n className,\n}: {\n text: string;\n elements?: GenAIInteractiveElement[];\n className?: string;\n}) {\n const { status } = useAgentStatus();\n const isSnapshotRender = useIsAssistantSnapshotRender();\n\n return (\n <div className={cn('text-sm', className)}>\n <InteractiveResponse\n elements={elements}\n animated={SLIDE_UP_ANIMATED}\n isAnimating={!isSnapshotRender && status === 'streaming'}\n >\n {text}\n </InteractiveResponse>\n </div>\n );\n}\n\nexport function ToolPartContent({ part }: { part: ToolUIPart }) {\n const showDebug = useShowDebug();\n return (\n <>\n {showDebug && <ToolDebug part={part} />}\n <RenderPart part={part} />\n </>\n );\n}\n\nexport function useShowDebug(): boolean {\n const { debugMode } = useAgent();\n const isSnapshotRender = useIsAssistantSnapshotRender();\n return !!debugMode && !isSnapshotRender;\n}\n","import type { ToolUIPart } from 'ai';\nimport type { ReactNode } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nimport { useIsAssistantSnapshotRender } from '../../copy/assistant-snapshot.tsx';\nimport type { ToolLabel } from '../../tools/registry.ts';\n\nfunction isToolRunning(state?: ToolUIPart['state']) {\n return !!state && state !== 'output-available';\n}\n\nfunction useToolActionsVisible({\n label,\n part,\n state,\n}: {\n label: ToolLabel;\n part?: ToolUIPart;\n state?: ToolUIPart['state'];\n}) {\n const isSnapshotRender = useIsAssistantSnapshotRender();\n return (\n !isSnapshotRender && !!label.actions && !!part && !isToolRunning(state)\n );\n}\n\nexport function ToolLabelInline({\n label,\n part,\n}: {\n label: ToolLabel;\n part: ToolUIPart;\n}) {\n const Icon = label.icon;\n const Actions = label.actions;\n const showActions = useToolActionsVisible({ label, part, state: part.state });\n\n return (\n <div className=\"text-muted-foreground flex items-center justify-between gap-1.5 text-xs\">\n <div className=\"flex items-center gap-1.5\">\n {Icon && (\n <Icon\n className={cn(\n 'size-3.5',\n label.isError ? 'text-destructive' : 'text-muted-foreground',\n )}\n />\n )}\n <span className=\"font-mono\">{label.name}</span>\n </div>\n {showActions && Actions && <Actions part={part} />}\n </div>\n );\n}\n\n/**\n * One `name: \"value\"` pair inside a tool signature. Hosts render their own\n * leading args as children of Segment.ToolDisclosure — a label builder is a\n * pure function, so anything needing a hook (resolving a data-source id to a\n * name) can only be assembled here, in render.\n */\nexport function ToolArg({\n name,\n value,\n}: {\n name: string;\n value: string | undefined;\n}) {\n return (\n <span data-slot=\"tool-arg\">\n {name}: "{value}"\n </span>\n );\n}\n\nexport function ToolLabelBlock({\n label,\n state,\n part,\n children,\n}: {\n label: ToolLabel;\n state?: ToolUIPart['state'];\n part?: ToolUIPart;\n children?: ReactNode;\n}) {\n const Actions = label.actions;\n const showActions = useToolActionsVisible({ label, part, state });\n\n return (\n <span className=\"mb-2 flex flex-col gap-1\">\n <span className=\"flex items-start justify-between gap-2\">\n {/* Separating args in CSS rather than by index lets a host arg render\n null without leaving a stray comma behind. */}\n <span className=\"text-muted-foreground min-w-0 truncate font-mono text-xs [&>[data-slot=tool-arg]+[data-slot=tool-arg]]:before:mr-1 [&>[data-slot=tool-arg]+[data-slot=tool-arg]]:before:content-[',']\">\n {label.name}({children}\n {label.args\n ? Object.entries(label.args).map(([key, value]) => (\n <ToolArg key={key} name={key} value={value} />\n ))\n : '...'}\n )\n </span>\n {showActions && Actions && part && (\n <span className=\"shrink-0\">\n <Actions part={part} />\n </span>\n )}\n </span>\n {label.detail && (\n <span\n className={cn(\n 'line-clamp-3 text-start font-mono text-[10px] leading-relaxed whitespace-pre-wrap',\n label.isError ? 'text-destructive/80' : 'text-muted-foreground',\n )}\n >\n {label.detail}\n </span>\n )}\n </span>\n );\n}\n","import type { ToolUIPart, UIMessage } from 'ai';\nimport { isStaticToolUIPart } from 'ai';\nimport { type ReactNode, createContext, use, useMemo } from 'react';\nimport { Fragment } from 'react/jsx-runtime';\n\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from '@deepagents/react-shadcn';\n\nimport { CitationPill } from '../../../components/CitationPill.tsx';\nimport { DynamicToolDebug } from '../../../components/tool-debug.tsx';\nimport { useIsAssistantSnapshotRender } from '../../../copy/assistant-snapshot.tsx';\nimport { Response } from '../../../elements/Response.tsx';\nimport {\n isActiveClientInputTool,\n resolveToolEntry,\n} from '../../../tools/helpers.ts';\nimport type { ToolLabel } from '../../../tools/registry.ts';\nimport { useAgent, useAgentMessages } from '../../agent-context.tsx';\nimport {\n citationIndexOf,\n extractSourcesFromMessages,\n} from '../../citations.ts';\nimport {\n AssistantTextPart,\n MessageAttachmentPart,\n SLIDE_UP_ANIMATED,\n ToolPartContent,\n useShowDebug,\n} from '../../message-parts.tsx';\nimport { isToolAborted } from '../../tool-abort.ts';\nimport type { MessagesContextValue } from '../messages-context.ts';\nimport { useMessagesStatus } from '../messages-context.ts';\nimport { ToolLabelBlock } from '../tool-label.tsx';\nimport type { MessageTrajectorySegment } from '../trajectory-segments.ts';\n\nexport function isCommentaryTextPart(part: UIMessage['parts'][number]) {\n return (\n part.type === 'text' &&\n part.providerMetadata?.openai?.phase === 'commentary'\n );\n}\n\nfunction SegmentText({\n segment,\n elements,\n className,\n}: {\n segment: Extract<MessageTrajectorySegment, { kind: 'text' }>;\n elements?: MessagesContextValue['elements'];\n className?: string;\n}) {\n return (\n <Fragment>\n {segment.parts.map(({ part, idx }) => {\n if (part.type !== 'text') return null;\n return (\n <AssistantTextPart\n key={`${idx}-text`}\n text={part.text}\n elements={elements}\n className={className}\n />\n );\n })}\n </Fragment>\n );\n}\n\nfunction SegmentFile({\n segment,\n}: {\n segment: Extract<MessageTrajectorySegment, { kind: 'file' }>;\n}) {\n const { part } = segment;\n if (part.type !== 'file') return null;\n return (\n <MessageAttachmentPart\n filename={part.filename}\n mediaType={part.mediaType}\n url={part.url}\n />\n );\n}\n\nfunction SegmentSource({\n segment,\n}: {\n segment: Extract<MessageTrajectorySegment, { kind: 'source' }>;\n}) {\n const { messages } = useAgentMessages();\n const sources = useMemo(\n () => extractSourcesFromMessages(messages),\n [messages],\n );\n\n return (\n <span>\n {segment.parts.map(({ part, idx }) => {\n if (part.type !== 'source-url') return null;\n const index = citationIndexOf(sources, part.url);\n if (index === null) return null;\n return (\n <CitationPill\n key={`source-${idx}`}\n source={{ url: part.url, title: part.title }}\n index={index}\n />\n );\n })}\n </span>\n );\n}\n\nfunction SegmentReasoning({\n segment,\n}: {\n segment: Extract<MessageTrajectorySegment, { kind: 'reasoning' }>;\n}) {\n const status = useMessagesStatus();\n const isSnapshotRender = useIsAssistantSnapshotRender();\n if (isSnapshotRender) return null;\n const { part } = segment;\n if (part.type !== 'reasoning') return null;\n\n return (\n <div className=\"text-muted-foreground text-xs\">\n <Response\n animated={SLIDE_UP_ANIMATED}\n isAnimating={status === 'streaming'}\n >\n {part.text}\n </Response>\n </div>\n );\n}\n\nfunction SegmentDynamicTool({\n segment,\n}: {\n segment: Extract<MessageTrajectorySegment, { kind: 'dynamic-tool' }>;\n}) {\n const showDebug = useShowDebug();\n if (!showDebug) return null;\n const { part } = segment;\n if (part.type !== 'dynamic-tool') return null;\n return <DynamicToolDebug part={part} />;\n}\n\ntype ToolSegmentContextValue = {\n part: ToolUIPart;\n label: ToolLabel | undefined;\n aborted: boolean;\n activeClientInput: boolean;\n defaultOpen: boolean;\n};\n\nconst ToolSegmentContext = createContext<ToolSegmentContextValue | null>(null);\n\n/**\n * Marker-relevant subset for arrangement wrappers (Timeline.Item) that sit\n * inside Segment.Tool and need label/state without the strict-context throw.\n */\nexport const ToolSegmentMarkerContext = createContext<{\n label: ToolLabel | undefined;\n state: ToolUIPart['state'];\n aborted: boolean;\n} | null>(null);\n\nexport function useToolSegment() {\n const context = use(ToolSegmentContext);\n if (!context) {\n throw new Error('Segment.Tool* parts must be rendered within Segment.Tool');\n }\n return context;\n}\n\nfunction SegmentTool({\n segment,\n children,\n}: {\n segment: Extract<MessageTrajectorySegment, { kind: 'tool' }>;\n children?: ReactNode;\n}) {\n const agent = useAgent();\n const status = useMessagesStatus();\n const { toolEntry } = resolveToolEntry(segment.part, agent.registry);\n const { part: toolPart } = segment;\n if (!isStaticToolUIPart(toolPart)) return null;\n const activeClientInput = isActiveClientInputTool(toolEntry, toolPart.state);\n const aborted = !activeClientInput && isToolAborted(toolPart, status);\n const baseLabel = toolEntry?.label?.(toolPart);\n const label = aborted\n ? {\n ...(baseLabel ?? { name: toolPart.type.replace('tool-', '') }),\n isError: true,\n detail: 'Cancelled by user',\n }\n : baseLabel;\n const defaultOpen =\n toolEntry?.static === false &&\n !!toolEntry?.requiresUserInput &&\n !activeClientInput;\n\n return (\n <ToolSegmentContext\n value={{ part: toolPart, label, aborted, activeClientInput, defaultOpen }}\n >\n <ToolSegmentMarkerContext\n value={{ label, state: toolPart.state, aborted }}\n >\n {children ?? <SegmentToolDisclosure />}\n </ToolSegmentMarkerContext>\n </ToolSegmentContext>\n );\n}\n\nfunction SegmentToolContent() {\n const { part, activeClientInput } = useToolSegment();\n if (activeClientInput) return null;\n return <ToolPartContent part={part} />;\n}\n\nfunction SegmentToolDisclosure({ children }: { children?: ReactNode }) {\n const { part, label, defaultOpen } = useToolSegment();\n if (!label) {\n return (\n <div className=\"min-w-0 flex-1\">\n <SegmentToolContent />\n </div>\n );\n }\n\n return (\n <Collapsible\n defaultOpen={defaultOpen}\n className=\"flex min-w-0 flex-1 flex-col\"\n >\n <CollapsibleTrigger className=\"cursor-pointer\">\n <ToolLabelBlock label={label} state={part.state} part={part}>\n {children}\n </ToolLabelBlock>\n </CollapsibleTrigger>\n <CollapsibleContent className=\"mb-2\">\n <SegmentToolContent />\n </CollapsibleContent>\n </Collapsible>\n );\n}\n\nexport const Segment = {\n Text: SegmentText,\n File: SegmentFile,\n Source: SegmentSource,\n Reasoning: SegmentReasoning,\n DynamicTool: SegmentDynamicTool,\n Tool: SegmentTool,\n ToolDisclosure: SegmentToolDisclosure,\n ToolContent: SegmentToolContent,\n};\n","import type { UIMessage } from 'ai';\nimport { isStaticToolUIPart } from 'ai';\n\nexport type TimelineNodeKind = 'tool' | 'dynamic-tool' | 'reasoning';\n\nexport type MessageTrajectorySegment =\n | { kind: 'text'; parts: { part: UIMessage['parts'][number]; idx: number }[] }\n | { kind: 'file'; part: UIMessage['parts'][number]; idx: number }\n | { kind: 'tool'; part: UIMessage['parts'][number]; idx: number }\n | { kind: 'dynamic-tool'; part: UIMessage['parts'][number]; idx: number }\n | { kind: 'reasoning'; part: UIMessage['parts'][number]; idx: number }\n | {\n kind: 'source';\n parts: { part: UIMessage['parts'][number]; idx: number }[];\n };\n\nexport function classifyPart(\n part: UIMessage['parts'][number],\n): TimelineNodeKind | null {\n if (isStaticToolUIPart(part)) return 'tool';\n if (part.type === 'dynamic-tool') return 'dynamic-tool';\n if (part.type === 'reasoning' && 'text' in part && part.text) {\n return 'reasoning';\n }\n return null;\n}\n\nexport function isVisibleTrajectoryNode(\n segment: MessageTrajectorySegment,\n debugMode: boolean | undefined,\n): boolean {\n if (segment.kind === 'text' || segment.kind === 'file') return false;\n if (segment.kind === 'source') return false;\n if (segment.kind === 'reasoning') return true;\n if (segment.kind === 'dynamic-tool') {\n return !!debugMode;\n }\n return true;\n}\n\nexport function shouldShowConnector(\n segments: MessageTrajectorySegment[],\n segmentIndex: number,\n debugMode: boolean | undefined,\n): boolean {\n const next = segments[segmentIndex + 1];\n return !!next && isVisibleTrajectoryNode(next, debugMode);\n}\n\nexport function buildMessageTrajectorySegments(\n parts: UIMessage['parts'],\n): MessageTrajectorySegment[] {\n const segments: MessageTrajectorySegment[] = [];\n\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n const nodeKind = classifyPart(part);\n\n if (nodeKind) {\n segments.push({ kind: nodeKind, part, idx: i });\n } else if (part.type === 'text') {\n const last = segments[segments.length - 1];\n if (last && last.kind === 'text') {\n last.parts.push({ part, idx: i });\n } else {\n segments.push({ kind: 'text', parts: [{ part, idx: i }] });\n }\n } else if (part.type === 'file') {\n segments.push({ kind: 'file', part, idx: i });\n } else if (part.type === 'source-url') {\n const last = segments[segments.length - 1];\n if (last && last.kind === 'source') {\n last.parts.push({ part, idx: i });\n } else {\n segments.push({ kind: 'source', parts: [{ part, idx: i }] });\n }\n }\n }\n\n return segments;\n}\n\nexport function getSegmentKey(\n segment: MessageTrajectorySegment,\n fallback: number,\n): number {\n if (segment.kind === 'text' || segment.kind === 'source') {\n return segment.parts[0]?.idx ?? fallback;\n }\n return segment.idx;\n}\n","import type { UIMessage } from 'ai';\nimport { isToolUIPart } from 'ai';\nimport { memo, useMemo } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nimport { Segment } from './segments/index.tsx';\nimport {\n buildMessageTrajectorySegments,\n getSegmentKey,\n} from './trajectory-segments.ts';\nimport type { MessageTrajectorySegment } from './trajectory-segments.ts';\n\nfunction getSegmentCacheKey(segment: MessageTrajectorySegment, index: number) {\n const prefix = `${getSegmentKey(segment, index)}:${segment.kind}`;\n\n if (segment.kind === 'text') {\n const text = segment.parts\n .map(({ part }) => (part.type === 'text' ? part.text : ''))\n .join('\\u001f');\n return `${prefix}:${text}`;\n }\n\n if (segment.kind === 'reasoning' && segment.part.type === 'reasoning') {\n return `${prefix}:${segment.part.text}`;\n }\n\n if (\n (segment.kind === 'tool' || segment.kind === 'dynamic-tool') &&\n isToolUIPart(segment.part)\n ) {\n const error =\n segment.part.state === 'output-error' ? segment.part.errorText : '';\n const preliminary =\n 'preliminary' in segment.part && segment.part.preliminary === true;\n return `${prefix}:${segment.part.toolCallId}:${segment.part.state}:${preliminary}:${error}`;\n }\n\n if (segment.kind === 'file' && segment.part.type === 'file') {\n return `${prefix}:${segment.part.url}:${segment.part.mediaType}:${segment.part.filename ?? ''}`;\n }\n\n return prefix;\n}\n\nfunction isCompletedSegment(\n segment: MessageTrajectorySegment,\n index: number,\n segmentCount: number,\n) {\n if (segment.kind === 'file' || segment.kind === 'source') return true;\n\n if (segment.kind === 'tool' || segment.kind === 'dynamic-tool') {\n if (!isToolUIPart(segment.part)) return false;\n if (segment.part.state === 'output-error') return true;\n return (\n segment.part.state === 'output-available' &&\n segment.part.preliminary !== true\n );\n }\n\n // Text and reasoning parts can still grow while they are the tail. Once a\n // later segment exists, the AI SDK stream has closed them and they are safe\n // to preserve across the cumulative snapshots sent by subagents.\n return index < segmentCount - 1;\n}\n\ntype NestedTrajectorySegmentProps = {\n segment: MessageTrajectorySegment;\n cacheKey: string;\n complete: boolean;\n};\n\nconst NestedTrajectorySegment = memo(function NestedTrajectorySegment({\n segment,\n}: NestedTrajectorySegmentProps) {\n if (segment.kind === 'tool') {\n return <Segment.Tool segment={segment} />;\n }\n if (segment.kind === 'reasoning') {\n return <Segment.Reasoning segment={segment} />;\n }\n if (segment.kind === 'text') {\n return <Segment.Text segment={segment} className=\"text-xs\" />;\n }\n if (segment.kind === 'file') {\n return <Segment.File segment={segment} />;\n }\n return null;\n}, areNestedTrajectorySegmentPropsEqual);\n\nfunction areNestedTrajectorySegmentPropsEqual(\n previous: NestedTrajectorySegmentProps,\n next: NestedTrajectorySegmentProps,\n) {\n return (\n previous.complete && next.complete && previous.cacheKey === next.cacheKey\n );\n}\n\n/**\n * Replays a trajectory that is not the host message's own — currently a\n * subagent's run, captured into its tool output. It reuses the same Segment\n * primitives as the top-level trajectory, so the subagent's tool calls resolve\n * against the host registry and render with their real components (a `db_query`\n * step shows its table, not a stringified blob).\n *\n * Segments read the surrounding agent/messages contexts, so this only renders\n * inside a message.\n */\nexport function NestedTrajectory({\n parts,\n className,\n}: {\n parts: UIMessage['parts'];\n className?: string;\n}) {\n const segments = useMemo(\n () => buildMessageTrajectorySegments(parts),\n [parts],\n );\n\n if (segments.length === 0) return null;\n\n return (\n <div className={cn('flex min-w-0 flex-col gap-2', className)}>\n {segments.map((segment, index) => {\n const key = `${getSegmentKey(segment, index)}-${segment.kind}`;\n return (\n <NestedTrajectorySegment\n key={key}\n segment={segment}\n cacheKey={getSegmentCacheKey(segment, index)}\n complete={isCompletedSegment(segment, index, segments.length)}\n />\n );\n })}\n </div>\n );\n}\n","import type { HTMLMotionProps } from 'motion/react';\nimport { motion } from 'motion/react';\nimport * as React from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\ninterface AgentActionButtonProps extends Omit<\n HTMLMotionProps<'button'>,\n 'children'\n> {\n icon: React.ReactNode;\n}\n\nexport function ChatActionButton({\n icon,\n className,\n ...props\n}: AgentActionButtonProps) {\n return (\n <motion.button\n type=\"button\"\n whileTap={{ scale: 0.94 }}\n className={cn(\n 'group text-muted-foreground hover:text-foreground relative rounded-lg p-2 transition-colors',\n className,\n )}\n {...props}\n >\n {icon}\n <span className=\"bg-primary/10 absolute inset-0 rounded-lg opacity-0 transition-opacity group-hover:opacity-100\" />\n </motion.button>\n );\n}\n","import { Braces, Check, Copy, RefreshCw } from 'lucide-react';\nimport { Children, type ReactNode } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nimport { ChatActionButton } from '../../../components/ChatAction.tsx';\nimport { extractAssistantRawText } from '../../../copy/assistant-snapshot.tsx';\nimport { useCopyFeedback } from '../../../ui/use-copy-feedback.ts';\nimport { useAgentMessages } from '../../agent-context.tsx';\nimport {\n useMessageItem,\n useMessagesContext,\n useMessagesStatus,\n} from '../messages-context.ts';\n\nfunction useMessageComplete() {\n const { index } = useMessageItem();\n const { messages } = useMessagesContext();\n const status = useMessagesStatus();\n const isLastMessage = index === messages.length - 1;\n const isBusy =\n status === 'submitted' || status === 'streaming' || status === 'error';\n return !(isLastMessage && isBusy);\n}\n\nexport function MessagesActions({\n className,\n children,\n}: {\n className?: string;\n children: ReactNode;\n}) {\n const complete = useMessageComplete();\n if (!complete || Children.toArray(children).length === 0) return null;\n\n return (\n <div\n data-copy-exclude=\"assistant-snapshot\"\n className={cn('mt-1 flex items-center gap-0.5', className)}\n >\n {children}\n </div>\n );\n}\n\nexport function CopyAssistantMessageAction({\n className,\n}: {\n className?: string;\n}) {\n const { message } = useMessageItem();\n const [copied, copy] = useCopyFeedback();\n\n return (\n <ChatActionButton\n aria-label={copied ? 'Copied' : 'Copy message'}\n className={cn('p-1.5', className)}\n onClick={() => copy(extractAssistantRawText(message))}\n icon={\n copied ? <Check className=\"size-3.5\" /> : <Copy className=\"size-3.5\" />\n }\n />\n );\n}\n\nexport function RegenerateAction({ className }: { className?: string }) {\n const { message } = useMessageItem();\n const { regenerate } = useAgentMessages();\n\n return (\n <ChatActionButton\n aria-label=\"Regenerate response\"\n className={cn('p-1.5', className)}\n onClick={() => regenerate({ messageId: message.id })}\n icon={<RefreshCw className=\"size-3.5\" />}\n />\n );\n}\n\nexport function CopyAssistantMessageJsonAction({\n className,\n}: {\n className?: string;\n}) {\n const { message } = useMessageItem();\n const [copied, copy] = useCopyFeedback();\n\n return (\n <ChatActionButton\n aria-label={copied ? 'Copied' : 'Copy debug JSON'}\n className={cn('p-1.5', className)}\n onClick={() => copy(JSON.stringify(message, null, 2))}\n icon={\n copied ? (\n <Check className=\"size-3.5\" />\n ) : (\n <Braces className=\"size-3.5\" />\n )\n }\n />\n );\n}\n","import { Button } from '@deepagents/react-shadcn';\n\nimport { Response } from '../../../elements/Response.tsx';\n\nfunction RetryBlock({\n onTryAgain,\n error,\n}: {\n error: Error | null;\n onTryAgain: () => void;\n}) {\n return (\n <div className=\"mt-3 flex justify-start\">\n <div className=\"max-w-[80%] space-y-2\">\n <div className=\"text-destructive text-sm\">\n <Response mode=\"static\">\n {error instanceof Error\n ? error.message\n : 'An error occurred. Please try again.'}\n </Response>\n </div>\n <Button type=\"button\" onClick={onTryAgain} size=\"sm\" variant=\"outline\">\n Try Again\n </Button>\n </div>\n </div>\n );\n}\n\nexport function MessagesError({\n error,\n onRetry,\n}: {\n error?: Error;\n onRetry?: () => void;\n}) {\n if (!error || !onRetry) return null;\n return <RetryBlock onTryAgain={onRetry} error={error} />;\n}\n","import type { ChatStatus, UIMessage } from 'ai';\nimport { useMemo } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nimport type { GenAIInteractiveElement } from '../../../components/InteractiveResponse.tsx';\nimport {\n MessageItemCtx,\n type MessagesContextValue,\n MessagesCtx,\n} from '../messages-context.ts';\n\nexport function MessagesRoot({\n messages,\n className,\n elements,\n status,\n children,\n}: {\n messages: UIMessage[];\n className?: string;\n elements?: GenAIInteractiveElement[];\n status?: ChatStatus;\n children: React.ReactNode;\n}) {\n const value = useMemo<MessagesContextValue>(\n () => ({ messages, elements, status }),\n [messages, elements, status],\n );\n\n return (\n <MessagesCtx.Provider value={value}>\n <div className={cn('flex h-full flex-col', className)}>\n <div className=\"flex h-full min-h-0 flex-1 flex-col\">{children}</div>\n </div>\n </MessagesCtx.Provider>\n );\n}\n\nexport function MessagesList({\n className,\n children,\n}: {\n className?: string;\n children: React.ReactNode;\n}) {\n return <div className={cn('flex flex-col gap-4', className)}>{children}</div>;\n}\n\nexport function MessagesItem({\n message,\n index,\n className,\n children,\n}: {\n message: UIMessage;\n index: number;\n className?: string;\n children: React.ReactNode;\n}) {\n const value = useMemo(() => ({ message, index }), [message, index]);\n\n return (\n <MessageItemCtx.Provider value={value}>\n <div className={className}>{children}</div>\n </MessageItemCtx.Provider>\n );\n}\n","import type { ToolUIPart } from 'ai';\nimport { isStaticToolUIPart } from 'ai';\nimport { Activity, type PropsWithChildren, useMemo } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nimport { useAgent, useAgentMessages } from '../chat/agent-context.tsx';\nimport type { ComponentTool } from '../tools/registry.ts';\n\nexport type ActivePendingTool = {\n part: ToolUIPart;\n entry: ComponentTool;\n};\n\nexport function useActivePendingToolInput(): ActivePendingTool | null {\n const { registry } = useAgent();\n const agent = useAgentMessages();\n const messages = agent.messages;\n\n // eslint-disable-next-line react-hooks/preserve-manual-memoization -- deps are correct; compiler can't verify registry shape\n return useMemo(() => {\n if (!registry) return null;\n\n for (let i = messages.length - 1; i >= 0; i--) {\n const message = messages[i];\n if (message.role !== 'assistant') continue;\n\n for (const part of message.parts) {\n if (!isStaticToolUIPart(part)) continue;\n if (part.state !== 'input-available') continue;\n\n const toolKey = part.type.replace('tool-', '');\n const entry = registry[toolKey];\n if (!entry || entry.static !== false) continue;\n if (!entry.requiresUserInput) continue;\n\n return { part, entry };\n }\n break;\n }\n\n return null;\n }, [messages, registry]);\n}\n\nexport function PendingToolInput({\n children,\n className,\n}: PropsWithChildren<{ className?: string }>) {\n const activeTool = useActivePendingToolInput();\n const Renderer = activeTool?.entry.component;\n\n return (\n <>\n <Activity mode={activeTool ? 'hidden' : 'visible'}>{children}</Activity>\n {activeTool && Renderer ? (\n <div className={cn('sticky bottom-0 mt-auto', className)}>\n <Renderer key={activeTool.part.toolCallId} part={activeTool.part} />\n </div>\n ) : null}\n </>\n );\n}\n","import type { ChatStatus, UIMessage } from 'ai';\nimport { isReasoningUIPart, isTextUIPart, isToolUIPart } from 'ai';\n\nexport function thinking(status: ChatStatus, message: UIMessage) {\n if (status === 'error' || status === 'ready') {\n return null;\n }\n if (!message) {\n return null;\n }\n if (message.role !== 'assistant') {\n return 'Thinking...';\n }\n for (let i = message.parts.length - 1; i >= 0; i--) {\n const part = message.parts[i];\n if (\n isTextUIPart(part) &&\n part.text &&\n part.providerMetadata?.openai?.phase === 'commentary'\n ) {\n return part.text;\n }\n }\n for (let i = message.parts.length - 1; i >= 0; i--) {\n const lastPart = message.parts[i];\n if (isReasoningUIPart(lastPart) && lastPart.text) {\n return lastPart.text;\n }\n if (isToolUIPart(lastPart)) {\n if (lastPart.input) {\n const input = lastPart.input as Record<string, unknown>;\n const candidates = ['reasoning', 'thoughts', 'thought', 'hint'];\n for (const candidate of candidates) {\n const value = input[candidate];\n if (typeof value === 'string' && value.length > 0) {\n return value;\n }\n }\n }\n return lastPart.toolCallId;\n }\n if (isTextUIPart(lastPart) && lastPart.text) {\n return '';\n }\n }\n return 'Thinking...';\n}\n","export function TimelineDot({ isLast = false }: { isLast?: boolean }) {\n return (\n <div className=\"absolute top-0 left-0 flex size-3.5 h-full flex-col items-center\">\n <span className=\"bg-muted-foreground/50 z-10 mt-1 size-2 shrink-0 rounded-full\" />\n {!isLast && <span className=\"bg-border w-px flex-1\" />}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nexport function TimelineItem({\n marker,\n children,\n className,\n}: {\n marker: ReactNode;\n children: ReactNode;\n className?: string;\n}) {\n return (\n <div className={cn('relative z-0 flex gap-3 pl-5', className)}>\n {marker}\n {children}\n </div>\n );\n}\n","import { useActivePendingToolInput } from '../../../components/PendingToolInput.tsx';\nimport { TextShimmer } from '../../../components/text-shimmer.tsx';\nimport { useMessagesContext, useMessagesStatus } from '../messages-context.ts';\nimport { thinking } from './thinking-hint.ts';\nimport { TimelineDot } from './timeline-dot.tsx';\nimport { TimelineItem } from './timeline-item.tsx';\n\nexport function TrajectoryThinking() {\n const status = useMessagesStatus();\n const { messages } = useMessagesContext();\n const activePendingTool = useActivePendingToolInput();\n const thinkingHint = thinking(status, messages[messages.length - 1]);\n\n if (!thinkingHint || activePendingTool) return null;\n\n return (\n <TimelineItem className=\"mt-2\" marker={<TimelineDot isLast />}>\n <span role=\"status\">\n <TextShimmer\n as=\"span\"\n className=\"text-muted-foreground line-clamp-2 font-mono text-xs\"\n >\n {thinkingHint}\n </TextShimmer>\n </span>\n </TimelineItem>\n );\n}\n","import type { UIMessage } from 'ai';\nimport { get } from 'lodash-es';\nimport { useMemo } from 'react';\n\nimport {\n formatCompactNumber,\n formatNullableNumber,\n} from '@deepagents/react-formatters';\n\nimport { useAgentMessages } from './agent-context.tsx';\n\nexport type UsageDisplay = {\n inputTokens: number | null;\n outputTokens: number | null;\n reasoningTokens: number | null;\n cachedInputTokens: number | null;\n totalTokens: number | null;\n};\n\ntype UsageTracking = {\n assistantUsageByMessageId: Record<string, UsageDisplay>;\n chatUsageSummary: UsageDisplay | null;\n};\n\nconst TOKEN_FIELDS: (keyof UsageDisplay)[] = [\n 'inputTokens',\n 'outputTokens',\n 'reasoningTokens',\n 'cachedInputTokens',\n 'totalTokens',\n];\n\nconst USAGE_FIELD_PATHS: Record<keyof UsageDisplay, string[][]> = {\n inputTokens: [['inputTokens'], ['raw', 'prompt_tokens']],\n outputTokens: [['outputTokens'], ['raw', 'completion_tokens']],\n reasoningTokens: [\n ['reasoningTokens'],\n ['outputTokenDetails', 'reasoningTokens'],\n ['raw', 'completion_tokens_details', 'reasoning_tokens'],\n ],\n cachedInputTokens: [\n // AI SDK v7 renamed this to `cacheReadTokens` and deleted the flat\n // `cachedInputTokens`. The older paths stay for chats persisted under v6.\n ['inputTokenDetails', 'cacheReadTokens'],\n ['cachedInputTokens'],\n ['inputTokenDetails', 'cachedTokens'],\n ['raw', 'prompt_tokens_details', 'cached_tokens'],\n ],\n totalTokens: [['totalTokens'], ['raw', 'total_tokens']],\n};\n\nfunction toFiniteToken(value: unknown): number | null {\n if (typeof value === 'number' && Number.isFinite(value) && value >= 0) {\n return value;\n }\n\n if (typeof value === 'string' && value.trim().length > 0) {\n const parsed = Number(value);\n if (Number.isFinite(parsed) && parsed >= 0) return parsed;\n }\n\n return null;\n}\n\nexport function parseUsage(source: unknown): UsageDisplay | null {\n if (!source || typeof source !== 'object') return null;\n\n const parsed: UsageDisplay = {\n inputTokens: null,\n outputTokens: null,\n reasoningTokens: null,\n cachedInputTokens: null,\n totalTokens: null,\n };\n\n for (const field of TOKEN_FIELDS) {\n for (const path of USAGE_FIELD_PATHS[field]) {\n const token = toFiniteToken(get(source, path));\n if (token !== null) {\n parsed[field] = token;\n break;\n }\n }\n }\n\n return TOKEN_FIELDS.some((field) => parsed[field] !== null) ? parsed : null;\n}\n\nexport function parseMetadataUsage(metadata: unknown): UsageDisplay | null {\n if (!metadata || typeof metadata !== 'object') return null;\n\n const record = metadata as Record<string, unknown>;\n\n return parseUsage(record.totalUsage ?? record.usage);\n}\n\nfunction diffUsage(\n current: UsageDisplay,\n previous: UsageDisplay | null,\n): UsageDisplay | null {\n const diff: UsageDisplay = {\n inputTokens: null,\n outputTokens: null,\n reasoningTokens: null,\n cachedInputTokens: null,\n totalTokens: null,\n };\n\n for (const field of TOKEN_FIELDS) {\n const currentValue = current[field];\n if (currentValue === null) continue;\n\n if (!previous) {\n diff[field] = currentValue;\n continue;\n }\n\n const previousValue = previous[field];\n if (previousValue === null) continue;\n\n const delta = currentValue - previousValue;\n if (delta >= 0) {\n diff[field] = delta;\n }\n }\n\n return TOKEN_FIELDS.some((field) => diff[field] !== null) ? diff : null;\n}\n\nfunction sumUsage(usages: UsageDisplay[]): UsageDisplay | null {\n if (usages.length === 0) return null;\n\n const summed: UsageDisplay = {\n inputTokens: null,\n outputTokens: null,\n reasoningTokens: null,\n cachedInputTokens: null,\n totalTokens: null,\n };\n\n for (const field of TOKEN_FIELDS) {\n let fieldSum = 0;\n let hasValue = false;\n for (const usage of usages) {\n const value = usage[field];\n if (value === null) continue;\n fieldSum += value;\n hasValue = true;\n }\n\n if (hasValue) {\n summed[field] = fieldSum;\n }\n }\n\n return TOKEN_FIELDS.some((field) => summed[field] !== null) ? summed : null;\n}\n\nfunction computeUsageTracking(messages: UIMessage[]): UsageTracking {\n const assistantUsageByMessageId: Record<string, UsageDisplay> = {};\n const messageUsages: UsageDisplay[] = [];\n let previousCumulativeUsage: UsageDisplay | null = null;\n let latestCumulativeUsage: UsageDisplay | null = null;\n\n for (const message of messages) {\n if (message.role !== 'assistant') continue;\n\n const metadata = message.metadata as Record<string, unknown> | undefined;\n\n const usage = parseUsage(metadata?.usage);\n const totalUsage = parseUsage(metadata?.totalUsage);\n const perMessageUsage =\n usage ??\n (totalUsage ? diffUsage(totalUsage, previousCumulativeUsage) : null);\n\n if (perMessageUsage) {\n assistantUsageByMessageId[message.id] = perMessageUsage;\n messageUsages.push(perMessageUsage);\n }\n\n if (totalUsage) {\n latestCumulativeUsage = totalUsage;\n previousCumulativeUsage = totalUsage;\n }\n }\n\n return {\n assistantUsageByMessageId,\n chatUsageSummary: latestCumulativeUsage ?? sumUsage(messageUsages),\n };\n}\n\nexport function useNormalizedUsageTracking(): UsageTracking {\n const agent = useAgentMessages();\n\n return useMemo(() => {\n return computeUsageTracking(agent.messages);\n }, [agent.messages]);\n}\n\nexport function formatUsageValue(value: number | null): string {\n return formatNullableNumber(value);\n}\n\nexport function formatUsageBreakdown(usage: UsageDisplay): string {\n const parts = [\n `↑ ${formatCompactNumber(usage.inputTokens)}`,\n `↓ ${formatCompactNumber(usage.outputTokens)}`,\n ];\n\n if (usage.totalTokens !== null) {\n parts.push(`· ${usage.totalTokens.toLocaleString()} tokens`);\n }\n\n if (usage.cachedInputTokens !== null && usage.cachedInputTokens > 0) {\n parts.push(`(${formatCompactNumber(usage.cachedInputTokens)} cached)`);\n }\n\n return parts.join(' ');\n}\n","import { DefaultChatTransport, type UIMessage } from 'ai';\nimport { z } from 'zod';\n\nimport { type ElementDescriptor, toDescriptor } from '@deepagents/elements';\n\nimport type { GenAIInteractiveElement } from '../elements/interactive-element.ts';\nimport type { SerializedToolRegistry } from './tools-schema.ts';\n\n/** Carries the URI-encoded original filename alongside the raw upload body. */\nconst UPLOAD_FILENAME_HEADER = 'x-upload-filename';\n\nexport const uploadReceiptSchema = z.strictObject({\n path: z.string().startsWith('/'),\n name: z.string().min(1),\n mediaType: z.enum([\n 'image/png',\n 'image/jpeg',\n 'image/webp',\n 'image/gif',\n 'image/heic',\n 'image/heif',\n 'video/mp4',\n 'video/quicktime',\n 'audio/mpeg',\n 'audio/mp4',\n 'audio/wav',\n ]),\n size: z.int().nonnegative(),\n url: z.url(),\n});\n\nexport interface ZukhrufChatTransportOptions {\n /** Session collection URL discovered from Zukhruf. */\n api: string;\n fetch?: typeof globalThis.fetch;\n tools?: SerializedToolRegistry;\n /**\n * Interactive elements the client can render. Only their serializable\n * descriptors go over the wire; `component`/`tips` never leave the client.\n */\n elements?: GenAIInteractiveElement[];\n}\n\ntype AcceptedTurn = {\n ok: true;\n sessionId: string;\n turnId: string;\n};\n\nexport class ZukhrufChatTransport extends DefaultChatTransport<UIMessage> {\n private readonly sessionsApi: string;\n private readonly request: typeof globalThis.fetch;\n\n constructor({\n api,\n fetch: request = (input, init) => globalThis.fetch(input, init),\n tools = {},\n elements = [],\n }: ZukhrufChatTransportOptions) {\n const sessionsApi = trimTrailingSlash(api);\n const descriptors: ElementDescriptor[] = elements.map(toDescriptor);\n super({\n api: sessionsApi,\n fetch: async (input, init) => {\n const response = await request(input, init);\n if ((init?.method ?? 'GET').toUpperCase() !== 'POST' || !response.ok) {\n return response;\n }\n\n const accepted = await response.json();\n if (!isAcceptedTurn(accepted)) {\n throw new Error('Zukhruf returned an invalid accepted-turn response');\n }\n const sessionApi = trimTrailingSlash(String(input));\n const sessionId = decodeURIComponent(\n sessionApi.slice(sessionApi.lastIndexOf('/') + 1),\n );\n if (accepted.sessionId !== sessionId) {\n throw new Error('Zukhruf returned a different session ID');\n }\n\n const signal = init?.signal;\n const cancel = () => {\n void request(`${sessionApi}/cancel`, { method: 'POST' }).catch(\n () => undefined,\n );\n };\n signal?.addEventListener('abort', cancel, { once: true });\n\n return request(`${sessionApi}/stream`, {\n headers: { accept: 'text/event-stream' },\n method: 'GET',\n signal,\n });\n },\n prepareSendMessagesRequest: ({ id, messages, trigger }) => {\n const message = messages[messages.length - 1];\n if (!message) throw new Error('A message is required');\n return {\n api: sessionApi(sessionsApi, id),\n body: {\n sessionId: id,\n message,\n trigger,\n ...(Object.keys(tools).length > 0 ? { tools } : {}),\n ...(descriptors.length > 0 ? { elements: descriptors } : {}),\n },\n };\n },\n prepareReconnectToStreamRequest: ({ headers, id }) => ({\n api: `${sessionApi(sessionsApi, id)}/stream`,\n headers,\n }),\n });\n this.sessionsApi = sessionsApi;\n this.request = request;\n }\n\n /**\n * Store an image under the session and return its receipt. The session does\n * not need to exist yet.\n */\n async uploadFile(sessionId: string, file: File) {\n const response = await this.request(\n `${sessionApi(this.sessionsApi, sessionId)}/uploads`,\n {\n method: 'POST',\n headers: {\n 'content-type': file.type,\n [UPLOAD_FILENAME_HEADER]: encodeURIComponent(file.name),\n },\n body: file,\n },\n );\n if (!response.ok) {\n throw new Error(await describeUploadFailure(response, file));\n }\n const receipt = uploadReceiptSchema.safeParse(await response.json());\n if (!receipt.success) {\n throw new Error('Zukhruf returned an invalid upload response');\n }\n return receipt.data;\n }\n}\n\nfunction sessionApi(sessionsApi: string, sessionId: string) {\n return `${sessionsApi}/${encodeURIComponent(sessionId)}`;\n}\n\nasync function describeUploadFailure(\n response: Response,\n file: File,\n): Promise<string> {\n const summary = `Uploading ${file.name} failed with HTTP ${response.status}`;\n const body: unknown = await response.json().catch(() => null);\n const reason = failureReason(body);\n return reason ? `${summary}: ${reason}` : summary;\n}\n\nfunction failureReason(body: unknown): string | null {\n if (typeof body !== 'object' || body === null) return null;\n const cause =\n 'cause' in body && typeof body.cause === 'object' && body.cause !== null\n ? body.cause\n : null;\n const code =\n cause && 'code' in cause && typeof cause.code === 'string'\n ? cause.code\n : null;\n const detail =\n cause && 'detail' in cause && typeof cause.detail === 'string'\n ? cause.detail\n : 'error' in body && typeof body.error === 'string'\n ? body.error\n : null;\n const reason = [code, detail].filter((part) => part !== null).join(' — ');\n return reason || null;\n}\n\nfunction trimTrailingSlash(value: string) {\n return value.replace(/\\/$/, '');\n}\n\nfunction isAcceptedTurn(value: unknown): value is AcceptedTurn {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'ok' in value &&\n value.ok === true &&\n 'sessionId' in value &&\n typeof value.sessionId === 'string' &&\n 'turnId' in value &&\n typeof value.turnId === 'string'\n );\n}\n","import { ChevronDown } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n cn,\n} from '@deepagents/react-shadcn';\n\nexport function CollapsibleDisclosure({\n label,\n open,\n onOpenChange,\n children,\n className,\n triggerClassName,\n contentClassName,\n chevronClassName,\n}: {\n label: ReactNode;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n children: ReactNode;\n className?: string;\n triggerClassName?: string;\n contentClassName?: string;\n chevronClassName?: string;\n}) {\n return (\n <Collapsible open={open} onOpenChange={onOpenChange} className={className}>\n <CollapsibleTrigger\n render={\n <button\n type=\"button\"\n className={cn('flex items-center font-mono', triggerClassName)}\n />\n }\n >\n <ChevronDown\n className={cn(\n 'size-4 transition-transform',\n chevronClassName,\n open && 'rotate-180',\n )}\n />\n <span>{label}</span>\n </CollapsibleTrigger>\n <CollapsibleContent className={contentClassName}>\n {children}\n </CollapsibleContent>\n </Collapsible>\n );\n}\n","import type { UIMessage } from 'ai';\nimport { memo, useMemo, useState } from 'react';\n\nimport {\n type UserReminderMetadata,\n stripReminders,\n} from '@deepagents/context/browser';\nimport { PersistedPromptText } from '@deepagents/react-input/browser';\nimport { AttachmentGroup, AttachmentMedia, cn } from '@deepagents/react-shadcn';\n\nimport { formatUsageBreakdown, parseMetadataUsage } from '../../usage.ts';\nimport { uploadReceiptSchema } from '../../zukhruf-chat-transport.ts';\nimport { useMessageItem } from '../messages-context.ts';\nimport { CollapsibleDisclosure } from './collapsible-disclosure.tsx';\n\nexport function MessageMetadata({\n metadata,\n}: {\n metadata: UIMessage['metadata'];\n}) {\n if (!metadata) return null;\n\n const usage = parseMetadataUsage(metadata);\n if (!usage) return null;\n\n return (\n <div className=\"text-muted-foreground mt-2 text-xs tabular-nums opacity-60\">\n {formatUsageBreakdown(usage)}\n </div>\n );\n}\n\nfunction extractReminders(message: UIMessage): UserReminderMetadata[] {\n const raw = (message.metadata as Record<string, unknown> | undefined)\n ?.reminders;\n if (!Array.isArray(raw)) return [];\n return raw.filter((r): r is UserReminderMetadata => {\n if (!r || typeof r !== 'object') return false;\n const candidate: Partial<UserReminderMetadata> = r;\n return (\n typeof candidate.id === 'string' &&\n candidate.id.length > 0 &&\n typeof candidate.text === 'string' &&\n candidate.text.trim().length > 0\n );\n });\n}\n\nfunction extractUploads(message: UIMessage) {\n const raw = (message.metadata as Record<string, unknown> | undefined)\n ?.uploads;\n return Array.isArray(raw)\n ? raw.flatMap((value) => {\n const receipt = uploadReceiptSchema.safeParse(value);\n return receipt.success ? [receipt.data] : [];\n })\n : [];\n}\n\nfunction ReminderItem({ text }: { text: string }) {\n const [expanded, setExpanded] = useState(false);\n return (\n <li>\n <button\n type=\"button\"\n onClick={() => setExpanded((v) => !v)}\n aria-pressed={expanded}\n className={cn(\n 'hover:text-foreground w-full cursor-pointer text-left whitespace-pre-wrap',\n !expanded && 'line-clamp-3',\n )}\n >\n {text}\n </button>\n </li>\n );\n}\n\nfunction UserMessageReminders({\n reminders,\n}: {\n reminders: UserReminderMetadata[];\n}) {\n const [open, setOpen] = useState(false);\n if (reminders.length === 0) return null;\n const label = `${reminders.length} reminder${reminders.length === 1 ? '' : 's'} attached`;\n return (\n <CollapsibleDisclosure\n label={label}\n open={open}\n onOpenChange={setOpen}\n className=\"mt-1\"\n triggerClassName=\"text-muted-foreground hover:text-foreground gap-1.5 text-xs\"\n contentClassName=\"mt-1.5\"\n chevronClassName=\"size-3.5\"\n >\n <ul className=\"border-ink-12 text-muted-foreground space-y-1 border-l pl-3 text-xs\">\n {reminders.map((r) => (\n <ReminderItem key={r.id} text={r.text} />\n ))}\n </ul>\n </CollapsibleDisclosure>\n );\n}\n\nfunction UploadTile({\n upload,\n}: {\n upload: { url: string; name: string; mediaType: string };\n}) {\n if (upload.mediaType.startsWith('video/')) {\n return (\n <AttachmentMedia\n variant=\"image\"\n className=\"size-36 rounded-2xl\"\n title={upload.name}\n >\n <video\n src={upload.url}\n aria-label={upload.name}\n muted\n playsInline\n preload=\"metadata\"\n className=\"size-full object-cover\"\n />\n <span\n aria-hidden\n className=\"pointer-events-none absolute inset-0 flex items-center justify-center text-2xl text-white drop-shadow\"\n >\n ▶\n </span>\n </AttachmentMedia>\n );\n }\n if (upload.mediaType.startsWith('audio/')) {\n return (\n <AttachmentMedia\n variant=\"icon\"\n className=\"h-36 w-48 flex-col gap-1 rounded-2xl px-3 text-xs\"\n title={upload.name}\n aria-label={upload.name}\n >\n <span aria-hidden className=\"text-2xl\">\n ♪\n </span>\n <span className=\"text-foreground w-full truncate text-center\">\n {upload.name}\n </span>\n <span className=\"text-muted-foreground\">{upload.mediaType}</span>\n </AttachmentMedia>\n );\n }\n return (\n <AttachmentMedia variant=\"image\" className=\"size-36 rounded-2xl\">\n <img src={upload.url} alt={upload.name} />\n </AttachmentMedia>\n );\n}\n\nfunction UserMessageAttachments({ message }: { message: UIMessage }) {\n const uploads = extractUploads(message);\n if (uploads.length === 0) return null;\n\n return (\n <AttachmentGroup\n role=\"list\"\n aria-label=\"Attached files\"\n className=\"max-w-full gap-2 py-0\"\n >\n {uploads.map((upload) => (\n <div key={upload.path} role=\"listitem\" data-slot=\"attachment\">\n <UploadTile upload={upload} />\n </div>\n ))}\n </AttachmentGroup>\n );\n}\n\nfunction UserBubbleShell({\n body,\n reminders,\n metadata,\n}: {\n body: React.ReactNode;\n reminders: UserReminderMetadata[];\n metadata?: UIMessage['metadata'];\n}) {\n return (\n <div className=\"bg-secondary flex max-w-[80%] flex-col gap-3 rounded-lg p-3\">\n <div className=\"flex-1 space-y-3\">{body}</div>\n <UserMessageReminders reminders={reminders} />\n {metadata !== undefined && <MessageMetadata metadata={metadata} />}\n </div>\n );\n}\n\nexport function UserMessageContent({\n message: rawMessage,\n}: {\n message: UIMessage;\n}) {\n const remindersRef = (\n rawMessage.metadata as Record<string, unknown> | undefined\n )?.reminders;\n const { message, reminders } = useMemo(\n () => ({\n message: stripReminders(rawMessage),\n reminders: extractReminders(rawMessage),\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps -- remindersRef is the load-bearing change signal: rawMessage identity often stays stable while its `metadata.reminders` array swaps in place during streaming\n [rawMessage, remindersRef],\n );\n const rawAlias = (rawMessage.metadata as Record<string, unknown> | undefined)\n ?.alias;\n const alias =\n typeof rawAlias === 'string' && rawAlias.trim().length > 0\n ? rawAlias\n : undefined;\n\n if (alias) {\n return (\n <UserBubbleShell\n reminders={reminders}\n body={<div className=\"text-sm whitespace-pre-wrap\">{alias}</div>}\n />\n );\n }\n\n return (\n <div className=\"flex w-full min-w-0 flex-col items-end gap-3\">\n <UserMessageAttachments message={message} />\n <UserBubbleShell\n reminders={reminders}\n metadata={message.metadata}\n body={message.parts.map((part, partIndex) =>\n part.type === 'text' ? (\n <div\n key={`${message.id}-${partIndex}-text`}\n className=\"text-sm whitespace-pre-wrap\"\n >\n <PersistedPromptText text={part.text} />\n </div>\n ) : null,\n )}\n />\n </div>\n );\n}\n\nexport const MessagesUserBubble = memo(function MessagesUserBubble({\n className,\n}: {\n className?: string;\n}) {\n const { message } = useMessageItem();\n\n return (\n <div className={cn('flex justify-end', className)}>\n <UserMessageContent message={message} />\n </div>\n );\n});\n","import {\n type ChatStatus,\n type ToolUIPart,\n type UIMessage,\n isStaticToolUIPart,\n isToolUIPart,\n} from 'ai';\nimport {\n type ReactNode,\n createContext,\n memo,\n use,\n useMemo,\n useState,\n} from 'react';\nimport { useStickToBottom } from 'use-stick-to-bottom';\n\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n cn,\n} from '@deepagents/react-shadcn';\n\nimport { TextShimmer } from '../../../components/text-shimmer.tsx';\nimport { isSubagentPart, resolveToolEntry } from '../../../tools/helpers.ts';\nimport type { ComponentRegistry, ToolLabel } from '../../../tools/registry.ts';\nimport { useAgent } from '../../agent-context.tsx';\nimport { isToolStateAborted } from '../../tool-abort.ts';\nimport {\n CompactDisclosureChevron,\n compactDisclosureTriggerClass,\n} from '../compact-disclosure.tsx';\nimport {\n useMessageItem,\n useMessagesContext,\n useMessagesStatus,\n} from '../messages-context.ts';\nimport { Segment, isCommentaryTextPart } from '../segments/index.tsx';\nimport {\n type MessageTrajectorySegment,\n buildMessageTrajectorySegments,\n getSegmentKey,\n} from '../trajectory-segments.ts';\nimport {\n CopyAssistantMessageAction,\n CopyAssistantMessageJsonAction,\n MessagesActions,\n RegenerateAction,\n} from './message-actions.tsx';\nimport { MessagesError } from './messages-error.tsx';\nimport { MessagesItem, MessagesList, MessagesRoot } from './messages-shell.tsx';\nimport { TrajectoryThinking } from './trajectory-thinking.tsx';\nimport { MessagesUserBubble } from './user-message.tsx';\n\ntype CompactNodeGroupItem = {\n segment: MessageTrajectorySegment;\n};\n\ntype CompactRenderItem =\n | {\n kind: 'segment';\n segment: MessageTrajectorySegment;\n segmentIndex: number;\n }\n | {\n kind: 'group';\n items: CompactNodeGroupItem[];\n hasLaterText: boolean;\n firstIndex: number;\n };\n\n/**\n * Subagent calls are deliberately excluded: everything a compact node touches\n * gets folded into the \"Ran N tools\" group, which collapses as soon as the\n * assistant produces text. A delegation to another agent stays in the message\n * flow as its own chip instead of disappearing into that group.\n */\nfunction isCompactNodeSegment(segment: MessageTrajectorySegment) {\n if (segment.kind === 'tool') return !isSubagentPart(segment.part);\n return segment.kind === 'dynamic-tool' || segment.kind === 'reasoning';\n}\n\nfunction isVisibleCompactNode(\n segment: MessageTrajectorySegment,\n debugMode: boolean | undefined,\n) {\n if (segment.kind === 'tool') return true;\n if (segment.kind === 'reasoning' || segment.kind === 'dynamic-tool') {\n return !!debugMode;\n }\n return false;\n}\n\nfunction hasVisibleTranscriptText(segment: MessageTrajectorySegment) {\n return (\n segment.kind === 'text' &&\n segment.parts.some(\n ({ part }) => part.type === 'text' && !isCommentaryTextPart(part),\n )\n );\n}\n\nfunction buildCompactRenderItems(\n segments: MessageTrajectorySegment[],\n debugMode: boolean | undefined,\n): CompactRenderItem[] {\n const items: CompactRenderItem[] = [];\n\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n\n if (!isCompactNodeSegment(segment)) {\n items.push({ kind: 'segment', segment, segmentIndex: i });\n continue;\n }\n\n const group: CompactNodeGroupItem[] = [];\n const firstIndex = i;\n\n while (i < segments.length && isCompactNodeSegment(segments[i])) {\n const nodeSegment = segments[i];\n if (isVisibleCompactNode(nodeSegment, debugMode)) {\n group.push({ segment: nodeSegment });\n }\n i++;\n }\n i--;\n\n if (group.length > 0) {\n items.push({\n kind: 'group',\n items: group,\n hasLaterText: segments\n .slice(i + 1)\n .some((next) => hasVisibleTranscriptText(next)),\n firstIndex,\n });\n }\n }\n\n return items;\n}\n\nfunction getToolPartState(segment: MessageTrajectorySegment) {\n if (segment.kind !== 'tool' && segment.kind !== 'dynamic-tool') {\n return undefined;\n }\n\n const { part } = segment;\n return isToolUIPart(part) ? part.state : undefined;\n}\n\nexport type CompactSegmentLabel = {\n kind: 'tool' | 'dynamic-tool' | 'reasoning';\n name: string;\n args?: ToolLabel['args'];\n detail?: string;\n isError?: boolean;\n};\n\nexport type CompactGroupStatus = 'running' | 'complete' | 'error' | 'aborted';\n\ntype CompactGroupTone = {\n title: string;\n detail: string;\n chevron: string;\n};\n\nfunction getCompactGroupTone({\n groupStatus,\n labelCount,\n}: {\n groupStatus: CompactGroupStatus;\n labelCount: number;\n}): CompactGroupTone {\n if (groupStatus === 'running') {\n return {\n title: 'text-info',\n detail: 'text-info/80',\n chevron: 'text-info',\n };\n }\n\n if (groupStatus === 'aborted') {\n return {\n title: 'text-destructive',\n detail: 'text-destructive/80',\n chevron: 'text-destructive',\n };\n }\n\n if (groupStatus === 'error') {\n const tone =\n labelCount === 1\n ? {\n title: 'text-destructive',\n detail: 'text-destructive/80',\n chevron: 'text-destructive',\n }\n : {\n title: 'text-warning',\n detail: 'text-warning/80',\n chevron: 'text-warning',\n };\n\n return tone;\n }\n\n return {\n title: 'text-muted-foreground',\n detail: 'text-muted-foreground',\n chevron: 'text-muted-foreground',\n };\n}\n\nfunction isPlainRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction shorten(value: string, maxLength = 80) {\n const normalized = value.replace(/\\s+/g, ' ').trim();\n if (normalized.length <= maxLength) return normalized;\n return `${normalized.slice(0, maxLength - 3).trimEnd()}...`;\n}\n\nfunction stringifyArgValue(value: unknown): string | undefined {\n if (typeof value === 'string') return shorten(value, 48);\n if (typeof value === 'number' || typeof value === 'boolean') {\n return String(value);\n }\n if (Array.isArray(value)) return `${value.length} items`;\n return undefined;\n}\n\nfunction getFallbackArgs(input: unknown): ToolLabel['args'] | undefined {\n if (!isPlainRecord(input)) return undefined;\n\n const preferredKeys = [\n 'command',\n 'query',\n 'path',\n 'file',\n 'table',\n 'metric',\n 'dimension',\n 'checks',\n ];\n const orderedEntries = [\n ...preferredKeys\n .filter((key) => key in input)\n .map((key) => [key, input[key]] as const),\n ...Object.entries(input).filter(([key]) => !preferredKeys.includes(key)),\n ];\n const args: Record<string, string | undefined> = {};\n\n for (const [key, value] of orderedEntries) {\n const stringValue = stringifyArgValue(value);\n if (!stringValue) continue;\n args[key] = stringValue;\n if (Object.keys(args).length >= 2) break;\n }\n\n return Object.keys(args).length > 0 ? args : undefined;\n}\n\nfunction getFallbackDetail(input: unknown): string | undefined {\n if (!isPlainRecord(input)) return undefined;\n\n for (const key of ['reasoning', 'thoughts', 'thought', 'hint', 'detail']) {\n const value = input[key];\n if (typeof value === 'string' && value.trim().length > 0) {\n return shorten(value);\n }\n }\n\n return undefined;\n}\n\nfunction getReasoningPreview(segment: MessageTrajectorySegment) {\n if (segment.kind !== 'reasoning') return undefined;\n const { part } = segment;\n if (part.type !== 'reasoning') return undefined;\n return shorten(part.text, 96);\n}\n\nfunction getSegmentLabel(\n segment: MessageTrajectorySegment,\n registry: ComponentRegistry | undefined,\n): CompactSegmentLabel {\n if (segment.kind === 'reasoning') {\n return {\n kind: 'reasoning',\n name: 'reasoning',\n detail: getReasoningPreview(segment),\n };\n }\n\n if (segment.kind === 'dynamic-tool' && segment.part.type === 'dynamic-tool') {\n const dynamicToolPart = segment.part;\n\n return {\n kind: 'dynamic-tool',\n name: dynamicToolPart.toolName || 'Tool',\n args: getFallbackArgs(dynamicToolPart.input),\n detail: getFallbackDetail(dynamicToolPart.input),\n };\n }\n\n if (segment.kind === 'tool' && isStaticToolUIPart(segment.part)) {\n const toolPart = segment.part;\n const { toolEntry, toolKey } = resolveToolEntry(toolPart, registry);\n const label = toolEntry?.label?.(toolPart);\n\n return {\n kind: 'tool',\n name: label?.name ?? toolKey,\n args: label?.args ?? getFallbackArgs(toolPart.input),\n detail: label?.detail ?? getFallbackDetail(toolPart.input),\n isError: label?.isError,\n };\n }\n\n return { kind: 'tool', name: 'Step' };\n}\n\nfunction formatArgs(args: ToolLabel['args'] | undefined) {\n if (!args) return undefined;\n const entries = Object.entries(args).filter(\n (entry): entry is [string, string] =>\n typeof entry[1] === 'string' && entry[1].trim().length > 0,\n );\n if (entries.length === 0) return undefined;\n\n return entries\n .slice(0, 2)\n .map(([key, value]) => `${key}: ${shorten(value, 36)}`)\n .join(', ');\n}\n\nfunction formatCallLabel(label: CompactSegmentLabel) {\n const args = formatArgs(label.args);\n return args ? `${label.name}(${args})` : label.name;\n}\n\nfunction isTerminalToolState(state: ToolUIPart['state'] | undefined) {\n return (\n state === 'output-available' ||\n state === 'output-error' ||\n state === 'output-denied'\n );\n}\n\nfunction isPendingToolState(state: ToolUIPart['state'] | undefined) {\n return !!state && !isTerminalToolState(state);\n}\n\nfunction isPendingToolAborted(\n state: ToolUIPart['state'] | undefined,\n status: ChatStatus,\n) {\n return isToolStateAborted(state, status);\n}\n\nfunction getGroupStatus({\n items,\n labels,\n status,\n hasLaterText,\n}: {\n items: CompactNodeGroupItem[];\n labels: CompactSegmentLabel[];\n status: ChatStatus;\n hasLaterText: boolean;\n}): CompactGroupStatus {\n if (\n items.some(({ segment }) =>\n isPendingToolAborted(getToolPartState(segment), status),\n )\n ) {\n return 'aborted';\n }\n\n if (!hasLaterText && (status === 'streaming' || status === 'submitted')) {\n return 'running';\n }\n\n if (\n labels.some((label) => label.isError) ||\n items.some(({ segment }) => {\n const state = getToolPartState(segment);\n return state === 'output-error' || state === 'output-denied';\n })\n ) {\n return 'error';\n }\n\n if (\n items.some(({ segment }) => isPendingToolState(getToolPartState(segment)))\n ) {\n return 'running';\n }\n\n if (\n !hasLaterText &&\n labels.every((label) => label.kind === 'reasoning') &&\n (status === 'streaming' || status === 'submitted')\n ) {\n return 'running';\n }\n\n return 'complete';\n}\n\nfunction sentenceCase(value: string) {\n return value ? `${value[0].toUpperCase()}${value.slice(1)}` : value;\n}\n\nfunction getFallbackToolCount(labels: CompactSegmentLabel[]) {\n return labels.filter((label) => label.kind !== 'reasoning').length;\n}\n\nfunction formatFallbackToolSummary(\n labels: CompactSegmentLabel[],\n groupStatus: CompactGroupStatus,\n) {\n const toolCount = getFallbackToolCount(labels);\n if (toolCount === 0) return undefined;\n const isRunning = groupStatus === 'running' || groupStatus === 'aborted';\n const verb = isRunning ? 'running' : 'ran';\n return `${verb} ${toolCount} ${toolCount === 1 ? 'tool' : 'tools'}`;\n}\n\nfunction getPlainCountSummary(\n labels: CompactSegmentLabel[],\n groupStatus: CompactGroupStatus,\n) {\n const baseTitle = formatFallbackToolSummary(labels, groupStatus);\n if (!baseTitle) return undefined;\n\n const title =\n groupStatus === 'error'\n ? `${baseTitle} with issues`\n : groupStatus === 'aborted'\n ? `cancelled after ${baseTitle}`\n : baseTitle;\n\n return sentenceCase(title);\n}\n\nfunction getCompactSummaryText(\n labels: CompactSegmentLabel[],\n groupStatus: CompactGroupStatus,\n activeHint?: string,\n) {\n const singleLabel = labels.length === 1 ? labels[0] : undefined;\n\n if (groupStatus === 'running') {\n if (activeHint) return activeHint;\n if (singleLabel?.kind === 'reasoning') {\n return `Reasoning${singleLabel.detail ? ` ${singleLabel.detail}` : ''}`;\n }\n if (labels.every((label) => label.kind === 'reasoning')) {\n return 'Reasoning';\n }\n return 'Working...';\n }\n\n if (singleLabel) {\n const callLabel = formatCallLabel(singleLabel);\n if (groupStatus === 'error') return `Failed ${callLabel}`;\n if (groupStatus === 'aborted') return `Cancelled ${callLabel}`;\n if (singleLabel.kind === 'reasoning') {\n return `Reasoned${singleLabel.detail ? ` ${singleLabel.detail}` : ''}`;\n }\n return `Called ${callLabel}`;\n }\n\n if (labels.every((label) => label.kind === 'reasoning')) {\n return 'Reasoned';\n }\n\n return getPlainCountSummary(labels, groupStatus) ?? 'Ran tools';\n}\n\nfunction getCompactSummaryDetail(\n labels: CompactSegmentLabel[],\n groupStatus: CompactGroupStatus,\n) {\n if (groupStatus === 'running') return undefined;\n\n if (labels.length === 1) {\n const label = labels[0];\n if (label.kind === 'reasoning') return undefined;\n return label.detail;\n }\n\n const names = Array.from(\n new Set(\n [...labels]\n .sort((a, b) => {\n if (a.kind === 'reasoning' && b.kind !== 'reasoning') return 1;\n if (a.kind !== 'reasoning' && b.kind === 'reasoning') return -1;\n return 0;\n })\n .map((label) => label.name),\n ),\n );\n const detail = names.slice(0, 3).join(', ');\n return detail || undefined;\n}\n\nfunction getActiveGroupHint(items: CompactNodeGroupItem[]) {\n let reasoningHint: string | undefined;\n\n for (let i = items.length - 1; i >= 0; i--) {\n const segment = items[i].segment;\n\n if (\n segment.kind === 'dynamic-tool' &&\n segment.part.type === 'dynamic-tool'\n ) {\n const hint = getFallbackDetail(segment.part.input);\n if (hint) return hint;\n }\n\n if (segment.kind === 'tool' && isStaticToolUIPart(segment.part)) {\n const hint = getFallbackDetail(segment.part.input);\n if (hint) return hint;\n }\n\n if (segment.kind === 'reasoning') {\n reasoningHint ??= getReasoningPreview(segment);\n }\n }\n\n return reasoningHint;\n}\n\nfunction hasCurrentCompactNodeGroup(\n message: UIMessage | undefined,\n debugMode: boolean | undefined,\n) {\n if (!message || message.role !== 'assistant') return false;\n\n const segments = buildMessageTrajectorySegments(message.parts);\n return buildCompactRenderItems(segments, debugMode).some(\n (item) => item.kind === 'group' && !item.hasLaterText,\n );\n}\n\ntype CompactTrajectorySegmentItem = {\n kind: 'segment';\n key: string;\n segment: MessageTrajectorySegment;\n segmentIndex: number;\n};\n\ntype CompactTrajectoryGroupItem = {\n kind: 'group';\n key: string;\n items: CompactNodeGroupItem[];\n hasLaterText: boolean;\n firstIndex: number;\n};\n\nexport type CompactTrajectoryItem =\n CompactTrajectorySegmentItem | CompactTrajectoryGroupItem;\n\nexport function useTrajectoryItems(): CompactTrajectoryItem[] {\n const { message } = useMessageItem();\n const { debugMode } = useAgent();\n const segments = useMemo(\n () => buildMessageTrajectorySegments(message.parts),\n [message.parts],\n );\n return useMemo(\n () =>\n buildCompactRenderItems(segments, debugMode).map((item) =>\n item.kind === 'group'\n ? {\n ...item,\n key: `${message.id}-${item.firstIndex}-group-${\n item.hasLaterText ? 'past' : 'current'\n }`,\n }\n : {\n ...item,\n key: `${message.id}-${getSegmentKey(item.segment, item.segmentIndex)}-${item.segment.kind}`,\n },\n ),\n [segments, debugMode, message.id],\n );\n}\n\ntype CompactGroupContextValue = {\n items: CompactNodeGroupItem[];\n labels: CompactSegmentLabel[];\n groupStatus: CompactGroupStatus;\n tone: CompactGroupTone;\n messageId: string;\n};\n\nconst CompactGroupContext = createContext<CompactGroupContextValue | null>(\n null,\n);\n\nexport function useCompactGroup() {\n const context = use(CompactGroupContext);\n if (!context) {\n throw new Error(\n 'CompactTrajectory group parts must be rendered within CompactTrajectory.Group',\n );\n }\n return context;\n}\n\nfunction CompactTrajectoryGroup({\n group,\n children,\n}: {\n group: { items: CompactNodeGroupItem[]; hasLaterText: boolean };\n children: ReactNode;\n}) {\n const { registry } = useAgent();\n const { message } = useMessageItem();\n const status = useMessagesStatus();\n const [isOpen, setIsOpen] = useState(!group.hasLaterText);\n const labels = group.items.map(({ segment }) =>\n getSegmentLabel(segment, registry),\n );\n const groupStatus = getGroupStatus({\n items: group.items,\n labels,\n status,\n hasLaterText: group.hasLaterText,\n });\n const tone = getCompactGroupTone({ groupStatus, labelCount: labels.length });\n\n return (\n <CompactGroupContext\n value={{\n items: group.items,\n labels,\n groupStatus,\n tone,\n messageId: message.id,\n }}\n >\n <Collapsible\n open={isOpen}\n onOpenChange={setIsOpen}\n className=\"my-2 min-w-0\"\n >\n {children}\n </Collapsible>\n </CompactGroupContext>\n );\n}\n\nfunction CompactTrajectoryGroupTrigger({ children }: { children: ReactNode }) {\n return (\n <CollapsibleTrigger\n render={\n <button\n type=\"button\"\n className={compactDisclosureTriggerClass('items-start')}\n />\n }\n >\n <span className=\"min-w-0 flex-1 text-left text-sm\">{children}</span>\n </CollapsibleTrigger>\n );\n}\n\nfunction useCompactGroupSummary() {\n const { items, labels, groupStatus, tone } = useCompactGroup();\n const title = getCompactSummaryText(\n labels,\n groupStatus,\n getActiveGroupHint(items),\n );\n const detail = getCompactSummaryDetail(labels, groupStatus);\n return { title, detail, tone, groupStatus };\n}\n\nfunction CompactTrajectoryGroupTitle({\n title: titleOverride,\n suffix,\n children,\n}: {\n /** Host-computed replacement for the default plain-count summary. */\n title?: string;\n /** Host-computed trailer appended to whichever title renders (\" · <suffix>\"). */\n suffix?: string;\n children?: ReactNode;\n}) {\n const { title: defaultTitle, tone, groupStatus } = useCompactGroupSummary();\n const baseTitle = titleOverride ?? defaultTitle;\n const title = suffix ? `${baseTitle} · ${suffix}` : baseTitle;\n return (\n <span className=\"flex min-w-0 items-center gap-1.5\">\n <TextShimmer\n as=\"span\"\n enabled={groupStatus === 'running'}\n className={cn(\n 'max-w-full min-w-0 truncate',\n groupStatus === 'running' ? 'text-info' : tone.title,\n )}\n >\n {title}\n </TextShimmer>\n {children}\n </span>\n );\n}\n\nfunction CompactTrajectoryGroupChevron() {\n const { tone } = useCompactGroup();\n return <CompactDisclosureChevron className={tone.chevron} />;\n}\n\nfunction CompactTrajectoryGroupDetail({\n detail: detailOverride,\n}: {\n /** Host-computed replacement for the default detail line; null suppresses it. */\n detail?: string | null;\n}) {\n const { title, detail: defaultDetail, tone } = useCompactGroupSummary();\n if (detailOverride === null) return null;\n const detail = detailOverride ?? defaultDetail;\n if (!detail || detail === title) return null;\n return (\n <span className={cn('block truncate text-xs', tone.detail)}>{detail}</span>\n );\n}\n\nfunction CompactTrajectoryGroupContent({ children }: { children?: ReactNode }) {\n const { items, messageId, groupStatus } = useCompactGroup();\n const isRunning = groupStatus === 'running';\n const { scrollRef, contentRef } = useStickToBottom({\n initial: 'instant',\n resize: 'instant',\n });\n\n return (\n <CollapsibleContent\n ref={isRunning ? scrollRef : undefined}\n className={cn('mt-2', isRunning && 'max-h-64 overflow-y-auto')}\n >\n <div ref={isRunning ? contentRef : undefined}>\n {children ??\n items.map(({ segment }, segmentIndex) => {\n const key = `${messageId}-${getSegmentKey(segment, segmentIndex)}-${segment.kind}`;\n if (segment.kind === 'tool') {\n return <Segment.Tool key={key} segment={segment} />;\n }\n if (segment.kind === 'reasoning') {\n return <Segment.Reasoning key={key} segment={segment} />;\n }\n if (segment.kind === 'dynamic-tool') {\n return <Segment.DynamicTool key={key} segment={segment} />;\n }\n return null;\n })}\n </div>\n </CollapsibleContent>\n );\n}\n\nfunction CompactTrajectorySegment({\n item,\n textClassName = 'my-4',\n}: {\n item: CompactTrajectorySegmentItem;\n textClassName?: string;\n}) {\n const { elements } = useMessagesContext();\n const { segment } = item;\n\n if (segment.kind === 'text') {\n const visibleParts = segment.parts.filter(\n ({ part }) => !isCommentaryTextPart(part),\n );\n if (visibleParts.length === 0) return null;\n return (\n <Segment.Text\n segment={{ ...segment, parts: visibleParts }}\n elements={elements}\n className={textClassName}\n />\n );\n }\n if (segment.kind === 'file') return <Segment.File segment={segment} />;\n if (segment.kind === 'source') return <Segment.Source segment={segment} />;\n if (segment.kind === 'tool') return <Segment.Tool segment={segment} />;\n if (segment.kind === 'reasoning') {\n return <Segment.Reasoning segment={segment} />;\n }\n if (segment.kind === 'dynamic-tool') {\n return <Segment.DynamicTool segment={segment} />;\n }\n return null;\n}\n\nexport const CompactTrajectory = {\n Group: CompactTrajectoryGroup,\n GroupTrigger: CompactTrajectoryGroupTrigger,\n GroupTitle: CompactTrajectoryGroupTitle,\n GroupChevron: CompactTrajectoryGroupChevron,\n GroupDetail: CompactTrajectoryGroupDetail,\n GroupContent: CompactTrajectoryGroupContent,\n Segment: CompactTrajectorySegment,\n};\n\nfunction CompactThinking() {\n const status = useMessagesStatus();\n const { messages } = useMessagesContext();\n const { debugMode } = useAgent();\n const latestMessage = messages[messages.length - 1];\n\n if (\n status !== 'ready' &&\n status !== 'error' &&\n hasCurrentCompactNodeGroup(latestMessage, debugMode)\n ) {\n return null;\n }\n\n return <TrajectoryThinking />;\n}\n\nconst CompactAssistantContent = memo(function CompactAssistantContent({\n className,\n}: {\n className?: string;\n}) {\n const items = useTrajectoryItems();\n\n return (\n <div className={className}>\n {items.map((item) =>\n item.kind === 'group' ? (\n <CompactTrajectoryGroup key={item.key} group={item}>\n <CompactTrajectoryGroupTrigger>\n <CompactTrajectoryGroupTitle>\n <CompactTrajectoryGroupChevron />\n </CompactTrajectoryGroupTitle>\n <CompactTrajectoryGroupDetail />\n </CompactTrajectoryGroupTrigger>\n <CompactTrajectoryGroupContent />\n </CompactTrajectoryGroup>\n ) : (\n <CompactTrajectorySegment key={item.key} item={item} />\n ),\n )}\n </div>\n );\n});\n\nexport const CompactMessages = {\n Root: MessagesRoot,\n List: MessagesList,\n Item: MessagesItem,\n UserBubble: MessagesUserBubble,\n AssistantContent: CompactAssistantContent,\n Actions: MessagesActions,\n CopyAction: CopyAssistantMessageAction,\n RegenerateAction: RegenerateAction,\n CopyDebugJsonAction: CopyAssistantMessageJsonAction,\n Thinking: CompactThinking,\n Error: MessagesError,\n};\n","import type { ReasoningUIPart, ToolUIPart, UIMessage } from 'ai';\nimport { isStaticToolUIPart } from 'ai';\nimport { AlertCircle } from 'lucide-react';\nimport { type ReactNode, memo, useState } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nimport { TextShimmer } from '../../../components/text-shimmer.tsx';\nimport { DynamicToolDebug } from '../../../components/tool-debug.tsx';\nimport { Response } from '../../../elements/Response.tsx';\nimport {\n isActiveClientInputTool,\n resolveToolEntry,\n} from '../../../tools/helpers.ts';\nimport { useAgent } from '../../agent-context.tsx';\nimport {\n AssistantTextPart,\n MessageAttachmentPart,\n ToolPartContent,\n useShowDebug,\n} from '../../message-parts.tsx';\nimport {\n useMessageItem,\n useMessagesContext,\n useMessagesStatus,\n} from '../messages-context.ts';\nimport { ToolLabelInline } from '../tool-label.tsx';\nimport { CollapsibleDisclosure } from './collapsible-disclosure.tsx';\nimport {\n CopyAssistantMessageAction,\n CopyAssistantMessageJsonAction,\n MessagesActions,\n RegenerateAction,\n} from './message-actions.tsx';\nimport { MessagesError } from './messages-error.tsx';\nimport { MessagesItem, MessagesList, MessagesRoot } from './messages-shell.tsx';\nimport { thinking } from './thinking-hint.ts';\nimport { MessagesUserBubble } from './user-message.tsx';\n\nfunction ErrorPill({\n message,\n className,\n}: {\n message: ReactNode;\n className?: string;\n}) {\n return (\n <div\n className={cn(\n 'text-destructive/90 bg-destructive/10 flex items-start gap-2 rounded-md px-3 py-2 text-sm',\n className,\n )}\n >\n <AlertCircle className=\"text-destructive mt-0.5 size-4 shrink-0\" />\n <span>{message}</span>\n </div>\n );\n}\n\nfunction StaticToolPart({ part }: { part: ToolUIPart }) {\n const config = useAgent();\n const { toolEntry } = resolveToolEntry(part, config.registry);\n\n if (toolEntry && isActiveClientInputTool(toolEntry, part.state)) {\n const label = toolEntry.label?.(part);\n if (!label) return null;\n\n const Icon = label.icon;\n const firstArg = label.args ? Object.values(label.args)[0] : undefined;\n\n return (\n <div className=\"text-muted-foreground flex items-center text-xs\">\n {Icon && <Icon className=\"size-3.5\" />}\n <span className=\"ms-2 font-mono\">{label.name}</span>\n {firstArg && <span className=\"truncate\">({firstArg})</span>}\n </div>\n );\n }\n\n const label = toolEntry?.label?.(part);\n\n return (\n <>\n {label && <ToolLabelInline label={label} part={part} />}\n {label?.isError && label.detail && <ErrorPill message={label.detail} />}\n <ToolPartContent part={part} />\n </>\n );\n}\n\nfunction ReasoningPart({ part }: { part: ReasoningUIPart }) {\n const [isOpen, setIsOpen] = useState(false);\n return (\n <div\n data-copy-exclude=\"assistant-snapshot\"\n className=\"bg-muted/30 prose max-w-auto prose-sm text-muted-foreground border-border mb-4 w-full min-w-full rounded-lg p-3\"\n >\n <CollapsibleDisclosure\n label=\"Reasoning\"\n open={isOpen}\n onOpenChange={setIsOpen}\n className=\"text-xs\"\n triggerClassName=\"w-full gap-x-2 text-sm hover:opacity-80\"\n contentClassName=\"mt-2\"\n >\n <Response mode=\"static\">{part.text}</Response>\n </CollapsibleDisclosure>\n </div>\n );\n}\n\nfunction AssistantPart({ part }: { part: UIMessage['parts'][number] }) {\n const { elements } = useMessagesContext();\n const debugMode = useShowDebug();\n\n if (part.type === 'text') {\n if (part.providerMetadata?.openai?.phase === 'commentary') {\n return null;\n }\n return <AssistantTextPart text={part.text} elements={elements} />;\n }\n\n if (part.type === 'dynamic-tool') {\n return debugMode ? <DynamicToolDebug part={part} /> : null;\n }\n\n if (isStaticToolUIPart(part)) {\n return <StaticToolPart part={part} />;\n }\n\n if (part.type === 'reasoning' && part.text) {\n return debugMode ? <ReasoningPart part={part} /> : null;\n }\n\n if (part.type === 'file') {\n return (\n <MessageAttachmentPart\n filename={part.filename}\n mediaType={part.mediaType}\n url={part.url}\n />\n );\n }\n\n return null;\n}\n\nconst MessagesAssistantContent = memo(function MessagesAssistantContent({\n className,\n}: {\n className?: string;\n}) {\n const { message } = useMessageItem();\n\n return (\n <div className={cn('flex-1 space-y-3', className)}>\n {message.parts.map((part, partIndex) => (\n <AssistantPart key={`${message.id}-${partIndex}`} part={part} />\n ))}\n </div>\n );\n});\n\nfunction ThinkingIndicator({\n className,\n label,\n}: {\n className?: string;\n label?: string;\n}) {\n const displayText = label\n ? label\n .split('\\n')\n .filter((line) => line.trim())\n .pop() || 'Thinking...'\n : 'Thinking...';\n\n return (\n <div role=\"status\" className={cn('flex items-start', className)}>\n <TextShimmer className=\"text-muted-foreground line-clamp-2 text-sm\">\n {displayText}\n </TextShimmer>\n </div>\n );\n}\n\nfunction MessagesThinking() {\n const status = useMessagesStatus();\n const { messages } = useMessagesContext();\n const thinkingHint = thinking(status, messages[messages.length - 1]);\n\n if (!thinkingHint) return null;\n\n return <ThinkingIndicator label={thinkingHint} className=\"mt-2\" />;\n}\n\nexport const Messages = {\n Root: MessagesRoot,\n List: MessagesList,\n Item: MessagesItem,\n UserBubble: MessagesUserBubble,\n AssistantContent: MessagesAssistantContent,\n Thinking: MessagesThinking,\n Error: MessagesError,\n Actions: MessagesActions,\n CopyAction: CopyAssistantMessageAction,\n RegenerateAction,\n CopyDebugJsonAction: CopyAssistantMessageJsonAction,\n};\n","import { useEffect, useState } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nconst spinners = {\n braille: {\n frames: ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'],\n interval: 80,\n },\n pulse: {\n frames: [\n '⠁',\n '⠉',\n '⠋',\n '⠛',\n '⠟',\n '⠿',\n '⡿',\n '⣿',\n '⡿',\n '⠿',\n '⠟',\n '⠛',\n '⠋',\n '⠉',\n '⠁',\n '⠀',\n ],\n interval: 80,\n },\n clock: {\n frames: ['⠁', '⠈', '⠐', '⠠', '⢀', '⡀', '⠄', '⠂'],\n interval: 100,\n },\n limerence: {\n frames: ['⠁', '⠃', '⠇', '⡇', '⣇', '⣇', '⣆', '⣄', '⣀', '⢀', '⠀'],\n interval: 100,\n },\n} as const;\n\ntype SpinnerVariant = keyof typeof spinners;\n\nfunction UnicodeSpinner({\n className,\n variant = 'braille',\n ...props\n}: Omit<React.ComponentProps<'span'>, 'children'> & {\n variant?: SpinnerVariant;\n}) {\n const { frames, interval } = spinners[variant];\n const [frameIndex, setFrameIndex] = useState(0);\n\n useEffect(() => {\n const mq = window.matchMedia('(prefers-reduced-motion: reduce)');\n if (mq.matches) return;\n\n const timer = setInterval(() => {\n setFrameIndex((i) => (i + 1) % frames.length);\n }, interval);\n return () => clearInterval(timer);\n }, [frames.length, interval]);\n\n return (\n <span\n role=\"status\"\n aria-label=\"Loading\"\n className={cn('inline-block', className)}\n {...props}\n >\n {frames[frameIndex]}\n </span>\n );\n}\n\nexport { UnicodeSpinner };\nexport type { SpinnerVariant };\n","import type { ToolUIPart } from 'ai';\nimport { BanIcon } from 'lucide-react';\nimport { type ReactNode, use } from 'react';\n\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n cn,\n} from '@deepagents/react-shadcn';\n\nimport type { ToolLabel } from '../../../tools/registry.ts';\nimport { UnicodeSpinner } from '../../../ui/UnicodeSpinner.tsx';\nimport { ToolSegmentMarkerContext } from '../segments/index.tsx';\nimport { ToolLabelBlock } from '../tool-label.tsx';\nimport { TimelineDot } from './timeline-dot.tsx';\nimport { TimelineItem } from './timeline-item.tsx';\n\nfunction TimelineIconMarker({\n Icon,\n isLast,\n isLoading,\n aborted,\n state,\n isError,\n}: {\n Icon: NonNullable<ToolLabel['icon']>;\n isLast: boolean;\n isLoading: boolean;\n aborted: boolean;\n state?: ToolUIPart['state'];\n isError: boolean;\n}) {\n return (\n <div className=\"absolute top-0 left-0 flex h-full flex-col items-center\">\n {isLoading ? (\n <UnicodeSpinner className=\"text-muted-foreground z-10 shrink-0 text-sm\" />\n ) : aborted ? (\n <BanIcon className=\"text-destructive z-10 size-3.5 shrink-0\" />\n ) : (\n <Icon\n className={cn(\n 'z-10 size-3.5 shrink-0',\n state === 'output-error' || isError\n ? 'text-destructive'\n : 'text-muted-foreground',\n )}\n />\n )}\n\n {!isLast && <span className=\"bg-border w-px flex-1\" />}\n </div>\n );\n}\n\nfunction TimelineRow({\n isLast,\n label,\n state,\n aborted,\n children,\n}: {\n isLast: boolean;\n label?: ToolLabel;\n state?: ToolUIPart['state'];\n aborted?: boolean;\n children: ReactNode;\n}) {\n const toolMarker = use(ToolSegmentMarkerContext);\n const effectiveLabel = label ?? toolMarker?.label;\n const effectiveState = state ?? toolMarker?.state;\n const effectiveAborted = aborted ?? toolMarker?.aborted ?? false;\n\n const Icon = effectiveLabel?.icon;\n const isLoading =\n !!effectiveState &&\n !effectiveAborted &&\n effectiveState !== 'output-available' &&\n effectiveState !== 'output-error';\n\n const marker = Icon ? (\n <TimelineIconMarker\n Icon={Icon}\n isLast={isLast}\n isLoading={isLoading}\n aborted={effectiveAborted}\n state={effectiveState}\n isError={effectiveLabel?.isError ?? false}\n />\n ) : (\n <TimelineDot isLast={isLast} />\n );\n\n return (\n <TimelineItem marker={marker}>\n <div className={cn('min-w-0 flex-1', isLast ? '' : 'pb-3.5')}>\n {children}\n </div>\n </TimelineItem>\n );\n}\n\nfunction TimelineDisclosure({\n label,\n state,\n part,\n defaultOpen = false,\n children,\n}: {\n label: ToolLabel;\n state?: ToolUIPart['state'];\n part?: ToolUIPart;\n defaultOpen?: boolean;\n children: ReactNode;\n}) {\n return (\n <Collapsible\n defaultOpen={defaultOpen}\n className=\"flex min-w-0 flex-1 flex-col\"\n >\n <CollapsibleTrigger className=\"cursor-pointer\">\n <ToolLabelBlock label={label} state={state} part={part} />\n </CollapsibleTrigger>\n <CollapsibleContent>{children}</CollapsibleContent>\n </Collapsible>\n );\n}\n\nexport const Timeline = {\n Item: TimelineRow,\n Disclosure: TimelineDisclosure,\n};\n","import { Lightbulb } from 'lucide-react';\nimport { memo, useMemo } from 'react';\n\nimport { useIsAssistantSnapshotRender } from '../../../copy/assistant-snapshot.tsx';\nimport { useAgent } from '../../agent-context.tsx';\nimport { useShowDebug } from '../../message-parts.tsx';\nimport { useMessageItem, useMessagesContext } from '../messages-context.ts';\nimport { Segment } from '../segments/index.tsx';\nimport {\n buildMessageTrajectorySegments,\n getSegmentKey,\n shouldShowConnector,\n} from '../trajectory-segments.ts';\nimport {\n CopyAssistantMessageAction,\n CopyAssistantMessageJsonAction,\n MessagesActions,\n RegenerateAction,\n} from './message-actions.tsx';\nimport { MessagesError } from './messages-error.tsx';\nimport { MessagesItem, MessagesList, MessagesRoot } from './messages-shell.tsx';\nimport { Timeline } from './timeline.tsx';\nimport { TrajectoryThinking } from './trajectory-thinking.tsx';\nimport { MessagesUserBubble } from './user-message.tsx';\n\nconst TimelinedAssistantContent = memo(function TimelinedAssistantContent({\n className,\n}: {\n className?: string;\n}) {\n const { message } = useMessageItem();\n const { elements } = useMessagesContext();\n const { debugMode } = useAgent();\n const showDebug = useShowDebug();\n const isSnapshotRender = useIsAssistantSnapshotRender();\n const segments = useMemo(\n () => buildMessageTrajectorySegments(message.parts),\n [message.parts],\n );\n\n return (\n <div className={className}>\n {segments.map((segment, segmentIndex) => {\n const key = `${message.id}-${getSegmentKey(segment, segmentIndex)}-${segment.kind}`;\n\n if (segment.kind === 'text') {\n return (\n <Segment.Text\n key={key}\n segment={segment}\n elements={elements}\n className=\"my-4\"\n />\n );\n }\n if (segment.kind === 'file') {\n return <Segment.File key={key} segment={segment} />;\n }\n if (segment.kind === 'source') {\n return <Segment.Source key={key} segment={segment} />;\n }\n if (segment.kind === 'dynamic-tool') {\n if (!showDebug) return null;\n // Connector quirk preserved: dynamic-tool visibility passes `true`.\n const isLast = !shouldShowConnector(segments, segmentIndex, true);\n return (\n <Timeline.Item key={key} isLast={isLast}>\n <Segment.DynamicTool segment={segment} />\n </Timeline.Item>\n );\n }\n if (segment.kind === 'reasoning') {\n if (isSnapshotRender) return null;\n if (segment.part.type !== 'reasoning') return null;\n const isLast = !shouldShowConnector(\n segments,\n segmentIndex,\n debugMode,\n );\n const label = {\n name: 'Reasoning',\n icon: Lightbulb,\n args: { text: [...segment.part.text].slice(0, 60).join('') },\n };\n return (\n <Timeline.Item key={key} isLast={isLast} label={label}>\n <Timeline.Disclosure label={label}>\n <Segment.Reasoning segment={segment} />\n </Timeline.Disclosure>\n </Timeline.Item>\n );\n }\n if (segment.kind === 'tool') {\n const isLast = !shouldShowConnector(\n segments,\n segmentIndex,\n debugMode,\n );\n return (\n <Segment.Tool key={key} segment={segment}>\n <Timeline.Item isLast={isLast}>\n <Segment.ToolDisclosure />\n </Timeline.Item>\n </Segment.Tool>\n );\n }\n return null;\n })}\n </div>\n );\n});\n\nexport const TimelinedMessages = {\n Root: MessagesRoot,\n List: MessagesList,\n Item: MessagesItem,\n UserBubble: MessagesUserBubble,\n AssistantContent: TimelinedAssistantContent,\n Actions: MessagesActions,\n CopyAction: CopyAssistantMessageAction,\n RegenerateAction: RegenerateAction,\n CopyDebugJsonAction: CopyAssistantMessageJsonAction,\n Thinking: TrajectoryThinking,\n Error: MessagesError,\n};\n","import { Paperclip, Plus } from 'lucide-react';\nimport type { ComponentProps } from 'react';\n\nimport {\n Composer,\n type ComposerAttachFilesProps,\n type ComposerAttachmentsProps,\n type ComposerContentProps,\n type ComposerEditorProps,\n type ComposerRootProps,\n type ComposerToolbarProps,\n useComposer,\n} from '@deepagents/react-input/browser';\nimport { cn } from '@deepagents/react-shadcn';\n\nimport { useAgentMeta } from '../chat/agent-context.tsx';\nimport { ChatActionButton } from './ChatAction.tsx';\n\nfunction ChatComposerProvider({ className, ...props }: ComposerRootProps) {\n const { hasSubmitted } = useAgentMeta();\n return (\n <Composer.Root\n hasInteracted={hasSubmitted}\n className={cn(\n 'bg-background sticky bottom-0 rounded-t-2xl border-0 **:data-[slot=composer-editor]:!min-h-15',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ChatComposerRoot({ className, ...props }: ComponentProps<'div'>) {\n return (\n <div\n className={cn(\n 'border-border bg-card focus-within:border-primary/80 focus-within:ring-primary/15 relative rounded-2xl border',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ChatComposerContent({ className, ...props }: ComposerContentProps) {\n return (\n <Composer.Content\n className={cn('space-y-1 px-3.5 pt-3', className)}\n {...props}\n />\n );\n}\n\nfunction ChatComposerEditor({ className, ...props }: ComposerEditorProps) {\n return (\n <Composer.Editor\n className={cn(\n '!min-h-15 !rounded-none !border-0 !bg-transparent !shadow-none **:data-[slot=composer-editor]:!p-0 **:data-[slot=composer-placeholder]:!p-0',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ChatComposerAttachments({\n className,\n ...props\n}: ComposerAttachmentsProps) {\n return (\n <Composer.Attachments className={cn('pb-1.5', className)} {...props} />\n );\n}\n\nfunction ChatComposerToolbar({ className, ...props }: ComposerToolbarProps) {\n return (\n <Composer.Toolbar className={cn('p-1.5 pt-0', className)} {...props} />\n );\n}\n\nfunction ChatComposerAttachFiles(props: ComposerAttachFilesProps) {\n return (\n <Composer.AttachFiles\n aria-label=\"Attach files\"\n render={<ChatActionButton icon={<Paperclip className=\"size-4\" />} />}\n {...props}\n />\n );\n}\n\nfunction ChatComposerCommandButton() {\n const { actions, meta } = useComposer('ChatComposer.CommandButton');\n\n return (\n <ChatActionButton\n data-command-button\n icon={<Plus className=\"size-4\" />}\n aria-label=\"Toggle command menu\"\n aria-expanded={meta.activePopup?.trigger === '/'}\n onClick={(event) => {\n event.stopPropagation();\n actions.toggleSlashMenu();\n }}\n />\n );\n}\n\nexport const ChatComposer = {\n Provider: ChatComposerProvider,\n Root: ChatComposerRoot,\n Popup: Composer.Popup,\n Content: ChatComposerContent,\n Attachments: ChatComposerAttachments,\n Editor: ChatComposerEditor,\n Error: Composer.Error,\n Toolbar: ChatComposerToolbar,\n CommandButton: ChatComposerCommandButton,\n AttachFiles: ChatComposerAttachFiles,\n};\n","import type { Ref, TextareaHTMLAttributes } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\ntype ChatTextareaProps = TextareaHTMLAttributes<HTMLTextAreaElement> & {\n ref?: Ref<HTMLTextAreaElement>;\n};\n\nexport function ChatTextarea({ className, ref, ...props }: ChatTextareaProps) {\n return (\n <div className=\"relative w-full\">\n <textarea\n className={cn(\n 'border-input bg-background flex w-full rounded-md border px-3 py-2 text-sm',\n 'transition-all duration-200 ease-in-out',\n 'placeholder:text-muted-foreground',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n ref={ref}\n {...props}\n />\n </div>\n );\n}\n","import { ListPlus, Trash2 } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { PersistedPromptText } from '@deepagents/react-input/browser';\nimport { cn } from '@deepagents/react-shadcn';\n\nfunction MessageQueueRoot({\n children,\n className,\n}: {\n children: ReactNode;\n className?: string;\n}) {\n return (\n <div\n className={cn(\n 'border-border flex flex-col border-b px-2 py-1.5',\n className,\n )}\n >\n {children}\n </div>\n );\n}\n\nfunction MessageQueueItem({\n children,\n className,\n}: {\n children: ReactNode;\n className?: string;\n}) {\n return (\n <div className={cn('flex items-center gap-2 px-2 py-1.5', className)}>\n {children}\n </div>\n );\n}\n\nfunction MessageQueueIcon({ className }: { className?: string }) {\n return (\n <ListPlus\n className={cn('text-muted-foreground size-3.5 shrink-0', className)}\n />\n );\n}\n\nfunction MessageQueueText({\n children,\n className,\n}: {\n children: ReactNode;\n className?: string;\n}) {\n return (\n <span className={cn('min-w-0 flex-1 truncate text-sm', className)}>\n {typeof children === 'string' ? (\n <PersistedPromptText text={children} />\n ) : (\n children\n )}\n </span>\n );\n}\n\nfunction MessageQueueRemove({\n onClick,\n className,\n}: {\n onClick: () => void;\n className?: string;\n}) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n 'text-muted-foreground hover:text-foreground shrink-0 rounded p-1 transition-colors',\n className,\n )}\n aria-label=\"Remove queued message\"\n >\n <Trash2 className=\"size-3.5\" />\n </button>\n );\n}\n\nexport const MessageQueue = {\n Root: MessageQueueRoot,\n Item: MessageQueueItem,\n Icon: MessageQueueIcon,\n Text: MessageQueueText,\n Remove: MessageQueueRemove,\n};\n","import type { Variants } from 'motion/react';\nimport { motion, useAnimation } from 'motion/react';\nimport type { HTMLAttributes } from 'react';\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nexport interface ArrowUpIconHandle {\n startAnimation: () => void;\n stopAnimation: () => void;\n}\n\ninterface ArrowUpIconProps extends HTMLAttributes<HTMLDivElement> {\n size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n normal: { d: 'm5 12 7-7 7 7', translateY: 0 },\n animate: {\n d: 'm5 12 7-7 7 7',\n translateY: [0, 3, 0],\n transition: {\n duration: 0.4,\n },\n },\n};\n\nconst SECOND_PATH_VARIANTS: Variants = {\n normal: { d: 'M12 19V5' },\n animate: {\n d: ['M12 19V5', 'M12 19V10', 'M12 19V5'],\n transition: {\n duration: 0.4,\n },\n },\n};\n\nconst ArrowUpIcon = forwardRef<ArrowUpIconHandle, ArrowUpIconProps>(\n ({ onMouseEnter, onMouseLeave, className, size = 20, ...props }, ref) => {\n const controls = useAnimation();\n const isControlledRef = useRef(false);\n\n useImperativeHandle(ref, () => {\n isControlledRef.current = true;\n\n return {\n startAnimation: () => controls.start('animate'),\n stopAnimation: () => controls.start('normal'),\n };\n });\n\n const handleMouseEnter = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n if (isControlledRef.current) {\n onMouseEnter?.(e);\n } else {\n controls.start('animate');\n }\n },\n [controls, onMouseEnter],\n );\n\n const handleMouseLeave = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n if (isControlledRef.current) {\n onMouseLeave?.(e);\n } else {\n controls.start('normal');\n }\n },\n [controls, onMouseLeave],\n );\n\n return (\n <div\n className={cn(className)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n {...props}\n >\n <svg\n fill=\"none\"\n height={size}\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n width={size}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <motion.path\n animate={controls}\n d=\"m5 12 7-7 7 7\"\n variants={PATH_VARIANTS}\n />\n <motion.path\n animate={controls}\n d=\"M12 19V5\"\n variants={SECOND_PATH_VARIANTS}\n />\n </svg>\n </div>\n );\n },\n);\n\nArrowUpIcon.displayName = 'ArrowUpIcon';\n\nexport { ArrowUpIcon };\n","import {\n AnimatePresence,\n type HTMLMotionProps,\n motion,\n useReducedMotion,\n} from 'motion/react';\nimport type { ReactNode } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nimport { ArrowUpIcon } from '../ui/ArrowUpIcon.tsx';\n\ntype SubmitButtonVariant = 'send' | 'stop';\n\ntype SubmitButtonProps = Omit<HTMLMotionProps<'button'>, 'children'> & {\n variant: SubmitButtonVariant;\n};\n\nconst BUTTON_TRANSITION = { duration: 0.15, ease: [0, 0, 0.2, 1] } as const;\nconst ICON_TRANSITION = { duration: 0.12, ease: [0, 0, 0.2, 1] } as const;\n\nexport function SubmitButton({\n variant,\n className,\n disabled,\n ...rest\n}: SubmitButtonProps) {\n const reducedMotion = useReducedMotion();\n const isStop = variant === 'stop';\n\n return (\n <motion.button\n initial={reducedMotion ? false : { opacity: 0, scale: 0.9 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={reducedMotion ? undefined : { opacity: 0, scale: 0.9 }}\n transition={BUTTON_TRANSITION}\n whileHover={disabled || reducedMotion ? undefined : { scale: 1.04 }}\n whileTap={disabled || reducedMotion ? undefined : { scale: 0.96 }}\n aria-label={isStop ? 'Stop streaming' : 'Send prompt'}\n {...rest}\n disabled={disabled}\n className={cn(\n 'relative flex size-8 items-center justify-center rounded-full',\n 'bg-primary text-primary-foreground',\n 'transition-opacity hover:opacity-90 active:opacity-80',\n 'disabled:cursor-not-allowed disabled:opacity-35 disabled:hover:opacity-35',\n 'focus-visible:outline-[1.5px] focus-visible:outline-offset-[2.5px] focus-visible:outline-current',\n className,\n )}\n >\n <AnimatePresence initial={false}>\n <motion.span\n key={isStop ? 'stop' : 'send'}\n initial={reducedMotion ? false : { opacity: 0, scale: 0.7 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={reducedMotion ? undefined : { opacity: 0, scale: 0.7 }}\n transition={ICON_TRANSITION}\n className=\"absolute flex items-center justify-center\"\n >\n {isStop ? <ChatStopIcon /> : <ChatSendIcon />}\n </motion.span>\n </AnimatePresence>\n </motion.button>\n );\n}\n\nfunction ChatIcon({ children }: { children: ReactNode }) {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n {children}\n </svg>\n );\n}\n\nfunction ChatSendIcon() {\n return <ArrowUpIcon />;\n}\n\nfunction ChatStopIcon() {\n return (\n <ChatIcon>\n <rect x=\"5\" y=\"5\" width=\"10\" height=\"10\" rx=\"1.5\" />\n </ChatIcon>\n );\n}\n","import { type ToolUIPart, getToolName } from 'ai';\nimport { AlertCircle, RefreshCw } from 'lucide-react';\nimport type { ZodError } from 'zod';\n\nimport {\n Alert,\n AlertDescription,\n AlertTitle,\n Button,\n Card,\n CardContent,\n CardFooter,\n CardHeader,\n CardTitle,\n} from '@deepagents/react-shadcn';\n\nimport { useAgentMessages } from '../chat/agent-context.tsx';\n\nexport interface ToolErrorProps {\n title?: string;\n detail?: string;\n detailLabel?: string;\n part: ToolUIPart;\n error: ZodError;\n}\n\nexport function ToolError({\n title = 'Failed to render tool',\n detail,\n detailLabel = 'View details',\n part,\n error,\n}: ToolErrorProps) {\n const agent = useAgentMessages();\n const errorMessage = error.issues\n .map((e) => `${e.path.join('.')}: ${e.message}`)\n .join('\\n');\n return (\n <Card className=\"border-destructive/50 bg-destructive/5\">\n <CardHeader>\n <CardTitle className=\"text-destructive flex items-center gap-2\">\n <AlertCircle className=\"size-5\" />\n {title}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <Alert variant=\"destructive\">\n <AlertCircle className=\"size-4\" />\n <AlertTitle>Error</AlertTitle>\n <AlertDescription>{errorMessage}</AlertDescription>\n </Alert>\n\n {detail && (\n <details className=\"text-sm\">\n <summary className=\"text-muted-foreground hover:text-foreground cursor-pointer\">\n {detailLabel}\n </summary>\n <pre className=\"bg-muted mt-2 max-h-48 overflow-auto rounded-md p-3 text-xs\">\n <code>{detail}</code>\n </pre>\n </details>\n )}\n </CardContent>\n {\n <CardFooter>\n <Button\n variant=\"outline\"\n onClick={() => {\n const retryPrompt = [\n `The model tried to call the tool \"${getToolName(part)}\"` +\n ` with the following inputs:`,\n JSON.stringify(part.input),\n 'Please fix the inputs.',\n ];\n\n agent.addToolOutput({\n toolCallId: part.toolCallId,\n tool: getToolName(part),\n output: retryPrompt,\n state: 'output-available',\n });\n }}\n className=\"gap-2\"\n >\n <RefreshCw className=\"size-4\" />\n Ask AI to fix this\n </Button>\n </CardFooter>\n }\n </Card>\n );\n}\n","import type React from 'react';\nimport {\n type PropsWithChildren,\n createContext,\n use,\n useEffect,\n useEffectEvent,\n useRef,\n useState,\n} from 'react';\n\nimport { useAgent, useAgentStatus } from '../../chat/agent-context.tsx';\n\nexport interface Tip<C = unknown> {\n id: string;\n content: (context: C) => Promise<string>;\n cooldownSessions: number;\n isRelevant: (context: C) => Promise<boolean>;\n}\n\nexport const TipValueContext = createContext<string>('');\n\nexport function useTipValue(): string {\n return use(TipValueContext);\n}\n\nconst HISTORY_KEY = 'tips:history';\nconst SESSION_KEY = 'tips:session';\n\ntype TipHistory = Record<string, number>;\n\nfunction readHistory(): TipHistory {\n try {\n return JSON.parse(localStorage.getItem(HISTORY_KEY) ?? '{}');\n } catch {\n return {};\n }\n}\n\nfunction writeShown(tipId: string, session: number): void {\n try {\n const history = readHistory();\n history[tipId] = session;\n localStorage.setItem(HISTORY_KEY, JSON.stringify(history));\n } catch {\n /* noop */\n }\n}\n\nfunction resolveSession(chatId: string): number {\n try {\n const raw = localStorage.getItem(SESSION_KEY);\n const state: { id: string; n: number } = raw\n ? JSON.parse(raw)\n : { id: '', n: 0 };\n if (state.id !== chatId) {\n state.id = chatId;\n state.n += 1;\n localStorage.setItem(SESSION_KEY, JSON.stringify(state));\n }\n return state.n;\n } catch {\n return 0;\n }\n}\n\nfunction staleness(\n tipId: string,\n session: number,\n history: TipHistory,\n): number {\n const lastShown = history[tipId];\n if (lastShown == null) return Infinity;\n return session - lastShown;\n}\n\nasync function selectTip<C>(\n tips: Tip<C>[],\n context: C,\n session: number,\n): Promise<{ id: string; text: string } | null> {\n const history = readHistory();\n\n const flags = await Promise.all(tips.map((t) => t.isRelevant(context)));\n const relevant = tips.filter((_, i) => flags[i]);\n if (relevant.length === 0) return null;\n\n const eligible = relevant.filter(\n (t) => staleness(t.id, session, history) >= t.cooldownSessions,\n );\n\n const pool = eligible.length > 0 ? eligible : relevant;\n\n pool.sort(\n (a, b) =>\n staleness(b.id, session, history) - staleness(a.id, session, history),\n );\n\n const selected = pool[0];\n const text = await selected.content(context);\n return { id: selected.id, text };\n}\n\nexport function TipProvider<C>({\n tips,\n streaming,\n chatId,\n context,\n children,\n}: {\n tips: Tip<C>[];\n streaming: boolean;\n chatId: string;\n context: C;\n children: React.ReactNode;\n}) {\n const [session] = useState(() => resolveSession(chatId));\n const [tip, setTip] = useState('');\n const prevStreaming = useRef(false);\n const selecting = useRef(false);\n\n const pick = useEffectEvent(() => {\n if (selecting.current) return;\n selecting.current = true;\n selectTip(tips, context, session)\n .then((result) => {\n if (result) {\n setTip(result.text);\n writeShown(result.id, session);\n }\n })\n .finally(() => {\n selecting.current = false;\n });\n });\n\n useEffect(() => {\n pick();\n }, []);\n\n useEffect(() => {\n const justStarted = streaming && !prevStreaming.current;\n prevStreaming.current = streaming;\n if (!justStarted) return;\n pick();\n }, [streaming]);\n\n return <TipValueContext value={tip}>{children}</TipValueContext>;\n}\n\nexport function Tips<C>({\n tips,\n context,\n children,\n}: PropsWithChildren<{\n tips: Tip<C>[];\n context: C;\n}>) {\n const { chatId } = useAgent();\n const { status } = useAgentStatus();\n const streaming = status === 'streaming' || status === 'submitted';\n return (\n <TipProvider\n tips={tips}\n streaming={streaming}\n chatId={chatId ?? ''}\n context={context}\n >\n {children}\n </TipProvider>\n );\n}\n","import { Lightbulb } from 'lucide-react';\nimport { useEffect, useState } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nimport { TextShimmer } from '../text-shimmer.tsx';\nimport { useTipValue } from './TipProvider.tsx';\n\nconst SHIMMER_DURATION = 1.5;\n\nexport function TipLine({ className }: { className?: string }) {\n const tip = useTipValue();\n const [prevTip, setPrevTip] = useState(tip);\n const [shimmerEnabled, setShimmerEnabled] = useState(false);\n\n if (tip !== prevTip) {\n setPrevTip(tip);\n if (tip) {\n setShimmerEnabled(true);\n }\n }\n\n useEffect(() => {\n if (!shimmerEnabled) return;\n const timer = setTimeout(\n () => setShimmerEnabled(false),\n SHIMMER_DURATION * 1000,\n );\n return () => clearTimeout(timer);\n }, [shimmerEnabled]);\n\n return (\n <p\n className={cn(\n 'flex items-center justify-center gap-1.5 px-3 text-xs',\n className,\n )}\n >\n <Lightbulb className=\"size-3 shrink-0\" />\n <TextShimmer\n as=\"span\"\n enabled={shimmerEnabled}\n duration={SHIMMER_DURATION}\n >\n Tip: {tip}\n </TextShimmer>\n </p>\n );\n}\n","import { AlertCircle, RefreshCw } from 'lucide-react';\nimport * as React from 'react';\n\nimport {\n Alert,\n AlertDescription,\n AlertTitle,\n Button,\n Card,\n CardContent,\n CardFooter,\n CardHeader,\n CardTitle,\n} from '@deepagents/react-shadcn';\n\ninterface ErrorBoundaryProps {\n children: React.ReactNode;\n code: string;\n onRetry?: (errorMessage: string) => void;\n}\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n error: Error | null;\n}\n\nexport class DynamicUIErrorBoundary extends React.Component<\n ErrorBoundaryProps,\n ErrorBoundaryState\n> {\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = { hasError: false, error: null };\n }\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { hasError: true, error };\n }\n\n handleRetry = () => {\n const errorMessage = this.state.error?.message || 'Unknown error';\n this.setState({ hasError: false, error: null });\n this.props.onRetry?.(errorMessage);\n };\n\n override render() {\n if (this.state.hasError) {\n return (\n <DynamicUIError\n error={this.state.error}\n code={this.props.code}\n onRetry={this.props.onRetry ? this.handleRetry : undefined}\n />\n );\n }\n\n return this.props.children;\n }\n}\n\nexport function DynamicUIError({\n error,\n code,\n onRetry,\n}: {\n error: Error | null;\n code: string;\n onRetry?: () => void;\n}) {\n return (\n <Card className=\"border-destructive/50 bg-destructive/5\">\n <CardHeader>\n <CardTitle className=\"text-destructive flex items-center gap-2\">\n <AlertCircle className=\"size-5\" />\n Failed to render dynamic UI\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <Alert variant=\"destructive\">\n <AlertCircle className=\"size-4\" />\n <AlertTitle>Error</AlertTitle>\n <AlertDescription>\n {error?.message || 'Unknown error occurred'}\n </AlertDescription>\n </Alert>\n\n <details className=\"text-sm\">\n <summary className=\"text-muted-foreground hover:text-foreground cursor-pointer\">\n View generated code\n </summary>\n <pre className=\"bg-muted mt-2 max-h-48 overflow-auto rounded-md p-3 text-xs\">\n <code>{code}</code>\n </pre>\n </details>\n </CardContent>\n {onRetry && (\n <CardFooter>\n <Button variant=\"outline\" onClick={onRetry} className=\"gap-2\">\n <RefreshCw className=\"size-4\" />\n Ask AI to fix this\n </Button>\n </CardFooter>\n )}\n </Card>\n );\n}\n","import * as React from 'react';\n\nimport * as ShadcnComponents from '@deepagents/react-shadcn';\n\n// Only expose safe React hooks - no useRef (DOM access), no useContext (escape scope)\nconst safeReactHooks = {\n useState: React.useState,\n useEffect: React.useEffect,\n useMemo: React.useMemo,\n useCallback: React.useCallback,\n useReducer: React.useReducer,\n useId: React.useId,\n};\n\nconst safeReactUtils = {\n Fragment: React.Fragment,\n createElement: React.createElement,\n};\n\n// Create the safe scope object\nexport function createSafeScope(): Record<string, unknown> {\n return {\n // React hooks and utilities\n ...safeReactHooks,\n ...safeReactUtils,\n React: {\n ...safeReactHooks,\n ...safeReactUtils,\n },\n\n // All shadcn components\n ...ShadcnComponents,\n\n // Block dangerous globals by setting them to undefined\n window: undefined,\n document: undefined,\n localStorage: undefined,\n sessionStorage: undefined,\n fetch: undefined,\n XMLHttpRequest: undefined,\n WebSocket: undefined,\n eval: undefined,\n Function: undefined,\n setTimeout: undefined,\n setInterval: undefined,\n importScripts: undefined,\n navigator: undefined,\n location: undefined,\n history: undefined,\n console: undefined,\n alert: undefined,\n confirm: undefined,\n prompt: undefined,\n };\n}\n\nexport function getScopeKeys(): string[] {\n return Object.keys(createSafeScope());\n}\n\nexport function getScopeValues(): unknown[] {\n return Object.values(createSafeScope());\n}\n","import { transform } from 'sucrase';\n\nexport type TranspileResult =\n { success: true; code: string } | { success: false; error: string };\n\n/**\n * Strip import/export statements from code since we use eval with injected scope.\n * All dependencies (React hooks, shadcn components) are already available in scope.\n */\nfunction preprocessCode(code: string): string {\n return (\n code\n // Remove import statements (e.g., import { useState } from 'react')\n .replace(/^import\\s+.*?from\\s+['\"][^'\"]+['\"];?\\s*$/gm, '')\n // Remove side-effect imports (e.g., import 'styles.css')\n .replace(/^import\\s+['\"][^'\"]+['\"];?\\s*$/gm, '')\n // Remove \"export default Component;\" at end\n .replace(/^export\\s+default\\s+\\w+;?\\s*$/gm, '')\n // Convert \"export default function Component\" or \"export default () =>\" to just the definition\n .replace(/^export\\s+default\\s+/gm, 'const Component = ')\n .trim()\n );\n}\n\nexport function transpileJSX(code: string): TranspileResult {\n try {\n // Preprocess to remove import/export statements\n const preprocessed = preprocessCode(code);\n\n // Sucrase transforms JSX to React.createElement calls\n const result = transform(preprocessed, {\n transforms: ['jsx', 'typescript'],\n jsxRuntime: 'classic',\n production: true,\n });\n\n return {\n success: true,\n code: result.code,\n };\n } catch (error) {\n return {\n success: false,\n error:\n error instanceof Error ? error.message : 'Unknown transpilation error',\n };\n }\n}\n\n/**\n * Extract PascalCase variable/function names from code (React component convention).\n * These are candidate component names to check at runtime.\n */\nfunction extractComponentNames(code: string): string[] {\n const patterns = [\n /(?:const|let|var)\\s+([A-Z][a-zA-Z0-9]*)\\s*=/g, // const MyComponent =\n /function\\s+([A-Z][a-zA-Z0-9]*)\\s*\\(/g, // function MyComponent(\n ];\n\n const names = new Set<string>();\n for (const pattern of patterns) {\n let match;\n while ((match = pattern.exec(code)) !== null) {\n names.add(match[1]);\n }\n }\n return Array.from(names);\n}\n\n// Wrap the transpiled code to return a component\n// Dynamically detects component by finding PascalCase names in the code\nexport function wrapAsComponent(transpiledCode: string): string {\n const componentNames = extractComponentNames(transpiledCode);\n\n // Generate checks for each found PascalCase name\n const checks = componentNames\n .map((name) => `if (typeof ${name} !== 'undefined') return ${name};`)\n .join('\\n ');\n\n return `\n return (function() {\n ${transpiledCode}\n ${checks}\n return null;\n })();\n `;\n}\n","import * as React from 'react';\n\nimport { DynamicUIError, DynamicUIErrorBoundary } from './error-boundary.tsx';\nimport { getScopeKeys, getScopeValues } from './safe-scope.ts';\nimport { transpileJSX, wrapAsComponent } from './transpiler.ts';\n\ninterface DynamicRendererProps {\n code: string;\n onRetry?: (errorMessage: string) => void;\n}\n\ntype EvalResult =\n | { success: true; Component: React.ComponentType }\n | { success: false; error: string };\n\nfunction evalCode(code: string): EvalResult {\n try {\n const transpileResult = transpileJSX(code);\n\n if (!transpileResult.success) {\n return {\n success: false,\n error: `Transpilation failed: ${transpileResult.error}`,\n };\n }\n\n const wrappedCode = wrapAsComponent(transpileResult.code);\n const scopeKeys = getScopeKeys();\n const scopeValues = getScopeValues();\n\n // Create function with safe scope - dangerous globals are set to undefined\n // eslint-disable-next-line no-new-func\n const factory = new Function(...scopeKeys, wrappedCode);\n const Component = factory(...scopeValues);\n\n if (!Component) {\n return {\n success: false,\n error: 'Code must export a Component variable',\n };\n }\n\n return {\n success: true,\n Component,\n };\n } catch (error) {\n return {\n success: false,\n error:\n error instanceof Error ? error.message : 'Unknown evaluation error',\n };\n }\n}\n\nexport function DynamicRenderer({ code, onRetry }: DynamicRendererProps) {\n const result = React.useMemo(() => evalCode(code), [code]);\n\n if (!result.success) {\n return (\n <DynamicUIError\n error={new Error(result.error)}\n code={code}\n onRetry={onRetry ? () => onRetry(result.error) : undefined}\n />\n );\n }\n\n const Component = result.Component;\n\n return (\n <DynamicUIErrorBoundary code={code} onRetry={onRetry}>\n <Component />\n </DynamicUIErrorBoundary>\n );\n}\n","import type { ChatStatus, FileUIPart } from 'ai';\nimport {\n CornerDownLeftIcon,\n ImageIcon,\n Loader2Icon,\n MicIcon,\n PaperclipIcon,\n PlusIcon,\n SquareIcon,\n XIcon,\n} from 'lucide-react';\nimport { nanoid } from 'nanoid';\nimport {\n type ChangeEvent,\n type ChangeEventHandler,\n Children,\n type ClipboardEventHandler,\n type ComponentProps,\n type FormEvent,\n type FormEventHandler,\n Fragment,\n type HTMLAttributes,\n type KeyboardEventHandler,\n type PropsWithChildren,\n type ReactNode,\n type RefObject,\n createContext,\n startTransition,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport {\n Button,\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n HoverCard,\n HoverCardContent,\n HoverCardTrigger,\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupTextarea,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n cn,\n} from '@deepagents/react-shadcn';\n\n// ============================================================================\n// Provider Context & Types\n// ============================================================================\n\nexport type AttachmentsContext = {\n files: (FileUIPart & { id: string })[];\n add: (files: File[] | FileList) => void;\n remove: (id: string) => void;\n clear: () => void;\n openFileDialog: () => void;\n fileInputRef: RefObject<HTMLInputElement | null>;\n};\n\nexport type TextInputContext = {\n value: string;\n setInput: (v: string) => void;\n clear: () => void;\n};\n\nexport type PromptInputControllerProps = {\n textInput: TextInputContext;\n attachments: AttachmentsContext;\n /** INTERNAL: Allows PromptInput to register its file textInput + \"open\" callback */\n __registerFileInput: (\n ref: RefObject<HTMLInputElement | null>,\n open: () => void,\n ) => void;\n};\n\nconst PromptInputController = createContext<PromptInputControllerProps | null>(\n null,\n);\nconst ProviderAttachmentsContext = createContext<AttachmentsContext | null>(\n null,\n);\n\nexport const usePromptInputController = () => {\n const ctx = useContext(PromptInputController);\n if (!ctx) {\n throw new Error(\n 'Wrap your component inside <PromptInputProvider> to use usePromptInputController().',\n );\n }\n return ctx;\n};\n\n// Optional variants (do NOT throw). Useful for dual-mode components.\nconst useOptionalPromptInputController = () =>\n useContext(PromptInputController);\n\nexport const useProviderAttachments = () => {\n const ctx = useContext(ProviderAttachmentsContext);\n if (!ctx) {\n throw new Error(\n 'Wrap your component inside <PromptInputProvider> to use useProviderAttachments().',\n );\n }\n return ctx;\n};\n\nconst useOptionalProviderAttachments = () =>\n useContext(ProviderAttachmentsContext);\n\nexport type PromptInputProviderProps = PropsWithChildren<{\n initialInput?: string;\n}>;\n\n/**\n * Optional global provider that lifts PromptInput state outside of PromptInput.\n * If you don't use it, PromptInput stays fully self-managed.\n */\nexport function PromptInputProvider({\n initialInput: initialTextInput = '',\n children,\n}: PromptInputProviderProps) {\n // ----- textInput state\n const [textInput, setTextInput] = useState(initialTextInput);\n const clearInput = useCallback(() => setTextInput(''), []);\n\n // ----- attachments state (global when wrapped)\n const [attachmentFiles, setAttachmentFiles] = useState<\n (FileUIPart & { id: string })[]\n >([]);\n const fileInputRef = useRef<HTMLInputElement | null>(null);\n const openRef = useRef<() => void>(() => {\n // noop – replaced when provider mounts\n });\n\n const add = useCallback((files: File[] | FileList) => {\n const incoming = Array.from(files);\n if (incoming.length === 0) {\n return;\n }\n\n setAttachmentFiles((prev) =>\n prev.concat(\n incoming.map((file) => ({\n id: nanoid(),\n type: 'file' as const,\n url: URL.createObjectURL(file),\n mediaType: file.type,\n filename: file.name,\n })),\n ),\n );\n }, []);\n\n const remove = useCallback((id: string) => {\n setAttachmentFiles((prev) => {\n const found = prev.find((f) => f.id === id);\n if (found?.url) {\n URL.revokeObjectURL(found.url);\n }\n return prev.filter((f) => f.id !== id);\n });\n }, []);\n\n const clear = useCallback(() => {\n setAttachmentFiles((prev) => {\n for (const f of prev) {\n if (f.url) {\n URL.revokeObjectURL(f.url);\n }\n }\n return [];\n });\n }, []);\n\n // Keep a ref to attachments for cleanup on unmount (avoids stale closure)\n const attachmentsRef = useRef(attachmentFiles);\n // eslint-disable-next-line react-hooks/refs -- synchronous write required so unmount cleanup reads latest value\n attachmentsRef.current = attachmentFiles;\n\n // Cleanup blob URLs on unmount to prevent memory leaks\n useEffect(() => {\n return () => {\n for (const f of attachmentsRef.current) {\n if (f.url) {\n URL.revokeObjectURL(f.url);\n }\n }\n };\n }, []);\n\n const openFileDialog = useCallback(() => {\n openRef.current?.();\n }, []);\n\n const attachments = useMemo<AttachmentsContext>(\n () => ({\n files: attachmentFiles,\n add,\n remove,\n clear,\n openFileDialog,\n fileInputRef,\n }),\n [attachmentFiles, add, remove, clear, openFileDialog],\n );\n\n const __registerFileInput = useCallback(\n (ref: RefObject<HTMLInputElement | null>, open: () => void) => {\n fileInputRef.current = ref.current;\n openRef.current = open;\n },\n [],\n );\n\n const controller = useMemo<PromptInputControllerProps>(\n () => ({\n textInput: {\n value: textInput,\n setInput: setTextInput,\n clear: clearInput,\n },\n attachments,\n __registerFileInput,\n }),\n [textInput, clearInput, attachments, __registerFileInput],\n );\n\n return (\n <PromptInputController.Provider value={controller}>\n <ProviderAttachmentsContext.Provider value={attachments}>\n {children}\n </ProviderAttachmentsContext.Provider>\n </PromptInputController.Provider>\n );\n}\n\n// ============================================================================\n// Component Context & Hooks\n// ============================================================================\n\nconst LocalAttachmentsContext = createContext<AttachmentsContext | null>(null);\n\nexport const usePromptInputAttachments = () => {\n // Dual-mode: prefer provider if present, otherwise use local\n const provider = useOptionalProviderAttachments();\n const local = useContext(LocalAttachmentsContext);\n const context = provider ?? local;\n if (!context) {\n throw new Error(\n 'usePromptInputAttachments must be used within a PromptInput or PromptInputProvider',\n );\n }\n return context;\n};\n\nexport type PromptInputAttachmentProps = HTMLAttributes<HTMLDivElement> & {\n data: FileUIPart & { id: string };\n className?: string;\n};\n\nexport function PromptInputAttachment({\n data,\n className,\n ...props\n}: PromptInputAttachmentProps) {\n const attachments = usePromptInputAttachments();\n\n const filename = data.filename || '';\n\n const mediaType =\n data.mediaType?.startsWith('image/') && data.url ? 'image' : 'file';\n const isImage = mediaType === 'image';\n\n const attachmentLabel = filename || (isImage ? 'Image' : 'Attachment');\n\n return (\n <PromptInputHoverCard>\n <HoverCardTrigger\n delay={0}\n closeDelay={0}\n render={\n <div\n className={cn(\n 'group border-border hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 relative flex h-8 cursor-pointer items-center gap-1.5 rounded-md border px-1.5 text-sm font-medium transition-all select-none',\n className,\n )}\n key={data.id}\n {...props}\n />\n }\n >\n <div className=\"relative size-5 shrink-0\">\n <div className=\"bg-background absolute inset-0 flex size-5 items-center justify-center overflow-hidden rounded transition-opacity group-hover:opacity-0\">\n {isImage ? (\n <img\n alt={filename || 'attachment'}\n className=\"size-5 object-cover\"\n height={20}\n src={data.url}\n width={20}\n />\n ) : (\n <div className=\"text-muted-foreground flex size-5 items-center justify-center\">\n <PaperclipIcon className=\"size-3\" />\n </div>\n )}\n </div>\n <Button\n aria-label=\"Remove attachment\"\n className=\"absolute inset-0 size-5 cursor-pointer rounded p-0 opacity-0 transition-opacity group-hover:pointer-events-auto group-hover:opacity-100 [&>svg]:size-2.5\"\n onClick={(e) => {\n e.stopPropagation();\n attachments.remove(data.id);\n }}\n type=\"button\"\n variant=\"ghost\"\n >\n <XIcon />\n <span className=\"sr-only\">Remove</span>\n </Button>\n </div>\n\n <span className=\"flex-1 truncate\">{attachmentLabel}</span>\n </HoverCardTrigger>\n <PromptInputHoverCardContent className=\"w-auto p-2\">\n <div className=\"w-auto space-y-3\">\n {isImage && (\n <div className=\"flex max-h-96 w-96 items-center justify-center overflow-hidden rounded-md border\">\n <img\n alt={filename || 'attachment preview'}\n className=\"max-h-full max-w-full object-contain\"\n height={384}\n src={data.url}\n width={448}\n />\n </div>\n )}\n <div className=\"flex items-center gap-2.5\">\n <div className=\"min-w-0 flex-1 space-y-1 px-0.5\">\n <h4 className=\"truncate text-sm leading-none font-semibold\">\n {filename || (isImage ? 'Image' : 'Attachment')}\n </h4>\n {data.mediaType && (\n <p className=\"text-muted-foreground truncate font-mono text-xs\">\n {data.mediaType}\n </p>\n )}\n </div>\n </div>\n </div>\n </PromptInputHoverCardContent>\n </PromptInputHoverCard>\n );\n}\n\nexport type PromptInputAttachmentsProps = Omit<\n HTMLAttributes<HTMLDivElement>,\n 'children'\n> & {\n children: (attachment: FileUIPart & { id: string }) => ReactNode;\n};\n\nexport function PromptInputAttachments({\n children,\n className,\n ...props\n}: PromptInputAttachmentsProps) {\n const attachments = usePromptInputAttachments();\n\n if (!attachments.files.length) {\n return null;\n }\n\n return (\n <div\n className={cn('flex w-full flex-wrap items-center gap-2 p-3', className)}\n {...props}\n >\n {attachments.files.map((file) => (\n <Fragment key={file.id}>{children(file)}</Fragment>\n ))}\n </div>\n );\n}\n\nexport type PromptInputActionAddAttachmentsProps = ComponentProps<\n typeof DropdownMenuItem\n> & {\n label?: string;\n};\n\nexport const PromptInputActionAddAttachments = ({\n label = 'Add photos or files',\n ...props\n}: PromptInputActionAddAttachmentsProps) => {\n const attachments = usePromptInputAttachments();\n\n return (\n <DropdownMenuItem\n {...props}\n onSelect={(e) => {\n e.preventDefault();\n attachments.openFileDialog();\n }}\n >\n <ImageIcon className=\"mr-2 size-4\" /> {label}\n </DropdownMenuItem>\n );\n};\n\nexport type PromptInputMessage = {\n text: string;\n files: FileUIPart[];\n};\n\nexport type PromptInputProps = Omit<\n HTMLAttributes<HTMLFormElement>,\n 'onSubmit' | 'onError'\n> & {\n accept?: string; // e.g., \"image/*\" or leave undefined for any\n multiple?: boolean;\n // When true, accepts drops anywhere on document. Default false (opt-in).\n globalDrop?: boolean;\n // Render a hidden input with given name and keep it in sync for native form posts. Default false.\n syncHiddenInput?: boolean;\n // Minimal constraints\n maxFiles?: number;\n maxFileSize?: number; // bytes\n onError?: (err: {\n code: 'max_files' | 'max_file_size' | 'accept';\n message: string;\n }) => void;\n onSubmit: (\n message: PromptInputMessage,\n event: FormEvent<HTMLFormElement>,\n ) => void | Promise<void>;\n};\n\nexport const PromptInput = ({\n className,\n accept,\n multiple,\n globalDrop,\n syncHiddenInput,\n maxFiles,\n maxFileSize,\n onError,\n onSubmit,\n children,\n ...props\n}: PromptInputProps) => {\n // Try to use a provider controller if present\n const controller = useOptionalPromptInputController();\n const usingProvider = !!controller;\n\n // Refs\n const inputRef = useRef<HTMLInputElement | null>(null);\n const formRef = useRef<HTMLFormElement | null>(null);\n\n // ----- Local attachments (only used when no provider)\n const [items, setItems] = useState<(FileUIPart & { id: string })[]>([]);\n const files = usingProvider ? controller.attachments.files : items;\n\n // Keep a ref to files for cleanup on unmount (avoids stale closure)\n const filesRef = useRef(files);\n // eslint-disable-next-line react-hooks/refs -- synchronous write required so unmount cleanup reads latest value\n filesRef.current = files;\n\n const openFileDialogLocal = useCallback(() => {\n inputRef.current?.click();\n }, []);\n\n const matchesAccept = useCallback(\n (f: File) => {\n if (!accept || accept.trim() === '') {\n return true;\n }\n\n const patterns = accept\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean);\n\n return patterns.some((pattern) => {\n if (pattern.endsWith('/*')) {\n const prefix = pattern.slice(0, -1); // e.g: image/* -> image/\n return f.type.startsWith(prefix);\n }\n return f.type === pattern;\n });\n },\n [accept],\n );\n\n const addLocal = useCallback(\n (fileList: File[] | FileList) => {\n const incoming = Array.from(fileList);\n const accepted = incoming.filter((f) => matchesAccept(f));\n if (incoming.length && accepted.length === 0) {\n onError?.({\n code: 'accept',\n message: 'No files match the accepted types.',\n });\n return;\n }\n const withinSize = (f: File) =>\n maxFileSize ? f.size <= maxFileSize : true;\n const sized = accepted.filter(withinSize);\n if (accepted.length > 0 && sized.length === 0) {\n onError?.({\n code: 'max_file_size',\n message: 'All files exceed the maximum size.',\n });\n return;\n }\n\n setItems((prev) => {\n const capacity =\n typeof maxFiles === 'number'\n ? Math.max(0, maxFiles - prev.length)\n : undefined;\n const capped =\n typeof capacity === 'number' ? sized.slice(0, capacity) : sized;\n if (typeof capacity === 'number' && sized.length > capacity) {\n onError?.({\n code: 'max_files',\n message: 'Too many files. Some were not added.',\n });\n }\n const next: (FileUIPart & { id: string })[] = [];\n for (const file of capped) {\n next.push({\n id: nanoid(),\n type: 'file',\n url: URL.createObjectURL(file),\n mediaType: file.type,\n filename: file.name,\n });\n }\n return prev.concat(next);\n });\n },\n [matchesAccept, maxFiles, maxFileSize, onError],\n );\n\n const removeLocal = useCallback(\n (id: string) =>\n setItems((prev) => {\n const found = prev.find((file) => file.id === id);\n if (found?.url) {\n URL.revokeObjectURL(found.url);\n }\n return prev.filter((file) => file.id !== id);\n }),\n [],\n );\n\n const clearLocal = useCallback(\n () =>\n setItems((prev) => {\n for (const file of prev) {\n if (file.url) {\n URL.revokeObjectURL(file.url);\n }\n }\n return [];\n }),\n [],\n );\n\n const add = usingProvider ? controller.attachments.add : addLocal;\n const remove = usingProvider ? controller.attachments.remove : removeLocal;\n const clear = usingProvider ? controller.attachments.clear : clearLocal;\n const openFileDialog = usingProvider\n ? controller.attachments.openFileDialog\n : openFileDialogLocal;\n\n // Let provider know about our hidden file input so external menus can call openFileDialog()\n useEffect(() => {\n if (!usingProvider) return;\n controller.__registerFileInput(inputRef, () => inputRef.current?.click());\n }, [usingProvider, controller]);\n\n // Note: File input cannot be programmatically set for security reasons\n // The syncHiddenInput prop is no longer functional\n useEffect(() => {\n if (syncHiddenInput && inputRef.current && files.length === 0) {\n inputRef.current.value = '';\n }\n }, [files, syncHiddenInput]);\n\n // Attach drop handlers on nearest form and document (opt-in)\n useEffect(() => {\n const form = formRef.current;\n if (!form) return;\n if (globalDrop) return; // when global drop is on, let the document-level handler own drops\n\n const onDragOver = (e: DragEvent) => {\n if (e.dataTransfer?.types?.includes('Files')) {\n e.preventDefault();\n }\n };\n const onDrop = (e: DragEvent) => {\n if (e.dataTransfer?.types?.includes('Files')) {\n e.preventDefault();\n }\n if (e.dataTransfer?.files && e.dataTransfer.files.length > 0) {\n add(e.dataTransfer.files);\n }\n };\n form.addEventListener('dragover', onDragOver);\n form.addEventListener('drop', onDrop);\n return () => {\n form.removeEventListener('dragover', onDragOver);\n form.removeEventListener('drop', onDrop);\n };\n }, [add, globalDrop]);\n\n useEffect(() => {\n if (!globalDrop) return;\n\n const onDragOver = (e: DragEvent) => {\n if (e.dataTransfer?.types?.includes('Files')) {\n e.preventDefault();\n }\n };\n const onDrop = (e: DragEvent) => {\n if (e.dataTransfer?.types?.includes('Files')) {\n e.preventDefault();\n }\n if (e.dataTransfer?.files && e.dataTransfer.files.length > 0) {\n add(e.dataTransfer.files);\n }\n };\n document.addEventListener('dragover', onDragOver);\n document.addEventListener('drop', onDrop);\n return () => {\n document.removeEventListener('dragover', onDragOver);\n document.removeEventListener('drop', onDrop);\n };\n }, [add, globalDrop]);\n\n useEffect(\n () => () => {\n if (!usingProvider) {\n for (const f of filesRef.current) {\n if (f.url) URL.revokeObjectURL(f.url);\n }\n }\n },\n\n [usingProvider],\n );\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n if (event.currentTarget.files) {\n add(event.currentTarget.files);\n }\n // Reset input value to allow selecting files that were previously removed\n event.currentTarget.value = '';\n };\n\n const convertBlobUrlToDataUrl = async (\n url: string,\n ): Promise<string | null> => {\n try {\n const response = await fetch(url);\n const blob = await response.blob();\n return new Promise((resolve) => {\n const reader = new FileReader();\n\n reader.onloadend = () => resolve(reader.result as string);\n reader.onerror = () => resolve(null);\n reader.readAsDataURL(blob);\n });\n } catch {\n return null;\n }\n };\n\n const ctx = useMemo<AttachmentsContext>(\n () => ({\n files: files.map((item) => ({ ...item, id: item.id })),\n add,\n remove,\n clear,\n openFileDialog,\n fileInputRef: inputRef,\n }),\n [files, add, remove, clear, openFileDialog],\n );\n\n const handleSubmit: FormEventHandler<HTMLFormElement> = (event) => {\n event.preventDefault();\n\n const form = event.currentTarget;\n const text = usingProvider\n ? controller.textInput.value\n : (() => {\n const formData = new FormData(form);\n\n return (formData.get('message') as string) || '';\n })();\n\n // Reset form immediately after capturing text to avoid race condition\n // where user input during async blob conversion would be lost\n if (!usingProvider) {\n form.reset();\n }\n\n // Convert blob URLs to data URLs asynchronously\n Promise.all(\n files.map(async ({ id, ...item }) => {\n if (item.url && item.url.startsWith('blob:')) {\n const dataUrl = await convertBlobUrlToDataUrl(item.url);\n // If conversion failed, keep the original blob URL\n return {\n ...item,\n url: dataUrl ?? item.url,\n };\n }\n return item;\n }),\n )\n .then((convertedFiles: FileUIPart[]) => {\n try {\n const result = onSubmit({ text, files: convertedFiles }, event);\n\n // Handle both sync and async onSubmit\n if (result instanceof Promise) {\n result\n .then(() => {\n clear();\n if (usingProvider) {\n controller.textInput.clear();\n }\n })\n .catch(() => {\n // Don't clear on error - user may want to retry\n });\n } else {\n // Sync function completed without throwing, clear attachments\n clear();\n if (usingProvider) {\n controller.textInput.clear();\n }\n }\n } catch {\n // Don't clear on error - user may want to retry\n }\n })\n .catch(() => {\n // Don't clear on error - user may want to retry\n });\n };\n\n // Render with or without local provider\n const inner = (\n <>\n <input\n accept={accept}\n aria-label=\"Upload files\"\n className=\"hidden\"\n multiple={multiple}\n onChange={handleChange}\n ref={inputRef}\n title=\"Upload files\"\n type=\"file\"\n />\n <form\n className={cn('w-full', className)}\n onSubmit={handleSubmit}\n ref={formRef}\n {...props}\n >\n <InputGroup className=\"overflow-hidden\">{children}</InputGroup>\n </form>\n </>\n );\n\n return usingProvider ? (\n inner\n ) : (\n <LocalAttachmentsContext.Provider value={ctx}>\n {inner}\n </LocalAttachmentsContext.Provider>\n );\n};\n\nexport type PromptInputBodyProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputBody = ({\n className,\n ...props\n}: PromptInputBodyProps) => (\n <div className={cn('contents', className)} {...props} />\n);\n\nexport type PromptInputTextareaProps = ComponentProps<\n typeof InputGroupTextarea\n>;\n\nexport const PromptInputTextarea = ({\n onChange,\n className,\n placeholder = 'What would you like to know?',\n ...props\n}: PromptInputTextareaProps) => {\n const controller = useOptionalPromptInputController();\n const attachments = usePromptInputAttachments();\n const [isComposing, setIsComposing] = useState(false);\n\n const handleKeyDown: KeyboardEventHandler<HTMLTextAreaElement> = (e) => {\n if (e.key === 'Enter') {\n if (isComposing || e.nativeEvent.isComposing) {\n return;\n }\n if (e.shiftKey) {\n return;\n }\n e.preventDefault();\n\n // Check if the submit button is disabled before submitting\n const form = e.currentTarget.form;\n const submitButton = form?.querySelector<HTMLButtonElement>(\n 'button[type=\"submit\"]',\n );\n if (submitButton?.disabled) {\n return;\n }\n\n form?.requestSubmit();\n }\n\n // Remove last attachment when Backspace is pressed and textarea is empty\n if (\n e.key === 'Backspace' &&\n e.currentTarget.value === '' &&\n attachments.files.length > 0\n ) {\n e.preventDefault();\n const lastAttachment = attachments.files[attachments.files.length - 1];\n if (lastAttachment) {\n attachments.remove(lastAttachment.id);\n }\n }\n };\n\n const handlePaste: ClipboardEventHandler<HTMLTextAreaElement> = (event) => {\n const items = event.clipboardData?.items;\n\n if (!items) {\n return;\n }\n\n const files: File[] = [];\n\n for (const item of items) {\n if (item.kind === 'file') {\n const file = item.getAsFile();\n if (file) {\n files.push(file);\n }\n }\n }\n\n if (files.length > 0) {\n event.preventDefault();\n attachments.add(files);\n }\n };\n\n const controlledProps = controller\n ? {\n value: controller.textInput.value,\n onChange: (e: ChangeEvent<HTMLTextAreaElement>) => {\n controller.textInput.setInput(e.currentTarget.value);\n onChange?.(e);\n },\n }\n : {\n onChange,\n };\n\n return (\n <InputGroupTextarea\n className={cn('field-sizing-content max-h-48 min-h-16', className)}\n name=\"message\"\n onCompositionEnd={() => setIsComposing(false)}\n onCompositionStart={() => setIsComposing(true)}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n placeholder={placeholder}\n {...props}\n {...controlledProps}\n />\n );\n};\n\nexport type PromptInputHeaderProps = Omit<\n ComponentProps<typeof InputGroupAddon>,\n 'align'\n>;\n\nexport const PromptInputHeader = ({\n className,\n ...props\n}: PromptInputHeaderProps) => (\n <InputGroupAddon\n align=\"block-end\"\n className={cn('order-first flex-wrap gap-1', className)}\n {...props}\n />\n);\n\nexport type PromptInputFooterProps = Omit<\n ComponentProps<typeof InputGroupAddon>,\n 'align'\n>;\n\nexport const PromptInputFooter = ({\n className,\n ...props\n}: PromptInputFooterProps) => (\n <InputGroupAddon\n align=\"block-end\"\n className={cn('justify-between gap-1', className)}\n {...props}\n />\n);\n\nexport type PromptInputToolsProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTools = ({\n className,\n ...props\n}: PromptInputToolsProps) => (\n <div className={cn('flex items-center gap-1', className)} {...props} />\n);\n\nexport type PromptInputButtonProps = ComponentProps<typeof InputGroupButton>;\n\nexport const PromptInputButton = ({\n variant = 'ghost',\n className,\n size,\n ...props\n}: PromptInputButtonProps) => {\n const newSize =\n size ?? (Children.count(props.children) > 1 ? 'sm' : 'icon-sm');\n\n return (\n <InputGroupButton\n className={cn(className)}\n size={newSize}\n type=\"button\"\n variant={variant}\n {...props}\n />\n );\n};\n\nexport type PromptInputActionMenuProps = ComponentProps<typeof DropdownMenu>;\nexport const PromptInputActionMenu = (props: PromptInputActionMenuProps) => (\n <DropdownMenu {...props} />\n);\n\nexport type PromptInputActionMenuTriggerProps = PromptInputButtonProps;\n\nexport const PromptInputActionMenuTrigger = ({\n className,\n children,\n ...props\n}: PromptInputActionMenuTriggerProps) => (\n <DropdownMenuTrigger\n render={<PromptInputButton className={className} {...props} />}\n >\n {children ?? <PlusIcon className=\"size-4\" />}\n </DropdownMenuTrigger>\n);\n\nexport type PromptInputActionMenuContentProps = ComponentProps<\n typeof DropdownMenuContent\n>;\nexport const PromptInputActionMenuContent = ({\n className,\n ...props\n}: PromptInputActionMenuContentProps) => (\n <DropdownMenuContent align=\"start\" className={cn(className)} {...props} />\n);\n\nexport type PromptInputActionMenuItemProps = ComponentProps<\n typeof DropdownMenuItem\n>;\nexport const PromptInputActionMenuItem = ({\n className,\n ...props\n}: PromptInputActionMenuItemProps) => (\n <DropdownMenuItem className={cn(className)} {...props} />\n);\n\n// Note: Actions that perform side-effects (like opening a file dialog)\n// are provided in opt-in modules (e.g., prompt-input-attachments).\n\nexport type PromptInputSubmitProps = ComponentProps<typeof InputGroupButton> & {\n status?: ChatStatus;\n};\n\nexport const PromptInputSubmit = ({\n className,\n variant = 'default',\n size = 'icon-sm',\n status,\n children,\n ...props\n}: PromptInputSubmitProps) => {\n let Icon = <CornerDownLeftIcon className=\"size-4\" />;\n\n if (status === 'submitted') {\n Icon = <Loader2Icon className=\"size-4 animate-spin\" />;\n } else if (status === 'streaming') {\n Icon = <SquareIcon className=\"size-4\" />;\n } else if (status === 'error') {\n Icon = <XIcon className=\"size-4\" />;\n }\n\n return (\n <InputGroupButton\n aria-label=\"Submit\"\n className={cn(className)}\n size={size}\n type=\"submit\"\n variant={variant}\n {...props}\n >\n {children ?? Icon}\n </InputGroupButton>\n );\n};\n\ninterface SpeechRecognition extends EventTarget {\n continuous: boolean;\n interimResults: boolean;\n lang: string;\n start(): void;\n stop(): void;\n onstart: ((this: SpeechRecognition, ev: Event) => void) | null;\n onend: ((this: SpeechRecognition, ev: Event) => void) | null;\n onresult:\n ((this: SpeechRecognition, ev: SpeechRecognitionEvent) => void) | null;\n onerror:\n ((this: SpeechRecognition, ev: SpeechRecognitionErrorEvent) => void) | null;\n}\n\ninterface SpeechRecognitionEvent extends Event {\n results: SpeechRecognitionResultList;\n resultIndex: number;\n}\n\ntype SpeechRecognitionResultList = {\n readonly length: number;\n item(index: number): SpeechRecognitionResult;\n [index: number]: SpeechRecognitionResult;\n};\n\ntype SpeechRecognitionResult = {\n readonly length: number;\n item(index: number): SpeechRecognitionAlternative;\n [index: number]: SpeechRecognitionAlternative;\n isFinal: boolean;\n};\n\ntype SpeechRecognitionAlternative = {\n transcript: string;\n confidence: number;\n};\n\ninterface SpeechRecognitionErrorEvent extends Event {\n error: string;\n}\n\ndeclare global {\n interface Window {\n SpeechRecognition: {\n new (): SpeechRecognition;\n };\n webkitSpeechRecognition: {\n new (): SpeechRecognition;\n };\n }\n}\n\nexport type PromptInputSpeechButtonProps = ComponentProps<\n typeof PromptInputButton\n> & {\n textareaRef?: RefObject<HTMLTextAreaElement | null>;\n onTranscriptionChange?: (text: string) => void;\n};\n\nexport const PromptInputSpeechButton = ({\n className,\n textareaRef,\n onTranscriptionChange,\n ...props\n}: PromptInputSpeechButtonProps) => {\n const [isListening, setIsListening] = useState(false);\n const [recognition, setRecognition] = useState<SpeechRecognition | null>(\n null,\n );\n const recognitionRef = useRef<SpeechRecognition | null>(null);\n\n useEffect(() => {\n if (\n typeof window !== 'undefined' &&\n ('SpeechRecognition' in window || 'webkitSpeechRecognition' in window)\n ) {\n const SpeechRecognition =\n window.SpeechRecognition || window.webkitSpeechRecognition;\n const speechRecognition = new SpeechRecognition();\n\n speechRecognition.continuous = true;\n speechRecognition.interimResults = true;\n speechRecognition.lang = 'en-US';\n\n speechRecognition.onstart = () => {\n setIsListening(true);\n };\n\n speechRecognition.onend = () => {\n setIsListening(false);\n };\n\n speechRecognition.onresult = (event) => {\n let finalTranscript = '';\n\n for (let i = event.resultIndex; i < event.results.length; i++) {\n const result = event.results[i];\n if (result.isFinal) {\n finalTranscript += result[0]?.transcript ?? '';\n }\n }\n\n if (finalTranscript && textareaRef?.current) {\n const textarea = textareaRef.current;\n const currentValue = textarea.value;\n const newValue =\n currentValue + (currentValue ? ' ' : '') + finalTranscript;\n\n textarea.value = newValue;\n textarea.dispatchEvent(new Event('input', { bubbles: true }));\n onTranscriptionChange?.(newValue);\n }\n };\n\n speechRecognition.onerror = (event) => {\n console.error('Speech recognition error:', event.error);\n setIsListening(false);\n };\n\n recognitionRef.current = speechRecognition;\n startTransition(() => setRecognition(speechRecognition));\n }\n\n return () => {\n if (recognitionRef.current) {\n recognitionRef.current.stop();\n }\n };\n }, [textareaRef, onTranscriptionChange]);\n\n const toggleListening = useCallback(() => {\n if (!recognition) {\n return;\n }\n\n if (isListening) {\n recognition.stop();\n } else {\n recognition.start();\n }\n }, [recognition, isListening]);\n\n return (\n <PromptInputButton\n className={cn(\n 'relative transition-all duration-200',\n isListening && 'bg-accent text-accent-foreground animate-pulse',\n className,\n )}\n disabled={!recognition}\n onClick={toggleListening}\n {...props}\n >\n <MicIcon className=\"size-4\" />\n </PromptInputButton>\n );\n};\n\nexport type PromptInputSelectProps = ComponentProps<typeof Select>;\n\nexport const PromptInputSelect = (props: PromptInputSelectProps) => (\n <Select {...props} />\n);\n\nexport type PromptInputSelectTriggerProps = ComponentProps<\n typeof SelectTrigger\n>;\n\nexport const PromptInputSelectTrigger = ({\n className,\n ...props\n}: PromptInputSelectTriggerProps) => (\n <SelectTrigger\n className={cn(\n 'text-muted-foreground border-none bg-transparent font-medium shadow-none transition-colors',\n 'hover:bg-accent hover:text-foreground aria-expanded:bg-accent aria-expanded:text-foreground',\n className,\n )}\n {...props}\n />\n);\n\nexport type PromptInputSelectContentProps = ComponentProps<\n typeof SelectContent\n>;\n\nexport const PromptInputSelectContent = ({\n className,\n ...props\n}: PromptInputSelectContentProps) => (\n <SelectContent className={cn(className)} {...props} />\n);\n\nexport type PromptInputSelectItemProps = ComponentProps<typeof SelectItem>;\n\nexport const PromptInputSelectItem = ({\n className,\n ...props\n}: PromptInputSelectItemProps) => (\n <SelectItem className={cn(className)} {...props} />\n);\n\nexport type PromptInputSelectValueProps = ComponentProps<typeof SelectValue>;\n\nexport const PromptInputSelectValue = ({\n className,\n ...props\n}: PromptInputSelectValueProps) => (\n <SelectValue className={cn(className)} {...props} />\n);\n\nexport type PromptInputHoverCardProps = ComponentProps<typeof HoverCard>;\n\nexport const PromptInputHoverCard = (props: PromptInputHoverCardProps) => (\n <HoverCard {...props} />\n);\n\nexport type PromptInputHoverCardTriggerProps = ComponentProps<\n typeof HoverCardTrigger\n>;\n\nexport const PromptInputHoverCardTrigger = ({\n delay = 0,\n closeDelay = 0,\n ...props\n}: PromptInputHoverCardTriggerProps) => (\n <HoverCardTrigger delay={delay} closeDelay={closeDelay} {...props} />\n);\n\nexport type PromptInputHoverCardContentProps = ComponentProps<\n typeof HoverCardContent\n>;\n\nexport const PromptInputHoverCardContent = ({\n align = 'start',\n ...props\n}: PromptInputHoverCardContentProps) => (\n <HoverCardContent align={align} {...props} />\n);\n\nexport type PromptInputTabsListProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTabsList = ({\n className,\n ...props\n}: PromptInputTabsListProps) => <div className={cn(className)} {...props} />;\n\nexport type PromptInputTabProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTab = ({\n className,\n ...props\n}: PromptInputTabProps) => <div className={cn(className)} {...props} />;\n\nexport type PromptInputTabLabelProps = HTMLAttributes<HTMLHeadingElement>;\n\nexport const PromptInputTabLabel = ({\n className,\n children,\n ...props\n}: PromptInputTabLabelProps) => (\n <h3\n className={cn(\n 'text-muted-foreground mb-2 px-3 text-xs font-medium',\n className,\n )}\n {...props}\n >\n {children}\n </h3>\n);\n\nexport type PromptInputTabBodyProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTabBody = ({\n className,\n ...props\n}: PromptInputTabBodyProps) => (\n <div className={cn('space-y-1', className)} {...props} />\n);\n\nexport type PromptInputTabItemProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTabItem = ({\n className,\n ...props\n}: PromptInputTabItemProps) => (\n <div\n className={cn(\n 'hover:bg-accent flex items-center gap-2 px-3 py-2 text-xs',\n className,\n )}\n {...props}\n />\n);\n\nexport type PromptInputCommandProps = ComponentProps<typeof Command>;\n\nexport const PromptInputCommand = ({\n className,\n ...props\n}: PromptInputCommandProps) => <Command className={cn(className)} {...props} />;\n\nexport type PromptInputCommandInputProps = ComponentProps<typeof CommandInput>;\n\nexport const PromptInputCommandInput = ({\n className,\n ...props\n}: PromptInputCommandInputProps) => (\n <CommandInput className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandListProps = ComponentProps<typeof CommandList>;\n\nexport const PromptInputCommandList = ({\n className,\n ...props\n}: PromptInputCommandListProps) => (\n <CommandList className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandEmptyProps = ComponentProps<typeof CommandEmpty>;\n\nexport const PromptInputCommandEmpty = ({\n className,\n ...props\n}: PromptInputCommandEmptyProps) => (\n <CommandEmpty className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandGroupProps = ComponentProps<typeof CommandGroup>;\n\nexport const PromptInputCommandGroup = ({\n className,\n ...props\n}: PromptInputCommandGroupProps) => (\n <CommandGroup className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandItemProps = ComponentProps<typeof CommandItem>;\n\nexport const PromptInputCommandItem = ({\n className,\n ...props\n}: PromptInputCommandItemProps) => (\n <CommandItem className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandSeparatorProps = ComponentProps<\n typeof CommandSeparator\n>;\n\nexport const PromptInputCommandSeparator = ({\n className,\n ...props\n}: PromptInputCommandSeparatorProps) => (\n <CommandSeparator className={cn(className)} {...props} />\n);\n","import { useState } from 'react';\n\nexport type OnClickYieldResult = {\n loading: boolean;\n error?: unknown;\n};\n\nexport function useAsyncGenerator() {\n const [state, setState] = useState<OnClickYieldResult>({\n loading: false,\n error: null,\n });\n\n const execute = async (generator: AsyncGenerator<OnClickYieldResult>) => {\n try {\n setState({ loading: true, error: null });\n for await (const value of generator) {\n setState(value);\n }\n } catch (error) {\n setState({ loading: false, error });\n } finally {\n setState((prev) => ({ ...prev, loading: false }));\n }\n };\n\n return { ...state, execute };\n}\n","import { useCallback, useEffect, useRef } from 'react';\n\ninterface UseAutoResizeTextareaProps {\n minHeight: number;\n maxHeight?: number;\n value?: string;\n}\n\nexport function useAutoResizeTextarea({\n minHeight,\n maxHeight,\n value,\n}: UseAutoResizeTextareaProps) {\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n const adjustHeight = useCallback(\n (reset?: boolean) => {\n const textarea = textareaRef.current;\n if (!textarea) return;\n\n if (reset || !textarea.value) {\n textarea.style.height = `${minHeight}px`;\n return;\n }\n\n textarea.style.height = 'auto';\n\n const newHeight = Math.max(\n minHeight,\n Math.min(textarea.scrollHeight, maxHeight ?? Number.POSITIVE_INFINITY),\n );\n\n textarea.style.height = `${newHeight}px`;\n },\n [minHeight, maxHeight],\n );\n\n useEffect(() => {\n const textarea = textareaRef.current;\n if (textarea) {\n textarea.style.height = `${minHeight}px`;\n }\n }, [minHeight]);\n\n useEffect(() => {\n adjustHeight();\n }, [value, adjustHeight]);\n\n useEffect(() => {\n const handleResize = () => adjustHeight();\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, [adjustHeight]);\n\n return { textareaRef, adjustHeight };\n}\n","import { useEffect } from 'react';\n\ntype KeyHandler = (e: KeyboardEvent) => void;\n\ninterface UseKeyboardOptions {\n enabled?: boolean;\n handlers: Record<string, KeyHandler>;\n}\n\n/**\n * Build a normalized key string from a keyboard event.\n * Supports modifier combinations like \"ctrl+i\", \"meta+shift+k\".\n */\nfunction getKeyCombo(e: KeyboardEvent): string {\n const parts: string[] = [];\n if (e.ctrlKey) parts.push('ctrl');\n if (e.metaKey) parts.push('meta');\n if (e.altKey) parts.push('alt');\n if (e.shiftKey) parts.push('shift');\n parts.push(e.key.toLowerCase());\n return parts.join('+');\n}\n\nexport function useKeyboard({ enabled = true, handlers }: UseKeyboardOptions) {\n useEffect(() => {\n if (!enabled) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n const keyCombo = getKeyCombo(e);\n // Check for exact combo match first (e.g., \"ctrl+i\")\n let handler = handlers[keyCombo];\n // Fall back to simple key match for non-modifier shortcuts\n if (!handler) {\n handler = handlers[e.key];\n }\n if (handler) {\n e.preventDefault();\n e.stopPropagation();\n handler(e);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown, true);\n return () => document.removeEventListener('keydown', handleKeyDown, true);\n }, [enabled, handlers]);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["PendingPrefill","prompt","targetChatId","STORAGE_KEY","readPrefill","raw","sessionStorage","getItem","parsed","JSON","parse","removeItem","writePrefill","data","setItem","stringify","clearPrefill","UIMessage","UseChatHelpers","ChatStatus","UIDataTypes","UITools","ComposerDraftSource","clearPrefill","readPrefill","writePrefill","ZukhrufChatTransport","UploadFile","ChatSubmission","prompt","persistedPrompt","editableSource","metadata","Record","files","File","QueuedMessage","id","uploads","Awaited","ReturnType","PreparedSubmission","Omit","Listener","ChatHelpers","ChatManagerOptions","queueEnabled","hasSubmitted","initialMessages","enableResume","uploadFile","onResetChat","chatId","isBusy","status","ChatManager","chat","prevStatus","listeners","Set","_queue","_queueEnabled","_hasSubmitted","_initialMessages","_initialMessagesApplied","_enableResume","_resumed","pendingSubmissions","Promise","sentAwaitingStatus","constructor","options","bind","syncStatus","prev","processQueue","initialize","length","messages","setMessages","notify","resumeStream","consumePrefill","submit","submission","resolve","message","dispatch","current","then","assertCurrentChat","uploadFiles","settled","catch","undefined","all","map","file","Error","isChatBusy","crypto","randomUUID","directSubmit","sendMessage","role","parts","type","text","next","rest","queueMicrotask","removeFromQueue","filter","msg","clearQueue","queue","clearChat","setChat","stop","resetChat","nextChatId","targetChatId","prefill","getTriggeringUserMessage","toolCallId","idx","findIndex","some","p","userMsg","getLastUserMessageId","i","getLastAssistantMessage","value","subscribe","listener","add","delete","UIMessage","UseChatHelpers","UIDataTypes","UITools","ComponentRegistry","ChatHelpers","ToolCall","toolCallId","toolName","completeRenderedClientTool","chat","registry","toolCall","Promise","clientTool","startsWith","static","requiresUserInput","addToolOutput","tool","output","state","useChat","ChatOnDataCallback","ChatOnFinishCallback","ChatTransport","UIDataTypes","UIMessage","UITools","lastAssistantMessageIsCompleteWithApprovalResponses","lastAssistantMessageIsCompleteWithToolCalls","AnimatePresence","motion","React","useStickToBottom","cn","ComponentRegistry","useAgentMeta","completeRenderedClientTool","useAgentChatSetup","props","chat","id","chatId","experimental_throttle","messages","initialMessages","transport","sendAutomaticallyWhen","_temp","onToolCall","t0","toolCall","registry","onData","onFinish","options","ChatBot","$","_c","AgentScrollArea","Symbol","for","initial","scrollRef","contentRef","hasSubmitted","t1","className","t2","t3","t4","children","t5","AgentHeaderRoot","layout","type","ease","duration","displayName","AgentHeaderHero","icon","opacity","AgentHeaderTitle","AgentHeaderDescription","delay","AgentHeader","Root","Hero","Title","Description","UIMessage","UseChatHelpers","ChatOnDataCallback","ChatOnFinishCallback","ChatStatus","ChatTransport","UIDataTypes","UITools","ReactNode","createContext","useCallback","useContext","useEffect","useMemo","useRef","useState","useSyncExternalStore","ComponentRegistry","ChatManager","ChatSubmission","useAgentChatSetup","ZukhrufChatTransport","AgentConfigContextValue","chatId","registry","debugMode","toggleDebugMode","clearChat","resetChat","prompt","submit","submission","Promise","setChat","messages","getTriggeringUserMessage","toolCallId","getLastUserMessageId","stop","AgentMessagesContextValue","AgentConfigContext","undefined","AgentStatusContext","AgentMessagesContext","ChatManagerContext","AgentProvider","children","skipInitialView","debugOn","initialMessages","transport","resume","onData","onFinish","onResetChat","queueEnabled","Pick","agent","setDebugMode","prev","onResetChatRef","current","forwardResetChat","id","manager","hasSubmitted","length","enableResume","uploadFile","bind","initialize","syncStatus","status","managerMethods","configValue","messagesValue","error","useAgent","context","Error","useAgentStatus","$","_c","t0","useAgentMeta","t1","subscribe","t2","useAgentMessages","useChatManager","UIMessage","CitationSource","url","title","extractSourcesFromMessages","messages","seen","Set","sources","message","part","parts","type","has","add","push","citationIndexOf","i","findIndex","s","ChatTransport","UIMessage","UIMessageChunk","ReadOnlyChatTransport","sendMessages","Promise","ReadableStream","reject","Error","reconnectToStream","resolve","ChatStatus","ToolUIPart","useAgentStatus","isToolStateAborted","state","status","isToolAborted","part","useIsToolAborted","$","_c","t0","z","ComponentRegistry","SerializedToolRegistry","Record","inputSchema","core","JSONSchema","BaseSchema","description","serializeToolsRegistry","registry","Object","entries","reduce","acc","toolName","tool","static","toJSONSchema","io","unrepresentable","ElementType","ReactNode","cn","TextShimmerProps","children","as","className","duration","enabled","TextShimmer","t0","$","_c","t1","t2","Component","undefined","t3","t4","t5","animationDuration","t6","ChevronRight","cn","CompactDisclosureChevron","t0","$","_c","className","t1","t2","compactDisclosureTriggerClass","extra","UIMessage","Fragment","ReactNode","createContext","useContext","useMemo","useState","useStickToBottom","Collapsible","CollapsibleContent","CollapsibleTrigger","cn","TextShimmer","CompactDisclosureChevron","compactDisclosureTriggerClass","INDEX_PROGRESS_PART_TYPE","STICK_TO_BOTTOM_OPTS","initial","resize","const","IndexProgressEventType","IndexProgressEvent","type","adapter","phase","table","message","current","total","AdapterStatus","AdapterState","name","status","errorMessage","IndexState","adapters","totalAdapters","GroupedProgressEvents","byAdapter","Map","globalEvents","ProgressOpenStatus","OpenOverride","key","open","isIndexProgressPart","part","data","getIndexProgressEvents","parts","filter","map","aggregateEvents","events","byName","upsert","patch","Partial","prev","get","set","event","Array","from","values","useIndexProgressState","$","_c","t0","useProgressOpenState","resetKey","controlledOpen","onOpenChange","openOverride","setOpenOverride","isOpen","t1","next","undefined","handleOpenChange","t2","shouldHideIndexProgress","state","length","every","a","getIndexRunKey","getAdapterRunKey","includes","getBreadcrumbSegments","totalCount","isMultiAdapter","failed","find","segments","push","active","getAdapterBreadcrumbSegments","getGlobalErrorSegments","IndexProgressContextValue","IndexProgressContext","useIndexProgress","component","ctx","Error","RootProps","children","className","Root","t3","t4","t5","t6","t7","t8","Trigger","getProgressTriggerClassName","Symbol","for","ProgressBreadcrumb","isRunning","lastIdx","segment","idx","ProgressBreadcrumbSegment","index","isLast","DisclosureChevron","Content","EventRow","useGroupedProgressEvents","global","arr","EventLog","groupedEvents","containerClass","size","StickyScroll","contentClassName","scrollRef","contentRef","SingleEventLog","_temp","GroupedEventLog","_temp2","entries","_temp3","AdapterEventGroup","_temp4","PerAdapterProps","showCacheHits","PerAdapter","_temp5","globalErrorEvents","AdapterProgressItem","t9","t10","t11","t12","AdapterProgressEventLog","GlobalErrorProgressItem","IndexProgress","ChatStatus","UIMessage","createContext","use","GenAIInteractiveElement","useAgentStatus","MessagesContextValue","messages","elements","status","MessageItemContextValue","message","index","MessagesCtx","undefined","MessageItemCtx","useMessagesContext","ctx","Error","useMessagesStatus","useMessageItem","CitationSource","CitationPill","t0","$","_c","source","index","t1","title","url","t2","React","Card","CardAction","CardContent","CardDescription","CardHeader","CardTitle","cn","TablePanelRoot","forwardRef","HTMLDivElement","ComponentPropsWithoutRef","t0","ref","$","_c","className","props","t1","t2","displayName","TablePanelHeader","TablePanelHeading","TablePanelTitle","TablePanelDescription","TablePanelActions","TablePanelContent","TablePanel","Object","assign","Header","Heading","Title","Description","Actions","Content","OPENING_TAG_PATTERN","DOUBLE_QUOTED_ATTRIBUTE_PATTERN","normalizeAttributeEscapes","input","replace","tag","_match","name","value","normalizeStreamdownChildren","children","tagNames","result","_m","attrs","close","collapsed","escaped","_","v","wrapElements","nested","customSet","length","Set","isCustom","has","includes","out","i","nameEnd","test","tagName","slice","tagEnd","skipToTagEnd","findClosingTag","openTag","processedInner","innerContent","start","closeTag","end","ensureBlankLine","pos","depth","open","lt","indexOf","startsWith","gt","text","endsWith","Root","Table","LeafDirective","toString","React","ComponentProps","useMemo","remarkDirective","remarkGfm","remarkParse","AllowedTags","Block","BlockProps","ExtraProps","Streamdown","TableCopyDropdown","TableDownloadDropdown","defaultRemarkPlugins","detectTextDirection","parseMarkdownIntoBlocks","unified","SKIP","visit","buttonVariants","cn","TablePanel","normalizeStreamdownChildren","TablePanelStreamdownProps","Omit","tableActions","ReactNode","StreamdownBlockComponent","NonNullable","tablePanelTag","tablePanelAttributes","tableActionClassName","variant","size","TablePanelNode","type","data","hName","hProperties","Record","children","BlockContentMap","tablePanel","RootContentMap","tableDirectiveParser","use","SourceRange","start","end","parseMarkdownWithTableDirectives","markdown","blocks","directiveRanges","tableDirectiveRanges","length","offset","blockRanges","map","block","range","mergeWithPrevious","Set","directiveRange","foundFirstBlock","index","blockRange","entries","overlapsDirective","add","reduce","groupedBlocks","has","push","isMarkdownTableDirective","node","name","tableDirectiveBefore","undefined","previous","ranges","tree","parse","table","parent","directive","position","directiveAttribute","attribute","value","attributes","trim","tableDirectiveTextDirection","hasTableDirective","next","metadata","filter","Boolean","join","includeHtml","DefaultStreamdownBlock","props","$","_c","t0","createDirectionAwareBlock","BlockComponent","DirectionAwareBlock","content","dir","direction","t1","displayName","createTablePanelNode","title","description","Object","keys","tablePanelRemarkPlugin","panelIndex","replacedNodeCount","splice","defaultTablePanelRemarkPlugins","values","MarkdownTableContextValue","actions","controls","MarkdownTableContext","createContext","isTableActionEnabled","action","tableControls","withoutBuiltInTableControls","MarkdownTablePanelProps","className","MarkdownTablePanel","useContext","showCopy","t2","showDownload","hasMetadata","hasActions","t3","t4","t5","Symbol","for","t6","t7","TablePanelStreamdown","allowedTags","components","mode","remarkPlugins","bb0","tablePanelPlugins","tablePanelAllowedTags","tablePanelComponents","tableContext","bb1","tablePanelBlockComponent","bb2","streamdownDirection","t8","t9","t10","React","memo","cn","TablePanelStreamdown","TablePanelStreamdownProps","ResponseProps","ErrorBoundaryState","hasError","error","Error","StreamdownErrorBoundary","Component","children","ReactNode","fallback","state","getDerivedStateFromError","render","props","message","Response","t0","$","_c","className","t1","t2","displayName","useEffect","useRef","useState","useCopyFeedback","t0","$","_c","timeout","undefined","copied","setCopied","timerRef","t1","t2","Symbol","for","current","clearTimeout","t3","value","navigator","clipboard","writeText","setTimeout","copy","t4","const","CheckIcon","CopyIcon","ComponentProps","HTMLAttributes","ReactNode","createContext","useContext","Prism","SyntaxHighlighter","oneDark","oneLight","Button","cn","useCopyFeedback","CodeBlockContextType","code","CodeBlockContext","CodeBlockProps","HTMLDivElement","language","showLineNumbers","wrap","children","CodeBlock","t0","$","_c","className","props","t1","t2","undefined","t3","t4","t5","t6","Symbol","for","margin","padding","fontSize","background","color","t7","paddingRight","minWidth","t8","t10","t9","t11","t12","t13","t14","t15","t16","CodeBlockCopyButtonProps","onCopy","onError","error","Error","timeout","CodeBlockCopyButton","isCopied","copy","copyToClipboard","window","navigator","clipboard","writeText","Icon","ToolUIPart","CheckCircleIcon","ChevronDownIcon","CircleIcon","ClockIcon","WrenchIcon","XCircleIcon","ComponentProps","ReactNode","isValidElement","Badge","Collapsible","CollapsibleContent","CollapsibleTrigger","cn","CodeBlock","ToolProps","Tool","t0","$","_c","className","props","t1","t2","ToolHeaderProps","title","type","state","getStatusBadge","status","labels","Record","icons","ToolHeader","Symbol","for","t3","split","slice","join","t4","t5","t6","t7","t8","ToolContentProps","ToolContent","ToolInputProps","input","ToolInput","JSON","stringify","ToolOutputProps","output","errorText","ToolOutput","Output","t9","t10","DynamicToolUIPart","ToolUIPart","getToolName","Response","Tool","ToolContent","ToolHeader","ToolInput","ToolOutput","ToolDebug","t0","$","_c","part","t1","toolName","t2","t3","state","type","t4","input","t5","output","JSON","stringify","t6","t7","errorText","t8","t9","DynamicToolDebug","Loader2","LucideIcon","useEffect","useState","Button","Tooltip","TooltipContent","TooltipTrigger","cn","TheButtonProps","React","ComponentProps","loading","icon","ReactNode","delay","tooltip","useDelayedLoading","$","_c","isLoading","delayPassed","setDelayPassed","t0","t1","timerId","setTimeout","clearTimeout","queueMicrotask","isComponent","value","ComponentType","className","Record","render","IconRenderer","Icon","LoadingSpinner","Symbol","for","IconButtonContent","showSpinner","t2","t3","t4","t5","t6","TextButtonContent","children","t7","WithTooltip","TheButton","disabled","size","props","undefined","startsWith","isIconButton","T0","T1","COPY_EXCLUSION_ATTRIBUTE","COPY_EXCLUSION_MODES","image","assistantSnapshot","const","CopyExclusionMode","AttributeReader","getAttribute","name","ClipboardLike","write","writeText","CopyToClipboardStrategy","isAttributeReader","value","hasCopyExclusion","node","mode","attributeValue","split","includes","shouldIncludeInCopyImage","resolveCopyToClipboardStrategy","clipboard","ClipboardItem","createContext","SnapshotRenderContext","ReactNode","RefObject","createPortal","SnapshotRenderContext","waitForNextPaint","Promise","resolve","requestAnimationFrame","SnapshotRenderPortal","t0","$","_c","contentRef","children","width","t1","padding","t2","className","t3","undefined","document","t4","Symbol","for","position","top","left","pointerEvents","zIndex","t5","boxSizing","t6","body","RefObject","useCallback","useEffect","useRef","useState","CopyExclusionMode","resolveCopyToClipboardStrategy","shouldIncludeInCopyImage","CopySuccessMode","CopyImageFeedback","kind","mode","message","resolveImageBackgroundColor","element","HTMLElement","elementBackground","getComputedStyle","backgroundColor","bodyBackground","document","body","undefined","useCopyElementAsImage","elementRef","excludeMode","fallbackText","isCopying","setIsCopying","feedback","setFeedback","feedbackTimeoutRef","clearFeedbackTimeout","current","window","clearTimeout","setTimedFeedback","nextFeedback","Exclude","setTimeout","copyText","navigator","clipboard","writeText","trim","length","copyImage","Error","toBlob","blob","pixelRatio","filter","node","write","ClipboardItem","type","copy","strategy","error","UIMessage","isTextUIPart","Check","Copy","ReactNode","useCallback","useContext","useMemo","useRef","useState","cn","TheButton","COPY_EXCLUSION_MODES","SnapshotRenderContext","SnapshotRenderPortal","waitForNextPaint","useCopyElementAsImage","extractAssistantRawText","message","parts","filter","map","part","text","join","useIsAssistantSnapshotRender","AssistantSnapshot","t0","$","_c","renderContent","className","snapshotRef","showSnapshot","setShowSnapshot","t1","fallbackText","t2","elementRef","excludeMode","assistantSnapshot","copy","feedback","isCopying","t3","handleCopy","label","kind","mode","t4","t5","t6","t7","t8","t9","t10","ToolUIPart","UIMessage","isToolUIPart","ComponentRegistry","isSubagentPart","part","toolMetadata","kind","subagentDisplayName","name","displayName","resolveToolEntry","Pick","registry","toolKey","type","replace","toolEntry","isActiveClientInputTool","state","static","requiresUserInput","React","MarkdownParagraph","t0","$","_c","children","childArray","Children","toArray","hasCustomElement","some","_temp","t1","isAllCustom","length","every","_temp2","child_0","isValidElement","child","type","useMemo","assertNoReservedAttributes","MarkdownParagraph","Response","ResponseProps","GenAIInteractiveElement","InteractiveResponseProps","Omit","elements","buildStreamdownRegistry","entries","components","Record","p","allowedTags","entry","name","component","allowedAttributes","InteractiveResponse","t0","$","_c","props","t1","t2","registry","t3","ToolUIPart","Loader","Button","useAgent","useAgentMessages","ToolOutput","ToolApproval","t0","$","_c","part","addToolApprovalResponse","state","t1","title","type","slice","name","t2","t3","t4","approval","requestReason","t5","t6","id","approved","t7","t8","t9","RenderPart","registry","input","undefined","errorText","output","customRenderer","replace","Renderer","component","progress","ToolUIPart","Attachment","cn","GenAIInteractiveElement","InteractiveResponse","ToolDebug","useIsAssistantSnapshotRender","RenderPart","useAgent","useAgentStatus","SLIDE_UP_ANIMATED","animation","const","MessageAttachmentPartProps","filename","mediaType","url","ImageFilePart","t0","$","_c","t1","t2","FileAttachmentPart","name","startsWith","player","undefined","t3","Symbol","for","t4","t5","t6","MessageAttachmentPart","AssistantTextPart","text","elements","className","status","isSnapshotRender","ToolPartContent","part","showDebug","useShowDebug","debugMode","ToolUIPart","ReactNode","cn","useIsAssistantSnapshotRender","ToolLabel","isToolRunning","state","useToolActionsVisible","t0","$","_c","label","part","isSnapshotRender","t1","actions","ToolLabelInline","Icon","icon","Actions","showActions","t2","isError","t3","name","t4","t5","t6","ToolArg","value","ToolLabelBlock","children","args","Object","entries","map","_temp","detail","t7","key","ToolUIPart","UIMessage","isStaticToolUIPart","ReactNode","createContext","use","useMemo","Fragment","Collapsible","CollapsibleContent","CollapsibleTrigger","CitationPill","DynamicToolDebug","useIsAssistantSnapshotRender","Response","isActiveClientInputTool","resolveToolEntry","ToolLabel","useAgent","useAgentMessages","citationIndexOf","extractSourcesFromMessages","AssistantTextPart","MessageAttachmentPart","SLIDE_UP_ANIMATED","ToolPartContent","useShowDebug","isToolAborted","MessagesContextValue","useMessagesStatus","ToolLabelBlock","MessageTrajectorySegment","isCommentaryTextPart","part","type","providerMetadata","openai","phase","SegmentText","t0","$","_c","segment","elements","className","t1","parts","t2","t3","idx","text","map","SegmentFile","filename","mediaType","url","SegmentSource","messages","sources","t4","index","title","SegmentReasoning","status","isSnapshotRender","SegmentDynamicTool","showDebug","ToolSegmentContextValue","label","aborted","activeClientInput","defaultOpen","ToolSegmentContext","ToolSegmentMarkerContext","state","useToolSegment","context","Error","SegmentTool","children","agent","toolEntry","toolPart","registry","Symbol","for","bb0","baseLabel","name","replace","isError","detail","static","requiresUserInput","t5","t6","t7","t8","SegmentToolContent","SegmentToolDisclosure","Segment","Text","File","Source","Reasoning","DynamicTool","Tool","ToolDisclosure","ToolContent","UIMessage","isStaticToolUIPart","TimelineNodeKind","MessageTrajectorySegment","kind","parts","part","idx","classifyPart","type","text","isVisibleTrajectoryNode","segment","debugMode","shouldShowConnector","segments","segmentIndex","next","buildMessageTrajectorySegments","i","length","nodeKind","push","last","getSegmentKey","fallback","UIMessage","isToolUIPart","memo","useMemo","cn","Segment","buildMessageTrajectorySegments","getSegmentKey","MessageTrajectorySegment","getSegmentCacheKey","segment","index","prefix","kind","text","parts","map","part","type","join","error","state","errorText","preliminary","toolCallId","url","mediaType","filename","isCompletedSegment","segmentCount","NestedTrajectorySegmentProps","cacheKey","complete","NestedTrajectorySegment","t0","$","_c","t1","areNestedTrajectorySegmentPropsEqual","previous","next","NestedTrajectory","className","segments","length","t2","t3","t4","key","HTMLMotionProps","motion","React","cn","AgentActionButtonProps","Omit","icon","ReactNode","ChatActionButton","t0","$","_c","className","props","t1","Symbol","for","scale","t2","t3","t4","Braces","Check","Copy","RefreshCw","Children","ReactNode","cn","ChatActionButton","extractAssistantRawText","useCopyFeedback","useAgentMessages","useMessageItem","useMessagesContext","useMessagesStatus","useMessageComplete","index","messages","status","isLastMessage","length","isBusy","MessagesActions","t0","$","_c","className","children","complete","toArray","t1","t2","CopyAssistantMessageAction","message","copied","copy","t3","t4","t5","RegenerateAction","regenerate","id","messageId","Symbol","for","CopyAssistantMessageJsonAction","JSON","stringify","Button","Response","RetryBlock","t0","$","_c","onTryAgain","error","t1","Error","message","t2","t3","t4","MessagesError","onRetry","ChatStatus","UIMessage","useMemo","cn","GenAIInteractiveElement","MessageItemCtx","MessagesContextValue","MessagesCtx","MessagesRoot","t0","$","_c","messages","className","elements","status","children","t1","value","t2","t3","t4","t5","MessagesList","MessagesItem","message","index","ToolUIPart","isStaticToolUIPart","Activity","PropsWithChildren","useMemo","cn","useAgent","useAgentMessages","ComponentTool","ActivePendingTool","part","entry","useActivePendingToolInput","registry","agent","messages","i","length","message","role","parts","state","toolKey","type","replace","static","requiresUserInput","PendingToolInput","t0","$","_c","children","className","activeTool","Renderer","component","t1","t2","t3","toolCallId","t4","ChatStatus","UIMessage","isReasoningUIPart","isTextUIPart","isToolUIPart","thinking","status","message","role","i","parts","length","part","text","providerMetadata","openai","phase","lastPart","input","Record","candidates","candidate","value","toolCallId","TimelineDot","t0","$","_c","isLast","t1","undefined","t2","Symbol","for","t3","t4","ReactNode","cn","TimelineItem","t0","$","_c","marker","children","className","t1","t2","useActivePendingToolInput","TextShimmer","useMessagesContext","useMessagesStatus","thinking","TimelineDot","TimelineItem","TrajectoryThinking","$","_c","status","messages","activePendingTool","t0","length","t1","thinkingHint","t2","Symbol","for","t3","UIMessage","get","useMemo","formatCompactNumber","formatNullableNumber","useAgentMessages","UsageDisplay","inputTokens","outputTokens","reasoningTokens","cachedInputTokens","totalTokens","UsageTracking","assistantUsageByMessageId","Record","chatUsageSummary","TOKEN_FIELDS","USAGE_FIELD_PATHS","toFiniteToken","value","Number","isFinite","trim","length","parsed","parseUsage","source","field","path","token","some","parseMetadataUsage","metadata","record","totalUsage","usage","diffUsage","current","previous","diff","currentValue","previousValue","delta","sumUsage","usages","summed","fieldSum","hasValue","computeUsageTracking","messages","messageUsages","previousCumulativeUsage","latestCumulativeUsage","message","role","perMessageUsage","id","push","useNormalizedUsageTracking","$","_c","agent","t0","formatUsageValue","formatUsageBreakdown","parts","toLocaleString","join","DefaultChatTransport","UIMessage","z","ElementDescriptor","toDescriptor","GenAIInteractiveElement","SerializedToolRegistry","UPLOAD_FILENAME_HEADER","uploadReceiptSchema","strictObject","path","string","startsWith","name","min","mediaType","enum","size","int","nonnegative","url","ZukhrufChatTransportOptions","api","fetch","globalThis","tools","elements","AcceptedTurn","ok","sessionId","turnId","ZukhrufChatTransport","sessionsApi","request","constructor","input","init","trimTrailingSlash","descriptors","map","response","method","toUpperCase","accepted","json","isAcceptedTurn","Error","sessionApi","String","decodeURIComponent","slice","lastIndexOf","signal","cancel","catch","undefined","addEventListener","once","headers","accept","prepareSendMessagesRequest","id","messages","trigger","message","length","body","Object","keys","prepareReconnectToStreamRequest","uploadFile","file","File","type","encodeURIComponent","describeUploadFailure","receipt","safeParse","success","data","Response","Promise","summary","status","reason","failureReason","cause","code","detail","error","filter","part","join","value","replace","ChevronDown","ReactNode","Collapsible","CollapsibleContent","CollapsibleTrigger","cn","CollapsibleDisclosure","t0","$","_c","label","open","onOpenChange","children","className","triggerClassName","contentClassName","chevronClassName","t1","t2","t3","t4","t5","t6","t7","t8","t9","UIMessage","memo","useMemo","useState","UserReminderMetadata","stripReminders","PersistedPromptText","AttachmentGroup","AttachmentMedia","cn","formatUsageBreakdown","parseMetadataUsage","uploadReceiptSchema","useMessageItem","CollapsibleDisclosure","MessageMetadata","t0","$","_c","metadata","t1","t2","t3","Symbol","for","bb0","usage","t4","extractReminders","message","raw","Record","reminders","Array","isArray","filter","r","candidate","Partial","id","length","text","trim","extractUploads","uploads","flatMap","value","receipt","safeParse","success","data","ReminderItem","expanded","setExpanded","_temp","v","UserMessageReminders","open","setOpen","label","map","_temp2","UploadTile","upload","mediaType","startsWith","name","url","UserMessageAttachments","T0","t5","_temp3","t6","path","UserBubbleShell","body","undefined","UserMessageContent","rawMessage","remindersRef","rawAlias","alias","parts","part","partIndex","type","MessagesUserBubble","className","ChatStatus","ToolUIPart","UIMessage","isStaticToolUIPart","isToolUIPart","ReactNode","createContext","memo","use","useMemo","useState","useStickToBottom","Collapsible","CollapsibleContent","CollapsibleTrigger","cn","TextShimmer","isSubagentPart","resolveToolEntry","ComponentRegistry","ToolLabel","useAgent","isToolStateAborted","CompactDisclosureChevron","compactDisclosureTriggerClass","useMessageItem","useMessagesContext","useMessagesStatus","Segment","isCommentaryTextPart","MessageTrajectorySegment","buildMessageTrajectorySegments","getSegmentKey","CopyAssistantMessageAction","CopyAssistantMessageJsonAction","MessagesActions","RegenerateAction","MessagesError","MessagesItem","MessagesList","MessagesRoot","TrajectoryThinking","MessagesUserBubble","CompactNodeGroupItem","segment","CompactRenderItem","kind","segmentIndex","items","hasLaterText","firstIndex","isCompactNodeSegment","part","isVisibleCompactNode","debugMode","hasVisibleTranscriptText","parts","some","type","buildCompactRenderItems","segments","i","length","push","group","nodeSegment","slice","next","getToolPartState","undefined","state","CompactSegmentLabel","name","args","detail","isError","CompactGroupStatus","CompactGroupTone","title","chevron","getCompactGroupTone","groupStatus","labelCount","tone","isPlainRecord","value","Record","Array","isArray","shorten","maxLength","normalized","replace","trim","trimEnd","stringifyArgValue","String","getFallbackArgs","input","preferredKeys","orderedEntries","filter","key","map","const","Object","entries","includes","stringValue","keys","getFallbackDetail","getReasoningPreview","text","getSegmentLabel","registry","dynamicToolPart","toolName","toolPart","toolEntry","toolKey","label","formatArgs","entry","join","formatCallLabel","isTerminalToolState","isPendingToolState","isPendingToolAborted","status","getGroupStatus","labels","every","sentenceCase","toUpperCase","getFallbackToolCount","formatFallbackToolSummary","toolCount","isRunning","verb","getPlainCountSummary","baseTitle","getCompactSummaryText","activeHint","singleLabel","callLabel","getCompactSummaryDetail","names","from","Set","sort","a","b","getActiveGroupHint","reasoningHint","hint","hasCurrentCompactNodeGroup","message","role","item","CompactTrajectorySegmentItem","CompactTrajectoryGroupItem","CompactTrajectoryItem","useTrajectoryItems","$","_c","t0","t1","id","t2","CompactGroupContextValue","messageId","CompactGroupContext","useCompactGroup","context","Error","CompactTrajectoryGroup","children","isOpen","setIsOpen","t3","t4","CompactTrajectoryGroupTrigger","Symbol","for","useCompactGroupSummary","CompactTrajectoryGroupTitle","titleOverride","suffix","defaultTitle","t5","CompactTrajectoryGroupChevron","CompactTrajectoryGroupDetail","detailOverride","defaultDetail","CompactTrajectoryGroupContent","initial","resize","scrollRef","contentRef","t6","t7","t8","CompactTrajectorySegment","textClassName","elements","_temp","visibleParts","CompactTrajectory","Group","GroupTrigger","GroupTitle","GroupChevron","GroupDetail","GroupContent","CompactThinking","messages","latestMessage","CompactAssistantContent","className","_temp2","CompactMessages","Root","List","Item","UserBubble","AssistantContent","Actions","CopyAction","CopyDebugJsonAction","Thinking","ReasoningUIPart","ToolUIPart","UIMessage","isStaticToolUIPart","AlertCircle","ReactNode","memo","useState","cn","TextShimmer","DynamicToolDebug","Response","isActiveClientInputTool","resolveToolEntry","useAgent","AssistantTextPart","MessageAttachmentPart","ToolPartContent","useShowDebug","useMessageItem","useMessagesContext","useMessagesStatus","ToolLabelInline","CollapsibleDisclosure","CopyAssistantMessageAction","CopyAssistantMessageJsonAction","MessagesActions","RegenerateAction","MessagesError","MessagesItem","MessagesList","MessagesRoot","thinking","MessagesUserBubble","ErrorPill","t0","$","_c","message","className","t1","t2","Symbol","for","t3","t4","StaticToolPart","part","config","registry","bb0","toolEntry","state","label","Icon","icon","firstArg","args","Object","values","undefined","name","label_0","isError","detail","t5","t6","ReasoningPart","isOpen","setIsOpen","text","AssistantPart","elements","debugMode","type","providerMetadata","openai","phase","filename","mediaType","url","MessagesAssistantContent","id","parts","partIndex","map","ThinkingIndicator","split","filter","_temp","pop","displayText","line","trim","MessagesThinking","status","messages","length","thinkingHint","Messages","Root","List","Item","UserBubble","AssistantContent","Thinking","Error","Actions","CopyAction","CopyDebugJsonAction","useEffect","useState","cn","spinners","braille","frames","interval","pulse","clock","limerence","const","SpinnerVariant","UnicodeSpinner","t0","$","_c","className","props","t1","variant","undefined","frameIndex","setFrameIndex","t2","t3","length","mq","window","matchMedia","matches","timer","setInterval","i","clearInterval","t4","t5","t6","ToolUIPart","BanIcon","ReactNode","use","Collapsible","CollapsibleContent","CollapsibleTrigger","cn","ToolLabel","UnicodeSpinner","ToolSegmentMarkerContext","ToolLabelBlock","TimelineDot","TimelineItem","TimelineIconMarker","t0","$","_c","Icon","isLast","isLoading","aborted","state","isError","t1","t2","t3","TimelineRow","label","children","toolMarker","effectiveLabel","effectiveState","effectiveAborted","icon","marker","t4","t5","TimelineDisclosure","part","defaultOpen","undefined","Timeline","Item","Disclosure","Lightbulb","memo","useMemo","useIsAssistantSnapshotRender","useAgent","useShowDebug","useMessageItem","useMessagesContext","Segment","buildMessageTrajectorySegments","getSegmentKey","shouldShowConnector","CopyAssistantMessageAction","CopyAssistantMessageJsonAction","MessagesActions","RegenerateAction","MessagesError","MessagesItem","MessagesList","MessagesRoot","Timeline","TrajectoryThinking","MessagesUserBubble","TimelinedAssistantContent","t0","$","_c","className","message","elements","debugMode","showDebug","isSnapshotRender","t1","parts","segments","t2","id","map","segment","segmentIndex","key","kind","isLast","part","type","isLast_0","label","name","icon","args","text","slice","join","isLast_1","t3","TimelinedMessages","Root","List","Item","UserBubble","AssistantContent","Actions","CopyAction","CopyDebugJsonAction","Thinking","Error","Paperclip","Plus","ComponentProps","Composer","ComposerAttachFilesProps","ComposerAttachmentsProps","ComposerContentProps","ComposerEditorProps","ComposerRootProps","ComposerToolbarProps","useComposer","cn","useAgentMeta","ChatActionButton","ChatComposerProvider","t0","$","_c","className","props","hasSubmitted","t1","t2","ChatComposerRoot","ChatComposerContent","ChatComposerEditor","ChatComposerAttachments","ChatComposerToolbar","ChatComposerAttachFiles","Symbol","for","ChatComposerCommandButton","actions","meta","activePopup","trigger","event","stopPropagation","toggleSlashMenu","t3","ChatComposer","Provider","Root","Popup","Content","Attachments","Editor","Error","Toolbar","CommandButton","AttachFiles","Ref","TextareaHTMLAttributes","cn","ChatTextareaProps","HTMLTextAreaElement","ref","ChatTextarea","t0","$","_c","className","props","t1","t2","ListPlus","Trash2","ReactNode","PersistedPromptText","cn","MessageQueueRoot","t0","$","_c","children","className","t1","t2","MessageQueueItem","MessageQueueIcon","MessageQueueText","t3","MessageQueueRemove","onClick","Symbol","for","MessageQueue","Root","Item","Icon","Text","Remove","Variants","motion","useAnimation","HTMLAttributes","forwardRef","useCallback","useImperativeHandle","useRef","cn","ArrowUpIconHandle","startAnimation","stopAnimation","ArrowUpIconProps","HTMLDivElement","size","PATH_VARIANTS","normal","d","translateY","animate","transition","duration","SECOND_PATH_VARIANTS","ArrowUpIcon","t0","ref","$","_c","className","onMouseEnter","onMouseLeave","props","t1","undefined","controls","isControlledRef","t2","current","start","t3","e","handleMouseEnter","t4","e_0","handleMouseLeave","t5","t6","t7","t8","t9","displayName","AnimatePresence","HTMLMotionProps","motion","useReducedMotion","ReactNode","cn","ArrowUpIcon","SubmitButtonVariant","SubmitButtonProps","Omit","variant","BUTTON_TRANSITION","duration","ease","const","ICON_TRANSITION","SubmitButton","t0","$","_c","className","disabled","rest","reducedMotion","isStop","t1","opacity","scale","t2","Symbol","for","t3","undefined","t4","t5","t6","t7","t8","t9","t10","t11","t12","t13","t14","ChatIcon","children","ChatSendIcon","ChatStopIcon","ToolUIPart","getToolName","AlertCircle","RefreshCw","ZodError","Alert","AlertDescription","AlertTitle","Button","Card","CardContent","CardFooter","CardHeader","CardTitle","useAgentMessages","ToolErrorProps","title","detail","detailLabel","part","error","ToolError","t0","$","_c","t1","t2","undefined","agent","t3","issues","map","_temp","join","errorMessage","t4","Symbol","for","t5","t6","t7","t8","t9","t10","t11","retryPrompt","JSON","stringify","input","addToolOutput","toolCallId","tool","output","state","t12","t13","t14","e","path","message","React","PropsWithChildren","createContext","use","useEffect","useEffectEvent","useRef","useState","useAgent","useAgentStatus","Tip","id","content","context","C","Promise","cooldownSessions","isRelevant","TipValueContext","useTipValue","HISTORY_KEY","SESSION_KEY","TipHistory","Record","readHistory","JSON","parse","localStorage","getItem","writeShown","tipId","session","history","setItem","stringify","resolveSession","chatId","raw","state","n","staleness","lastShown","Infinity","selectTip","tips","text","flags","all","map","t","relevant","filter","_","i","length","eligible","pool","sort","a","b","selected","TipProvider","t0","$","_c","streaming","children","t1","tip","setTip","prevStreaming","selecting","t2","current","then","result","finally","pick","t3","t4","Symbol","for","t5","justStarted","t6","t7","Tips","status","Lightbulb","useEffect","useState","cn","TextShimmer","useTipValue","SHIMMER_DURATION","TipLine","t0","$","_c","className","tip","prevTip","setPrevTip","shimmerEnabled","setShimmerEnabled","t1","t2","timer","setTimeout","clearTimeout","t3","t4","Symbol","for","t5","t6","AlertCircle","RefreshCw","React","Alert","AlertDescription","AlertTitle","Button","Card","CardContent","CardFooter","CardHeader","CardTitle","ErrorBoundaryProps","children","ReactNode","code","onRetry","errorMessage","ErrorBoundaryState","hasError","error","Error","DynamicUIErrorBoundary","Component","constructor","props","state","getDerivedStateFromError","handleRetry","message","setState","render","undefined","DynamicUIError","t0","$","_c","t1","Symbol","for","t2","t3","t4","t5","t6","t7","t8","t9","t10","React","ShadcnComponents","safeReactHooks","useState","useEffect","useMemo","useCallback","useReducer","useId","safeReactUtils","Fragment","createElement","createSafeScope","Record","window","undefined","document","localStorage","sessionStorage","fetch","XMLHttpRequest","WebSocket","eval","Function","setTimeout","setInterval","importScripts","navigator","location","history","console","alert","confirm","prompt","getScopeKeys","Object","keys","getScopeValues","values","transform","TranspileResult","success","code","error","preprocessCode","replace","trim","transpileJSX","preprocessed","result","transforms","jsxRuntime","production","Error","message","extractComponentNames","patterns","names","Set","pattern","match","exec","add","Array","from","wrapAsComponent","transpiledCode","componentNames","checks","map","name","join","React","DynamicUIError","DynamicUIErrorBoundary","getScopeKeys","getScopeValues","transpileJSX","wrapAsComponent","DynamicRendererProps","code","onRetry","errorMessage","EvalResult","success","Component","ComponentType","error","evalCode","transpileResult","wrappedCode","scopeKeys","scopeValues","factory","Function","Error","message","DynamicRenderer","t0","$","_c","t1","result","t2","t3","undefined","t4","ChatStatus","FileUIPart","CornerDownLeftIcon","ImageIcon","Loader2Icon","MicIcon","PaperclipIcon","PlusIcon","SquareIcon","XIcon","nanoid","ChangeEvent","ChangeEventHandler","Children","ClipboardEventHandler","ComponentProps","FormEvent","FormEventHandler","Fragment","HTMLAttributes","KeyboardEventHandler","PropsWithChildren","ReactNode","RefObject","createContext","startTransition","useCallback","useContext","useEffect","useMemo","useRef","useState","Button","Command","CommandEmpty","CommandGroup","CommandInput","CommandItem","CommandList","CommandSeparator","DropdownMenu","DropdownMenuContent","DropdownMenuItem","DropdownMenuTrigger","HoverCard","HoverCardContent","HoverCardTrigger","InputGroup","InputGroupAddon","InputGroupButton","InputGroupTextarea","Select","SelectContent","SelectItem","SelectTrigger","SelectValue","cn","AttachmentsContext","files","id","add","File","FileList","remove","clear","openFileDialog","fileInputRef","HTMLInputElement","TextInputContext","value","setInput","v","PromptInputControllerProps","textInput","attachments","__registerFileInput","ref","open","PromptInputController","ProviderAttachmentsContext","usePromptInputController","ctx","Error","useOptionalPromptInputController","useProviderAttachments","useOptionalProviderAttachments","PromptInputProviderProps","initialInput","PromptInputProvider","initialTextInput","children","setTextInput","clearInput","attachmentFiles","setAttachmentFiles","openRef","incoming","Array","from","length","prev","concat","map","file","type","const","url","URL","createObjectURL","mediaType","filename","name","found","find","f","revokeObjectURL","filter","attachmentsRef","current","controller","LocalAttachmentsContext","usePromptInputAttachments","provider","local","context","PromptInputAttachmentProps","HTMLDivElement","data","className","PromptInputAttachment","t0","$","_c","props","startsWith","isImage","attachmentLabel","t1","t2","t3","t4","e","stopPropagation","t5","t6","Symbol","for","t7","t8","t9","t10","t11","t12","t13","t14","t15","t16","t17","PromptInputAttachmentsProps","Omit","attachment","PromptInputAttachments","PromptInputActionAddAttachmentsProps","label","PromptInputActionAddAttachments","undefined","preventDefault","PromptInputMessage","text","PromptInputProps","HTMLFormElement","accept","multiple","globalDrop","syncHiddenInput","maxFiles","maxFileSize","onError","err","code","message","onSubmit","event","Promise","PromptInput","usingProvider","inputRef","formRef","items","setItems","filesRef","openFileDialogLocal","click","matchesAccept","trim","patterns","split","s","Boolean","some","pattern","endsWith","prefix","slice","addLocal","fileList","accepted","withinSize","size","sized","capacity","Math","max","capped","next","push","removeLocal","clearLocal","form","onDragOver","DragEvent","dataTransfer","types","includes","onDrop","addEventListener","removeEventListener","document","handleChange","currentTarget","convertBlobUrlToDataUrl","response","fetch","blob","resolve","reader","FileReader","onloadend","result","onerror","readAsDataURL","item","handleSubmit","formData","FormData","get","reset","all","dataUrl","then","convertedFiles","catch","inner","PromptInputBodyProps","PromptInputBody","PromptInputTextareaProps","PromptInputTextarea","onChange","placeholder","isComposing","setIsComposing","key","nativeEvent","shiftKey","submitButton","querySelector","disabled","requestSubmit","lastAttachment","handleKeyDown","clipboardData","kind","getAsFile","handlePaste","e_0","controlledProps","PromptInputHeaderProps","PromptInputHeader","PromptInputFooterProps","PromptInputFooter","PromptInputToolsProps","PromptInputTools","PromptInputButtonProps","PromptInputButton","variant","count","newSize","PromptInputActionMenuProps","PromptInputActionMenu","PromptInputActionMenuTriggerProps","PromptInputActionMenuTrigger","PromptInputActionMenuContentProps","PromptInputActionMenuContent","PromptInputActionMenuItemProps","PromptInputActionMenuItem","PromptInputSubmitProps","status","PromptInputSubmit","Icon","SpeechRecognition","EventTarget","continuous","interimResults","lang","start","stop","onstart","this","ev","Event","onend","onresult","SpeechRecognitionEvent","SpeechRecognitionErrorEvent","results","SpeechRecognitionResultList","resultIndex","index","SpeechRecognitionResult","SpeechRecognitionAlternative","isFinal","transcript","confidence","error","global","Window","webkitSpeechRecognition","PromptInputSpeechButtonProps","textareaRef","HTMLTextAreaElement","onTranscriptionChange","PromptInputSpeechButton","isListening","setIsListening","recognition","setRecognition","recognitionRef","window","speechRecognition","finalTranscript","i","textarea","currentValue","newValue","dispatchEvent","bubbles","event_0","console","toggleListening","PromptInputSelectProps","PromptInputSelect","PromptInputSelectTriggerProps","PromptInputSelectTrigger","PromptInputSelectContentProps","PromptInputSelectContent","PromptInputSelectItemProps","PromptInputSelectItem","PromptInputSelectValueProps","PromptInputSelectValue","PromptInputHoverCardProps","PromptInputHoverCard","PromptInputHoverCardTriggerProps","PromptInputHoverCardTrigger","delay","closeDelay","PromptInputHoverCardContentProps","PromptInputHoverCardContent","align","PromptInputTabsListProps","PromptInputTabsList","PromptInputTabProps","PromptInputTab","PromptInputTabLabelProps","HTMLHeadingElement","PromptInputTabLabel","PromptInputTabBodyProps","PromptInputTabBody","PromptInputTabItemProps","PromptInputTabItem","PromptInputCommandProps","PromptInputCommand","PromptInputCommandInputProps","PromptInputCommandInput","PromptInputCommandListProps","PromptInputCommandList","PromptInputCommandEmptyProps","PromptInputCommandEmpty","PromptInputCommandGroupProps","PromptInputCommandGroup","PromptInputCommandItemProps","PromptInputCommandItem","PromptInputCommandSeparatorProps","PromptInputCommandSeparator","useState","OnClickYieldResult","loading","error","useAsyncGenerator","state","setState","execute","generator","AsyncGenerator","value","prev","useCallback","useEffect","useRef","UseAutoResizeTextareaProps","minHeight","maxHeight","value","useAutoResizeTextarea","t0","$","_c","textareaRef","t1","reset","textarea","current","style","height","newHeight","Math","max","min","scrollHeight","Number","POSITIVE_INFINITY","adjustHeight","t2","t3","textarea_0","t4","t5","t6","t7","handleResize","window","addEventListener","removeEventListener","t8","useEffect","KeyHandler","e","KeyboardEvent","UseKeyboardOptions","enabled","handlers","Record","getKeyCombo","parts","ctrlKey","push","metaKey","altKey","shiftKey","key","toLowerCase","join","useKeyboard","t0","$","_c","t1","undefined","t2","t3","handleKeyDown","keyCombo","handler","preventDefault","stopPropagation","document","addEventListener","removeEventListener"],"sources":["../src/lib/chat/prefill.ts","../src/lib/chat/chat-manager.ts","../src/lib/chat/client-tool-output.ts","../src/lib/chat/chat.tsx","../src/lib/chat/agent-context.tsx","../src/lib/chat/citations.ts","../src/lib/chat/read-only-transport.ts","../src/lib/chat/tool-abort.ts","../src/lib/chat/tools-schema.ts","../src/lib/components/text-shimmer.tsx","../src/lib/chat/trajectory/compact-disclosure.tsx","../src/lib/chat/trajectory/IndexProgressSegment.tsx","../src/lib/chat/trajectory/messages-context.ts","../src/lib/components/CitationPill.tsx","../src/lib/ui/TablePanel.tsx","../src/lib/elements/normalize-streamdown-children.ts","../src/lib/elements/table-panel-extension.tsx","../src/lib/elements/Response.tsx","../src/lib/ui/use-copy-feedback.ts","../src/lib/elements/CodeBlock.tsx","../src/lib/elements/Tool.tsx","../src/lib/components/tool-debug.tsx","../src/lib/ui/TheButton.tsx","../src/lib/copy/copy-image.ts","../src/lib/copy/snapshot-context.ts","../src/lib/copy/snapshot-render.tsx","../src/lib/copy/use-copy-element-as-image.ts","../src/lib/copy/assistant-snapshot.tsx","../src/lib/tools/helpers.ts","../src/lib/chat/markdown-paragraph.tsx","../src/lib/components/InteractiveResponse.tsx","../src/lib/renderers/render-part.tsx","../src/lib/chat/message-parts.tsx","../src/lib/chat/trajectory/tool-label.tsx","../src/lib/chat/trajectory/segments/index.tsx","../src/lib/chat/trajectory/trajectory-segments.ts","../src/lib/chat/trajectory/nested-trajectory.tsx","../src/lib/components/ChatAction.tsx","../src/lib/chat/trajectory/trajectories/message-actions.tsx","../src/lib/chat/trajectory/trajectories/messages-error.tsx","../src/lib/chat/trajectory/trajectories/messages-shell.tsx","../src/lib/components/PendingToolInput.tsx","../src/lib/chat/trajectory/trajectories/thinking-hint.ts","../src/lib/chat/trajectory/trajectories/timeline-dot.tsx","../src/lib/chat/trajectory/trajectories/timeline-item.tsx","../src/lib/chat/trajectory/trajectories/trajectory-thinking.tsx","../src/lib/chat/usage.ts","../src/lib/chat/zukhruf-chat-transport.ts","../src/lib/chat/trajectory/trajectories/collapsible-disclosure.tsx","../src/lib/chat/trajectory/trajectories/user-message.tsx","../src/lib/chat/trajectory/trajectories/compact-messages.tsx","../src/lib/chat/trajectory/trajectories/messages.tsx","../src/lib/ui/UnicodeSpinner.tsx","../src/lib/chat/trajectory/trajectories/timeline.tsx","../src/lib/chat/trajectory/trajectories/timelined-messages.tsx","../src/lib/components/ChatComposer.tsx","../src/lib/components/ChatTextarea.tsx","../src/lib/components/queue.tsx","../src/lib/ui/ArrowUpIcon.tsx","../src/lib/components/SubmitButton.tsx","../src/lib/components/tool-error.tsx","../src/lib/components/Tip/TipProvider.tsx","../src/lib/components/Tip/TipLine.tsx","../src/lib/dynamic-ui/error-boundary.tsx","../src/lib/dynamic-ui/safe-scope.ts","../src/lib/dynamic-ui/transpiler.ts","../src/lib/dynamic-ui/DynamicRenderer.tsx","../src/lib/elements/PromptInput.tsx","../src/lib/hooks/use-async-generator.ts","../src/lib/hooks/use-auto-resize-textarea.ts","../src/lib/hooks/use-keyboard.ts"],"sourcesContent":["export type PendingPrefill = {\n prompt: string;\n targetChatId: string;\n};\n\nconst STORAGE_KEY = 'pending-chat-prefill';\n\nexport function readPrefill(): PendingPrefill | null {\n try {\n const raw = sessionStorage.getItem(STORAGE_KEY);\n if (!raw) return null;\n const parsed: PendingPrefill = JSON.parse(raw);\n return parsed;\n } catch {\n sessionStorage.removeItem(STORAGE_KEY);\n return null;\n }\n}\n\nexport function writePrefill(data: PendingPrefill) {\n sessionStorage.setItem(STORAGE_KEY, JSON.stringify(data));\n}\n\nexport function clearPrefill() {\n sessionStorage.removeItem(STORAGE_KEY);\n}\n","import type { UIMessage, UseChatHelpers } from '@ai-sdk/react';\nimport type { ChatStatus, UIDataTypes, UITools } from 'ai';\n\nimport type { ComposerDraftSource } from '@deepagents/react-input/browser';\n\nimport { clearPrefill, readPrefill, writePrefill } from './prefill.ts';\nimport type { ZukhrufChatTransport } from './zukhruf-chat-transport.ts';\n\ntype UploadFile = ZukhrufChatTransport['uploadFile'];\n\nexport interface ChatSubmission {\n prompt: string;\n persistedPrompt: string;\n editableSource?: ComposerDraftSource;\n metadata?: Record<string, unknown>;\n /** Image files referenced from `prompt`, in `[Image #N]` order. */\n files?: File[];\n}\n\nexport interface QueuedMessage {\n id: string;\n prompt: string;\n persistedPrompt: string;\n editableSource?: ComposerDraftSource;\n metadata?: Record<string, unknown>;\n /** Receipts for the submission's files, in `[Image #N]` order; sent as `metadata.uploads`. */\n uploads?: Awaited<ReturnType<UploadFile>>[];\n}\n\ntype PreparedSubmission = Omit<QueuedMessage, 'id'>;\n\ntype Listener = () => void;\n\ntype ChatHelpers = UseChatHelpers<UIMessage<unknown, UIDataTypes, UITools>>;\n\nexport interface ChatManagerOptions {\n queueEnabled?: boolean;\n hasSubmitted?: boolean;\n initialMessages?: UIMessage[];\n enableResume?: boolean;\n uploadFile: UploadFile;\n onResetChat: (chatId: string) => void;\n}\n\nfunction isBusy(status: ChatStatus): boolean {\n return status === 'streaming' || status === 'submitted';\n}\n\nexport class ChatManager {\n private chat: ChatHelpers | null = null;\n private prevStatus: ChatStatus = 'ready';\n private listeners = new Set<Listener>();\n private _queue: QueuedMessage[] = [];\n private _queueEnabled: boolean;\n private _hasSubmitted: boolean;\n private _initialMessages?: UIMessage[];\n private _initialMessagesApplied = false;\n private _enableResume: boolean;\n private _resumed = false;\n private readonly uploadFile: UploadFile;\n /**\n * Submissions still preparing their files, in order. Later submissions chain\n * behind it so a text-only message never overtakes an image that is\n * uploading; `null` once nothing is in flight.\n */\n private pendingSubmissions: Promise<void> | null = null;\n /**\n * `sendMessage` ran but the bound helpers still report the pre-send status\n * (they are a render snapshot), so treat the chat as busy until the next\n * status sync.\n */\n private sentAwaitingStatus = false;\n\n onResetChat: (chatId: string) => void;\n\n constructor(options: ChatManagerOptions) {\n this._queueEnabled = options.queueEnabled ?? true;\n this._hasSubmitted = options.hasSubmitted ?? false;\n this._initialMessages = options.initialMessages;\n this._enableResume = options.enableResume ?? false;\n this.uploadFile = options.uploadFile;\n this.onResetChat = options.onResetChat;\n }\n\n bind(chat: ChatHelpers): void {\n this.chat = chat;\n }\n\n syncStatus(status: ChatStatus): void {\n this.sentAwaitingStatus = false;\n const prev = this.prevStatus;\n this.prevStatus = status;\n if (isBusy(prev) && status === 'ready') {\n this.processQueue();\n }\n }\n\n initialize(chatId?: string): void {\n if (!this.chat) return;\n\n if (!this._initialMessagesApplied) {\n if (\n this._initialMessages &&\n this._initialMessages.length > 0 &&\n this.chat.messages.length === 0\n ) {\n this.chat.setMessages(this._initialMessages);\n this._hasSubmitted = true;\n this.notify();\n }\n this._initialMessagesApplied = true;\n }\n\n if (this._enableResume && !this._resumed) {\n this.chat.resumeStream();\n this._resumed = true;\n }\n\n if (chatId) this.consumePrefill(chatId);\n }\n\n /**\n * Resolves once the message is queued or handed to the chat. Submissions\n * without files keep the synchronous path; rejects, sending nothing, when a\n * file cannot be prepared or uploaded.\n */\n submit(submission: ChatSubmission): Promise<void> {\n if (!this.chat) return Promise.resolve();\n const { files = [], ...message } = submission;\n if (files.length === 0 && !this.pendingSubmissions) {\n this.dispatch(message);\n return Promise.resolve();\n }\n const chatId = this.chat.id;\n const current = (this.pendingSubmissions ?? Promise.resolve()).then(\n async () => {\n if (files.length === 0) {\n this.assertCurrentChat(chatId);\n this.dispatch(message);\n return;\n }\n const uploads = await this.uploadFiles(chatId, files);\n this.assertCurrentChat(chatId);\n this.dispatch({ ...message, uploads });\n },\n );\n const settled: Promise<void> = current\n .catch(() => undefined)\n .then(() => {\n if (this.pendingSubmissions === settled) this.pendingSubmissions = null;\n });\n this.pendingSubmissions = settled;\n return current;\n }\n\n private async uploadFiles(chatId: string, files: readonly File[]) {\n return Promise.all(files.map((file) => this.uploadFile(chatId, file)));\n }\n\n private assertCurrentChat(chatId: string): void {\n if (this.chat?.id !== chatId) {\n throw new Error('The chat changed before the submission was sent.');\n }\n }\n\n private dispatch(message: PreparedSubmission): void {\n if (!this.chat) return;\n if (this._queueEnabled && this.isChatBusy()) {\n this._queue = [...this._queue, { id: crypto.randomUUID(), ...message }];\n this.notify();\n return;\n }\n this.directSubmit(message);\n }\n\n private isChatBusy(): boolean {\n return (\n this.sentAwaitingStatus ||\n (this.chat !== null && isBusy(this.chat.status))\n );\n }\n\n private directSubmit(message: PreparedSubmission): void {\n if (!this.chat) return;\n this._hasSubmitted = true;\n this.sentAwaitingStatus = true;\n this.chat.sendMessage({\n role: 'user',\n parts: [{ type: 'text', text: message.prompt }],\n metadata: message.uploads\n ? { ...message.metadata, uploads: message.uploads }\n : message.metadata,\n });\n this.notify();\n }\n\n private processQueue(): void {\n if (!this._queueEnabled || this._queue.length === 0) return;\n const [next, ...rest] = this._queue;\n this._queue = rest;\n this.notify();\n queueMicrotask(() => this.directSubmit(next));\n }\n\n removeFromQueue(id: string): void {\n const next = this._queue.filter((msg) => msg.id !== id);\n if (next.length === this._queue.length) return;\n this._queue = next;\n this.notify();\n }\n\n clearQueue(): void {\n if (this._queue.length === 0) return;\n this._queue = [];\n this.notify();\n }\n\n get queue(): readonly QueuedMessage[] {\n return this._queue;\n }\n\n get queueEnabled(): boolean {\n return this._queueEnabled;\n }\n\n clearChat(): void {\n if (!this.chat) return;\n this.chat.setMessages([]);\n this._hasSubmitted = false;\n this.clearQueue();\n this.notify();\n }\n\n setChat(messages: UIMessage[]): void {\n if (!this.chat) return;\n this.chat.setMessages(messages);\n this._hasSubmitted = messages.length > 0;\n this.notify();\n }\n\n stop(): void {\n if (!this.chat) return;\n this.chat.stop();\n }\n\n resetChat(prompt?: string): void {\n const nextChatId = crypto.randomUUID();\n if (prompt) {\n writePrefill({ prompt, targetChatId: nextChatId });\n }\n this.onResetChat(nextChatId);\n }\n\n consumePrefill(chatId: string): void {\n const prefill = readPrefill();\n if (!prefill || prefill.targetChatId !== chatId) return;\n clearPrefill();\n void this.submit({\n prompt: prefill.prompt,\n persistedPrompt: prefill.prompt,\n });\n }\n\n getTriggeringUserMessage(toolCallId: string): UIMessage | null {\n if (!this.chat) return null;\n const { messages } = this.chat;\n const idx = messages.findIndex(\n (msg) =>\n msg.role === 'assistant' &&\n msg.parts.some((p) => 'toolCallId' in p && p.toolCallId === toolCallId),\n );\n if (idx <= 0) return null;\n const userMsg = messages[idx - 1];\n return userMsg?.role === 'user' ? userMsg : null;\n }\n\n getLastUserMessageId(): string | null {\n if (!this.chat) return null;\n const { messages } = this.chat;\n for (let i = messages.length - 1; i >= 0; i--) {\n if (messages[i].role === 'user') return messages[i].id;\n }\n return null;\n }\n\n getLastAssistantMessage(): UIMessage | null {\n if (!this.chat) return null;\n const { messages } = this.chat;\n for (let i = messages.length - 1; i >= 0; i--) {\n if (messages[i].role === 'assistant') return messages[i];\n }\n return null;\n }\n\n get hasSubmitted(): boolean {\n return this._hasSubmitted;\n }\n\n set hasSubmitted(value: boolean) {\n if (this._hasSubmitted === value) return;\n this._hasSubmitted = value;\n this.notify();\n }\n\n subscribe = (listener: Listener): (() => void) => {\n this.listeners.add(listener);\n return () => {\n this.listeners.delete(listener);\n };\n };\n\n private notify(): void {\n for (const listener of this.listeners) {\n listener();\n }\n }\n}\n","import type { UIMessage, UseChatHelpers } from '@ai-sdk/react';\nimport type { UIDataTypes, UITools } from 'ai';\n\nimport type { ComponentRegistry } from '../tools/registry.ts';\n\ntype ChatHelpers = UseChatHelpers<UIMessage<unknown, UIDataTypes, UITools>>;\n\ninterface ToolCall {\n toolCallId: string;\n toolName: string;\n}\n\nexport async function completeRenderedClientTool(\n chat: ChatHelpers,\n registry: ComponentRegistry | undefined,\n toolCall: ToolCall,\n): Promise<void> {\n const clientTool = registry?.[toolCall.toolName];\n if (\n toolCall.toolName.startsWith('render') &&\n clientTool?.static === false &&\n clientTool.requiresUserInput !== true\n ) {\n await chat.addToolOutput({\n toolCallId: toolCall.toolCallId,\n tool: toolCall.toolName,\n output: 'rendered',\n state: 'output-available',\n });\n }\n}\n","import { useChat } from '@ai-sdk/react';\nimport {\n type ChatOnDataCallback,\n type ChatOnFinishCallback,\n type ChatTransport,\n type UIDataTypes,\n type UIMessage,\n type UITools,\n lastAssistantMessageIsCompleteWithApprovalResponses,\n lastAssistantMessageIsCompleteWithToolCalls,\n} from 'ai';\nimport { AnimatePresence, motion } from 'motion/react';\nimport * as React from 'react';\nimport { useStickToBottom } from 'use-stick-to-bottom';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nimport type { ComponentRegistry } from '../tools/registry.ts';\nimport { useAgentMeta } from './agent-context.tsx';\nimport { completeRenderedClientTool } from './client-tool-output.ts';\n\nexport function useAgentChatSetup(props: {\n chatId: string;\n transport: ChatTransport<UIMessage<unknown, UIDataTypes, UITools>>;\n initialMessages?: UIMessage<unknown, UIDataTypes, UITools>[];\n registry?: ComponentRegistry;\n onData?: ChatOnDataCallback<UIMessage<unknown, UIDataTypes, UITools>>;\n onFinish?: ChatOnFinishCallback<UIMessage<unknown, UIDataTypes, UITools>>;\n}) {\n const chat = useChat({\n id: props.chatId,\n experimental_throttle: 50,\n messages: props.initialMessages,\n transport: props.transport,\n sendAutomaticallyWhen: (options) =>\n lastAssistantMessageIsCompleteWithToolCalls(options) ||\n lastAssistantMessageIsCompleteWithApprovalResponses(options),\n async onToolCall({ toolCall }) {\n await completeRenderedClientTool(chat, props.registry, toolCall);\n },\n onData: props.onData,\n onFinish: props.onFinish,\n });\n\n return chat;\n}\n\nexport function ChatBot(\n props: React.PropsWithChildren<{\n className?: string;\n }>,\n) {\n return <AgentScrollArea {...props} />;\n}\n\nexport function AgentScrollArea(\n props: React.PropsWithChildren<{ className?: string }>,\n) {\n const { scrollRef, contentRef } = useStickToBottom({\n initial: 'smooth',\n });\n const { hasSubmitted } = useAgentMeta();\n return (\n <div\n id=\"agent\"\n data-slot=\"agent\"\n className={cn(\n '@container mx-auto h-full w-full overflow-y-auto',\n props.className,\n )}\n ref={scrollRef}\n >\n <div\n ref={contentRef}\n data-slot=\"content\"\n className={cn(\n 'relative mx-auto flex w-full flex-col',\n hasSubmitted ? 'min-h-full' : 'h-full justify-center',\n )}\n >\n {props.children}\n </div>\n </div>\n );\n}\n\nfunction AgentHeaderRoot(props: {\n className?: string;\n children: React.ReactNode;\n}) {\n const { hasSubmitted } = useAgentMeta();\n return (\n <motion.div\n layout\n className={cn(\n hasSubmitted\n ? cn(\n 'bg-background sticky top-0 z-10 shrink-0 space-y-1 backdrop-blur-md',\n props.className,\n )\n : 'relative flex justify-center py-4',\n )}\n transition={{\n layout: { type: 'tween', ease: [0.4, 0, 0.2, 1], duration: 0.4 },\n }}\n >\n <div className={cn(hasSubmitted ? 'text-left' : 'space-y-3 text-center')}>\n {props.children}\n </div>\n </motion.div>\n );\n}\nAgentHeaderRoot.displayName = 'AgentHeader.Root';\n\nfunction AgentHeaderHero(props: {\n icon?: React.ReactNode;\n children?: React.ReactNode;\n}) {\n const { hasSubmitted } = useAgentMeta();\n return (\n <AnimatePresence mode=\"sync\">\n {!hasSubmitted && (\n <motion.div\n key=\"agent-header-initial\"\n exit={{ opacity: 0 }}\n transition={{ duration: 0.2 }}\n >\n <h1 className=\"flex items-center justify-center gap-2 text-2xl font-medium tracking-tight\">\n {props.icon}\n {props.children ?? 'How can I help today?'}\n </h1>\n </motion.div>\n )}\n </AnimatePresence>\n );\n}\nAgentHeaderHero.displayName = 'AgentHeader.Hero';\n\nfunction AgentHeaderTitle(props: { children?: React.ReactNode }) {\n return (\n <motion.h2\n layout=\"position\"\n className=\"text-muted-foreground text-sm font-medium\"\n >\n {props.children}\n </motion.h2>\n );\n}\nAgentHeaderTitle.displayName = 'AgentHeader.Title';\n\nfunction AgentHeaderDescription(props: { children?: React.ReactNode }) {\n const { hasSubmitted } = useAgentMeta();\n return (\n <AnimatePresence>\n {hasSubmitted && props.children && (\n <motion.p\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ delay: 0.25 }}\n className=\"text-muted-foreground text-sm\"\n >\n {props.children}\n </motion.p>\n )}\n </AnimatePresence>\n );\n}\nAgentHeaderDescription.displayName = 'AgentHeader.Description';\n\nexport const AgentHeader = {\n Root: AgentHeaderRoot,\n Hero: AgentHeaderHero,\n Title: AgentHeaderTitle,\n Description: AgentHeaderDescription,\n};\n","import { type UIMessage, type UseChatHelpers } from '@ai-sdk/react';\nimport type {\n ChatOnDataCallback,\n ChatOnFinishCallback,\n ChatStatus,\n ChatTransport,\n UIDataTypes,\n UITools,\n} from 'ai';\nimport {\n type ReactNode,\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n useSyncExternalStore,\n} from 'react';\n\nimport type { ComponentRegistry } from '../tools/registry.ts';\nimport { ChatManager, type ChatSubmission } from './chat-manager.ts';\nimport { useAgentChatSetup } from './chat.tsx';\nimport type { ZukhrufChatTransport } from './zukhruf-chat-transport.ts';\n\nexport interface AgentConfigContextValue {\n chatId: string;\n registry?: ComponentRegistry;\n debugMode?: boolean;\n toggleDebugMode: () => void;\n clearChat: () => void;\n resetChat: (prompt?: string) => void;\n /** Settles once the submission is queued or sent; rejects when a file upload fails. */\n submit: (submission: ChatSubmission) => Promise<void>;\n setChat: (messages: UIMessage[]) => void;\n getTriggeringUserMessage: (toolCallId: string) => UIMessage | null;\n getLastUserMessageId: () => string | null;\n stop: () => void;\n}\n\ntype AgentMessagesContextValue = UseChatHelpers<\n UIMessage<unknown, UIDataTypes, UITools>\n>;\n\nconst AgentConfigContext = createContext<AgentConfigContextValue | undefined>(\n undefined,\n);\nconst AgentStatusContext = createContext<ChatStatus>('ready');\nconst AgentMessagesContext = createContext<\n AgentMessagesContextValue | undefined\n>(undefined);\nconst ChatManagerContext = createContext<ChatManager | null>(null);\n\nexport function AgentProvider({\n chatId,\n children,\n skipInitialView,\n debugMode: debugOn,\n registry,\n initialMessages,\n transport,\n resume,\n onData,\n onFinish,\n onResetChat,\n queueEnabled = true,\n}: {\n chatId: string;\n children: ReactNode;\n skipInitialView?: boolean;\n debugMode?: boolean;\n registry?: ComponentRegistry;\n initialMessages?: UIMessage[];\n transport: ChatTransport<UIMessage<unknown, UIDataTypes, UITools>> &\n Pick<ZukhrufChatTransport, 'uploadFile'>;\n /** Reconnect to the chat's active stream once, on mount. */\n resume?: boolean;\n /** Observes every streamed data part, transient ones included. */\n onData?: ChatOnDataCallback<UIMessage<unknown, UIDataTypes, UITools>>;\n /** Observes completion of each assistant response. */\n onFinish?: ChatOnFinishCallback<UIMessage<unknown, UIDataTypes, UITools>>;\n onResetChat: (chatId: string) => void;\n queueEnabled?: boolean;\n}) {\n const agent = useAgentChatSetup({\n chatId,\n transport,\n registry,\n initialMessages,\n onData,\n onFinish,\n });\n\n const [debugMode, setDebugMode] = useState(debugOn);\n const toggleDebugMode = useCallback(() => setDebugMode((prev) => !prev), []);\n\n const onResetChatRef = useRef(onResetChat);\n useEffect(() => {\n onResetChatRef.current = onResetChat;\n }, [onResetChat]);\n const forwardResetChat = useCallback((id: string) => {\n onResetChatRef.current(id);\n }, []);\n\n const [manager] = useState(\n // eslint-disable-next-line react-hooks/refs -- forwardResetChat reads its ref only at call time: ChatManager stores the callback (chat-manager.ts constructor) and invokes it solely from resetChat(), never during construction/render. The analyzer cannot see past the opaque constructor.\n () =>\n new ChatManager({\n queueEnabled,\n hasSubmitted: !!skipInitialView || (initialMessages?.length ?? 0) > 0,\n initialMessages,\n enableResume: resume,\n uploadFile: transport.uploadFile.bind(transport),\n onResetChat: forwardResetChat,\n }),\n );\n manager.bind(agent);\n\n useEffect(() => {\n manager.initialize(chatId);\n }, [manager, chatId]);\n\n useEffect(() => {\n manager.syncStatus(agent.status);\n }, [manager, agent.status]);\n\n const managerMethods = useMemo(\n () => ({\n clearChat: () => manager.clearChat(),\n resetChat: (prompt?: string) => manager.resetChat(prompt),\n submit: (submission: ChatSubmission) => manager.submit(submission),\n setChat: (messages: UIMessage[]) => manager.setChat(messages),\n getTriggeringUserMessage: (id: string) =>\n manager.getTriggeringUserMessage(id),\n getLastUserMessageId: () => manager.getLastUserMessageId(),\n stop: () => manager.stop(),\n }),\n [manager],\n );\n\n const configValue = useMemo<AgentConfigContextValue>(\n () => ({\n chatId,\n registry,\n debugMode,\n toggleDebugMode,\n ...managerMethods,\n }),\n [chatId, registry, debugMode, toggleDebugMode, managerMethods],\n );\n\n // useChat() returns a new object every render, but its fields (messages, status, error)\n // are from useSyncExternalStore — referentially stable when unchanged. Methods (sendMessage,\n // setMessages, etc.) are stable chatRef.current accessors. So memoizing on the three\n // changing fields is safe: cached object's methods still point to the same Chat instance.\n const messagesValue = useMemo(\n () => agent,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [agent.messages, agent.status, agent.error],\n );\n\n return (\n <ChatManagerContext value={manager}>\n <AgentConfigContext.Provider value={configValue}>\n <AgentStatusContext.Provider value={agent.status}>\n <AgentMessagesContext.Provider value={messagesValue}>\n {children}\n </AgentMessagesContext.Provider>\n </AgentStatusContext.Provider>\n </AgentConfigContext.Provider>\n </ChatManagerContext>\n );\n}\n\nexport function useAgent() {\n const context = useContext(AgentConfigContext);\n if (context === undefined) {\n throw new Error('useAgent must be used within an AgentProvider');\n }\n return context;\n}\n\nexport function useAgentStatus() {\n const status = useContext(AgentStatusContext);\n return { status };\n}\n\nexport function useAgentMeta() {\n const manager = useContext(ChatManagerContext);\n if (!manager) {\n throw new Error('useAgentMeta must be used within an AgentProvider');\n }\n const hasSubmitted = useSyncExternalStore(\n manager.subscribe,\n () => manager.hasSubmitted,\n () => manager.hasSubmitted,\n );\n return { hasSubmitted };\n}\n\nexport function useAgentMessages() {\n const context = useContext(AgentMessagesContext);\n if (context === undefined) {\n throw new Error('useAgentMessages must be used within an AgentProvider');\n }\n return context;\n}\n\nexport function useChatManager() {\n const manager = useContext(ChatManagerContext);\n if (!manager) {\n throw new Error('useChatManager must be used within an AgentProvider');\n }\n return manager;\n}\n","import type { UIMessage } from 'ai';\n\nexport interface CitationSource {\n url: string;\n title?: string;\n}\n\n/**\n * Flatten all `source-url` parts across the given messages, deduped by URL,\n * preserving first-seen order. Used by both the inline CitationPill renderer\n * and the WorkspaceBody Sources panel so their numbering stays in sync.\n */\nexport function extractSourcesFromMessages(\n messages: UIMessage[],\n): CitationSource[] {\n const seen = new Set<string>();\n const sources: CitationSource[] = [];\n for (const message of messages) {\n for (const part of message.parts) {\n if (part.type !== 'source-url') continue;\n if (seen.has(part.url)) continue;\n seen.add(part.url);\n sources.push({ url: part.url, title: part.title });\n }\n }\n return sources;\n}\n\n/**\n * Look up the 1-based citation index for a given URL within a deduped source\n * list. Returns null when the URL is not present (defensive — shouldn't happen\n * in practice when the same `extractSourcesFromMessages` output is used).\n */\nexport function citationIndexOf(\n sources: CitationSource[],\n url: string,\n): number | null {\n const i = sources.findIndex((s) => s.url === url);\n return i === -1 ? null : i + 1;\n}\n","import type { ChatTransport, UIMessage, UIMessageChunk } from 'ai';\n\n/**\n * Transport for surfaces that only render stored messages (shared transcripts,\n * fixtures). Sending from such a surface is a programming error, so it rejects\n * loudly instead of reaching for a network; there is never an active stream\n * to resume.\n */\nexport class ReadOnlyChatTransport implements ChatTransport<UIMessage> {\n sendMessages(): Promise<ReadableStream<UIMessageChunk>> {\n return Promise.reject(\n new Error(\n 'This chat is read-only: it has no transport to send messages through.',\n ),\n );\n }\n\n reconnectToStream(): Promise<null> {\n return Promise.resolve(null);\n }\n}\n","import type { ChatStatus, ToolUIPart } from 'ai';\n\nimport { useAgentStatus } from './agent-context.tsx';\n\nexport function isToolStateAborted(\n state: ToolUIPart['state'] | undefined,\n status: ChatStatus,\n): boolean {\n if (status === 'streaming' || status === 'submitted') return false;\n return state === 'input-streaming' || state === 'input-available';\n}\n\nexport function isToolAborted(part: ToolUIPart, status: ChatStatus): boolean {\n return isToolStateAborted(part.state, status);\n}\n\nexport function useIsToolAborted(part: ToolUIPart): boolean {\n const { status } = useAgentStatus();\n return isToolAborted(part, status);\n}\n","import { z } from 'zod';\n\nimport type { ComponentRegistry } from '../tools/registry.ts';\n\nexport type SerializedToolRegistry = Record<\n string,\n {\n inputSchema: z.core.JSONSchema.BaseSchema;\n description: string;\n }\n>;\n\nexport function serializeToolsRegistry(\n registry: ComponentRegistry,\n): SerializedToolRegistry {\n return Object.entries(registry).reduce<SerializedToolRegistry>(\n (acc, [toolName, tool]) => {\n if (tool.static) {\n return acc;\n }\n acc[toolName] = {\n inputSchema: z.toJSONSchema(tool.inputSchema, {\n io: 'input',\n unrepresentable: 'any',\n }),\n description: tool.description,\n };\n return acc;\n },\n {},\n );\n}\n","import type { ElementType, ReactNode } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nexport type TextShimmerProps = {\n children: ReactNode;\n as?: ElementType;\n className?: string;\n /** Sweep duration in seconds; the shimmer utility defaults to 2s. */\n duration?: number;\n enabled?: boolean;\n};\n\nexport function TextShimmer({\n children,\n as: Component = 'p',\n className,\n duration,\n enabled = true,\n}: TextShimmerProps) {\n return (\n <Component\n className={cn(enabled && 'shimmer', className)}\n style={\n enabled && duration !== undefined\n ? { animationDuration: `${duration}s` }\n : undefined\n }\n >\n {children}\n </Component>\n );\n}\n","import { ChevronRight } from 'lucide-react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nexport function CompactDisclosureChevron({\n className,\n}: {\n className?: string;\n}) {\n return (\n <ChevronRight\n aria-hidden\n className={cn(\n 'size-3.5 shrink-0 transition-transform group-data-[panel-open]:rotate-90',\n className,\n )}\n />\n );\n}\n\nexport function compactDisclosureTriggerClass(extra?: string) {\n return cn(\n 'group hover:bg-muted/30 flex min-h-7 w-full gap-2 rounded-sm py-1 text-left transition-colors',\n extra,\n );\n}\n","import type { UIMessage } from 'ai';\nimport {\n Fragment,\n type ReactNode,\n createContext,\n useContext,\n useMemo,\n useState,\n} from 'react';\nimport { useStickToBottom } from 'use-stick-to-bottom';\n\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n cn,\n} from '@deepagents/react-shadcn';\n\nimport { TextShimmer } from '../../components/text-shimmer.tsx';\nimport {\n CompactDisclosureChevron,\n compactDisclosureTriggerClass,\n} from './compact-disclosure.tsx';\n\nconst INDEX_PROGRESS_PART_TYPE = 'data-text2sql-index-progress';\n\nconst STICK_TO_BOTTOM_OPTS = {\n initial: 'instant',\n resize: 'instant',\n} as const;\n\nexport type IndexProgressEventType =\n | 'index:start'\n | 'index:end'\n | 'adapter:start'\n | 'adapter:end'\n | 'adapter:cache-hit'\n | 'adapter:cache-miss'\n | 'phase:start'\n | 'phase:progress'\n | 'phase:end'\n | 'adapter:error'\n | 'index:error';\n\nexport type IndexProgressEvent = {\n type: IndexProgressEventType;\n adapter?: string;\n phase?: string;\n table?: string;\n message: string;\n current?: number;\n total?: number;\n};\n\ntype AdapterStatus = 'queued' | 'running' | 'cache-hit' | 'fresh' | 'error';\n\ntype AdapterState = {\n name: string;\n status: AdapterStatus;\n phase?: string;\n table?: string;\n current?: number;\n total?: number;\n errorMessage?: string;\n};\n\ntype IndexState = {\n status: 'running' | 'complete' | 'error';\n adapters: AdapterState[];\n totalAdapters?: number;\n errorMessage?: string;\n};\n\ntype GroupedProgressEvents = {\n byAdapter: Map<string, IndexProgressEvent[]>;\n globalEvents: IndexProgressEvent[];\n};\n\ntype ProgressOpenStatus = IndexState['status'] | AdapterStatus;\n\ntype OpenOverride = {\n key: string;\n open: boolean;\n};\n\nfunction isIndexProgressPart(\n part: UIMessage['parts'][number],\n): part is UIMessage['parts'][number] & {\n type: typeof INDEX_PROGRESS_PART_TYPE;\n data: IndexProgressEvent;\n} {\n return part.type === INDEX_PROGRESS_PART_TYPE;\n}\n\nexport function getIndexProgressEvents(\n message: UIMessage,\n): IndexProgressEvent[] {\n return message.parts.filter(isIndexProgressPart).map((part) => part.data);\n}\n\nfunction aggregateEvents(events: IndexProgressEvent[]): IndexState {\n const byName = new Map<string, AdapterState>();\n let status: IndexState['status'] = 'running';\n let totalAdapters: number | undefined;\n let errorMessage: string | undefined;\n\n const upsert = (name: string, patch: Partial<AdapterState>) => {\n const prev = byName.get(name) ?? { name, status: 'queued' as const };\n byName.set(name, { ...prev, ...patch, name });\n };\n\n for (const event of events) {\n switch (event.type) {\n case 'index:start':\n totalAdapters = event.total;\n status = 'running';\n break;\n case 'adapter:start':\n if (event.adapter) upsert(event.adapter, { status: 'running' });\n break;\n case 'adapter:cache-hit':\n if (event.adapter) upsert(event.adapter, { status: 'cache-hit' });\n break;\n case 'adapter:cache-miss':\n if (event.adapter) upsert(event.adapter, { status: 'running' });\n break;\n case 'phase:start':\n case 'phase:progress':\n case 'phase:end':\n if (event.adapter) {\n upsert(event.adapter, {\n phase: event.phase,\n table: event.table,\n current: event.current,\n total: event.total,\n });\n }\n break;\n case 'adapter:end':\n if (event.adapter) {\n const prev = byName.get(event.adapter);\n if (prev?.status !== 'cache-hit' && prev?.status !== 'error') {\n upsert(event.adapter, { status: 'fresh' });\n }\n }\n break;\n case 'adapter:error':\n if (event.adapter) {\n upsert(event.adapter, {\n status: 'error',\n errorMessage: event.message,\n });\n }\n break;\n case 'index:end':\n status = 'complete';\n for (const [name, adapter] of byName) {\n if (adapter.status === 'running') {\n upsert(name, { status: 'fresh' });\n }\n }\n break;\n case 'index:error':\n status = 'error';\n errorMessage = event.message;\n break;\n }\n }\n\n return {\n status,\n adapters: Array.from(byName.values()),\n totalAdapters,\n errorMessage,\n };\n}\n\nfunction useIndexProgressState(events: IndexProgressEvent[]): IndexState {\n return useMemo(() => aggregateEvents(events), [events]);\n}\n\nfunction useProgressOpenState({\n status,\n resetKey,\n controlledOpen,\n onOpenChange,\n}: {\n status: ProgressOpenStatus;\n resetKey: string | number;\n controlledOpen?: boolean;\n onOpenChange?: (open: boolean) => void;\n}) {\n const key = `${resetKey}:${status}`;\n const [openOverride, setOpenOverride] = useState<OpenOverride | null>(null);\n\n const isOpen =\n controlledOpen ??\n (openOverride?.key === key ? openOverride.open : status === 'running');\n\n const handleOpenChange = (next: boolean) => {\n if (controlledOpen === undefined) {\n setOpenOverride({ key, open: next });\n }\n onOpenChange?.(next);\n };\n\n return { isOpen, handleOpenChange };\n}\n\nfunction shouldHideIndexProgress(\n events: IndexProgressEvent[],\n state: IndexState,\n) {\n if (events.length === 0) return true;\n if (state.status !== 'complete' || state.adapters.length === 0) return false;\n return state.adapters.every((a) => a.status === 'cache-hit');\n}\n\nfunction getIndexRunKey(events: IndexProgressEvent[]) {\n return events.filter((event) => event.type === 'index:start').length;\n}\n\nfunction getAdapterRunKey(events: IndexProgressEvent[]) {\n return events.filter((event) =>\n ['adapter:start', 'adapter:cache-hit', 'adapter:cache-miss'].includes(\n event.type,\n ),\n ).length;\n}\n\nfunction getBreadcrumbSegments(state: IndexState): string[] {\n const totalCount = state.totalAdapters ?? state.adapters.length;\n const isMultiAdapter = totalCount > 1;\n\n if (state.status === 'error') {\n const failed = state.adapters.find((a) => a.status === 'error');\n if (failed) {\n const segments = ['Failed'];\n if (isMultiAdapter) segments.push(failed.name);\n segments.push(failed.errorMessage ?? 'unknown error');\n return segments;\n }\n return ['Failed', state.errorMessage ?? 'unknown error'];\n }\n\n if (state.status === 'running') {\n const segments: string[] = ['Indexing'];\n const active = state.adapters.find((a) => a.status === 'running');\n if (active) {\n if (isMultiAdapter) segments.push(active.name);\n if (active.phase) segments.push(active.phase);\n if (active.current != null && active.total != null) {\n segments.push(`${active.current}/${active.total}`);\n }\n if (active.table) segments.push(active.table);\n }\n return segments;\n }\n\n if (state.adapters.length === 0 || !isMultiAdapter) {\n return ['Schema indexed'];\n }\n return ['Schema indexed', `${state.adapters.length} adapters`];\n}\n\nfunction getAdapterBreadcrumbSegments(adapter: AdapterState): string[] {\n if (adapter.status === 'error') {\n return ['Failed', adapter.name, adapter.errorMessage ?? 'unknown error'];\n }\n\n if (adapter.status === 'running') {\n const segments = ['Indexing', adapter.name];\n if (adapter.phase) segments.push(adapter.phase);\n if (adapter.current != null && adapter.total != null) {\n segments.push(`${adapter.current}/${adapter.total}`);\n }\n if (adapter.table) segments.push(adapter.table);\n return segments;\n }\n\n if (adapter.status === 'cache-hit') {\n return ['Schema indexed', adapter.name, 'cache hit'];\n }\n\n if (adapter.status === 'fresh') {\n return ['Schema indexed', adapter.name, 'refreshed'];\n }\n\n return ['Indexing', adapter.name, 'queued'];\n}\n\nfunction getGlobalErrorSegments(state: IndexState): string[] {\n return ['Failed', state.errorMessage ?? 'unknown error'];\n}\n\ntype IndexProgressContextValue = {\n state: IndexState;\n events: IndexProgressEvent[];\n};\n\nconst IndexProgressContext = createContext<IndexProgressContextValue | null>(\n null,\n);\n\nfunction useIndexProgress(component: string): IndexProgressContextValue {\n const ctx = useContext(IndexProgressContext);\n if (!ctx) {\n throw new Error(\n `<IndexProgress.${component}> must be used inside <IndexProgress.Root>`,\n );\n }\n return ctx;\n}\n\ntype RootProps = {\n events: IndexProgressEvent[];\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n children: ReactNode;\n className?: string;\n};\n\nfunction Root({\n events,\n open: controlledOpen,\n onOpenChange,\n children,\n className,\n}: RootProps) {\n const state = useIndexProgressState(events);\n const { isOpen, handleOpenChange } = useProgressOpenState({\n status: state.status,\n resetKey: getIndexRunKey(events),\n controlledOpen,\n onOpenChange,\n });\n\n if (shouldHideIndexProgress(events, state)) return null;\n\n return (\n <IndexProgressContext.Provider value={{ state, events }}>\n <Collapsible\n open={isOpen}\n onOpenChange={handleOpenChange}\n data-slot=\"index-progress-root\"\n data-status={state.status}\n className={cn('w-full', className)}\n >\n {children}\n </Collapsible>\n </IndexProgressContext.Provider>\n );\n}\n\nfunction Trigger({ className }: { className?: string }) {\n const { state } = useIndexProgress('Trigger');\n\n return (\n <CollapsibleTrigger\n render={\n <button\n type=\"button\"\n data-slot=\"index-progress-trigger\"\n className={getProgressTriggerClassName(className)}\n />\n }\n >\n <ProgressBreadcrumb\n segments={getBreadcrumbSegments(state)}\n isRunning={state.status === 'running'}\n />\n <DisclosureChevron />\n </CollapsibleTrigger>\n );\n}\n\nfunction getProgressTriggerClassName(className?: string) {\n return compactDisclosureTriggerClass(cn('items-baseline px-1', className));\n}\n\nfunction ProgressBreadcrumb({\n segments,\n isRunning,\n}: {\n segments: string[];\n isRunning: boolean;\n}) {\n const lastIdx = segments.length - 1;\n\n return (\n <TextShimmer\n as=\"span\"\n enabled={isRunning}\n className=\"text-muted-foreground min-w-0 flex-1 truncate text-xs\"\n >\n {segments.map((segment, idx) => (\n <ProgressBreadcrumbSegment\n key={idx}\n segment={segment}\n index={idx}\n isLast={idx === lastIdx}\n />\n ))}\n </TextShimmer>\n );\n}\n\nfunction ProgressBreadcrumbSegment({\n segment,\n index,\n isLast,\n}: {\n segment: string;\n index: number;\n isLast: boolean;\n}) {\n return (\n <Fragment>\n {index > 0 && (\n <span aria-hidden className=\"text-muted-foreground/40 mx-1.5\">\n ›\n </span>\n )}\n <span\n className={cn(\n isLast ? 'text-foreground/90' : 'text-muted-foreground/70',\n index === 0 && 'lowercase',\n )}\n >\n {segment}\n </span>\n </Fragment>\n );\n}\n\nfunction DisclosureChevron() {\n return (\n <CompactDisclosureChevron className=\"text-muted-foreground/60 size-3\" />\n );\n}\n\nfunction Content({\n className,\n children,\n}: {\n className?: string;\n children: ReactNode;\n}) {\n return (\n <CollapsibleContent\n data-slot=\"index-progress-content\"\n className={className}\n >\n {children}\n </CollapsibleContent>\n );\n}\n\nfunction EventRow({ event }: { event: IndexProgressEvent }) {\n return (\n <li className=\"text-muted-foreground/90 flex items-baseline gap-3\">\n <span className=\"text-muted-foreground/50 w-40 shrink-0 truncate\">\n {event.type}\n </span>\n <span className=\"text-foreground/80 min-w-0 flex-1 truncate\">\n {event.message}\n </span>\n {typeof event.current === 'number' && typeof event.total === 'number' && (\n <span className=\"text-muted-foreground/60 tabular-nums\">\n {event.current}/{event.total}\n </span>\n )}\n </li>\n );\n}\n\nfunction useGroupedProgressEvents(\n events: IndexProgressEvent[],\n): GroupedProgressEvents {\n return useMemo(() => {\n const map = new Map<string, IndexProgressEvent[]>();\n const global: IndexProgressEvent[] = [];\n\n for (const event of events) {\n if (event.adapter) {\n const arr = map.get(event.adapter) ?? [];\n arr.push(event);\n map.set(event.adapter, arr);\n } else {\n global.push(event);\n }\n }\n\n return { byAdapter: map, globalEvents: global };\n }, [events]);\n}\n\nfunction EventLog({ className }: { className?: string }) {\n const { events } = useIndexProgress('EventLog');\n const groupedEvents = useGroupedProgressEvents(events);\n const containerClass = cn(\n 'mt-2 ml-4 max-h-64 overflow-y-auto font-mono text-[11px]',\n className,\n );\n\n if (groupedEvents.byAdapter.size <= 1) {\n return <SingleEventLog events={events} className={containerClass} />;\n }\n\n return (\n <GroupedEventLog groupedEvents={groupedEvents} className={containerClass} />\n );\n}\n\nfunction StickyScroll({\n className,\n contentClassName,\n children,\n}: {\n className?: string;\n contentClassName?: string;\n children: ReactNode;\n}) {\n const { scrollRef, contentRef } = useStickToBottom(STICK_TO_BOTTOM_OPTS);\n return (\n <div ref={scrollRef} className={className}>\n <div\n ref={contentRef}\n data-slot=\"index-progress-event-log\"\n className={contentClassName}\n >\n {children}\n </div>\n </div>\n );\n}\n\nfunction SingleEventLog({\n events,\n className,\n}: {\n events: IndexProgressEvent[];\n className: string;\n}) {\n return (\n <StickyScroll className={className}>\n <ul className=\"space-y-0.5\">\n {events.map((event, index) => (\n <EventRow key={`${event.type}-${index}`} event={event} />\n ))}\n </ul>\n </StickyScroll>\n );\n}\n\nfunction GroupedEventLog({\n groupedEvents,\n className,\n}: {\n groupedEvents: GroupedProgressEvents;\n className: string;\n}) {\n return (\n <StickyScroll className={className} contentClassName=\"space-y-2\">\n {groupedEvents.globalEvents.length > 0 && (\n <ul className=\"space-y-0.5\">\n {groupedEvents.globalEvents.map((event, index) => (\n <EventRow key={`${event.type}-${index}`} event={event} />\n ))}\n </ul>\n )}\n {Array.from(groupedEvents.byAdapter.entries()).map(([name, events]) => (\n <AdapterEventGroup key={name} name={name} events={events} />\n ))}\n </StickyScroll>\n );\n}\n\nfunction AdapterEventGroup({\n name,\n events,\n}: {\n name: string;\n events: IndexProgressEvent[];\n}) {\n return (\n <div className=\"space-y-0.5\">\n <div className=\"text-foreground/90\">{name}</div>\n <ul className=\"space-y-0.5\">\n {events.map((event, index) => (\n <EventRow key={`${event.type}-${index}`} event={event} />\n ))}\n </ul>\n </div>\n );\n}\n\ntype PerAdapterProps = {\n events: IndexProgressEvent[];\n className?: string;\n showCacheHits?: boolean;\n};\n\nfunction PerAdapter({\n events,\n className,\n showCacheHits = false,\n}: PerAdapterProps) {\n const state = useIndexProgressState(events);\n const groupedEvents = useGroupedProgressEvents(events);\n const globalErrorEvents = groupedEvents.globalEvents.filter(\n (event) => event.type === 'index:error',\n );\n\n if (events.length === 0) return null;\n if (!showCacheHits && shouldHideIndexProgress(events, state)) return null;\n\n if (state.adapters.length === 0) {\n return (\n <Root events={events} className={className}>\n <Trigger />\n <Content>\n <EventLog />\n </Content>\n </Root>\n );\n }\n\n return (\n <div\n data-slot=\"index-progress-per-adapter\"\n data-status={state.status}\n className={cn('w-full space-y-1', className)}\n >\n {state.adapters.map((adapter) => (\n <AdapterProgressItem\n key={adapter.name}\n adapter={adapter}\n events={groupedEvents.byAdapter.get(adapter.name) ?? []}\n />\n ))}\n {globalErrorEvents.length > 0 && (\n <GlobalErrorProgressItem state={state} events={globalErrorEvents} />\n )}\n </div>\n );\n}\n\nfunction AdapterProgressItem({\n adapter,\n events,\n}: {\n adapter: AdapterState;\n events: IndexProgressEvent[];\n}) {\n const { isOpen, handleOpenChange } = useProgressOpenState({\n status: adapter.status,\n resetKey: getAdapterRunKey(events),\n });\n\n return (\n <Collapsible\n open={isOpen}\n onOpenChange={handleOpenChange}\n data-slot=\"index-progress-adapter\"\n data-status={adapter.status}\n className=\"w-full\"\n >\n <CollapsibleTrigger\n render={\n <button\n type=\"button\"\n data-slot=\"index-progress-adapter-trigger\"\n className={getProgressTriggerClassName()}\n />\n }\n >\n <ProgressBreadcrumb\n segments={getAdapterBreadcrumbSegments(adapter)}\n isRunning={adapter.status === 'running'}\n />\n <DisclosureChevron />\n </CollapsibleTrigger>\n <CollapsibleContent data-slot=\"index-progress-adapter-content\">\n <AdapterProgressEventLog events={events} />\n </CollapsibleContent>\n </Collapsible>\n );\n}\n\nfunction AdapterProgressEventLog({ events }: { events: IndexProgressEvent[] }) {\n if (events.length === 0) return null;\n\n return (\n <SingleEventLog\n events={events}\n className=\"mt-2 ml-4 max-h-64 overflow-y-auto font-mono text-[11px]\"\n />\n );\n}\n\nfunction GlobalErrorProgressItem({\n state,\n events,\n}: {\n state: IndexState;\n events: IndexProgressEvent[];\n}) {\n const { isOpen, handleOpenChange } = useProgressOpenState({\n status: state.status,\n resetKey: events.length,\n });\n\n return (\n <Collapsible\n open={isOpen}\n onOpenChange={handleOpenChange}\n data-slot=\"index-progress-global-error\"\n data-status={state.status}\n className=\"w-full\"\n >\n <CollapsibleTrigger\n render={\n <button\n type=\"button\"\n data-slot=\"index-progress-global-error-trigger\"\n className={getProgressTriggerClassName()}\n />\n }\n >\n <ProgressBreadcrumb\n segments={getGlobalErrorSegments(state)}\n isRunning={state.status === 'running'}\n />\n <DisclosureChevron />\n </CollapsibleTrigger>\n <CollapsibleContent data-slot=\"index-progress-global-error-content\">\n <AdapterProgressEventLog events={events} />\n </CollapsibleContent>\n </Collapsible>\n );\n}\n\nexport const IndexProgress = {\n Root,\n Trigger,\n Content,\n EventLog,\n PerAdapter,\n};\n","import type { ChatStatus, UIMessage } from 'ai';\nimport { createContext, use } from 'react';\n\nimport type { GenAIInteractiveElement } from '../../components/InteractiveResponse.tsx';\nimport { useAgentStatus } from '../agent-context.tsx';\n\nexport type MessagesContextValue = {\n messages: UIMessage[];\n elements?: GenAIInteractiveElement[];\n status?: ChatStatus;\n};\n\ntype MessageItemContextValue = {\n message: UIMessage;\n index: number;\n};\n\nexport const MessagesCtx = createContext<MessagesContextValue | undefined>(\n undefined,\n);\nexport const MessageItemCtx = createContext<\n MessageItemContextValue | undefined\n>(undefined);\n\nexport function useMessagesContext() {\n const ctx = use(MessagesCtx);\n if (!ctx) {\n throw new Error('useMessagesContext must be used within <Messages>');\n }\n return ctx;\n}\n\nexport function useMessagesStatus() {\n const ctx = use(MessagesCtx);\n const { status } = useAgentStatus();\n // Soft fallback: status is derivable from agent context, so we don't\n // force callers to wrap in <Messages.Root> or pass status= just to read it.\n return ctx?.status ?? status;\n}\n\nexport function useMessageItem() {\n const ctx = use(MessageItemCtx);\n if (!ctx) {\n throw new Error('useMessageItem must be used within <Messages.Item>');\n }\n return ctx;\n}\n","import type { CitationSource } from '../chat/citations.ts';\n\nexport function CitationPill({\n source,\n index,\n}: {\n source: CitationSource;\n index: number;\n}) {\n return (\n <sup className=\"ml-0.5 inline-block\">\n <a\n href={source.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n title={source.title ?? source.url}\n className=\"text-primary bg-primary/10 hover:bg-primary/20 focus-visible:ring-ring focus-visible:ring-offset-background inline-block rounded px-1 font-mono text-[10px] leading-tight no-underline transition-colors focus-visible:ring-2 focus-visible:ring-offset-1 focus-visible:outline-none\"\n >\n {index}\n </a>\n </sup>\n );\n}\n","import * as React from 'react';\n\nimport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n cn,\n} from '@deepagents/react-shadcn';\n\nconst TablePanelRoot = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<'div'>\n>(function TablePanelRoot({ className, ...props }, ref) {\n return (\n <Card\n ref={ref}\n data-slot=\"table-panel\"\n size=\"default\"\n className={cn(\n 'border-border bg-background relative min-w-0 gap-0 overflow-visible rounded-md border py-0 text-sm/normal ring-0',\n className,\n )}\n {...props}\n />\n );\n});\nTablePanelRoot.displayName = 'TablePanel.Root';\n\nfunction TablePanelHeader({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <CardHeader\n data-slot=\"table-panel-header\"\n className={cn(\n 'border-border flex items-center justify-between gap-4 border-b px-4 py-3',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TablePanelHeading({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <div\n data-slot=\"table-panel-heading\"\n className={cn('min-w-0', className)}\n {...props}\n />\n );\n}\n\nfunction TablePanelTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n <CardTitle\n data-slot=\"table-panel-title\"\n className={cn(\n 'text-base font-medium text-balance wrap-anywhere',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TablePanelDescription({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <CardDescription\n data-slot=\"table-panel-description\"\n className={cn(\n 'text-muted-foreground text-xs text-pretty wrap-anywhere',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction TablePanelActions({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <CardAction\n data-slot=\"table-panel-actions\"\n className={cn('flex shrink-0 items-center gap-1', className)}\n {...props}\n />\n );\n}\n\nfunction TablePanelContent({\n className,\n ...props\n}: React.ComponentProps<'div'>) {\n return (\n <CardContent\n data-slot=\"table-panel-content\"\n className={cn('min-w-0 flex-1 overflow-auto p-0', className)}\n {...props}\n />\n );\n}\n\nexport const TablePanel = Object.assign(TablePanelRoot, {\n Header: TablePanelHeader,\n Heading: TablePanelHeading,\n Title: TablePanelTitle,\n Description: TablePanelDescription,\n Actions: TablePanelActions,\n Content: TablePanelContent,\n});\n","const OPENING_TAG_PATTERN = /<\\w[\\w-]*(?:\"(?:\\\\.|[^\"])*\"|[^>\"])*>/g;\nconst DOUBLE_QUOTED_ATTRIBUTE_PATTERN = /\\b([\\w-]+)=\"((?:\\\\.|[^\"])*)\"/g;\n\nfunction normalizeAttributeEscapes(input: string): string {\n return input.replace(OPENING_TAG_PATTERN, (tag) =>\n tag.replace(\n DOUBLE_QUOTED_ATTRIBUTE_PATTERN,\n (_match: string, name: string, value: string) =>\n `${name}=\"${value.replace(/\\\\\"/g, '"')}\"`,\n ),\n );\n}\n\nexport function normalizeStreamdownChildren(\n children: string | undefined,\n tagNames?: string[],\n) {\n if (typeof children !== 'string') {\n return children;\n }\n\n let result = normalizeAttributeEscapes(children).replace(\n /<(\\w[\\w-]*)((?:\\s+[\\w-]+=\"[^\"]*\")+)\\s*(\\/?>)/g,\n (_m, tag: string, attrs: string, close: string) => {\n const collapsed = attrs.replace(/\\s+/g, ' ');\n const escaped = collapsed.replace(\n /\"([^\"]*)\"/g,\n (_, v: string) => `\"${v.replace(/\\*/g, '*')}\"`,\n );\n return `<${tag}${escaped}${close}`;\n },\n );\n\n result = result.replace(/\\/>\\s*</g, '/>\\n\\n<');\n\n return wrapElements(result, tagNames);\n}\n\n/**\n * The wrapper divs emitted here must stay bare (no attributes). Their minimal\n * shape is part of the rendering contract, allowing consumers to make the\n * structural wrapper layout-transparent. Pinned by \"top-level custom elements\n * stay wrapped in a bare class-less div\" in InteractiveResponse.test.tsx.\n */\nfunction wrapElements(\n input: string,\n tagNames?: string[],\n nested = false,\n): string {\n const customSet = tagNames?.length ? new Set(tagNames) : null;\n const isCustom = customSet\n ? (name: string) => customSet.has(name)\n : (name: string) => name.includes('-');\n\n let out = '';\n let i = 0;\n\n while (i < input.length) {\n if (input[i] !== '<' || input[i + 1] === '/') {\n out += input[i++];\n continue;\n }\n\n let nameEnd = i + 1;\n while (nameEnd < input.length && /[\\w-]/.test(input[nameEnd])) nameEnd++;\n const tagName = input.slice(i + 1, nameEnd);\n\n if (!tagName || !isCustom(tagName)) {\n out += input[i++];\n continue;\n }\n\n const tagEnd = skipToTagEnd(input, i);\n if (tagEnd < 0) {\n out += input[i++];\n continue;\n }\n\n if (input[tagEnd - 1] === '/') {\n if (nested) {\n out += '<div>' + input.slice(i, tagEnd + 1) + '</div>';\n } else {\n out += input.slice(i, tagEnd + 1);\n }\n i = tagEnd + 1;\n continue;\n }\n\n const close = findClosingTag(input, tagEnd + 1, tagName);\n if (!close) {\n // The model opened this element but never closed it (a dropped\n // </column> etc.). Inside a parent, adopt the rest of that parent's\n // content as children and auto-close, so siblings still wrap\n // symmetrically and Row's wrapper-flattening can't dissolve a bare one.\n if (nested) {\n const openTag = input.slice(i, tagEnd + 1);\n const processedInner = wrapElements(\n input.slice(tagEnd + 1),\n tagNames,\n true,\n );\n out += '<div>' + openTag + processedInner + '</' + tagName + '></div>';\n return out;\n }\n out += input.slice(i, tagEnd + 1);\n i = tagEnd + 1;\n continue;\n }\n\n const openTag = input.slice(i, tagEnd + 1);\n const innerContent = input.slice(tagEnd + 1, close.start);\n const closeTag = input.slice(close.start, close.end);\n const processedInner = wrapElements(innerContent, tagNames, true);\n\n if (nested) {\n out += '<div>' + openTag + processedInner + closeTag + '</div>';\n } else {\n out =\n ensureBlankLine(out) +\n '<div>' +\n openTag +\n processedInner +\n closeTag +\n '</div>';\n }\n i = close.end;\n }\n\n return out;\n}\n\nfunction skipToTagEnd(input: string, pos: number): number {\n let i = pos + 1;\n while (i < input.length) {\n if (input[i] === '\"') {\n i++;\n while (i < input.length && input[i] !== '\"') i++;\n } else if (input[i] === '>') {\n return i;\n }\n i++;\n }\n return -1;\n}\n\nfunction findClosingTag(\n input: string,\n start: number,\n tagName: string,\n): { start: number; end: number } | null {\n let depth = 1;\n let i = start;\n const open = '<' + tagName;\n const close = '</' + tagName;\n\n while (i < input.length) {\n const lt = input.indexOf('<', i);\n if (lt < 0) return null;\n\n if (\n input.startsWith(close, lt) &&\n !/[\\w-]/.test(input[lt + close.length] || '')\n ) {\n depth--;\n if (depth === 0) {\n const end = skipToTagEnd(input, lt);\n return end < 0 ? null : { start: lt, end: end + 1 };\n }\n const gt = input.indexOf('>', lt + close.length);\n i = gt < 0 ? lt + 1 : gt + 1;\n } else if (\n input.startsWith(open, lt) &&\n !/[\\w-]/.test(input[lt + open.length] || '')\n ) {\n const end = skipToTagEnd(input, lt);\n if (end >= 0 && input[end - 1] !== '/') {\n depth++;\n }\n i = end < 0 ? lt + 1 : end + 1;\n } else if (/[a-zA-Z/]/.test(input[lt + 1] || '')) {\n const end = skipToTagEnd(input, lt);\n i = end < 0 ? lt + 1 : end + 1;\n } else {\n i = lt + 1;\n }\n }\n\n return null;\n}\n\nfunction ensureBlankLine(text: string): string {\n if (text.length === 0) return '\\n\\n';\n if (text.endsWith('\\n\\n')) return text;\n if (text.endsWith('\\n')) return text + '\\n';\n return text + '\\n\\n';\n}\n","import type { Root, Table } from 'mdast';\nimport type { LeafDirective } from 'mdast-util-directive';\nimport { toString } from 'mdast-util-to-string';\nimport * as React from 'react';\nimport { type ComponentProps, useMemo } from 'react';\nimport remarkDirective from 'remark-directive';\nimport remarkGfm from 'remark-gfm';\nimport remarkParse from 'remark-parse';\nimport {\n type AllowedTags,\n Block,\n type BlockProps,\n type ExtraProps,\n Streamdown,\n TableCopyDropdown,\n TableDownloadDropdown,\n defaultRemarkPlugins,\n detectTextDirection,\n parseMarkdownIntoBlocks,\n} from 'streamdown';\nimport { unified } from 'unified';\nimport { SKIP, visit } from 'unist-util-visit';\n\nimport { buttonVariants, cn } from '@deepagents/react-shadcn';\n\nimport { TablePanel } from '../ui/TablePanel.tsx';\nimport { normalizeStreamdownChildren } from './normalize-streamdown-children.ts';\n\nexport type TablePanelStreamdownProps = Omit<\n ComponentProps<typeof Streamdown>,\n 'parseMarkdownIntoBlocksFn'\n> & {\n tableActions?: React.ReactNode;\n};\n\ntype StreamdownBlockComponent = NonNullable<\n TablePanelStreamdownProps['BlockComponent']\n>;\n\nconst tablePanelTag = 'response-table-panel';\nconst tablePanelAttributes = ['title', 'description'];\nconst tableActionClassName = buttonVariants({\n variant: 'ghost',\n size: 'icon-sm',\n});\n\ninterface TablePanelNode {\n type: 'tablePanel';\n data: {\n hName: string;\n hProperties?: Record<string, string>;\n };\n children: [Table];\n}\n\ndeclare module 'mdast' {\n interface BlockContentMap {\n tablePanel: TablePanelNode;\n }\n\n interface RootContentMap {\n tablePanel: TablePanelNode;\n }\n}\n\nconst tableDirectiveParser = unified()\n .use(remarkParse)\n .use(remarkGfm)\n .use(remarkDirective);\n\ninterface SourceRange {\n start: number;\n end: number;\n}\n\nconst parseMarkdownWithTableDirectives: NonNullable<\n ComponentProps<typeof Streamdown>['parseMarkdownIntoBlocksFn']\n> = (markdown) => {\n const blocks = parseMarkdownIntoBlocks(markdown);\n const directiveRanges = tableDirectiveRanges(markdown);\n\n if (directiveRanges.length === 0) return blocks;\n\n let offset = 0;\n const blockRanges = blocks.map((block) => {\n const range = { start: offset, end: offset + block.length };\n offset = range.end;\n return range;\n });\n const mergeWithPrevious = new Set<number>();\n\n for (const directiveRange of directiveRanges) {\n let foundFirstBlock = false;\n\n for (const [index, blockRange] of blockRanges.entries()) {\n const overlapsDirective =\n blockRange.start < directiveRange.end &&\n blockRange.end > directiveRange.start;\n\n if (!overlapsDirective) continue;\n if (foundFirstBlock) mergeWithPrevious.add(index);\n foundFirstBlock = true;\n }\n }\n\n return blocks.reduce<string[]>((groupedBlocks, block, index) => {\n if (mergeWithPrevious.has(index) && groupedBlocks.length > 0) {\n groupedBlocks[groupedBlocks.length - 1] += block;\n } else {\n groupedBlocks.push(block);\n }\n return groupedBlocks;\n }, []);\n};\n\nfunction isMarkdownTableDirective(\n node: { type: string } | undefined,\n): node is LeafDirective {\n return (\n node?.type === 'leafDirective' && 'name' in node && node.name === 'table'\n );\n}\n\nfunction tableDirectiveBefore(\n children: readonly { type: string }[],\n index: number | undefined,\n) {\n if (index === undefined) return undefined;\n const previous = children[index - 1];\n return isMarkdownTableDirective(previous) ? previous : undefined;\n}\n\nfunction tableDirectiveRanges(markdown: string): SourceRange[] {\n const ranges: SourceRange[] = [];\n const tree = tableDirectiveParser.parse(markdown);\n\n visit(tree, 'table', (table, index, parent) => {\n if (!parent) return;\n const directive = tableDirectiveBefore(parent.children, index);\n const start = directive?.position?.start.offset;\n const end = table.position?.end.offset;\n\n if (start !== undefined && end !== undefined) {\n ranges.push({ start, end });\n }\n });\n\n return ranges;\n}\n\nfunction directiveAttribute(\n directive: LeafDirective,\n attribute: 'title' | 'description',\n) {\n const value = directive.attributes?.[attribute]?.trim();\n return value || undefined;\n}\n\nfunction tableDirectiveTextDirection(markdown: string) {\n const tree = tableDirectiveParser.parse(markdown);\n let hasTableDirective = false;\n\n visit(tree, 'leafDirective', (directive, index, parent) => {\n const next = index === undefined ? undefined : parent?.children[index + 1];\n if (directive.name !== 'table' || next?.type !== 'table') return;\n\n hasTableDirective = true;\n const metadata = [\n directiveAttribute(directive, 'title'),\n directiveAttribute(directive, 'description'),\n ]\n .filter(Boolean)\n .join(' ');\n directive.children = metadata ? [{ type: 'text', value: metadata }] : [];\n });\n\n if (!hasTableDirective) return undefined;\n return detectTextDirection(toString(tree, { includeHtml: false }));\n}\n\nfunction DefaultStreamdownBlock(props: BlockProps) {\n return <Block {...props} />;\n}\n\nfunction createDirectionAwareBlock(BlockComponent: StreamdownBlockComponent) {\n function DirectionAwareBlock(props: BlockProps) {\n const direction = tableDirectiveTextDirection(props.content) ?? props.dir;\n return <BlockComponent {...props} dir={direction} />;\n }\n\n DirectionAwareBlock.displayName = 'DirectionAwareTableBlock';\n return DirectionAwareBlock;\n}\n\nfunction createTablePanelNode(\n table: Table,\n directive?: LeafDirective,\n): TablePanelNode {\n const title = directive && directiveAttribute(directive, 'title');\n const description = directive && directiveAttribute(directive, 'description');\n const hProperties = {\n ...(title ? { title } : {}),\n ...(description ? { description } : {}),\n };\n\n return {\n type: 'tablePanel',\n data: {\n hName: tablePanelTag,\n ...(Object.keys(hProperties).length > 0 ? { hProperties } : {}),\n },\n children: [table],\n };\n}\n\nfunction tablePanelRemarkPlugin() {\n return (tree: Root) => {\n visit(tree, 'table', (table, index, parent) => {\n if (index === undefined || !parent) return;\n\n const directive = tableDirectiveBefore(parent.children, index);\n const panelIndex = directive ? index - 1 : index;\n const replacedNodeCount = directive ? 2 : 1;\n\n parent.children.splice(\n panelIndex,\n replacedNodeCount,\n createTablePanelNode(table, directive),\n );\n\n return [SKIP, panelIndex + 1];\n });\n };\n}\n\nconst defaultTablePanelRemarkPlugins: NonNullable<\n TablePanelStreamdownProps['remarkPlugins']\n> = [\n ...Object.values(defaultRemarkPlugins),\n remarkDirective,\n tablePanelRemarkPlugin,\n];\n\ninterface MarkdownTableContextValue {\n actions: React.ReactNode;\n controls: TablePanelStreamdownProps['controls'];\n}\n\nconst MarkdownTableContext = React.createContext<MarkdownTableContextValue>({\n actions: null,\n controls: true,\n});\n\nfunction isTableActionEnabled(\n controls: TablePanelStreamdownProps['controls'],\n action: 'copy' | 'download',\n) {\n if (controls === false) return false;\n if (controls === true || controls === undefined) return true;\n\n const tableControls = controls.table;\n if (tableControls === false) return false;\n if (tableControls === true || tableControls === undefined) return true;\n return tableControls[action] !== false;\n}\n\nfunction withoutBuiltInTableControls(\n controls: TablePanelStreamdownProps['controls'],\n): NonNullable<TablePanelStreamdownProps['controls']> {\n if (controls === false) return false;\n if (controls === true || controls === undefined) return { table: false };\n return { ...controls, table: false };\n}\n\ninterface MarkdownTablePanelProps extends ExtraProps {\n children?: React.ReactNode;\n className?: string;\n title?: string;\n description?: string;\n}\n\nfunction MarkdownTablePanel({\n children,\n className,\n title,\n description,\n}: MarkdownTablePanelProps) {\n const { actions, controls } = React.useContext(MarkdownTableContext);\n const showCopy = isTableActionEnabled(controls, 'copy');\n const showDownload = isTableActionEnabled(controls, 'download');\n const hasMetadata = Boolean(title || description);\n const hasActions = Boolean(showCopy || showDownload || actions);\n\n if (!children) return null;\n\n return (\n <TablePanel\n data-streamdown=\"table-wrapper\"\n className={cn('my-4', className)}\n >\n {(hasMetadata || hasActions) && (\n <TablePanel.Header className={cn(!hasMetadata && 'justify-end')}>\n {hasMetadata && (\n <TablePanel.Heading>\n {title && <TablePanel.Title>{title}</TablePanel.Title>}\n {description && (\n <TablePanel.Description className={cn(title && 'mt-1')}>\n {description}\n </TablePanel.Description>\n )}\n </TablePanel.Heading>\n )}\n {hasActions && (\n <TablePanel.Actions data-copy-exclude=\"assistant-snapshot\">\n {showCopy && (\n <TableCopyDropdown className={tableActionClassName} />\n )}\n {showDownload && (\n <TableDownloadDropdown className={tableActionClassName} />\n )}\n {actions}\n </TablePanel.Actions>\n )}\n </TablePanel.Header>\n )}\n <TablePanel.Content\n className={cn(\n 'overflow-hidden',\n '[&>[data-streamdown=table-wrapper]]:m-0 [&>[data-streamdown=table-wrapper]]:gap-0 [&>[data-streamdown=table-wrapper]]:rounded-none [&>[data-streamdown=table-wrapper]]:border-0 [&>[data-streamdown=table-wrapper]]:bg-transparent [&>[data-streamdown=table-wrapper]]:p-0',\n '[&>[data-streamdown=table-wrapper]>div:last-child]:rounded-none [&>[data-streamdown=table-wrapper]>div:last-child]:border-0',\n '[&_[data-streamdown=table]]:tabular-nums',\n '[&_[data-streamdown=table-header]]:bg-muted/30',\n '[&_[data-streamdown=table-header-cell]]:text-muted-foreground [&_[data-streamdown=table-header-cell]]:text-xs [&_[data-streamdown=table-header-cell]]:font-medium',\n '[&_[data-streamdown=table-cell]]:py-2',\n '[&_[data-streamdown=table-row]]:hover:bg-muted/30',\n )}\n >\n {children}\n </TablePanel.Content>\n </TablePanel>\n );\n}\n\nexport function TablePanelStreamdown({\n allowedTags,\n BlockComponent,\n children,\n components,\n controls,\n dir,\n mode,\n remarkPlugins,\n tableActions,\n ...props\n}: TablePanelStreamdownProps) {\n const tablePanelPlugins = useMemo(() => {\n if (!remarkPlugins) {\n return defaultTablePanelRemarkPlugins;\n }\n return [...remarkPlugins, remarkDirective, tablePanelRemarkPlugin];\n }, [remarkPlugins]);\n\n const tablePanelAllowedTags = useMemo<AllowedTags>(\n () => ({\n ...allowedTags,\n [tablePanelTag]: tablePanelAttributes,\n }),\n [allowedTags],\n );\n\n const tablePanelComponents = useMemo(\n () => ({ ...components, [tablePanelTag]: MarkdownTablePanel }),\n [components],\n );\n\n const tableContext = useMemo<MarkdownTableContextValue>(\n () => ({ actions: tableActions, controls }),\n [controls, tableActions],\n );\n\n const tablePanelBlockComponent = useMemo(() => {\n if (dir !== 'auto' || mode === 'static') return BlockComponent;\n return createDirectionAwareBlock(BlockComponent ?? DefaultStreamdownBlock);\n }, [BlockComponent, dir, mode]);\n\n const streamdownDirection = useMemo(() => {\n if (dir !== 'auto' || mode !== 'static' || typeof children !== 'string') {\n return dir;\n }\n return tableDirectiveTextDirection(children) ?? dir;\n }, [children, dir, mode]);\n\n return (\n <MarkdownTableContext.Provider value={tableContext}>\n <Streamdown\n allowedTags={tablePanelAllowedTags}\n BlockComponent={tablePanelBlockComponent}\n components={tablePanelComponents}\n controls={withoutBuiltInTableControls(controls)}\n dir={streamdownDirection}\n mode={mode}\n parseMarkdownIntoBlocksFn={parseMarkdownWithTableDirectives}\n remarkPlugins={tablePanelPlugins}\n {...props}\n >\n {normalizeStreamdownChildren(\n children,\n Object.keys(tablePanelAllowedTags),\n )}\n </Streamdown>\n </MarkdownTableContext.Provider>\n );\n}\n","import * as React from 'react';\nimport { memo } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nimport {\n TablePanelStreamdown,\n type TablePanelStreamdownProps,\n} from './table-panel-extension.tsx';\n\nexport type ResponseProps = TablePanelStreamdownProps;\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n error: Error | null;\n}\n\nclass StreamdownErrorBoundary extends React.Component<\n { children: React.ReactNode; fallback?: React.ReactNode },\n ErrorBoundaryState\n> {\n override state: ErrorBoundaryState = { hasError: false, error: null };\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { hasError: true, error };\n }\n\n override render() {\n if (this.state.hasError) {\n return (\n this.props.fallback || (\n <div className=\"text-destructive p-2 text-sm\">\n Failed to render content: {this.state.error?.message}\n </div>\n )\n );\n }\n return this.props.children;\n }\n}\n\nexport const Response = memo(({ className, ...props }: ResponseProps) => (\n <StreamdownErrorBoundary>\n <TablePanelStreamdown\n className={cn(\n 'size-full space-y-2 [&>*:first-child]:mt-0 [&>*:last-child]:mb-0',\n className,\n )}\n {...props}\n />\n </StreamdownErrorBoundary>\n));\n\nResponse.displayName = 'Response';\n","import { useEffect, useRef, useState } from 'react';\n\nexport function useCopyFeedback(timeout = 2000) {\n const [copied, setCopied] = useState(false);\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n return () => {\n if (timerRef.current) clearTimeout(timerRef.current);\n };\n }, []);\n\n const copy = async (value: string) => {\n await navigator.clipboard.writeText(value);\n setCopied(true);\n if (timerRef.current) clearTimeout(timerRef.current);\n timerRef.current = setTimeout(() => setCopied(false), timeout);\n };\n\n return [copied, copy] as const;\n}\n","import { CheckIcon, CopyIcon } from 'lucide-react';\nimport type { ComponentProps, HTMLAttributes, ReactNode } from 'react';\nimport { createContext, useContext } from 'react';\nimport { Prism as SyntaxHighlighter } from 'react-syntax-highlighter';\nimport {\n oneDark,\n oneLight,\n} from 'react-syntax-highlighter/dist/esm/styles/prism/index.js';\n\nimport { Button, cn } from '@deepagents/react-shadcn';\n\nimport { useCopyFeedback } from '../ui/use-copy-feedback.ts';\n\ntype CodeBlockContextType = {\n code: string;\n};\n\nconst CodeBlockContext = createContext<CodeBlockContextType>({\n code: '',\n});\n\nexport type CodeBlockProps = HTMLAttributes<HTMLDivElement> & {\n code: string;\n language: string;\n showLineNumbers?: boolean;\n /**\n * Soft-wrap long lines. The container is `overflow-hidden`, so without this\n * anything past the right edge is clipped with no scrollbar to recover it.\n */\n wrap?: boolean;\n children?: ReactNode;\n};\n\nexport const CodeBlock = ({\n code,\n language,\n showLineNumbers = false,\n wrap = false,\n className,\n children,\n ...props\n}: CodeBlockProps) => (\n <CodeBlockContext.Provider value={{ code }}>\n <div\n className={cn(\n 'bg-background text-foreground relative w-full overflow-hidden rounded-md border',\n className,\n )}\n {...props}\n >\n <div className=\"relative\">\n <SyntaxHighlighter\n className=\"overflow-hidden dark:hidden\"\n codeTagProps={{\n className: 'font-mono text-xs',\n }}\n customStyle={{\n margin: 0,\n padding: '0.5rem',\n fontSize: '0.75rem',\n background: 'hsl(var(--background))',\n color: 'hsl(var(--foreground))',\n }}\n language={language}\n lineNumberStyle={{\n color: 'hsl(var(--muted-foreground))',\n paddingRight: '1rem',\n minWidth: '2.5rem',\n }}\n showLineNumbers={showLineNumbers}\n style={oneLight}\n wrapLongLines={wrap}\n >\n {code}\n </SyntaxHighlighter>\n <SyntaxHighlighter\n className=\"hidden overflow-hidden dark:block\"\n codeTagProps={{\n className: 'font-mono text-xs',\n }}\n customStyle={{\n margin: 0,\n padding: '0.5rem',\n fontSize: '0.75rem',\n background: 'hsl(var(--background))',\n color: 'hsl(var(--foreground))',\n }}\n language={language}\n lineNumberStyle={{\n color: 'hsl(var(--muted-foreground))',\n paddingRight: '1rem',\n minWidth: '2.5rem',\n }}\n showLineNumbers={showLineNumbers}\n style={oneDark}\n wrapLongLines={wrap}\n >\n {code}\n </SyntaxHighlighter>\n {children && (\n <div className=\"absolute top-1 right-1 flex items-center gap-1\">\n {children}\n </div>\n )}\n </div>\n </div>\n </CodeBlockContext.Provider>\n);\n\nexport type CodeBlockCopyButtonProps = ComponentProps<typeof Button> & {\n onCopy?: () => void;\n onError?: (error: Error) => void;\n timeout?: number;\n};\n\nexport const CodeBlockCopyButton = ({\n onCopy,\n onError,\n timeout = 2000,\n children,\n className,\n ...props\n}: CodeBlockCopyButtonProps) => {\n const [isCopied, copy] = useCopyFeedback(timeout);\n const { code } = useContext(CodeBlockContext);\n\n const copyToClipboard = async () => {\n if (typeof window === 'undefined' || !navigator.clipboard.writeText) {\n onError?.(new Error('Clipboard API not available'));\n return;\n }\n\n try {\n await copy(code);\n onCopy?.();\n } catch (error) {\n onError?.(error as Error);\n }\n };\n\n const Icon = isCopied ? CheckIcon : CopyIcon;\n\n return (\n <Button\n className={cn('shrink-0', className)}\n onClick={copyToClipboard}\n size=\"icon\"\n variant=\"ghost\"\n {...props}\n >\n {children ?? <Icon size={14} />}\n </Button>\n );\n};\n","import type { ToolUIPart } from 'ai';\nimport {\n CheckCircleIcon,\n ChevronDownIcon,\n CircleIcon,\n ClockIcon,\n WrenchIcon,\n XCircleIcon,\n} from 'lucide-react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { isValidElement } from 'react';\n\nimport {\n Badge,\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n cn,\n} from '@deepagents/react-shadcn';\n\nimport { CodeBlock } from './CodeBlock.tsx';\n\nexport type ToolProps = ComponentProps<typeof Collapsible>;\n\nexport const Tool = ({ className, ...props }: ToolProps) => (\n <Collapsible\n className={cn('not-prose mb-4 w-full rounded-md border', className)}\n {...props}\n />\n);\n\nexport type ToolHeaderProps = {\n title?: string;\n type: ToolUIPart['type'];\n state: ToolUIPart['state'];\n className?: string;\n};\n\nconst getStatusBadge = (status: ToolUIPart['state']) => {\n const labels: Record<\n | ToolUIPart['state']\n | 'approval-requested'\n | 'approval-responded'\n | 'output-denied',\n string\n > = {\n 'input-streaming': 'Pending',\n 'input-available': 'Running',\n 'approval-requested': 'Awaiting Approval',\n 'approval-responded': 'Responded',\n 'output-available': 'Completed',\n 'output-error': 'Error',\n 'output-denied': 'Denied',\n };\n\n const icons: Record<\n | ToolUIPart['state']\n | 'approval-requested'\n | 'approval-responded'\n | 'output-denied',\n ReactNode\n > = {\n 'input-streaming': <CircleIcon className=\"size-4\" />,\n 'input-available': <ClockIcon className=\"size-4 animate-pulse\" />,\n 'approval-requested': <ClockIcon className=\"size-4 text-yellow-600\" />,\n 'approval-responded': <CheckCircleIcon className=\"size-4 text-blue-600\" />,\n 'output-available': <CheckCircleIcon className=\"size-4 text-green-600\" />,\n 'output-error': <XCircleIcon className=\"size-4 text-red-600\" />,\n 'output-denied': <XCircleIcon className=\"size-4 text-orange-600\" />,\n };\n\n return (\n <Badge className=\"gap-1.5 rounded-full text-xs\" variant=\"secondary\">\n {icons[status]}\n {labels[status]}\n </Badge>\n );\n};\n\nexport const ToolHeader = ({\n className,\n title,\n type,\n state,\n ...props\n}: ToolHeaderProps) => (\n <CollapsibleTrigger\n className={cn(\n 'group flex w-full items-center justify-between gap-4 p-3',\n className,\n )}\n {...props}\n >\n <div className=\"flex items-center gap-2\">\n <WrenchIcon className=\"text-muted-foreground size-4\" />\n <span className=\"text-sm font-medium\">\n {title ?? type.split('-').slice(1).join('-')}\n </span>\n {getStatusBadge(state)}\n </div>\n <ChevronDownIcon className=\"text-muted-foreground size-4 transition-transform group-data-[panel-open]:rotate-180\" />\n </CollapsibleTrigger>\n);\n\nexport type ToolContentProps = ComponentProps<typeof CollapsibleContent>;\n\nexport const ToolContent = ({ className, ...props }: ToolContentProps) => (\n <CollapsibleContent\n className={cn(\n 'data-closed:fade-out-0 data-closed:slide-out-to-top-2 data-open:slide-in-from-top-2 text-popover-foreground data-closed:animate-out data-open:animate-in outline-none',\n className,\n )}\n {...props}\n />\n);\n\nexport type ToolInputProps = ComponentProps<'div'> & {\n input: ToolUIPart['input'];\n};\n\nexport const ToolInput = ({ className, input, ...props }: ToolInputProps) => (\n <div className={cn('space-y-2 overflow-hidden p-4', className)} {...props}>\n <h4 className=\"text-muted-foreground text-xs font-medium tracking-wide uppercase\">\n Parameters\n </h4>\n <div className=\"bg-muted/50 rounded-md\">\n <CodeBlock code={JSON.stringify(input, null, 2)} language=\"json\" />\n </div>\n </div>\n);\n\nexport type ToolOutputProps = ComponentProps<'div'> & {\n output: ToolUIPart['output'];\n errorText: ToolUIPart['errorText'];\n};\n\nexport const ToolOutput = ({\n className,\n output,\n errorText,\n ...props\n}: ToolOutputProps) => {\n if (!(output || errorText)) {\n return null;\n }\n\n let Output = <div>{output as ReactNode}</div>;\n\n if (typeof output === 'object' && !isValidElement(output)) {\n Output = (\n <CodeBlock code={JSON.stringify(output, null, 2)} language=\"json\" />\n );\n } else if (typeof output === 'string') {\n Output = <CodeBlock code={output} language=\"json\" />;\n }\n\n return (\n <div className={cn('space-y-2 p-4', className)} {...props}>\n <h4 className=\"text-muted-foreground text-xs font-medium tracking-wide uppercase\">\n {errorText ? 'Error' : 'Result'}\n </h4>\n <div\n className={cn(\n 'overflow-x-auto rounded-md text-xs [&_table]:w-full',\n errorText\n ? 'bg-destructive/10 text-destructive'\n : 'bg-muted/50 text-foreground',\n )}\n >\n {errorText && <div>{errorText}</div>}\n {Output}\n </div>\n </div>\n );\n};\n","import { type DynamicToolUIPart, type ToolUIPart, getToolName } from 'ai';\n\nimport { Response } from '../elements/Response.tsx';\nimport {\n Tool,\n ToolContent,\n ToolHeader,\n ToolInput,\n ToolOutput,\n} from '../elements/Tool.tsx';\n\nexport function ToolDebug({ part }: { part: ToolUIPart }) {\n const toolName = getToolName(part);\n\n return (\n <Tool data-copy-exclude=\"assistant-snapshot\">\n <ToolHeader\n title={`Executing ${toolName}`}\n state={part.state}\n type={part.type}\n />\n <ToolContent>\n <ToolInput input={part.input} />\n <ToolOutput\n output={\n <Response className=\"break-all\">\n {typeof part.output === 'string'\n ? part.output\n : JSON.stringify(part.output, null, 2)}\n </Response>\n }\n errorText={part.errorText}\n />\n </ToolContent>\n </Tool>\n );\n}\nexport function DynamicToolDebug({ part }: { part: DynamicToolUIPart }) {\n return (\n <Tool data-copy-exclude=\"assistant-snapshot\">\n <ToolHeader\n title={`Executing ${part.toolName}`}\n state={part.state}\n\n type={part.type as 'tool-dynamic'}\n />\n <ToolContent>\n <ToolInput input={part.input} />\n <ToolOutput\n output={\n <Response className=\"break-all\">\n {typeof part.output === 'string'\n ? part.output\n : JSON.stringify(part.output, null, 2)}\n </Response>\n }\n errorText={part.errorText}\n />\n </ToolContent>\n </Tool>\n );\n}\n","import { Loader2, type LucideIcon } from 'lucide-react';\nimport { useEffect, useState } from 'react';\n\nimport {\n Button,\n Tooltip,\n TooltipContent,\n TooltipTrigger,\n cn,\n} from '@deepagents/react-shadcn';\n\ninterface TheButtonProps extends React.ComponentProps<typeof Button> {\n /**\n * Shows a loading spinner after the delay period.\n * Disables the button while loading.\n */\n loading?: boolean;\n /**\n * Icon to display before the button text.\n * Can be a React node or a Lucide icon component.\n */\n icon?: React.ReactNode | LucideIcon;\n /**\n * Delay in milliseconds before showing the loading spinner.\n * @default 300\n */\n delay?: number;\n /**\n * Tooltip text shown on hover. When provided with `size=\"icon\"`,\n * creates an icon-only button with tooltip.\n */\n tooltip?: string;\n}\n\n// --- Internal Components ---\n\nfunction useDelayedLoading(loading: boolean | undefined, delay: number) {\n const isLoading = !!loading;\n const [delayPassed, setDelayPassed] = useState(false);\n\n useEffect(() => {\n if (!isLoading) {\n return;\n }\n\n const timerId = setTimeout(() => {\n setDelayPassed(true);\n }, delay);\n\n return () => {\n clearTimeout(timerId);\n queueMicrotask(() => setDelayPassed(false));\n };\n }, [isLoading, delay]);\n\n return isLoading && delayPassed;\n}\n\nfunction isComponent(\n value: unknown,\n): value is React.ComponentType<{ className?: string }> {\n if (typeof value === 'function') return true;\n return (\n typeof value === 'object' &&\n value !== null &&\n '$$typeof' in value &&\n typeof (value as Record<string, unknown>).render === 'function'\n );\n}\n\nfunction IconRenderer({ icon }: { icon: React.ReactNode | LucideIcon }) {\n if (isComponent(icon)) {\n const Icon = icon;\n return <Icon className=\"size-4\" />;\n }\n // Not a useless fragment: `isComponent` takes `unknown` and narrows only its\n // positive branch, so `icon` is still `ReactNode | LucideIcon` here and\n // `LucideIcon` is not assignable to `ReactNode`. The fragment is what makes\n // this an Element. Returning `icon` bare fails with TS2786 at both call sites.\n // eslint-disable-next-line react/jsx-no-useless-fragment -- carries the type, see above\n return <>{icon}</>;\n}\n\nfunction LoadingSpinner() {\n return <Loader2 className=\"size-4 animate-spin\" />;\n}\n\nfunction IconButtonContent({\n icon,\n showSpinner,\n}: {\n icon?: React.ReactNode | LucideIcon;\n showSpinner: boolean;\n}) {\n return (\n <div className=\"relative size-4 overflow-hidden\">\n {icon && (\n <div\n className={cn(\n 'absolute inset-0 flex items-center justify-center transition-all duration-300 ease-in-out',\n showSpinner\n ? '-translate-x-full opacity-0'\n : 'translate-x-0 opacity-100',\n )}\n >\n <IconRenderer icon={icon} />\n </div>\n )}\n <div\n className={cn(\n 'absolute inset-0 transition-all duration-300 ease-in-out',\n showSpinner\n ? 'translate-x-0 opacity-100'\n : 'translate-x-full opacity-0',\n )}\n >\n <LoadingSpinner />\n </div>\n </div>\n );\n}\n\nfunction TextButtonContent({\n icon,\n showSpinner,\n children,\n}: {\n icon?: React.ReactNode | LucideIcon;\n showSpinner: boolean;\n children: React.ReactNode;\n}) {\n return (\n <>\n {icon && (\n <div\n className={cn(\n 'overflow-hidden transition-all duration-300 ease-in-out',\n showSpinner ? 'w-0 opacity-0' : 'w-4 opacity-100',\n )}\n >\n <IconRenderer icon={icon} />\n </div>\n )}\n <div\n className={cn(\n 'overflow-hidden transition-all duration-300 ease-in-out',\n showSpinner ? 'w-4 opacity-100' : '-ms-2 w-0 opacity-0',\n icon ? '-ms-2' : '',\n )}\n >\n <LoadingSpinner />\n </div>\n {children}\n </>\n );\n}\n\nfunction WithTooltip({\n tooltip,\n children,\n}: {\n tooltip?: string;\n children: React.ReactElement;\n}) {\n if (!tooltip) {\n return children;\n }\n\n return (\n <Tooltip>\n <TooltipTrigger render={children} />\n <TooltipContent>{tooltip}</TooltipContent>\n </Tooltip>\n );\n}\n\n/**\n * A versatile button component with loading state and tooltip support.\n *\n * Supports all standard Button variants and sizes from shadcn/ui,\n * plus additional features for loading states and icon-only buttons.\n *\n * @example\n * // Basic button\n * <TheButton>Click me</TheButton>\n *\n * @example\n * // Primary button with loading state\n * <TheButton loading={isSubmitting}>\n * Submit\n * </TheButton>\n *\n * @example\n * // Button with icon\n * <TheButton icon={<Save className=\"size-4\" />}>\n * Save Changes\n * </TheButton>\n *\n * @example\n * // Using Lucide icon directly\n * <TheButton icon={Trash}>\n * Delete\n * </TheButton>\n *\n * @example\n * // Icon-only button with tooltip\n * <TheButton\n * size=\"icon\"\n * variant=\"outline\"\n * icon={Settings}\n * tooltip=\"Open settings\"\n * />\n *\n * @example\n * // Destructive variant\n * <TheButton variant=\"destructive\" icon={Trash}>\n * Delete Item\n * </TheButton>\n *\n * @example\n * // Ghost variant (for toolbars, menus)\n * <TheButton variant=\"ghost\" size=\"sm\">\n * Cancel\n * </TheButton>\n *\n * @example\n * // Secondary variant\n * <TheButton variant=\"secondary\">\n * Secondary Action\n * </TheButton>\n *\n * @example\n * // Link variant\n * <TheButton variant=\"link\">\n * Learn more\n * </TheButton>\n *\n * @example\n * // Outline variant with custom delay\n * <TheButton variant=\"outline\" loading={isPending} delay={500}>\n * Processing...\n * </TheButton>\n *\n * @example\n * // Small size\n * <TheButton size=\"sm\" icon={Plus}>\n * Add Item\n * </TheButton>\n *\n * @example\n * // Large size\n * <TheButton size=\"lg\">\n * Get Started\n * </TheButton>\n */\nexport function TheButton({\n loading,\n disabled,\n children,\n delay = 300,\n icon,\n tooltip,\n size,\n ...props\n}: TheButtonProps) {\n const showSpinner = useDelayedLoading(loading, delay);\n const isIconButton = size?.startsWith('icon');\n\n return (\n <WithTooltip tooltip={tooltip}>\n <Button\n disabled={disabled || loading}\n size={size}\n {...props}\n className={cn('cursor-pointer gap-2', props.className)}\n >\n {isIconButton ? (\n <IconButtonContent icon={icon} showSpinner={showSpinner} />\n ) : (\n <TextButtonContent icon={icon} showSpinner={showSpinner}>\n {children}\n </TextButtonContent>\n )}\n </Button>\n </WithTooltip>\n );\n}\n","export const COPY_EXCLUSION_ATTRIBUTE = 'data-copy-exclude';\n\nexport const COPY_EXCLUSION_MODES = {\n image: 'image',\n assistantSnapshot: 'assistant-snapshot',\n} as const;\n\nexport type CopyExclusionMode =\n (typeof COPY_EXCLUSION_MODES)[keyof typeof COPY_EXCLUSION_MODES];\n\ntype AttributeReader = {\n getAttribute(name: string): string | null;\n};\n\ntype ClipboardLike = {\n write?: unknown;\n writeText?: unknown;\n} | null;\n\nexport type CopyToClipboardStrategy = 'image' | 'text' | 'none';\n\nfunction isAttributeReader(value: unknown): value is AttributeReader {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'getAttribute' in value &&\n typeof value.getAttribute === 'function'\n );\n}\n\nexport function hasCopyExclusion(\n node: unknown,\n mode: CopyExclusionMode,\n): boolean {\n if (!isAttributeReader(node)) {\n return false;\n }\n\n const attributeValue = node.getAttribute(COPY_EXCLUSION_ATTRIBUTE);\n if (!attributeValue) {\n return false;\n }\n\n return attributeValue.split(/\\s+/).includes(mode);\n}\n\nexport function shouldIncludeInCopyImage(\n node: unknown,\n mode: CopyExclusionMode,\n): boolean {\n return !hasCopyExclusion(node, mode);\n}\n\nexport function resolveCopyToClipboardStrategy({\n clipboard,\n ClipboardItem,\n}: {\n clipboard?: ClipboardLike;\n ClipboardItem?: unknown;\n}): CopyToClipboardStrategy {\n if (\n typeof clipboard?.write === 'function' &&\n typeof ClipboardItem === 'function'\n ) {\n return 'image';\n }\n\n if (typeof clipboard?.writeText === 'function') {\n return 'text';\n }\n\n return 'none';\n}\n","import { createContext } from 'react';\n\n/**\n * True while a subtree renders into a static artifact (clipboard image, saved\n * PNG, printed PDF) rather than onto the interactive surface. Lives in its own\n * module so the portal that provides it and `useIsAssistantSnapshotRender` —\n * which stays exported from `assistant-snapshot.tsx` for its existing consumers\n * — can share it without importing each other.\n */\nexport const SnapshotRenderContext = createContext(false);\n","import type { ReactNode, RefObject } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { SnapshotRenderContext } from './snapshot-context.ts';\n\nexport function waitForNextPaint() {\n return new Promise<void>((resolve) => {\n requestAnimationFrame(() => resolve());\n });\n}\n\n/**\n * Renders `children` off-screen at a fixed width so a capture (image, PDF) does\n * not depend on the current window size.\n *\n * A portal keeps the React tree intact while moving only the DOM node, so the\n * snapshot copy shares the surrounding providers — params, SQL interpolation,\n * and the React Query cache. Widgets therefore hydrate from cache instead of\n * re-running their queries, and the artifact shows the same numbers as the\n * screen.\n */\nexport function SnapshotRenderPortal({\n contentRef,\n children,\n width = 1120,\n padding = 24,\n className = 'bg-background text-foreground flex flex-col gap-3',\n}: {\n contentRef: RefObject<HTMLDivElement | null>;\n children: ReactNode;\n width?: number;\n padding?: number;\n className?: string;\n}) {\n if (typeof document === 'undefined') {\n return null;\n }\n\n return createPortal(\n <div\n aria-hidden=\"true\"\n style={{\n position: 'fixed',\n top: 0,\n left: '-100000px',\n pointerEvents: 'none',\n zIndex: -1,\n }}\n >\n <SnapshotRenderContext value={true}>\n <div\n ref={contentRef}\n className={className}\n style={{ width, padding, boxSizing: 'border-box' }}\n >\n {children}\n </div>\n </SnapshotRenderContext>\n </div>,\n document.body,\n );\n}\n","import type { RefObject } from 'react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport {\n type CopyExclusionMode,\n resolveCopyToClipboardStrategy,\n shouldIncludeInCopyImage,\n} from './copy-image.ts';\n\ntype CopySuccessMode = 'image' | 'text';\n\nexport type CopyImageFeedback =\n | { kind: 'success'; mode: CopySuccessMode }\n | { kind: 'error'; message: string }\n | null;\n\nfunction resolveImageBackgroundColor(element: HTMLElement): string | undefined {\n const elementBackground = getComputedStyle(element).backgroundColor;\n if (elementBackground !== 'rgba(0, 0, 0, 0)') {\n return elementBackground;\n }\n\n const bodyBackground = getComputedStyle(document.body).backgroundColor;\n return bodyBackground === 'rgba(0, 0, 0, 0)' ? undefined : bodyBackground;\n}\n\nexport function useCopyElementAsImage({\n elementRef,\n excludeMode,\n fallbackText,\n}: {\n elementRef: RefObject<HTMLElement | null>;\n excludeMode: CopyExclusionMode;\n fallbackText?: string;\n}) {\n const [isCopying, setIsCopying] = useState(false);\n const [feedback, setFeedback] = useState<CopyImageFeedback>(null);\n const feedbackTimeoutRef = useRef<number | null>(null);\n\n const clearFeedbackTimeout = useCallback(() => {\n if (feedbackTimeoutRef.current === null) {\n return;\n }\n\n window.clearTimeout(feedbackTimeoutRef.current);\n feedbackTimeoutRef.current = null;\n }, []);\n\n const setTimedFeedback = useCallback(\n (nextFeedback: Exclude<CopyImageFeedback, null>) => {\n clearFeedbackTimeout();\n setFeedback(nextFeedback);\n feedbackTimeoutRef.current = window.setTimeout(() => {\n setFeedback(null);\n feedbackTimeoutRef.current = null;\n }, 3000);\n },\n [clearFeedbackTimeout],\n );\n\n useEffect(\n () => () => {\n clearFeedbackTimeout();\n },\n [clearFeedbackTimeout],\n );\n\n const copyText = useCallback(async () => {\n if (\n typeof navigator === 'undefined' ||\n typeof navigator.clipboard?.writeText !== 'function' ||\n !fallbackText ||\n fallbackText.trim().length === 0\n ) {\n return false;\n }\n\n await navigator.clipboard.writeText(fallbackText);\n setTimedFeedback({ kind: 'success', mode: 'text' });\n return true;\n }, [fallbackText, setTimedFeedback]);\n\n const copyImage = useCallback(async () => {\n if (!elementRef.current) {\n throw new Error('Nothing is ready to copy yet.');\n }\n\n const { toBlob } = await import('html-to-image');\n const blob = await toBlob(elementRef.current, {\n backgroundColor: resolveImageBackgroundColor(elementRef.current),\n pixelRatio: 2,\n filter: (node) => shouldIncludeInCopyImage(node, excludeMode),\n });\n\n if (!blob) {\n throw new Error('Unable to render the image for copying.');\n }\n\n await navigator.clipboard.write([\n new ClipboardItem({\n [blob.type]: blob,\n }),\n ]);\n\n setTimedFeedback({ kind: 'success', mode: 'image' });\n }, [elementRef, excludeMode, setTimedFeedback]);\n\n const copy = useCallback(async () => {\n setIsCopying(true);\n setFeedback(null);\n\n try {\n const strategy = resolveCopyToClipboardStrategy({\n clipboard:\n typeof navigator === 'undefined' ? undefined : navigator.clipboard,\n ClipboardItem:\n typeof window === 'undefined' ? undefined : window.ClipboardItem,\n });\n\n if (strategy === 'image') {\n try {\n await copyImage();\n return;\n } catch (error) {\n if (await copyText()) {\n return;\n }\n\n throw error;\n }\n }\n\n if (strategy === 'text' && (await copyText())) {\n return;\n }\n\n setTimedFeedback({\n kind: 'error',\n message:\n strategy === 'none'\n ? 'Clipboard access is not available here.'\n : 'Image copy is not supported in this browser.',\n });\n } catch {\n setTimedFeedback({\n kind: 'error',\n message: 'Copy failed. Please try again.',\n });\n } finally {\n setIsCopying(false);\n }\n }, [copyImage, copyText, setTimedFeedback]);\n\n return { copy, feedback, isCopying };\n}\n","import { type UIMessage, isTextUIPart } from 'ai';\nimport { Check, Copy } from 'lucide-react';\nimport {\n type ReactNode,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nimport { TheButton } from '../ui/TheButton.tsx';\nimport { COPY_EXCLUSION_MODES } from './copy-image.ts';\nimport { SnapshotRenderContext } from './snapshot-context.ts';\nimport { SnapshotRenderPortal, waitForNextPaint } from './snapshot-render.tsx';\nimport { useCopyElementAsImage } from './use-copy-element-as-image.ts';\n\nexport function extractAssistantRawText(message: UIMessage): string {\n return message.parts\n .filter(isTextUIPart)\n .map((part) => part.text)\n .join('\\n');\n}\n\nexport function useIsAssistantSnapshotRender() {\n return useContext(SnapshotRenderContext);\n}\n\nexport function AssistantSnapshot({\n message,\n renderContent,\n className,\n}: {\n message: UIMessage;\n renderContent: () => ReactNode;\n className?: string;\n}) {\n const snapshotRef = useRef<HTMLDivElement>(null);\n const [showSnapshot, setShowSnapshot] = useState(false);\n const fallbackText = useMemo(\n () => extractAssistantRawText(message),\n [message],\n );\n const { copy, feedback, isCopying } = useCopyElementAsImage({\n elementRef: snapshotRef,\n excludeMode: COPY_EXCLUSION_MODES.assistantSnapshot,\n fallbackText,\n });\n\n const handleCopy = useCallback(async () => {\n if (!showSnapshot) {\n setShowSnapshot(true);\n }\n\n await waitForNextPaint();\n await copy();\n }, [copy, showSnapshot]);\n\n let label = 'Copy snapshot';\n if (isCopying) {\n label = 'Copying snapshot';\n } else if (feedback?.kind === 'success') {\n label = feedback.mode === 'image' ? 'Copied snapshot' : 'Copied text';\n }\n\n return (\n <>\n {showSnapshot && (\n <SnapshotRenderPortal contentRef={snapshotRef}>\n {renderContent()}\n </SnapshotRenderPortal>\n )}\n <div\n data-copy-exclude=\"assistant-snapshot\"\n className={cn('flex items-center gap-2', className)}\n >\n {feedback?.kind === 'error' && (\n <span className=\"text-destructive text-xs\">{feedback.message}</span>\n )}\n <TheButton\n type=\"button\"\n size=\"icon-sm\"\n variant=\"ghost\"\n loading={isCopying}\n onClick={handleCopy}\n aria-label={label}\n icon={\n feedback?.kind === 'success' ? (\n <Check className=\"size-4\" />\n ) : (\n <Copy className=\"size-4\" />\n )\n }\n />\n </div>\n </>\n );\n}\n","import type { ToolUIPart, UIMessage } from 'ai';\nimport { isToolUIPart } from 'ai';\n\nimport type { ComponentRegistry } from './registry.ts';\n\n/**\n * A subagent call is identified by the `toolMetadata` the backend attaches to\n * the tool definition, never by tool name — so every tool built by the subagent\n * factory renders as a chip without the UI enumerating them.\n */\nexport function isSubagentPart(part: UIMessage['parts'][number]) {\n return isToolUIPart(part) && part.toolMetadata?.kind === 'subagent';\n}\n\nexport function subagentDisplayName(part: ToolUIPart) {\n const name = part.toolMetadata?.displayName;\n return typeof name === 'string' ? name : 'Subagent';\n}\n\nexport function resolveToolEntry(\n part: Pick<UIMessage['parts'][number], 'type'>,\n registry: ComponentRegistry | undefined,\n) {\n const toolKey = part.type.replace('tool-', '');\n const toolEntry = registry?.[toolKey];\n return { toolKey, toolEntry };\n}\n\nexport function isActiveClientInputTool(\n toolEntry: ComponentRegistry[string] | undefined,\n state: ToolUIPart['state'] | undefined,\n): boolean {\n return (\n toolEntry?.static === false &&\n !!toolEntry?.requiresUserInput &&\n state === 'input-available'\n );\n}\n","import React from 'react';\n\nexport function MarkdownParagraph({\n children,\n}: {\n children?: React.ReactNode;\n}) {\n const childArray = React.Children.toArray(children);\n\n const hasCustomElement = childArray.some(\n (child) => React.isValidElement(child) && typeof child.type !== 'string',\n );\n\n if (!hasCustomElement) {\n return <p>{children}</p>;\n }\n\n const isAllCustom =\n childArray.length > 0 &&\n childArray.every(\n (child) => React.isValidElement(child) && typeof child.type !== 'string',\n );\n\n if (isAllCustom) {\n return children;\n }\n\n return <div>{children}</div>;\n}\n","import { useMemo } from 'react';\n\nimport { assertNoReservedAttributes } from '@deepagents/elements';\n\nimport { MarkdownParagraph } from '../chat/markdown-paragraph.tsx';\nimport { Response, type ResponseProps } from '../elements/Response.tsx';\nimport type { GenAIInteractiveElement } from '../elements/interactive-element.ts';\n\nexport type { GenAIInteractiveElement };\n\ntype InteractiveResponseProps = Omit<\n ResponseProps,\n 'components' | 'allowedTags'\n> & {\n elements?: GenAIInteractiveElement[];\n};\n\nfunction buildStreamdownRegistry(entries: GenAIInteractiveElement[]) {\n const components: Record<string, GenAIInteractiveElement['component']> = {\n p: MarkdownParagraph,\n };\n const allowedTags: Record<string, string[]> = {};\n for (const entry of entries) {\n assertNoReservedAttributes(entry);\n components[entry.name] = entry.component;\n allowedTags[entry.name] = entry.allowedAttributes;\n }\n return { components, allowedTags };\n}\n\nexport function InteractiveResponse({\n elements,\n ...props\n}: InteractiveResponseProps) {\n const registry = useMemo(\n () => buildStreamdownRegistry(elements ?? []),\n [elements],\n );\n return <Response {...registry} {...props} />;\n}\n","import { type ToolUIPart } from 'ai';\nimport { Loader } from 'lucide-react';\n\nimport { Button } from '@deepagents/react-shadcn';\n\nimport {\n useAgent,\n useAgentMessages,\n} from '../chat/agent-context.tsx';\nimport { ToolOutput } from '../elements/Tool.tsx';\n\nfunction ToolApproval({ part }: { part: ToolUIPart }) {\n const { addToolApprovalResponse } = useAgentMessages();\n if (part.state !== 'approval-requested') return null;\n\n const name = part.title ?? part.type.slice('tool-'.length);\n\n return (\n <div\n aria-label={`${name} approval`}\n className=\"border-border bg-muted/30 space-y-3 rounded-lg border p-3\"\n data-copy-exclude=\"assistant-snapshot\"\n role=\"group\"\n >\n <div className=\"space-y-1\">\n <p className=\"text-sm font-medium\">{name}</p>\n {part.approval.requestReason && (\n <p className=\"text-muted-foreground text-sm\">\n {part.approval.requestReason}\n </p>\n )}\n </div>\n <div className=\"flex justify-end gap-2\">\n <Button\n type=\"button\"\n variant=\"destructive\"\n onClick={() =>\n void addToolApprovalResponse({\n id: part.approval.id,\n approved: false,\n })\n }\n >\n Deny\n </Button>\n <Button\n type=\"button\"\n onClick={() =>\n void addToolApprovalResponse({\n id: part.approval.id,\n approved: true,\n })\n }\n >\n Approve\n </Button>\n </div>\n </div>\n );\n}\n\nexport function RenderPart({ part }: { part: ToolUIPart }) {\n const { registry } = useAgent();\n\n if (part.input === undefined) {\n return part.state === 'output-error' ? (\n <ToolOutput output={part.output} errorText={part.errorText} />\n ) : (\n <Loader className=\"size-4 animate-spin\" />\n );\n }\n\n const approval = <ToolApproval part={part} />;\n\n if (!registry) return approval;\n\n const customRenderer = registry[part.type.replace('tool-', '')];\n if (customRenderer) {\n const Renderer = customRenderer.component;\n return (\n <div className=\"space-y-2\">\n {registry.progress && <registry.progress.component part={part} />}\n <Renderer part={part} />\n {approval}\n </div>\n );\n } else {\n return (\n <>\n {registry.progress && <registry.progress.component part={part} />}\n {approval}\n </>\n );\n }\n}\n","import type { ToolUIPart } from 'ai';\n\nimport { Attachment, cn } from '@deepagents/react-shadcn';\n\nimport {\n type GenAIInteractiveElement,\n InteractiveResponse,\n} from '../components/InteractiveResponse.tsx';\nimport { ToolDebug } from '../components/tool-debug.tsx';\nimport { useIsAssistantSnapshotRender } from '../copy/assistant-snapshot.tsx';\nimport { RenderPart } from '../renderers/render-part.tsx';\nimport { useAgent, useAgentStatus } from './agent-context.tsx';\n\nexport const SLIDE_UP_ANIMATED = { animation: 'slideUp' } as const;\n\ntype MessageAttachmentPartProps = {\n filename?: string;\n mediaType: string;\n url: string;\n};\n\nfunction ImageFilePart({ filename, url }: { filename?: string; url: string }) {\n return (\n <img\n src={url}\n alt={filename ?? 'Attached image'}\n className=\"max-h-64 rounded-md border object-contain\"\n />\n );\n}\n\nfunction FileAttachmentPart({\n filename,\n mediaType,\n url,\n}: {\n filename?: string;\n mediaType: string;\n url?: string;\n}) {\n const name = filename || 'Untitled';\n const player = url?.startsWith('data:') ? null : url &&\n mediaType.startsWith('video/') ? (\n <video\n controls\n playsInline\n preload=\"metadata\"\n src={url}\n aria-label={name}\n className=\"max-h-96 w-full rounded-md bg-black\"\n />\n ) : url && mediaType.startsWith('audio/') ? (\n <audio\n controls\n preload=\"metadata\"\n src={url}\n aria-label={name}\n className=\"w-full\"\n />\n ) : null;\n return (\n <Attachment className=\"bg-muted/30 block w-full rounded-md p-3 text-sm text-inherit\">\n {player}\n <div className={player ? 'mt-2' : undefined}>\n <strong>File:</strong> {name} ({mediaType})\n {url ? (\n <>\n {' '}\n <a href={url} download={filename} className=\"underline\">\n Download\n </a>\n </>\n ) : null}\n </div>\n </Attachment>\n );\n}\n\nexport function MessageAttachmentPart({\n filename,\n mediaType,\n url,\n}: MessageAttachmentPartProps) {\n return mediaType.startsWith('image/') ? (\n <ImageFilePart filename={filename} url={url} />\n ) : (\n <FileAttachmentPart filename={filename} mediaType={mediaType} url={url} />\n );\n}\n\nexport function AssistantTextPart({\n text,\n elements,\n className,\n}: {\n text: string;\n elements?: GenAIInteractiveElement[];\n className?: string;\n}) {\n const { status } = useAgentStatus();\n const isSnapshotRender = useIsAssistantSnapshotRender();\n\n return (\n <div className={cn('text-sm', className)}>\n <InteractiveResponse\n elements={elements}\n animated={SLIDE_UP_ANIMATED}\n isAnimating={!isSnapshotRender && status === 'streaming'}\n >\n {text}\n </InteractiveResponse>\n </div>\n );\n}\n\nexport function ToolPartContent({ part }: { part: ToolUIPart }) {\n const showDebug = useShowDebug();\n return (\n <>\n {showDebug && <ToolDebug part={part} />}\n <RenderPart part={part} />\n </>\n );\n}\n\nexport function useShowDebug(): boolean {\n const { debugMode } = useAgent();\n const isSnapshotRender = useIsAssistantSnapshotRender();\n return !!debugMode && !isSnapshotRender;\n}\n","import type { ToolUIPart } from 'ai';\nimport type { ReactNode } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nimport { useIsAssistantSnapshotRender } from '../../copy/assistant-snapshot.tsx';\nimport type { ToolLabel } from '../../tools/registry.ts';\n\nfunction isToolRunning(state?: ToolUIPart['state']) {\n return !!state && state !== 'output-available';\n}\n\nfunction useToolActionsVisible({\n label,\n part,\n state,\n}: {\n label: ToolLabel;\n part?: ToolUIPart;\n state?: ToolUIPart['state'];\n}) {\n const isSnapshotRender = useIsAssistantSnapshotRender();\n return (\n !isSnapshotRender && !!label.actions && !!part && !isToolRunning(state)\n );\n}\n\nexport function ToolLabelInline({\n label,\n part,\n}: {\n label: ToolLabel;\n part: ToolUIPart;\n}) {\n const Icon = label.icon;\n const Actions = label.actions;\n const showActions = useToolActionsVisible({ label, part, state: part.state });\n\n return (\n <div className=\"text-muted-foreground flex items-center justify-between gap-1.5 text-xs\">\n <div className=\"flex items-center gap-1.5\">\n {Icon && (\n <Icon\n className={cn(\n 'size-3.5',\n label.isError ? 'text-destructive' : 'text-muted-foreground',\n )}\n />\n )}\n <span className=\"font-mono\">{label.name}</span>\n </div>\n {showActions && Actions && <Actions part={part} />}\n </div>\n );\n}\n\n/**\n * One `name: \"value\"` pair inside a tool signature. Hosts render their own\n * leading args as children of Segment.ToolDisclosure — a label builder is a\n * pure function, so anything needing a hook (resolving a data-source id to a\n * name) can only be assembled here, in render.\n */\nexport function ToolArg({\n name,\n value,\n}: {\n name: string;\n value: string | undefined;\n}) {\n return (\n <span data-slot=\"tool-arg\">\n {name}: "{value}"\n </span>\n );\n}\n\nexport function ToolLabelBlock({\n label,\n state,\n part,\n children,\n}: {\n label: ToolLabel;\n state?: ToolUIPart['state'];\n part?: ToolUIPart;\n children?: ReactNode;\n}) {\n const Actions = label.actions;\n const showActions = useToolActionsVisible({ label, part, state });\n\n return (\n <span className=\"mb-2 flex flex-col gap-1\">\n <span className=\"flex items-start justify-between gap-2\">\n {/* Separating args in CSS rather than by index lets a host arg render\n null without leaving a stray comma behind. */}\n <span className=\"text-muted-foreground min-w-0 truncate font-mono text-xs [&>[data-slot=tool-arg]+[data-slot=tool-arg]]:before:mr-1 [&>[data-slot=tool-arg]+[data-slot=tool-arg]]:before:content-[',']\">\n {label.name}({children}\n {label.args\n ? Object.entries(label.args).map(([key, value]) => (\n <ToolArg key={key} name={key} value={value} />\n ))\n : '...'}\n )\n </span>\n {showActions && Actions && part && (\n <span className=\"shrink-0\">\n <Actions part={part} />\n </span>\n )}\n </span>\n {label.detail && (\n <span\n className={cn(\n 'line-clamp-3 text-start font-mono text-[10px] leading-relaxed whitespace-pre-wrap',\n label.isError ? 'text-destructive/80' : 'text-muted-foreground',\n )}\n >\n {label.detail}\n </span>\n )}\n </span>\n );\n}\n","import type { ToolUIPart, UIMessage } from 'ai';\nimport { isStaticToolUIPart } from 'ai';\nimport { type ReactNode, createContext, use, useMemo } from 'react';\nimport { Fragment } from 'react/jsx-runtime';\n\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n} from '@deepagents/react-shadcn';\n\nimport { CitationPill } from '../../../components/CitationPill.tsx';\nimport { DynamicToolDebug } from '../../../components/tool-debug.tsx';\nimport { useIsAssistantSnapshotRender } from '../../../copy/assistant-snapshot.tsx';\nimport { Response } from '../../../elements/Response.tsx';\nimport {\n isActiveClientInputTool,\n resolveToolEntry,\n} from '../../../tools/helpers.ts';\nimport type { ToolLabel } from '../../../tools/registry.ts';\nimport { useAgent, useAgentMessages } from '../../agent-context.tsx';\nimport {\n citationIndexOf,\n extractSourcesFromMessages,\n} from '../../citations.ts';\nimport {\n AssistantTextPart,\n MessageAttachmentPart,\n SLIDE_UP_ANIMATED,\n ToolPartContent,\n useShowDebug,\n} from '../../message-parts.tsx';\nimport { isToolAborted } from '../../tool-abort.ts';\nimport type { MessagesContextValue } from '../messages-context.ts';\nimport { useMessagesStatus } from '../messages-context.ts';\nimport { ToolLabelBlock } from '../tool-label.tsx';\nimport type { MessageTrajectorySegment } from '../trajectory-segments.ts';\n\nexport function isCommentaryTextPart(part: UIMessage['parts'][number]) {\n return (\n part.type === 'text' &&\n part.providerMetadata?.openai?.phase === 'commentary'\n );\n}\n\nfunction SegmentText({\n segment,\n elements,\n className,\n}: {\n segment: Extract<MessageTrajectorySegment, { kind: 'text' }>;\n elements?: MessagesContextValue['elements'];\n className?: string;\n}) {\n return (\n <Fragment>\n {segment.parts.map(({ part, idx }) => {\n if (part.type !== 'text') return null;\n return (\n <AssistantTextPart\n key={`${idx}-text`}\n text={part.text}\n elements={elements}\n className={className}\n />\n );\n })}\n </Fragment>\n );\n}\n\nfunction SegmentFile({\n segment,\n}: {\n segment: Extract<MessageTrajectorySegment, { kind: 'file' }>;\n}) {\n const { part } = segment;\n if (part.type !== 'file') return null;\n return (\n <MessageAttachmentPart\n filename={part.filename}\n mediaType={part.mediaType}\n url={part.url}\n />\n );\n}\n\nfunction SegmentSource({\n segment,\n}: {\n segment: Extract<MessageTrajectorySegment, { kind: 'source' }>;\n}) {\n const { messages } = useAgentMessages();\n const sources = useMemo(\n () => extractSourcesFromMessages(messages),\n [messages],\n );\n\n return (\n <span>\n {segment.parts.map(({ part, idx }) => {\n if (part.type !== 'source-url') return null;\n const index = citationIndexOf(sources, part.url);\n if (index === null) return null;\n return (\n <CitationPill\n key={`source-${idx}`}\n source={{ url: part.url, title: part.title }}\n index={index}\n />\n );\n })}\n </span>\n );\n}\n\nfunction SegmentReasoning({\n segment,\n}: {\n segment: Extract<MessageTrajectorySegment, { kind: 'reasoning' }>;\n}) {\n const status = useMessagesStatus();\n const isSnapshotRender = useIsAssistantSnapshotRender();\n if (isSnapshotRender) return null;\n const { part } = segment;\n if (part.type !== 'reasoning') return null;\n\n return (\n <div className=\"text-muted-foreground text-xs\">\n <Response\n animated={SLIDE_UP_ANIMATED}\n isAnimating={status === 'streaming'}\n >\n {part.text}\n </Response>\n </div>\n );\n}\n\nfunction SegmentDynamicTool({\n segment,\n}: {\n segment: Extract<MessageTrajectorySegment, { kind: 'dynamic-tool' }>;\n}) {\n const showDebug = useShowDebug();\n if (!showDebug) return null;\n const { part } = segment;\n if (part.type !== 'dynamic-tool') return null;\n return <DynamicToolDebug part={part} />;\n}\n\ntype ToolSegmentContextValue = {\n part: ToolUIPart;\n label: ToolLabel | undefined;\n aborted: boolean;\n activeClientInput: boolean;\n defaultOpen: boolean;\n};\n\nconst ToolSegmentContext = createContext<ToolSegmentContextValue | null>(null);\n\n/**\n * Marker-relevant subset for arrangement wrappers (Timeline.Item) that sit\n * inside Segment.Tool and need label/state without the strict-context throw.\n */\nexport const ToolSegmentMarkerContext = createContext<{\n label: ToolLabel | undefined;\n state: ToolUIPart['state'];\n aborted: boolean;\n} | null>(null);\n\nexport function useToolSegment() {\n const context = use(ToolSegmentContext);\n if (!context) {\n throw new Error('Segment.Tool* parts must be rendered within Segment.Tool');\n }\n return context;\n}\n\nfunction SegmentTool({\n segment,\n children,\n}: {\n segment: Extract<MessageTrajectorySegment, { kind: 'tool' }>;\n children?: ReactNode;\n}) {\n const agent = useAgent();\n const status = useMessagesStatus();\n const { toolEntry } = resolveToolEntry(segment.part, agent.registry);\n const { part: toolPart } = segment;\n if (!isStaticToolUIPart(toolPart)) return null;\n const activeClientInput = isActiveClientInputTool(toolEntry, toolPart.state);\n const aborted = !activeClientInput && isToolAborted(toolPart, status);\n const baseLabel = toolEntry?.label?.(toolPart);\n const label = aborted\n ? {\n ...(baseLabel ?? { name: toolPart.type.replace('tool-', '') }),\n isError: true,\n detail: 'Cancelled by user',\n }\n : baseLabel;\n const defaultOpen =\n toolEntry?.static === false &&\n !!toolEntry?.requiresUserInput &&\n !activeClientInput;\n\n return (\n <ToolSegmentContext\n value={{ part: toolPart, label, aborted, activeClientInput, defaultOpen }}\n >\n <ToolSegmentMarkerContext\n value={{ label, state: toolPart.state, aborted }}\n >\n {children ?? <SegmentToolDisclosure />}\n </ToolSegmentMarkerContext>\n </ToolSegmentContext>\n );\n}\n\nfunction SegmentToolContent() {\n const { part, activeClientInput } = useToolSegment();\n if (activeClientInput) return null;\n return <ToolPartContent part={part} />;\n}\n\nfunction SegmentToolDisclosure({ children }: { children?: ReactNode }) {\n const { part, label, defaultOpen } = useToolSegment();\n if (!label) {\n return (\n <div className=\"min-w-0 flex-1\">\n <SegmentToolContent />\n </div>\n );\n }\n\n return (\n <Collapsible\n defaultOpen={defaultOpen}\n className=\"flex min-w-0 flex-1 flex-col\"\n >\n <CollapsibleTrigger className=\"cursor-pointer\">\n <ToolLabelBlock label={label} state={part.state} part={part}>\n {children}\n </ToolLabelBlock>\n </CollapsibleTrigger>\n <CollapsibleContent className=\"mb-2\">\n <SegmentToolContent />\n </CollapsibleContent>\n </Collapsible>\n );\n}\n\nexport const Segment = {\n Text: SegmentText,\n File: SegmentFile,\n Source: SegmentSource,\n Reasoning: SegmentReasoning,\n DynamicTool: SegmentDynamicTool,\n Tool: SegmentTool,\n ToolDisclosure: SegmentToolDisclosure,\n ToolContent: SegmentToolContent,\n};\n","import type { UIMessage } from 'ai';\nimport { isStaticToolUIPart } from 'ai';\n\nexport type TimelineNodeKind = 'tool' | 'dynamic-tool' | 'reasoning';\n\nexport type MessageTrajectorySegment =\n | { kind: 'text'; parts: { part: UIMessage['parts'][number]; idx: number }[] }\n | { kind: 'file'; part: UIMessage['parts'][number]; idx: number }\n | { kind: 'tool'; part: UIMessage['parts'][number]; idx: number }\n | { kind: 'dynamic-tool'; part: UIMessage['parts'][number]; idx: number }\n | { kind: 'reasoning'; part: UIMessage['parts'][number]; idx: number }\n | {\n kind: 'source';\n parts: { part: UIMessage['parts'][number]; idx: number }[];\n };\n\nexport function classifyPart(\n part: UIMessage['parts'][number],\n): TimelineNodeKind | null {\n if (isStaticToolUIPart(part)) return 'tool';\n if (part.type === 'dynamic-tool') return 'dynamic-tool';\n if (part.type === 'reasoning' && 'text' in part && part.text) {\n return 'reasoning';\n }\n return null;\n}\n\nexport function isVisibleTrajectoryNode(\n segment: MessageTrajectorySegment,\n debugMode: boolean | undefined,\n): boolean {\n if (segment.kind === 'text' || segment.kind === 'file') return false;\n if (segment.kind === 'source') return false;\n if (segment.kind === 'reasoning') return true;\n if (segment.kind === 'dynamic-tool') {\n return !!debugMode;\n }\n return true;\n}\n\nexport function shouldShowConnector(\n segments: MessageTrajectorySegment[],\n segmentIndex: number,\n debugMode: boolean | undefined,\n): boolean {\n const next = segments[segmentIndex + 1];\n return !!next && isVisibleTrajectoryNode(next, debugMode);\n}\n\nexport function buildMessageTrajectorySegments(\n parts: UIMessage['parts'],\n): MessageTrajectorySegment[] {\n const segments: MessageTrajectorySegment[] = [];\n\n for (let i = 0; i < parts.length; i++) {\n const part = parts[i];\n const nodeKind = classifyPart(part);\n\n if (nodeKind) {\n segments.push({ kind: nodeKind, part, idx: i });\n } else if (part.type === 'text') {\n const last = segments[segments.length - 1];\n if (last && last.kind === 'text') {\n last.parts.push({ part, idx: i });\n } else {\n segments.push({ kind: 'text', parts: [{ part, idx: i }] });\n }\n } else if (part.type === 'file') {\n segments.push({ kind: 'file', part, idx: i });\n } else if (part.type === 'source-url') {\n const last = segments[segments.length - 1];\n if (last && last.kind === 'source') {\n last.parts.push({ part, idx: i });\n } else {\n segments.push({ kind: 'source', parts: [{ part, idx: i }] });\n }\n }\n }\n\n return segments;\n}\n\nexport function getSegmentKey(\n segment: MessageTrajectorySegment,\n fallback: number,\n): number {\n if (segment.kind === 'text' || segment.kind === 'source') {\n return segment.parts[0]?.idx ?? fallback;\n }\n return segment.idx;\n}\n","import type { UIMessage } from 'ai';\nimport { isToolUIPart } from 'ai';\nimport { memo, useMemo } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nimport { Segment } from './segments/index.tsx';\nimport {\n buildMessageTrajectorySegments,\n getSegmentKey,\n} from './trajectory-segments.ts';\nimport type { MessageTrajectorySegment } from './trajectory-segments.ts';\n\nfunction getSegmentCacheKey(segment: MessageTrajectorySegment, index: number) {\n const prefix = `${getSegmentKey(segment, index)}:${segment.kind}`;\n\n if (segment.kind === 'text') {\n const text = segment.parts\n .map(({ part }) => (part.type === 'text' ? part.text : ''))\n .join('\\u001f');\n return `${prefix}:${text}`;\n }\n\n if (segment.kind === 'reasoning' && segment.part.type === 'reasoning') {\n return `${prefix}:${segment.part.text}`;\n }\n\n if (\n (segment.kind === 'tool' || segment.kind === 'dynamic-tool') &&\n isToolUIPart(segment.part)\n ) {\n const error =\n segment.part.state === 'output-error' ? segment.part.errorText : '';\n const preliminary =\n 'preliminary' in segment.part && segment.part.preliminary === true;\n return `${prefix}:${segment.part.toolCallId}:${segment.part.state}:${preliminary}:${error}`;\n }\n\n if (segment.kind === 'file' && segment.part.type === 'file') {\n return `${prefix}:${segment.part.url}:${segment.part.mediaType}:${segment.part.filename ?? ''}`;\n }\n\n return prefix;\n}\n\nfunction isCompletedSegment(\n segment: MessageTrajectorySegment,\n index: number,\n segmentCount: number,\n) {\n if (segment.kind === 'file' || segment.kind === 'source') return true;\n\n if (segment.kind === 'tool' || segment.kind === 'dynamic-tool') {\n if (!isToolUIPart(segment.part)) return false;\n if (segment.part.state === 'output-error') return true;\n return (\n segment.part.state === 'output-available' &&\n segment.part.preliminary !== true\n );\n }\n\n // Text and reasoning parts can still grow while they are the tail. Once a\n // later segment exists, the AI SDK stream has closed them and they are safe\n // to preserve across the cumulative snapshots sent by subagents.\n return index < segmentCount - 1;\n}\n\ntype NestedTrajectorySegmentProps = {\n segment: MessageTrajectorySegment;\n cacheKey: string;\n complete: boolean;\n};\n\nconst NestedTrajectorySegment = memo(function NestedTrajectorySegment({\n segment,\n}: NestedTrajectorySegmentProps) {\n if (segment.kind === 'tool') {\n return <Segment.Tool segment={segment} />;\n }\n if (segment.kind === 'reasoning') {\n return <Segment.Reasoning segment={segment} />;\n }\n if (segment.kind === 'text') {\n return <Segment.Text segment={segment} className=\"text-xs\" />;\n }\n if (segment.kind === 'file') {\n return <Segment.File segment={segment} />;\n }\n return null;\n}, areNestedTrajectorySegmentPropsEqual);\n\nfunction areNestedTrajectorySegmentPropsEqual(\n previous: NestedTrajectorySegmentProps,\n next: NestedTrajectorySegmentProps,\n) {\n return (\n previous.complete && next.complete && previous.cacheKey === next.cacheKey\n );\n}\n\n/**\n * Replays a trajectory that is not the host message's own — currently a\n * subagent's run, captured into its tool output. It reuses the same Segment\n * primitives as the top-level trajectory, so the subagent's tool calls resolve\n * against the host registry and render with their real components (a `db_query`\n * step shows its table, not a stringified blob).\n *\n * Segments read the surrounding agent/messages contexts, so this only renders\n * inside a message.\n */\nexport function NestedTrajectory({\n parts,\n className,\n}: {\n parts: UIMessage['parts'];\n className?: string;\n}) {\n const segments = useMemo(\n () => buildMessageTrajectorySegments(parts),\n [parts],\n );\n\n if (segments.length === 0) return null;\n\n return (\n <div className={cn('flex min-w-0 flex-col gap-2', className)}>\n {segments.map((segment, index) => {\n const key = `${getSegmentKey(segment, index)}-${segment.kind}`;\n return (\n <NestedTrajectorySegment\n key={key}\n segment={segment}\n cacheKey={getSegmentCacheKey(segment, index)}\n complete={isCompletedSegment(segment, index, segments.length)}\n />\n );\n })}\n </div>\n );\n}\n","import type { HTMLMotionProps } from 'motion/react';\nimport { motion } from 'motion/react';\nimport * as React from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\ninterface AgentActionButtonProps extends Omit<\n HTMLMotionProps<'button'>,\n 'children'\n> {\n icon: React.ReactNode;\n}\n\nexport function ChatActionButton({\n icon,\n className,\n ...props\n}: AgentActionButtonProps) {\n return (\n <motion.button\n type=\"button\"\n whileTap={{ scale: 0.94 }}\n className={cn(\n 'group text-muted-foreground hover:text-foreground relative rounded-lg p-2 transition-colors',\n className,\n )}\n {...props}\n >\n {icon}\n <span className=\"bg-primary/10 absolute inset-0 rounded-lg opacity-0 transition-opacity group-hover:opacity-100\" />\n </motion.button>\n );\n}\n","import { Braces, Check, Copy, RefreshCw } from 'lucide-react';\nimport { Children, type ReactNode } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nimport { ChatActionButton } from '../../../components/ChatAction.tsx';\nimport { extractAssistantRawText } from '../../../copy/assistant-snapshot.tsx';\nimport { useCopyFeedback } from '../../../ui/use-copy-feedback.ts';\nimport { useAgentMessages } from '../../agent-context.tsx';\nimport {\n useMessageItem,\n useMessagesContext,\n useMessagesStatus,\n} from '../messages-context.ts';\n\nfunction useMessageComplete() {\n const { index } = useMessageItem();\n const { messages } = useMessagesContext();\n const status = useMessagesStatus();\n const isLastMessage = index === messages.length - 1;\n const isBusy =\n status === 'submitted' || status === 'streaming' || status === 'error';\n return !(isLastMessage && isBusy);\n}\n\nexport function MessagesActions({\n className,\n children,\n}: {\n className?: string;\n children: ReactNode;\n}) {\n const complete = useMessageComplete();\n if (!complete || Children.toArray(children).length === 0) return null;\n\n return (\n <div\n data-copy-exclude=\"assistant-snapshot\"\n className={cn('mt-1 flex items-center gap-0.5', className)}\n >\n {children}\n </div>\n );\n}\n\nexport function CopyAssistantMessageAction({\n className,\n}: {\n className?: string;\n}) {\n const { message } = useMessageItem();\n const [copied, copy] = useCopyFeedback();\n\n return (\n <ChatActionButton\n aria-label={copied ? 'Copied' : 'Copy message'}\n className={cn('p-1.5', className)}\n onClick={() => copy(extractAssistantRawText(message))}\n icon={\n copied ? <Check className=\"size-3.5\" /> : <Copy className=\"size-3.5\" />\n }\n />\n );\n}\n\nexport function RegenerateAction({ className }: { className?: string }) {\n const { message } = useMessageItem();\n const { regenerate } = useAgentMessages();\n\n return (\n <ChatActionButton\n aria-label=\"Regenerate response\"\n className={cn('p-1.5', className)}\n onClick={() => regenerate({ messageId: message.id })}\n icon={<RefreshCw className=\"size-3.5\" />}\n />\n );\n}\n\nexport function CopyAssistantMessageJsonAction({\n className,\n}: {\n className?: string;\n}) {\n const { message } = useMessageItem();\n const [copied, copy] = useCopyFeedback();\n\n return (\n <ChatActionButton\n aria-label={copied ? 'Copied' : 'Copy debug JSON'}\n className={cn('p-1.5', className)}\n onClick={() => copy(JSON.stringify(message, null, 2))}\n icon={\n copied ? (\n <Check className=\"size-3.5\" />\n ) : (\n <Braces className=\"size-3.5\" />\n )\n }\n />\n );\n}\n","import { Button } from '@deepagents/react-shadcn';\n\nimport { Response } from '../../../elements/Response.tsx';\n\nfunction RetryBlock({\n onTryAgain,\n error,\n}: {\n error: Error | null;\n onTryAgain: () => void;\n}) {\n return (\n <div className=\"mt-3 flex justify-start\">\n <div className=\"max-w-[80%] space-y-2\">\n <div className=\"text-destructive text-sm\">\n <Response mode=\"static\">\n {error instanceof Error\n ? error.message\n : 'An error occurred. Please try again.'}\n </Response>\n </div>\n <Button type=\"button\" onClick={onTryAgain} size=\"sm\" variant=\"outline\">\n Try Again\n </Button>\n </div>\n </div>\n );\n}\n\nexport function MessagesError({\n error,\n onRetry,\n}: {\n error?: Error;\n onRetry?: () => void;\n}) {\n if (!error || !onRetry) return null;\n return <RetryBlock onTryAgain={onRetry} error={error} />;\n}\n","import type { ChatStatus, UIMessage } from 'ai';\nimport { useMemo } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nimport type { GenAIInteractiveElement } from '../../../components/InteractiveResponse.tsx';\nimport {\n MessageItemCtx,\n type MessagesContextValue,\n MessagesCtx,\n} from '../messages-context.ts';\n\nexport function MessagesRoot({\n messages,\n className,\n elements,\n status,\n children,\n}: {\n messages: UIMessage[];\n className?: string;\n elements?: GenAIInteractiveElement[];\n status?: ChatStatus;\n children: React.ReactNode;\n}) {\n const value = useMemo<MessagesContextValue>(\n () => ({ messages, elements, status }),\n [messages, elements, status],\n );\n\n return (\n <MessagesCtx.Provider value={value}>\n <div className={cn('flex h-full flex-col', className)}>\n <div className=\"flex h-full min-h-0 flex-1 flex-col\">{children}</div>\n </div>\n </MessagesCtx.Provider>\n );\n}\n\nexport function MessagesList({\n className,\n children,\n}: {\n className?: string;\n children: React.ReactNode;\n}) {\n return <div className={cn('flex flex-col gap-4', className)}>{children}</div>;\n}\n\nexport function MessagesItem({\n message,\n index,\n className,\n children,\n}: {\n message: UIMessage;\n index: number;\n className?: string;\n children: React.ReactNode;\n}) {\n const value = useMemo(() => ({ message, index }), [message, index]);\n\n return (\n <MessageItemCtx.Provider value={value}>\n <div className={className}>{children}</div>\n </MessageItemCtx.Provider>\n );\n}\n","import type { ToolUIPart } from 'ai';\nimport { isStaticToolUIPart } from 'ai';\nimport { Activity, type PropsWithChildren, useMemo } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nimport { useAgent, useAgentMessages } from '../chat/agent-context.tsx';\nimport type { ComponentTool } from '../tools/registry.ts';\n\nexport type ActivePendingTool = {\n part: ToolUIPart;\n entry: ComponentTool;\n};\n\nexport function useActivePendingToolInput(): ActivePendingTool | null {\n const { registry } = useAgent();\n const agent = useAgentMessages();\n const messages = agent.messages;\n\n // eslint-disable-next-line react-hooks/preserve-manual-memoization -- deps are correct; compiler can't verify registry shape\n return useMemo(() => {\n if (!registry) return null;\n\n for (let i = messages.length - 1; i >= 0; i--) {\n const message = messages[i];\n if (message.role !== 'assistant') continue;\n\n for (const part of message.parts) {\n if (!isStaticToolUIPart(part)) continue;\n if (part.state !== 'input-available') continue;\n\n const toolKey = part.type.replace('tool-', '');\n const entry = registry[toolKey];\n if (!entry || entry.static !== false) continue;\n if (!entry.requiresUserInput) continue;\n\n return { part, entry };\n }\n break;\n }\n\n return null;\n }, [messages, registry]);\n}\n\nexport function PendingToolInput({\n children,\n className,\n}: PropsWithChildren<{ className?: string }>) {\n const activeTool = useActivePendingToolInput();\n const Renderer = activeTool?.entry.component;\n\n return (\n <>\n <Activity mode={activeTool ? 'hidden' : 'visible'}>{children}</Activity>\n {activeTool && Renderer ? (\n <div className={cn('sticky bottom-0 mt-auto', className)}>\n <Renderer key={activeTool.part.toolCallId} part={activeTool.part} />\n </div>\n ) : null}\n </>\n );\n}\n","import type { ChatStatus, UIMessage } from 'ai';\nimport { isReasoningUIPart, isTextUIPart, isToolUIPart } from 'ai';\n\nexport function thinking(status: ChatStatus, message: UIMessage) {\n if (status === 'error' || status === 'ready') {\n return null;\n }\n if (!message) {\n return null;\n }\n if (message.role !== 'assistant') {\n return 'Thinking...';\n }\n for (let i = message.parts.length - 1; i >= 0; i--) {\n const part = message.parts[i];\n if (\n isTextUIPart(part) &&\n part.text &&\n part.providerMetadata?.openai?.phase === 'commentary'\n ) {\n return part.text;\n }\n }\n for (let i = message.parts.length - 1; i >= 0; i--) {\n const lastPart = message.parts[i];\n if (isReasoningUIPart(lastPart) && lastPart.text) {\n return lastPart.text;\n }\n if (isToolUIPart(lastPart)) {\n if (lastPart.input) {\n const input = lastPart.input as Record<string, unknown>;\n const candidates = ['reasoning', 'thoughts', 'thought', 'hint'];\n for (const candidate of candidates) {\n const value = input[candidate];\n if (typeof value === 'string' && value.length > 0) {\n return value;\n }\n }\n }\n return lastPart.toolCallId;\n }\n if (isTextUIPart(lastPart) && lastPart.text) {\n return '';\n }\n }\n return 'Thinking...';\n}\n","export function TimelineDot({ isLast = false }: { isLast?: boolean }) {\n return (\n <div className=\"absolute top-0 left-0 flex size-3.5 h-full flex-col items-center\">\n <span className=\"bg-muted-foreground/50 z-10 mt-1 size-2 shrink-0 rounded-full\" />\n {!isLast && <span className=\"bg-border w-px flex-1\" />}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nexport function TimelineItem({\n marker,\n children,\n className,\n}: {\n marker: ReactNode;\n children: ReactNode;\n className?: string;\n}) {\n return (\n <div className={cn('relative z-0 flex gap-3 pl-5', className)}>\n {marker}\n {children}\n </div>\n );\n}\n","import { useActivePendingToolInput } from '../../../components/PendingToolInput.tsx';\nimport { TextShimmer } from '../../../components/text-shimmer.tsx';\nimport { useMessagesContext, useMessagesStatus } from '../messages-context.ts';\nimport { thinking } from './thinking-hint.ts';\nimport { TimelineDot } from './timeline-dot.tsx';\nimport { TimelineItem } from './timeline-item.tsx';\n\nexport function TrajectoryThinking() {\n const status = useMessagesStatus();\n const { messages } = useMessagesContext();\n const activePendingTool = useActivePendingToolInput();\n const thinkingHint = thinking(status, messages[messages.length - 1]);\n\n if (!thinkingHint || activePendingTool) return null;\n\n return (\n <TimelineItem className=\"mt-2\" marker={<TimelineDot isLast />}>\n <span role=\"status\">\n <TextShimmer\n as=\"span\"\n className=\"text-muted-foreground line-clamp-2 font-mono text-xs\"\n >\n {thinkingHint}\n </TextShimmer>\n </span>\n </TimelineItem>\n );\n}\n","import type { UIMessage } from 'ai';\nimport { get } from 'lodash-es';\nimport { useMemo } from 'react';\n\nimport {\n formatCompactNumber,\n formatNullableNumber,\n} from '@deepagents/react-formatters';\n\nimport { useAgentMessages } from './agent-context.tsx';\n\nexport type UsageDisplay = {\n inputTokens: number | null;\n outputTokens: number | null;\n reasoningTokens: number | null;\n cachedInputTokens: number | null;\n totalTokens: number | null;\n};\n\ntype UsageTracking = {\n assistantUsageByMessageId: Record<string, UsageDisplay>;\n chatUsageSummary: UsageDisplay | null;\n};\n\nconst TOKEN_FIELDS: (keyof UsageDisplay)[] = [\n 'inputTokens',\n 'outputTokens',\n 'reasoningTokens',\n 'cachedInputTokens',\n 'totalTokens',\n];\n\nconst USAGE_FIELD_PATHS: Record<keyof UsageDisplay, string[][]> = {\n inputTokens: [['inputTokens'], ['raw', 'prompt_tokens']],\n outputTokens: [['outputTokens'], ['raw', 'completion_tokens']],\n reasoningTokens: [\n ['reasoningTokens'],\n ['outputTokenDetails', 'reasoningTokens'],\n ['raw', 'completion_tokens_details', 'reasoning_tokens'],\n ],\n cachedInputTokens: [\n // AI SDK v7 renamed this to `cacheReadTokens` and deleted the flat\n // `cachedInputTokens`. The older paths stay for chats persisted under v6.\n ['inputTokenDetails', 'cacheReadTokens'],\n ['cachedInputTokens'],\n ['inputTokenDetails', 'cachedTokens'],\n ['raw', 'prompt_tokens_details', 'cached_tokens'],\n ],\n totalTokens: [['totalTokens'], ['raw', 'total_tokens']],\n};\n\nfunction toFiniteToken(value: unknown): number | null {\n if (typeof value === 'number' && Number.isFinite(value) && value >= 0) {\n return value;\n }\n\n if (typeof value === 'string' && value.trim().length > 0) {\n const parsed = Number(value);\n if (Number.isFinite(parsed) && parsed >= 0) return parsed;\n }\n\n return null;\n}\n\nexport function parseUsage(source: unknown): UsageDisplay | null {\n if (!source || typeof source !== 'object') return null;\n\n const parsed: UsageDisplay = {\n inputTokens: null,\n outputTokens: null,\n reasoningTokens: null,\n cachedInputTokens: null,\n totalTokens: null,\n };\n\n for (const field of TOKEN_FIELDS) {\n for (const path of USAGE_FIELD_PATHS[field]) {\n const token = toFiniteToken(get(source, path));\n if (token !== null) {\n parsed[field] = token;\n break;\n }\n }\n }\n\n return TOKEN_FIELDS.some((field) => parsed[field] !== null) ? parsed : null;\n}\n\nexport function parseMetadataUsage(metadata: unknown): UsageDisplay | null {\n if (!metadata || typeof metadata !== 'object') return null;\n\n const record = metadata as Record<string, unknown>;\n\n return parseUsage(record.totalUsage ?? record.usage);\n}\n\nfunction diffUsage(\n current: UsageDisplay,\n previous: UsageDisplay | null,\n): UsageDisplay | null {\n const diff: UsageDisplay = {\n inputTokens: null,\n outputTokens: null,\n reasoningTokens: null,\n cachedInputTokens: null,\n totalTokens: null,\n };\n\n for (const field of TOKEN_FIELDS) {\n const currentValue = current[field];\n if (currentValue === null) continue;\n\n if (!previous) {\n diff[field] = currentValue;\n continue;\n }\n\n const previousValue = previous[field];\n if (previousValue === null) continue;\n\n const delta = currentValue - previousValue;\n if (delta >= 0) {\n diff[field] = delta;\n }\n }\n\n return TOKEN_FIELDS.some((field) => diff[field] !== null) ? diff : null;\n}\n\nfunction sumUsage(usages: UsageDisplay[]): UsageDisplay | null {\n if (usages.length === 0) return null;\n\n const summed: UsageDisplay = {\n inputTokens: null,\n outputTokens: null,\n reasoningTokens: null,\n cachedInputTokens: null,\n totalTokens: null,\n };\n\n for (const field of TOKEN_FIELDS) {\n let fieldSum = 0;\n let hasValue = false;\n for (const usage of usages) {\n const value = usage[field];\n if (value === null) continue;\n fieldSum += value;\n hasValue = true;\n }\n\n if (hasValue) {\n summed[field] = fieldSum;\n }\n }\n\n return TOKEN_FIELDS.some((field) => summed[field] !== null) ? summed : null;\n}\n\nfunction computeUsageTracking(messages: UIMessage[]): UsageTracking {\n const assistantUsageByMessageId: Record<string, UsageDisplay> = {};\n const messageUsages: UsageDisplay[] = [];\n let previousCumulativeUsage: UsageDisplay | null = null;\n let latestCumulativeUsage: UsageDisplay | null = null;\n\n for (const message of messages) {\n if (message.role !== 'assistant') continue;\n\n const metadata = message.metadata as Record<string, unknown> | undefined;\n\n const usage = parseUsage(metadata?.usage);\n const totalUsage = parseUsage(metadata?.totalUsage);\n const perMessageUsage =\n usage ??\n (totalUsage ? diffUsage(totalUsage, previousCumulativeUsage) : null);\n\n if (perMessageUsage) {\n assistantUsageByMessageId[message.id] = perMessageUsage;\n messageUsages.push(perMessageUsage);\n }\n\n if (totalUsage) {\n latestCumulativeUsage = totalUsage;\n previousCumulativeUsage = totalUsage;\n }\n }\n\n return {\n assistantUsageByMessageId,\n chatUsageSummary: latestCumulativeUsage ?? sumUsage(messageUsages),\n };\n}\n\nexport function useNormalizedUsageTracking(): UsageTracking {\n const agent = useAgentMessages();\n\n return useMemo(() => {\n return computeUsageTracking(agent.messages);\n }, [agent.messages]);\n}\n\nexport function formatUsageValue(value: number | null): string {\n return formatNullableNumber(value);\n}\n\nexport function formatUsageBreakdown(usage: UsageDisplay): string {\n const parts = [\n `↑ ${formatCompactNumber(usage.inputTokens)}`,\n `↓ ${formatCompactNumber(usage.outputTokens)}`,\n ];\n\n if (usage.totalTokens !== null) {\n parts.push(`· ${usage.totalTokens.toLocaleString()} tokens`);\n }\n\n if (usage.cachedInputTokens !== null && usage.cachedInputTokens > 0) {\n parts.push(`(${formatCompactNumber(usage.cachedInputTokens)} cached)`);\n }\n\n return parts.join(' ');\n}\n","import { DefaultChatTransport, type UIMessage } from 'ai';\nimport { z } from 'zod';\n\nimport { type ElementDescriptor, toDescriptor } from '@deepagents/elements';\n\nimport type { GenAIInteractiveElement } from '../elements/interactive-element.ts';\nimport type { SerializedToolRegistry } from './tools-schema.ts';\n\n/** Carries the URI-encoded original filename alongside the raw upload body. */\nconst UPLOAD_FILENAME_HEADER = 'x-upload-filename';\n\nexport const uploadReceiptSchema = z.strictObject({\n path: z.string().startsWith('/'),\n name: z.string().min(1),\n mediaType: z.enum([\n 'image/png',\n 'image/jpeg',\n 'image/webp',\n 'image/gif',\n 'image/heic',\n 'image/heif',\n 'video/mp4',\n 'video/quicktime',\n 'audio/mpeg',\n 'audio/mp4',\n 'audio/wav',\n ]),\n size: z.int().nonnegative(),\n url: z.url(),\n});\n\nexport interface ZukhrufChatTransportOptions {\n /** Session collection URL discovered from Zukhruf. */\n api: string;\n fetch?: typeof globalThis.fetch;\n tools?: SerializedToolRegistry;\n /**\n * Interactive elements the client can render. Only their serializable\n * descriptors go over the wire; `component`/`tips` never leave the client.\n */\n elements?: GenAIInteractiveElement[];\n}\n\ntype AcceptedTurn = {\n ok: true;\n sessionId: string;\n turnId: string;\n};\n\nexport class ZukhrufChatTransport extends DefaultChatTransport<UIMessage> {\n private readonly sessionsApi: string;\n private readonly request: typeof globalThis.fetch;\n\n constructor({\n api,\n fetch: request = (input, init) => globalThis.fetch(input, init),\n tools = {},\n elements = [],\n }: ZukhrufChatTransportOptions) {\n const sessionsApi = trimTrailingSlash(api);\n const descriptors: ElementDescriptor[] = elements.map(toDescriptor);\n super({\n api: sessionsApi,\n fetch: async (input, init) => {\n const response = await request(input, init);\n if ((init?.method ?? 'GET').toUpperCase() !== 'POST' || !response.ok) {\n return response;\n }\n\n const accepted = await response.json();\n if (!isAcceptedTurn(accepted)) {\n throw new Error('Zukhruf returned an invalid accepted-turn response');\n }\n const sessionApi = trimTrailingSlash(String(input));\n const sessionId = decodeURIComponent(\n sessionApi.slice(sessionApi.lastIndexOf('/') + 1),\n );\n if (accepted.sessionId !== sessionId) {\n throw new Error('Zukhruf returned a different session ID');\n }\n\n const signal = init?.signal;\n const cancel = () => {\n void request(`${sessionApi}/cancel`, { method: 'POST' }).catch(\n () => undefined,\n );\n };\n signal?.addEventListener('abort', cancel, { once: true });\n\n return request(`${sessionApi}/stream`, {\n headers: { accept: 'text/event-stream' },\n method: 'GET',\n signal,\n });\n },\n prepareSendMessagesRequest: ({ id, messages, trigger }) => {\n const message = messages[messages.length - 1];\n if (!message) throw new Error('A message is required');\n return {\n api: sessionApi(sessionsApi, id),\n body: {\n sessionId: id,\n message,\n trigger,\n ...(Object.keys(tools).length > 0 ? { tools } : {}),\n ...(descriptors.length > 0 ? { elements: descriptors } : {}),\n },\n };\n },\n prepareReconnectToStreamRequest: ({ headers, id }) => ({\n api: `${sessionApi(sessionsApi, id)}/stream`,\n headers,\n }),\n });\n this.sessionsApi = sessionsApi;\n this.request = request;\n }\n\n /**\n * Store an image under the session and return its receipt. The session does\n * not need to exist yet.\n */\n async uploadFile(sessionId: string, file: File) {\n const response = await this.request(\n `${sessionApi(this.sessionsApi, sessionId)}/uploads`,\n {\n method: 'POST',\n headers: {\n 'content-type': file.type,\n [UPLOAD_FILENAME_HEADER]: encodeURIComponent(file.name),\n },\n body: file,\n },\n );\n if (!response.ok) {\n throw new Error(await describeUploadFailure(response, file));\n }\n const receipt = uploadReceiptSchema.safeParse(await response.json());\n if (!receipt.success) {\n throw new Error('Zukhruf returned an invalid upload response');\n }\n return receipt.data;\n }\n}\n\nfunction sessionApi(sessionsApi: string, sessionId: string) {\n return `${sessionsApi}/${encodeURIComponent(sessionId)}`;\n}\n\nasync function describeUploadFailure(\n response: Response,\n file: File,\n): Promise<string> {\n const summary = `Uploading ${file.name} failed with HTTP ${response.status}`;\n const body: unknown = await response.json().catch(() => null);\n const reason = failureReason(body);\n return reason ? `${summary}: ${reason}` : summary;\n}\n\nfunction failureReason(body: unknown): string | null {\n if (typeof body !== 'object' || body === null) return null;\n const cause =\n 'cause' in body && typeof body.cause === 'object' && body.cause !== null\n ? body.cause\n : null;\n const code =\n cause && 'code' in cause && typeof cause.code === 'string'\n ? cause.code\n : null;\n const detail =\n cause && 'detail' in cause && typeof cause.detail === 'string'\n ? cause.detail\n : 'error' in body && typeof body.error === 'string'\n ? body.error\n : null;\n const reason = [code, detail].filter((part) => part !== null).join(' — ');\n return reason || null;\n}\n\nfunction trimTrailingSlash(value: string) {\n return value.replace(/\\/$/, '');\n}\n\nfunction isAcceptedTurn(value: unknown): value is AcceptedTurn {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'ok' in value &&\n value.ok === true &&\n 'sessionId' in value &&\n typeof value.sessionId === 'string' &&\n 'turnId' in value &&\n typeof value.turnId === 'string'\n );\n}\n","import { ChevronDown } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n cn,\n} from '@deepagents/react-shadcn';\n\nexport function CollapsibleDisclosure({\n label,\n open,\n onOpenChange,\n children,\n className,\n triggerClassName,\n contentClassName,\n chevronClassName,\n}: {\n label: ReactNode;\n open: boolean;\n onOpenChange: (open: boolean) => void;\n children: ReactNode;\n className?: string;\n triggerClassName?: string;\n contentClassName?: string;\n chevronClassName?: string;\n}) {\n return (\n <Collapsible open={open} onOpenChange={onOpenChange} className={className}>\n <CollapsibleTrigger\n render={\n <button\n type=\"button\"\n className={cn('flex items-center font-mono', triggerClassName)}\n />\n }\n >\n <ChevronDown\n className={cn(\n 'size-4 transition-transform',\n chevronClassName,\n open && 'rotate-180',\n )}\n />\n <span>{label}</span>\n </CollapsibleTrigger>\n <CollapsibleContent className={contentClassName}>\n {children}\n </CollapsibleContent>\n </Collapsible>\n );\n}\n","import type { UIMessage } from 'ai';\nimport { memo, useMemo, useState } from 'react';\n\nimport {\n type UserReminderMetadata,\n stripReminders,\n} from '@deepagents/context/browser';\nimport { PersistedPromptText } from '@deepagents/react-input/browser';\nimport { AttachmentGroup, AttachmentMedia, cn } from '@deepagents/react-shadcn';\n\nimport { formatUsageBreakdown, parseMetadataUsage } from '../../usage.ts';\nimport { uploadReceiptSchema } from '../../zukhruf-chat-transport.ts';\nimport { useMessageItem } from '../messages-context.ts';\nimport { CollapsibleDisclosure } from './collapsible-disclosure.tsx';\n\nexport function MessageMetadata({\n metadata,\n}: {\n metadata: UIMessage['metadata'];\n}) {\n if (!metadata) return null;\n\n const usage = parseMetadataUsage(metadata);\n if (!usage) return null;\n\n return (\n <div className=\"text-muted-foreground mt-2 text-xs tabular-nums opacity-60\">\n {formatUsageBreakdown(usage)}\n </div>\n );\n}\n\nfunction extractReminders(message: UIMessage): UserReminderMetadata[] {\n const raw = (message.metadata as Record<string, unknown> | undefined)\n ?.reminders;\n if (!Array.isArray(raw)) return [];\n return raw.filter((r): r is UserReminderMetadata => {\n if (!r || typeof r !== 'object') return false;\n const candidate: Partial<UserReminderMetadata> = r;\n return (\n typeof candidate.id === 'string' &&\n candidate.id.length > 0 &&\n typeof candidate.text === 'string' &&\n candidate.text.trim().length > 0\n );\n });\n}\n\nfunction extractUploads(message: UIMessage) {\n const raw = (message.metadata as Record<string, unknown> | undefined)\n ?.uploads;\n return Array.isArray(raw)\n ? raw.flatMap((value) => {\n const receipt = uploadReceiptSchema.safeParse(value);\n return receipt.success ? [receipt.data] : [];\n })\n : [];\n}\n\nfunction ReminderItem({ text }: { text: string }) {\n const [expanded, setExpanded] = useState(false);\n return (\n <li>\n <button\n type=\"button\"\n onClick={() => setExpanded((v) => !v)}\n aria-pressed={expanded}\n className={cn(\n 'hover:text-foreground w-full cursor-pointer text-left whitespace-pre-wrap',\n !expanded && 'line-clamp-3',\n )}\n >\n {text}\n </button>\n </li>\n );\n}\n\nfunction UserMessageReminders({\n reminders,\n}: {\n reminders: UserReminderMetadata[];\n}) {\n const [open, setOpen] = useState(false);\n if (reminders.length === 0) return null;\n const label = `${reminders.length} reminder${reminders.length === 1 ? '' : 's'} attached`;\n return (\n <CollapsibleDisclosure\n label={label}\n open={open}\n onOpenChange={setOpen}\n className=\"mt-1\"\n triggerClassName=\"text-muted-foreground hover:text-foreground gap-1.5 text-xs\"\n contentClassName=\"mt-1.5\"\n chevronClassName=\"size-3.5\"\n >\n <ul className=\"border-ink-12 text-muted-foreground space-y-1 border-l pl-3 text-xs\">\n {reminders.map((r) => (\n <ReminderItem key={r.id} text={r.text} />\n ))}\n </ul>\n </CollapsibleDisclosure>\n );\n}\n\nfunction UploadTile({\n upload,\n}: {\n upload: { url: string; name: string; mediaType: string };\n}) {\n if (upload.mediaType.startsWith('video/')) {\n return (\n <AttachmentMedia\n variant=\"image\"\n className=\"size-36 rounded-2xl\"\n title={upload.name}\n >\n <video\n src={upload.url}\n aria-label={upload.name}\n muted\n playsInline\n preload=\"metadata\"\n className=\"size-full object-cover\"\n />\n <span\n aria-hidden\n className=\"pointer-events-none absolute inset-0 flex items-center justify-center text-2xl text-white drop-shadow\"\n >\n ▶\n </span>\n </AttachmentMedia>\n );\n }\n if (upload.mediaType.startsWith('audio/')) {\n return (\n <AttachmentMedia\n variant=\"icon\"\n className=\"h-36 w-48 flex-col gap-1 rounded-2xl px-3 text-xs\"\n title={upload.name}\n aria-label={upload.name}\n >\n <span aria-hidden className=\"text-2xl\">\n ♪\n </span>\n <span className=\"text-foreground w-full truncate text-center\">\n {upload.name}\n </span>\n <span className=\"text-muted-foreground\">{upload.mediaType}</span>\n </AttachmentMedia>\n );\n }\n return (\n <AttachmentMedia variant=\"image\" className=\"size-36 rounded-2xl\">\n <img src={upload.url} alt={upload.name} />\n </AttachmentMedia>\n );\n}\n\nfunction UserMessageAttachments({ message }: { message: UIMessage }) {\n const uploads = extractUploads(message);\n if (uploads.length === 0) return null;\n\n return (\n <AttachmentGroup\n role=\"list\"\n aria-label=\"Attached files\"\n className=\"max-w-full gap-2 py-0\"\n >\n {uploads.map((upload) => (\n <div key={upload.path} role=\"listitem\" data-slot=\"attachment\">\n <UploadTile upload={upload} />\n </div>\n ))}\n </AttachmentGroup>\n );\n}\n\nfunction UserBubbleShell({\n body,\n reminders,\n metadata,\n}: {\n body: React.ReactNode;\n reminders: UserReminderMetadata[];\n metadata?: UIMessage['metadata'];\n}) {\n return (\n <div className=\"bg-secondary flex max-w-[80%] flex-col gap-3 rounded-lg p-3\">\n <div className=\"flex-1 space-y-3\">{body}</div>\n <UserMessageReminders reminders={reminders} />\n {metadata !== undefined && <MessageMetadata metadata={metadata} />}\n </div>\n );\n}\n\nexport function UserMessageContent({\n message: rawMessage,\n}: {\n message: UIMessage;\n}) {\n const remindersRef = (\n rawMessage.metadata as Record<string, unknown> | undefined\n )?.reminders;\n const { message, reminders } = useMemo(\n () => ({\n message: stripReminders(rawMessage),\n reminders: extractReminders(rawMessage),\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps -- remindersRef is the load-bearing change signal: rawMessage identity often stays stable while its `metadata.reminders` array swaps in place during streaming\n [rawMessage, remindersRef],\n );\n const rawAlias = (rawMessage.metadata as Record<string, unknown> | undefined)\n ?.alias;\n const alias =\n typeof rawAlias === 'string' && rawAlias.trim().length > 0\n ? rawAlias\n : undefined;\n\n if (alias) {\n return (\n <UserBubbleShell\n reminders={reminders}\n body={<div className=\"text-sm whitespace-pre-wrap\">{alias}</div>}\n />\n );\n }\n\n return (\n <div className=\"flex w-full min-w-0 flex-col items-end gap-3\">\n <UserMessageAttachments message={message} />\n <UserBubbleShell\n reminders={reminders}\n metadata={message.metadata}\n body={message.parts.map((part, partIndex) =>\n part.type === 'text' ? (\n <div\n key={`${message.id}-${partIndex}-text`}\n className=\"text-sm whitespace-pre-wrap\"\n >\n <PersistedPromptText text={part.text} />\n </div>\n ) : null,\n )}\n />\n </div>\n );\n}\n\nexport const MessagesUserBubble = memo(function MessagesUserBubble({\n className,\n}: {\n className?: string;\n}) {\n const { message } = useMessageItem();\n\n return (\n <div className={cn('flex justify-end', className)}>\n <UserMessageContent message={message} />\n </div>\n );\n});\n","import {\n type ChatStatus,\n type ToolUIPart,\n type UIMessage,\n isStaticToolUIPart,\n isToolUIPart,\n} from 'ai';\nimport {\n type ReactNode,\n createContext,\n memo,\n use,\n useMemo,\n useState,\n} from 'react';\nimport { useStickToBottom } from 'use-stick-to-bottom';\n\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n cn,\n} from '@deepagents/react-shadcn';\n\nimport { TextShimmer } from '../../../components/text-shimmer.tsx';\nimport { isSubagentPart, resolveToolEntry } from '../../../tools/helpers.ts';\nimport type { ComponentRegistry, ToolLabel } from '../../../tools/registry.ts';\nimport { useAgent } from '../../agent-context.tsx';\nimport { isToolStateAborted } from '../../tool-abort.ts';\nimport {\n CompactDisclosureChevron,\n compactDisclosureTriggerClass,\n} from '../compact-disclosure.tsx';\nimport {\n useMessageItem,\n useMessagesContext,\n useMessagesStatus,\n} from '../messages-context.ts';\nimport { Segment, isCommentaryTextPart } from '../segments/index.tsx';\nimport {\n type MessageTrajectorySegment,\n buildMessageTrajectorySegments,\n getSegmentKey,\n} from '../trajectory-segments.ts';\nimport {\n CopyAssistantMessageAction,\n CopyAssistantMessageJsonAction,\n MessagesActions,\n RegenerateAction,\n} from './message-actions.tsx';\nimport { MessagesError } from './messages-error.tsx';\nimport { MessagesItem, MessagesList, MessagesRoot } from './messages-shell.tsx';\nimport { TrajectoryThinking } from './trajectory-thinking.tsx';\nimport { MessagesUserBubble } from './user-message.tsx';\n\ntype CompactNodeGroupItem = {\n segment: MessageTrajectorySegment;\n};\n\ntype CompactRenderItem =\n | {\n kind: 'segment';\n segment: MessageTrajectorySegment;\n segmentIndex: number;\n }\n | {\n kind: 'group';\n items: CompactNodeGroupItem[];\n hasLaterText: boolean;\n firstIndex: number;\n };\n\n/**\n * Subagent calls are deliberately excluded: everything a compact node touches\n * gets folded into the \"Ran N tools\" group, which collapses as soon as the\n * assistant produces text. A delegation to another agent stays in the message\n * flow as its own chip instead of disappearing into that group.\n */\nfunction isCompactNodeSegment(segment: MessageTrajectorySegment) {\n if (segment.kind === 'tool') return !isSubagentPart(segment.part);\n return segment.kind === 'dynamic-tool' || segment.kind === 'reasoning';\n}\n\nfunction isVisibleCompactNode(\n segment: MessageTrajectorySegment,\n debugMode: boolean | undefined,\n) {\n if (segment.kind === 'tool') return true;\n if (segment.kind === 'reasoning' || segment.kind === 'dynamic-tool') {\n return !!debugMode;\n }\n return false;\n}\n\nfunction hasVisibleTranscriptText(segment: MessageTrajectorySegment) {\n return (\n segment.kind === 'text' &&\n segment.parts.some(\n ({ part }) => part.type === 'text' && !isCommentaryTextPart(part),\n )\n );\n}\n\nfunction buildCompactRenderItems(\n segments: MessageTrajectorySegment[],\n debugMode: boolean | undefined,\n): CompactRenderItem[] {\n const items: CompactRenderItem[] = [];\n\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n\n if (!isCompactNodeSegment(segment)) {\n items.push({ kind: 'segment', segment, segmentIndex: i });\n continue;\n }\n\n const group: CompactNodeGroupItem[] = [];\n const firstIndex = i;\n\n while (i < segments.length && isCompactNodeSegment(segments[i])) {\n const nodeSegment = segments[i];\n if (isVisibleCompactNode(nodeSegment, debugMode)) {\n group.push({ segment: nodeSegment });\n }\n i++;\n }\n i--;\n\n if (group.length > 0) {\n items.push({\n kind: 'group',\n items: group,\n hasLaterText: segments\n .slice(i + 1)\n .some((next) => hasVisibleTranscriptText(next)),\n firstIndex,\n });\n }\n }\n\n return items;\n}\n\nfunction getToolPartState(segment: MessageTrajectorySegment) {\n if (segment.kind !== 'tool' && segment.kind !== 'dynamic-tool') {\n return undefined;\n }\n\n const { part } = segment;\n return isToolUIPart(part) ? part.state : undefined;\n}\n\nexport type CompactSegmentLabel = {\n kind: 'tool' | 'dynamic-tool' | 'reasoning';\n name: string;\n args?: ToolLabel['args'];\n detail?: string;\n isError?: boolean;\n};\n\nexport type CompactGroupStatus = 'running' | 'complete' | 'error' | 'aborted';\n\ntype CompactGroupTone = {\n title: string;\n detail: string;\n chevron: string;\n};\n\nfunction getCompactGroupTone({\n groupStatus,\n labelCount,\n}: {\n groupStatus: CompactGroupStatus;\n labelCount: number;\n}): CompactGroupTone {\n if (groupStatus === 'running') {\n return {\n title: 'text-info',\n detail: 'text-info/80',\n chevron: 'text-info',\n };\n }\n\n if (groupStatus === 'aborted') {\n return {\n title: 'text-destructive',\n detail: 'text-destructive/80',\n chevron: 'text-destructive',\n };\n }\n\n if (groupStatus === 'error') {\n const tone =\n labelCount === 1\n ? {\n title: 'text-destructive',\n detail: 'text-destructive/80',\n chevron: 'text-destructive',\n }\n : {\n title: 'text-warning',\n detail: 'text-warning/80',\n chevron: 'text-warning',\n };\n\n return tone;\n }\n\n return {\n title: 'text-muted-foreground',\n detail: 'text-muted-foreground',\n chevron: 'text-muted-foreground',\n };\n}\n\nfunction isPlainRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction shorten(value: string, maxLength = 80) {\n const normalized = value.replace(/\\s+/g, ' ').trim();\n if (normalized.length <= maxLength) return normalized;\n return `${normalized.slice(0, maxLength - 3).trimEnd()}...`;\n}\n\nfunction stringifyArgValue(value: unknown): string | undefined {\n if (typeof value === 'string') return shorten(value, 48);\n if (typeof value === 'number' || typeof value === 'boolean') {\n return String(value);\n }\n if (Array.isArray(value)) return `${value.length} items`;\n return undefined;\n}\n\nfunction getFallbackArgs(input: unknown): ToolLabel['args'] | undefined {\n if (!isPlainRecord(input)) return undefined;\n\n const preferredKeys = [\n 'command',\n 'query',\n 'path',\n 'file',\n 'table',\n 'metric',\n 'dimension',\n 'checks',\n ];\n const orderedEntries = [\n ...preferredKeys\n .filter((key) => key in input)\n .map((key) => [key, input[key]] as const),\n ...Object.entries(input).filter(([key]) => !preferredKeys.includes(key)),\n ];\n const args: Record<string, string | undefined> = {};\n\n for (const [key, value] of orderedEntries) {\n const stringValue = stringifyArgValue(value);\n if (!stringValue) continue;\n args[key] = stringValue;\n if (Object.keys(args).length >= 2) break;\n }\n\n return Object.keys(args).length > 0 ? args : undefined;\n}\n\nfunction getFallbackDetail(input: unknown): string | undefined {\n if (!isPlainRecord(input)) return undefined;\n\n for (const key of ['reasoning', 'thoughts', 'thought', 'hint', 'detail']) {\n const value = input[key];\n if (typeof value === 'string' && value.trim().length > 0) {\n return shorten(value);\n }\n }\n\n return undefined;\n}\n\nfunction getReasoningPreview(segment: MessageTrajectorySegment) {\n if (segment.kind !== 'reasoning') return undefined;\n const { part } = segment;\n if (part.type !== 'reasoning') return undefined;\n return shorten(part.text, 96);\n}\n\nfunction getSegmentLabel(\n segment: MessageTrajectorySegment,\n registry: ComponentRegistry | undefined,\n): CompactSegmentLabel {\n if (segment.kind === 'reasoning') {\n return {\n kind: 'reasoning',\n name: 'reasoning',\n detail: getReasoningPreview(segment),\n };\n }\n\n if (segment.kind === 'dynamic-tool' && segment.part.type === 'dynamic-tool') {\n const dynamicToolPart = segment.part;\n\n return {\n kind: 'dynamic-tool',\n name: dynamicToolPart.toolName || 'Tool',\n args: getFallbackArgs(dynamicToolPart.input),\n detail: getFallbackDetail(dynamicToolPart.input),\n };\n }\n\n if (segment.kind === 'tool' && isStaticToolUIPart(segment.part)) {\n const toolPart = segment.part;\n const { toolEntry, toolKey } = resolveToolEntry(toolPart, registry);\n const label = toolEntry?.label?.(toolPart);\n\n return {\n kind: 'tool',\n name: label?.name ?? toolKey,\n args: label?.args ?? getFallbackArgs(toolPart.input),\n detail: label?.detail ?? getFallbackDetail(toolPart.input),\n isError: label?.isError,\n };\n }\n\n return { kind: 'tool', name: 'Step' };\n}\n\nfunction formatArgs(args: ToolLabel['args'] | undefined) {\n if (!args) return undefined;\n const entries = Object.entries(args).filter(\n (entry): entry is [string, string] =>\n typeof entry[1] === 'string' && entry[1].trim().length > 0,\n );\n if (entries.length === 0) return undefined;\n\n return entries\n .slice(0, 2)\n .map(([key, value]) => `${key}: ${shorten(value, 36)}`)\n .join(', ');\n}\n\nfunction formatCallLabel(label: CompactSegmentLabel) {\n const args = formatArgs(label.args);\n return args ? `${label.name}(${args})` : label.name;\n}\n\nfunction isTerminalToolState(state: ToolUIPart['state'] | undefined) {\n return (\n state === 'output-available' ||\n state === 'output-error' ||\n state === 'output-denied'\n );\n}\n\nfunction isPendingToolState(state: ToolUIPart['state'] | undefined) {\n return !!state && !isTerminalToolState(state);\n}\n\nfunction isPendingToolAborted(\n state: ToolUIPart['state'] | undefined,\n status: ChatStatus,\n) {\n return isToolStateAborted(state, status);\n}\n\nfunction getGroupStatus({\n items,\n labels,\n status,\n hasLaterText,\n}: {\n items: CompactNodeGroupItem[];\n labels: CompactSegmentLabel[];\n status: ChatStatus;\n hasLaterText: boolean;\n}): CompactGroupStatus {\n if (\n items.some(({ segment }) =>\n isPendingToolAborted(getToolPartState(segment), status),\n )\n ) {\n return 'aborted';\n }\n\n if (!hasLaterText && (status === 'streaming' || status === 'submitted')) {\n return 'running';\n }\n\n if (\n labels.some((label) => label.isError) ||\n items.some(({ segment }) => {\n const state = getToolPartState(segment);\n return state === 'output-error' || state === 'output-denied';\n })\n ) {\n return 'error';\n }\n\n if (\n items.some(({ segment }) => isPendingToolState(getToolPartState(segment)))\n ) {\n return 'running';\n }\n\n if (\n !hasLaterText &&\n labels.every((label) => label.kind === 'reasoning') &&\n (status === 'streaming' || status === 'submitted')\n ) {\n return 'running';\n }\n\n return 'complete';\n}\n\nfunction sentenceCase(value: string) {\n return value ? `${value[0].toUpperCase()}${value.slice(1)}` : value;\n}\n\nfunction getFallbackToolCount(labels: CompactSegmentLabel[]) {\n return labels.filter((label) => label.kind !== 'reasoning').length;\n}\n\nfunction formatFallbackToolSummary(\n labels: CompactSegmentLabel[],\n groupStatus: CompactGroupStatus,\n) {\n const toolCount = getFallbackToolCount(labels);\n if (toolCount === 0) return undefined;\n const isRunning = groupStatus === 'running' || groupStatus === 'aborted';\n const verb = isRunning ? 'running' : 'ran';\n return `${verb} ${toolCount} ${toolCount === 1 ? 'tool' : 'tools'}`;\n}\n\nfunction getPlainCountSummary(\n labels: CompactSegmentLabel[],\n groupStatus: CompactGroupStatus,\n) {\n const baseTitle = formatFallbackToolSummary(labels, groupStatus);\n if (!baseTitle) return undefined;\n\n const title =\n groupStatus === 'error'\n ? `${baseTitle} with issues`\n : groupStatus === 'aborted'\n ? `cancelled after ${baseTitle}`\n : baseTitle;\n\n return sentenceCase(title);\n}\n\nfunction getCompactSummaryText(\n labels: CompactSegmentLabel[],\n groupStatus: CompactGroupStatus,\n activeHint?: string,\n) {\n const singleLabel = labels.length === 1 ? labels[0] : undefined;\n\n if (groupStatus === 'running') {\n if (activeHint) return activeHint;\n if (singleLabel?.kind === 'reasoning') {\n return `Reasoning${singleLabel.detail ? ` ${singleLabel.detail}` : ''}`;\n }\n if (labels.every((label) => label.kind === 'reasoning')) {\n return 'Reasoning';\n }\n return 'Working...';\n }\n\n if (singleLabel) {\n const callLabel = formatCallLabel(singleLabel);\n if (groupStatus === 'error') return `Failed ${callLabel}`;\n if (groupStatus === 'aborted') return `Cancelled ${callLabel}`;\n if (singleLabel.kind === 'reasoning') {\n return `Reasoned${singleLabel.detail ? ` ${singleLabel.detail}` : ''}`;\n }\n return `Called ${callLabel}`;\n }\n\n if (labels.every((label) => label.kind === 'reasoning')) {\n return 'Reasoned';\n }\n\n return getPlainCountSummary(labels, groupStatus) ?? 'Ran tools';\n}\n\nfunction getCompactSummaryDetail(\n labels: CompactSegmentLabel[],\n groupStatus: CompactGroupStatus,\n) {\n if (groupStatus === 'running') return undefined;\n\n if (labels.length === 1) {\n const label = labels[0];\n if (label.kind === 'reasoning') return undefined;\n return label.detail;\n }\n\n const names = Array.from(\n new Set(\n [...labels]\n .sort((a, b) => {\n if (a.kind === 'reasoning' && b.kind !== 'reasoning') return 1;\n if (a.kind !== 'reasoning' && b.kind === 'reasoning') return -1;\n return 0;\n })\n .map((label) => label.name),\n ),\n );\n const detail = names.slice(0, 3).join(', ');\n return detail || undefined;\n}\n\nfunction getActiveGroupHint(items: CompactNodeGroupItem[]) {\n let reasoningHint: string | undefined;\n\n for (let i = items.length - 1; i >= 0; i--) {\n const segment = items[i].segment;\n\n if (\n segment.kind === 'dynamic-tool' &&\n segment.part.type === 'dynamic-tool'\n ) {\n const hint = getFallbackDetail(segment.part.input);\n if (hint) return hint;\n }\n\n if (segment.kind === 'tool' && isStaticToolUIPart(segment.part)) {\n const hint = getFallbackDetail(segment.part.input);\n if (hint) return hint;\n }\n\n if (segment.kind === 'reasoning') {\n reasoningHint ??= getReasoningPreview(segment);\n }\n }\n\n return reasoningHint;\n}\n\nfunction hasCurrentCompactNodeGroup(\n message: UIMessage | undefined,\n debugMode: boolean | undefined,\n) {\n if (!message || message.role !== 'assistant') return false;\n\n const segments = buildMessageTrajectorySegments(message.parts);\n return buildCompactRenderItems(segments, debugMode).some(\n (item) => item.kind === 'group' && !item.hasLaterText,\n );\n}\n\ntype CompactTrajectorySegmentItem = {\n kind: 'segment';\n key: string;\n segment: MessageTrajectorySegment;\n segmentIndex: number;\n};\n\ntype CompactTrajectoryGroupItem = {\n kind: 'group';\n key: string;\n items: CompactNodeGroupItem[];\n hasLaterText: boolean;\n firstIndex: number;\n};\n\nexport type CompactTrajectoryItem =\n CompactTrajectorySegmentItem | CompactTrajectoryGroupItem;\n\nexport function useTrajectoryItems(): CompactTrajectoryItem[] {\n const { message } = useMessageItem();\n const { debugMode } = useAgent();\n const segments = useMemo(\n () => buildMessageTrajectorySegments(message.parts),\n [message.parts],\n );\n return useMemo(\n () =>\n buildCompactRenderItems(segments, debugMode).map((item) =>\n item.kind === 'group'\n ? {\n ...item,\n key: `${message.id}-${item.firstIndex}-group-${\n item.hasLaterText ? 'past' : 'current'\n }`,\n }\n : {\n ...item,\n key: `${message.id}-${getSegmentKey(item.segment, item.segmentIndex)}-${item.segment.kind}`,\n },\n ),\n [segments, debugMode, message.id],\n );\n}\n\ntype CompactGroupContextValue = {\n items: CompactNodeGroupItem[];\n labels: CompactSegmentLabel[];\n groupStatus: CompactGroupStatus;\n tone: CompactGroupTone;\n messageId: string;\n};\n\nconst CompactGroupContext = createContext<CompactGroupContextValue | null>(\n null,\n);\n\nexport function useCompactGroup() {\n const context = use(CompactGroupContext);\n if (!context) {\n throw new Error(\n 'CompactTrajectory group parts must be rendered within CompactTrajectory.Group',\n );\n }\n return context;\n}\n\nfunction CompactTrajectoryGroup({\n group,\n children,\n}: {\n group: { items: CompactNodeGroupItem[]; hasLaterText: boolean };\n children: ReactNode;\n}) {\n const { registry } = useAgent();\n const { message } = useMessageItem();\n const status = useMessagesStatus();\n const [isOpen, setIsOpen] = useState(!group.hasLaterText);\n const labels = group.items.map(({ segment }) =>\n getSegmentLabel(segment, registry),\n );\n const groupStatus = getGroupStatus({\n items: group.items,\n labels,\n status,\n hasLaterText: group.hasLaterText,\n });\n const tone = getCompactGroupTone({ groupStatus, labelCount: labels.length });\n\n return (\n <CompactGroupContext\n value={{\n items: group.items,\n labels,\n groupStatus,\n tone,\n messageId: message.id,\n }}\n >\n <Collapsible\n open={isOpen}\n onOpenChange={setIsOpen}\n className=\"my-2 min-w-0\"\n >\n {children}\n </Collapsible>\n </CompactGroupContext>\n );\n}\n\nfunction CompactTrajectoryGroupTrigger({ children }: { children: ReactNode }) {\n return (\n <CollapsibleTrigger\n render={\n <button\n type=\"button\"\n className={compactDisclosureTriggerClass('items-start')}\n />\n }\n >\n <span className=\"min-w-0 flex-1 text-left text-sm\">{children}</span>\n </CollapsibleTrigger>\n );\n}\n\nfunction useCompactGroupSummary() {\n const { items, labels, groupStatus, tone } = useCompactGroup();\n const title = getCompactSummaryText(\n labels,\n groupStatus,\n getActiveGroupHint(items),\n );\n const detail = getCompactSummaryDetail(labels, groupStatus);\n return { title, detail, tone, groupStatus };\n}\n\nfunction CompactTrajectoryGroupTitle({\n title: titleOverride,\n suffix,\n children,\n}: {\n /** Host-computed replacement for the default plain-count summary. */\n title?: string;\n /** Host-computed trailer appended to whichever title renders (\" · <suffix>\"). */\n suffix?: string;\n children?: ReactNode;\n}) {\n const { title: defaultTitle, tone, groupStatus } = useCompactGroupSummary();\n const baseTitle = titleOverride ?? defaultTitle;\n const title = suffix ? `${baseTitle} · ${suffix}` : baseTitle;\n return (\n <span className=\"flex min-w-0 items-center gap-1.5\">\n <TextShimmer\n as=\"span\"\n enabled={groupStatus === 'running'}\n className={cn(\n 'max-w-full min-w-0 truncate',\n groupStatus === 'running' ? 'text-info' : tone.title,\n )}\n >\n {title}\n </TextShimmer>\n {children}\n </span>\n );\n}\n\nfunction CompactTrajectoryGroupChevron() {\n const { tone } = useCompactGroup();\n return <CompactDisclosureChevron className={tone.chevron} />;\n}\n\nfunction CompactTrajectoryGroupDetail({\n detail: detailOverride,\n}: {\n /** Host-computed replacement for the default detail line; null suppresses it. */\n detail?: string | null;\n}) {\n const { title, detail: defaultDetail, tone } = useCompactGroupSummary();\n if (detailOverride === null) return null;\n const detail = detailOverride ?? defaultDetail;\n if (!detail || detail === title) return null;\n return (\n <span className={cn('block truncate text-xs', tone.detail)}>{detail}</span>\n );\n}\n\nfunction CompactTrajectoryGroupContent({ children }: { children?: ReactNode }) {\n const { items, messageId, groupStatus } = useCompactGroup();\n const isRunning = groupStatus === 'running';\n const { scrollRef, contentRef } = useStickToBottom({\n initial: 'instant',\n resize: 'instant',\n });\n\n return (\n <CollapsibleContent\n ref={isRunning ? scrollRef : undefined}\n className={cn('mt-2', isRunning && 'max-h-64 overflow-y-auto')}\n >\n <div ref={isRunning ? contentRef : undefined}>\n {children ??\n items.map(({ segment }, segmentIndex) => {\n const key = `${messageId}-${getSegmentKey(segment, segmentIndex)}-${segment.kind}`;\n if (segment.kind === 'tool') {\n return <Segment.Tool key={key} segment={segment} />;\n }\n if (segment.kind === 'reasoning') {\n return <Segment.Reasoning key={key} segment={segment} />;\n }\n if (segment.kind === 'dynamic-tool') {\n return <Segment.DynamicTool key={key} segment={segment} />;\n }\n return null;\n })}\n </div>\n </CollapsibleContent>\n );\n}\n\nfunction CompactTrajectorySegment({\n item,\n textClassName = 'my-4',\n}: {\n item: CompactTrajectorySegmentItem;\n textClassName?: string;\n}) {\n const { elements } = useMessagesContext();\n const { segment } = item;\n\n if (segment.kind === 'text') {\n const visibleParts = segment.parts.filter(\n ({ part }) => !isCommentaryTextPart(part),\n );\n if (visibleParts.length === 0) return null;\n return (\n <Segment.Text\n segment={{ ...segment, parts: visibleParts }}\n elements={elements}\n className={textClassName}\n />\n );\n }\n if (segment.kind === 'file') return <Segment.File segment={segment} />;\n if (segment.kind === 'source') return <Segment.Source segment={segment} />;\n if (segment.kind === 'tool') return <Segment.Tool segment={segment} />;\n if (segment.kind === 'reasoning') {\n return <Segment.Reasoning segment={segment} />;\n }\n if (segment.kind === 'dynamic-tool') {\n return <Segment.DynamicTool segment={segment} />;\n }\n return null;\n}\n\nexport const CompactTrajectory = {\n Group: CompactTrajectoryGroup,\n GroupTrigger: CompactTrajectoryGroupTrigger,\n GroupTitle: CompactTrajectoryGroupTitle,\n GroupChevron: CompactTrajectoryGroupChevron,\n GroupDetail: CompactTrajectoryGroupDetail,\n GroupContent: CompactTrajectoryGroupContent,\n Segment: CompactTrajectorySegment,\n};\n\nfunction CompactThinking() {\n const status = useMessagesStatus();\n const { messages } = useMessagesContext();\n const { debugMode } = useAgent();\n const latestMessage = messages[messages.length - 1];\n\n if (\n status !== 'ready' &&\n status !== 'error' &&\n hasCurrentCompactNodeGroup(latestMessage, debugMode)\n ) {\n return null;\n }\n\n return <TrajectoryThinking />;\n}\n\nconst CompactAssistantContent = memo(function CompactAssistantContent({\n className,\n}: {\n className?: string;\n}) {\n const items = useTrajectoryItems();\n\n return (\n <div className={className}>\n {items.map((item) =>\n item.kind === 'group' ? (\n <CompactTrajectoryGroup key={item.key} group={item}>\n <CompactTrajectoryGroupTrigger>\n <CompactTrajectoryGroupTitle>\n <CompactTrajectoryGroupChevron />\n </CompactTrajectoryGroupTitle>\n <CompactTrajectoryGroupDetail />\n </CompactTrajectoryGroupTrigger>\n <CompactTrajectoryGroupContent />\n </CompactTrajectoryGroup>\n ) : (\n <CompactTrajectorySegment key={item.key} item={item} />\n ),\n )}\n </div>\n );\n});\n\nexport const CompactMessages = {\n Root: MessagesRoot,\n List: MessagesList,\n Item: MessagesItem,\n UserBubble: MessagesUserBubble,\n AssistantContent: CompactAssistantContent,\n Actions: MessagesActions,\n CopyAction: CopyAssistantMessageAction,\n RegenerateAction: RegenerateAction,\n CopyDebugJsonAction: CopyAssistantMessageJsonAction,\n Thinking: CompactThinking,\n Error: MessagesError,\n};\n","import type { ReasoningUIPart, ToolUIPart, UIMessage } from 'ai';\nimport { isStaticToolUIPart } from 'ai';\nimport { AlertCircle } from 'lucide-react';\nimport { type ReactNode, memo, useState } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nimport { TextShimmer } from '../../../components/text-shimmer.tsx';\nimport { DynamicToolDebug } from '../../../components/tool-debug.tsx';\nimport { Response } from '../../../elements/Response.tsx';\nimport {\n isActiveClientInputTool,\n resolveToolEntry,\n} from '../../../tools/helpers.ts';\nimport { useAgent } from '../../agent-context.tsx';\nimport {\n AssistantTextPart,\n MessageAttachmentPart,\n ToolPartContent,\n useShowDebug,\n} from '../../message-parts.tsx';\nimport {\n useMessageItem,\n useMessagesContext,\n useMessagesStatus,\n} from '../messages-context.ts';\nimport { ToolLabelInline } from '../tool-label.tsx';\nimport { CollapsibleDisclosure } from './collapsible-disclosure.tsx';\nimport {\n CopyAssistantMessageAction,\n CopyAssistantMessageJsonAction,\n MessagesActions,\n RegenerateAction,\n} from './message-actions.tsx';\nimport { MessagesError } from './messages-error.tsx';\nimport { MessagesItem, MessagesList, MessagesRoot } from './messages-shell.tsx';\nimport { thinking } from './thinking-hint.ts';\nimport { MessagesUserBubble } from './user-message.tsx';\n\nfunction ErrorPill({\n message,\n className,\n}: {\n message: ReactNode;\n className?: string;\n}) {\n return (\n <div\n className={cn(\n 'text-destructive/90 bg-destructive/10 flex items-start gap-2 rounded-md px-3 py-2 text-sm',\n className,\n )}\n >\n <AlertCircle className=\"text-destructive mt-0.5 size-4 shrink-0\" />\n <span>{message}</span>\n </div>\n );\n}\n\nfunction StaticToolPart({ part }: { part: ToolUIPart }) {\n const config = useAgent();\n const { toolEntry } = resolveToolEntry(part, config.registry);\n\n if (toolEntry && isActiveClientInputTool(toolEntry, part.state)) {\n const label = toolEntry.label?.(part);\n if (!label) return null;\n\n const Icon = label.icon;\n const firstArg = label.args ? Object.values(label.args)[0] : undefined;\n\n return (\n <div className=\"text-muted-foreground flex items-center text-xs\">\n {Icon && <Icon className=\"size-3.5\" />}\n <span className=\"ms-2 font-mono\">{label.name}</span>\n {firstArg && <span className=\"truncate\">({firstArg})</span>}\n </div>\n );\n }\n\n const label = toolEntry?.label?.(part);\n\n return (\n <>\n {label && <ToolLabelInline label={label} part={part} />}\n {label?.isError && label.detail && <ErrorPill message={label.detail} />}\n <ToolPartContent part={part} />\n </>\n );\n}\n\nfunction ReasoningPart({ part }: { part: ReasoningUIPart }) {\n const [isOpen, setIsOpen] = useState(false);\n return (\n <div\n data-copy-exclude=\"assistant-snapshot\"\n className=\"bg-muted/30 prose max-w-auto prose-sm text-muted-foreground border-border mb-4 w-full min-w-full rounded-lg p-3\"\n >\n <CollapsibleDisclosure\n label=\"Reasoning\"\n open={isOpen}\n onOpenChange={setIsOpen}\n className=\"text-xs\"\n triggerClassName=\"w-full gap-x-2 text-sm hover:opacity-80\"\n contentClassName=\"mt-2\"\n >\n <Response mode=\"static\">{part.text}</Response>\n </CollapsibleDisclosure>\n </div>\n );\n}\n\nfunction AssistantPart({ part }: { part: UIMessage['parts'][number] }) {\n const { elements } = useMessagesContext();\n const debugMode = useShowDebug();\n\n if (part.type === 'text') {\n if (part.providerMetadata?.openai?.phase === 'commentary') {\n return null;\n }\n return <AssistantTextPart text={part.text} elements={elements} />;\n }\n\n if (part.type === 'dynamic-tool') {\n return debugMode ? <DynamicToolDebug part={part} /> : null;\n }\n\n if (isStaticToolUIPart(part)) {\n return <StaticToolPart part={part} />;\n }\n\n if (part.type === 'reasoning' && part.text) {\n return debugMode ? <ReasoningPart part={part} /> : null;\n }\n\n if (part.type === 'file') {\n return (\n <MessageAttachmentPart\n filename={part.filename}\n mediaType={part.mediaType}\n url={part.url}\n />\n );\n }\n\n return null;\n}\n\nconst MessagesAssistantContent = memo(function MessagesAssistantContent({\n className,\n}: {\n className?: string;\n}) {\n const { message } = useMessageItem();\n\n return (\n <div className={cn('flex-1 space-y-3', className)}>\n {message.parts.map((part, partIndex) => (\n <AssistantPart key={`${message.id}-${partIndex}`} part={part} />\n ))}\n </div>\n );\n});\n\nfunction ThinkingIndicator({\n className,\n label,\n}: {\n className?: string;\n label?: string;\n}) {\n const displayText = label\n ? label\n .split('\\n')\n .filter((line) => line.trim())\n .pop() || 'Thinking...'\n : 'Thinking...';\n\n return (\n <div role=\"status\" className={cn('flex items-start', className)}>\n <TextShimmer className=\"text-muted-foreground line-clamp-2 text-sm\">\n {displayText}\n </TextShimmer>\n </div>\n );\n}\n\nfunction MessagesThinking() {\n const status = useMessagesStatus();\n const { messages } = useMessagesContext();\n const thinkingHint = thinking(status, messages[messages.length - 1]);\n\n if (!thinkingHint) return null;\n\n return <ThinkingIndicator label={thinkingHint} className=\"mt-2\" />;\n}\n\nexport const Messages = {\n Root: MessagesRoot,\n List: MessagesList,\n Item: MessagesItem,\n UserBubble: MessagesUserBubble,\n AssistantContent: MessagesAssistantContent,\n Thinking: MessagesThinking,\n Error: MessagesError,\n Actions: MessagesActions,\n CopyAction: CopyAssistantMessageAction,\n RegenerateAction,\n CopyDebugJsonAction: CopyAssistantMessageJsonAction,\n};\n","import { useEffect, useState } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nconst spinners = {\n braille: {\n frames: ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'],\n interval: 80,\n },\n pulse: {\n frames: [\n '⠁',\n '⠉',\n '⠋',\n '⠛',\n '⠟',\n '⠿',\n '⡿',\n '⣿',\n '⡿',\n '⠿',\n '⠟',\n '⠛',\n '⠋',\n '⠉',\n '⠁',\n '⠀',\n ],\n interval: 80,\n },\n clock: {\n frames: ['⠁', '⠈', '⠐', '⠠', '⢀', '⡀', '⠄', '⠂'],\n interval: 100,\n },\n limerence: {\n frames: ['⠁', '⠃', '⠇', '⡇', '⣇', '⣇', '⣆', '⣄', '⣀', '⢀', '⠀'],\n interval: 100,\n },\n} as const;\n\ntype SpinnerVariant = keyof typeof spinners;\n\nfunction UnicodeSpinner({\n className,\n variant = 'braille',\n ...props\n}: Omit<React.ComponentProps<'span'>, 'children'> & {\n variant?: SpinnerVariant;\n}) {\n const { frames, interval } = spinners[variant];\n const [frameIndex, setFrameIndex] = useState(0);\n\n useEffect(() => {\n const mq = window.matchMedia('(prefers-reduced-motion: reduce)');\n if (mq.matches) return;\n\n const timer = setInterval(() => {\n setFrameIndex((i) => (i + 1) % frames.length);\n }, interval);\n return () => clearInterval(timer);\n }, [frames.length, interval]);\n\n return (\n <span\n role=\"status\"\n aria-label=\"Loading\"\n className={cn('inline-block', className)}\n {...props}\n >\n {frames[frameIndex]}\n </span>\n );\n}\n\nexport { UnicodeSpinner };\nexport type { SpinnerVariant };\n","import type { ToolUIPart } from 'ai';\nimport { BanIcon } from 'lucide-react';\nimport { type ReactNode, use } from 'react';\n\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n cn,\n} from '@deepagents/react-shadcn';\n\nimport type { ToolLabel } from '../../../tools/registry.ts';\nimport { UnicodeSpinner } from '../../../ui/UnicodeSpinner.tsx';\nimport { ToolSegmentMarkerContext } from '../segments/index.tsx';\nimport { ToolLabelBlock } from '../tool-label.tsx';\nimport { TimelineDot } from './timeline-dot.tsx';\nimport { TimelineItem } from './timeline-item.tsx';\n\nfunction TimelineIconMarker({\n Icon,\n isLast,\n isLoading,\n aborted,\n state,\n isError,\n}: {\n Icon: NonNullable<ToolLabel['icon']>;\n isLast: boolean;\n isLoading: boolean;\n aborted: boolean;\n state?: ToolUIPart['state'];\n isError: boolean;\n}) {\n return (\n <div className=\"absolute top-0 left-0 flex h-full flex-col items-center\">\n {isLoading ? (\n <UnicodeSpinner className=\"text-muted-foreground z-10 shrink-0 text-sm\" />\n ) : aborted ? (\n <BanIcon className=\"text-destructive z-10 size-3.5 shrink-0\" />\n ) : (\n <Icon\n className={cn(\n 'z-10 size-3.5 shrink-0',\n state === 'output-error' || isError\n ? 'text-destructive'\n : 'text-muted-foreground',\n )}\n />\n )}\n\n {!isLast && <span className=\"bg-border w-px flex-1\" />}\n </div>\n );\n}\n\nfunction TimelineRow({\n isLast,\n label,\n state,\n aborted,\n children,\n}: {\n isLast: boolean;\n label?: ToolLabel;\n state?: ToolUIPart['state'];\n aborted?: boolean;\n children: ReactNode;\n}) {\n const toolMarker = use(ToolSegmentMarkerContext);\n const effectiveLabel = label ?? toolMarker?.label;\n const effectiveState = state ?? toolMarker?.state;\n const effectiveAborted = aborted ?? toolMarker?.aborted ?? false;\n\n const Icon = effectiveLabel?.icon;\n const isLoading =\n !!effectiveState &&\n !effectiveAborted &&\n effectiveState !== 'output-available' &&\n effectiveState !== 'output-error';\n\n const marker = Icon ? (\n <TimelineIconMarker\n Icon={Icon}\n isLast={isLast}\n isLoading={isLoading}\n aborted={effectiveAborted}\n state={effectiveState}\n isError={effectiveLabel?.isError ?? false}\n />\n ) : (\n <TimelineDot isLast={isLast} />\n );\n\n return (\n <TimelineItem marker={marker}>\n <div className={cn('min-w-0 flex-1', isLast ? '' : 'pb-3.5')}>\n {children}\n </div>\n </TimelineItem>\n );\n}\n\nfunction TimelineDisclosure({\n label,\n state,\n part,\n defaultOpen = false,\n children,\n}: {\n label: ToolLabel;\n state?: ToolUIPart['state'];\n part?: ToolUIPart;\n defaultOpen?: boolean;\n children: ReactNode;\n}) {\n return (\n <Collapsible\n defaultOpen={defaultOpen}\n className=\"flex min-w-0 flex-1 flex-col\"\n >\n <CollapsibleTrigger className=\"cursor-pointer\">\n <ToolLabelBlock label={label} state={state} part={part} />\n </CollapsibleTrigger>\n <CollapsibleContent>{children}</CollapsibleContent>\n </Collapsible>\n );\n}\n\nexport const Timeline = {\n Item: TimelineRow,\n Disclosure: TimelineDisclosure,\n};\n","import { Lightbulb } from 'lucide-react';\nimport { memo, useMemo } from 'react';\n\nimport { useIsAssistantSnapshotRender } from '../../../copy/assistant-snapshot.tsx';\nimport { useAgent } from '../../agent-context.tsx';\nimport { useShowDebug } from '../../message-parts.tsx';\nimport { useMessageItem, useMessagesContext } from '../messages-context.ts';\nimport { Segment } from '../segments/index.tsx';\nimport {\n buildMessageTrajectorySegments,\n getSegmentKey,\n shouldShowConnector,\n} from '../trajectory-segments.ts';\nimport {\n CopyAssistantMessageAction,\n CopyAssistantMessageJsonAction,\n MessagesActions,\n RegenerateAction,\n} from './message-actions.tsx';\nimport { MessagesError } from './messages-error.tsx';\nimport { MessagesItem, MessagesList, MessagesRoot } from './messages-shell.tsx';\nimport { Timeline } from './timeline.tsx';\nimport { TrajectoryThinking } from './trajectory-thinking.tsx';\nimport { MessagesUserBubble } from './user-message.tsx';\n\nconst TimelinedAssistantContent = memo(function TimelinedAssistantContent({\n className,\n}: {\n className?: string;\n}) {\n const { message } = useMessageItem();\n const { elements } = useMessagesContext();\n const { debugMode } = useAgent();\n const showDebug = useShowDebug();\n const isSnapshotRender = useIsAssistantSnapshotRender();\n const segments = useMemo(\n () => buildMessageTrajectorySegments(message.parts),\n [message.parts],\n );\n\n return (\n <div className={className}>\n {segments.map((segment, segmentIndex) => {\n const key = `${message.id}-${getSegmentKey(segment, segmentIndex)}-${segment.kind}`;\n\n if (segment.kind === 'text') {\n return (\n <Segment.Text\n key={key}\n segment={segment}\n elements={elements}\n className=\"my-4\"\n />\n );\n }\n if (segment.kind === 'file') {\n return <Segment.File key={key} segment={segment} />;\n }\n if (segment.kind === 'source') {\n return <Segment.Source key={key} segment={segment} />;\n }\n if (segment.kind === 'dynamic-tool') {\n if (!showDebug) return null;\n // Connector quirk preserved: dynamic-tool visibility passes `true`.\n const isLast = !shouldShowConnector(segments, segmentIndex, true);\n return (\n <Timeline.Item key={key} isLast={isLast}>\n <Segment.DynamicTool segment={segment} />\n </Timeline.Item>\n );\n }\n if (segment.kind === 'reasoning') {\n if (isSnapshotRender) return null;\n if (segment.part.type !== 'reasoning') return null;\n const isLast = !shouldShowConnector(\n segments,\n segmentIndex,\n debugMode,\n );\n const label = {\n name: 'Reasoning',\n icon: Lightbulb,\n args: { text: [...segment.part.text].slice(0, 60).join('') },\n };\n return (\n <Timeline.Item key={key} isLast={isLast} label={label}>\n <Timeline.Disclosure label={label}>\n <Segment.Reasoning segment={segment} />\n </Timeline.Disclosure>\n </Timeline.Item>\n );\n }\n if (segment.kind === 'tool') {\n const isLast = !shouldShowConnector(\n segments,\n segmentIndex,\n debugMode,\n );\n return (\n <Segment.Tool key={key} segment={segment}>\n <Timeline.Item isLast={isLast}>\n <Segment.ToolDisclosure />\n </Timeline.Item>\n </Segment.Tool>\n );\n }\n return null;\n })}\n </div>\n );\n});\n\nexport const TimelinedMessages = {\n Root: MessagesRoot,\n List: MessagesList,\n Item: MessagesItem,\n UserBubble: MessagesUserBubble,\n AssistantContent: TimelinedAssistantContent,\n Actions: MessagesActions,\n CopyAction: CopyAssistantMessageAction,\n RegenerateAction: RegenerateAction,\n CopyDebugJsonAction: CopyAssistantMessageJsonAction,\n Thinking: TrajectoryThinking,\n Error: MessagesError,\n};\n","import { Paperclip, Plus } from 'lucide-react';\nimport type { ComponentProps } from 'react';\n\nimport {\n Composer,\n type ComposerAttachFilesProps,\n type ComposerAttachmentsProps,\n type ComposerContentProps,\n type ComposerEditorProps,\n type ComposerRootProps,\n type ComposerToolbarProps,\n useComposer,\n} from '@deepagents/react-input/browser';\nimport { cn } from '@deepagents/react-shadcn';\n\nimport { useAgentMeta } from '../chat/agent-context.tsx';\nimport { ChatActionButton } from './ChatAction.tsx';\n\nfunction ChatComposerProvider({ className, ...props }: ComposerRootProps) {\n const { hasSubmitted } = useAgentMeta();\n return (\n <Composer.Root\n hasInteracted={hasSubmitted}\n className={cn(\n 'bg-background sticky bottom-0 rounded-t-2xl border-0 **:data-[slot=composer-editor]:!min-h-15',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ChatComposerRoot({ className, ...props }: ComponentProps<'div'>) {\n return (\n <div\n className={cn(\n 'border-border bg-card focus-within:border-primary/80 focus-within:ring-primary/15 relative rounded-2xl border',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ChatComposerContent({ className, ...props }: ComposerContentProps) {\n return (\n <Composer.Content\n className={cn('space-y-1 px-3.5 pt-3', className)}\n {...props}\n />\n );\n}\n\nfunction ChatComposerEditor({ className, ...props }: ComposerEditorProps) {\n return (\n <Composer.Editor\n className={cn(\n '!min-h-15 !rounded-none !border-0 !bg-transparent !shadow-none **:data-[slot=composer-editor]:!p-0 **:data-[slot=composer-placeholder]:!p-0',\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction ChatComposerAttachments({\n className,\n ...props\n}: ComposerAttachmentsProps) {\n return (\n <Composer.Attachments className={cn('pb-1.5', className)} {...props} />\n );\n}\n\nfunction ChatComposerToolbar({ className, ...props }: ComposerToolbarProps) {\n return (\n <Composer.Toolbar className={cn('p-1.5 pt-0', className)} {...props} />\n );\n}\n\nfunction ChatComposerAttachFiles(props: ComposerAttachFilesProps) {\n return (\n <Composer.AttachFiles\n aria-label=\"Attach files\"\n render={<ChatActionButton icon={<Paperclip className=\"size-4\" />} />}\n {...props}\n />\n );\n}\n\nfunction ChatComposerCommandButton() {\n const { actions, meta } = useComposer('ChatComposer.CommandButton');\n\n return (\n <ChatActionButton\n data-command-button\n icon={<Plus className=\"size-4\" />}\n aria-label=\"Toggle command menu\"\n aria-expanded={meta.activePopup?.trigger === '/'}\n onClick={(event) => {\n event.stopPropagation();\n actions.toggleSlashMenu();\n }}\n />\n );\n}\n\nexport const ChatComposer = {\n Provider: ChatComposerProvider,\n Root: ChatComposerRoot,\n Popup: Composer.Popup,\n Content: ChatComposerContent,\n Attachments: ChatComposerAttachments,\n Editor: ChatComposerEditor,\n Error: Composer.Error,\n Toolbar: ChatComposerToolbar,\n CommandButton: ChatComposerCommandButton,\n AttachFiles: ChatComposerAttachFiles,\n};\n","import type { Ref, TextareaHTMLAttributes } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\ntype ChatTextareaProps = TextareaHTMLAttributes<HTMLTextAreaElement> & {\n ref?: Ref<HTMLTextAreaElement>;\n};\n\nexport function ChatTextarea({ className, ref, ...props }: ChatTextareaProps) {\n return (\n <div className=\"relative w-full\">\n <textarea\n className={cn(\n 'border-input bg-background flex w-full rounded-md border px-3 py-2 text-sm',\n 'transition-all duration-200 ease-in-out',\n 'placeholder:text-muted-foreground',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n ref={ref}\n {...props}\n />\n </div>\n );\n}\n","import { ListPlus, Trash2 } from 'lucide-react';\nimport type { ReactNode } from 'react';\n\nimport { PersistedPromptText } from '@deepagents/react-input/browser';\nimport { cn } from '@deepagents/react-shadcn';\n\nfunction MessageQueueRoot({\n children,\n className,\n}: {\n children: ReactNode;\n className?: string;\n}) {\n return (\n <div\n className={cn(\n 'border-border flex flex-col border-b px-2 py-1.5',\n className,\n )}\n >\n {children}\n </div>\n );\n}\n\nfunction MessageQueueItem({\n children,\n className,\n}: {\n children: ReactNode;\n className?: string;\n}) {\n return (\n <div className={cn('flex items-center gap-2 px-2 py-1.5', className)}>\n {children}\n </div>\n );\n}\n\nfunction MessageQueueIcon({ className }: { className?: string }) {\n return (\n <ListPlus\n className={cn('text-muted-foreground size-3.5 shrink-0', className)}\n />\n );\n}\n\nfunction MessageQueueText({\n children,\n className,\n}: {\n children: ReactNode;\n className?: string;\n}) {\n return (\n <span className={cn('min-w-0 flex-1 truncate text-sm', className)}>\n {typeof children === 'string' ? (\n <PersistedPromptText text={children} />\n ) : (\n children\n )}\n </span>\n );\n}\n\nfunction MessageQueueRemove({\n onClick,\n className,\n}: {\n onClick: () => void;\n className?: string;\n}) {\n return (\n <button\n type=\"button\"\n onClick={onClick}\n className={cn(\n 'text-muted-foreground hover:text-foreground shrink-0 rounded p-1 transition-colors',\n className,\n )}\n aria-label=\"Remove queued message\"\n >\n <Trash2 className=\"size-3.5\" />\n </button>\n );\n}\n\nexport const MessageQueue = {\n Root: MessageQueueRoot,\n Item: MessageQueueItem,\n Icon: MessageQueueIcon,\n Text: MessageQueueText,\n Remove: MessageQueueRemove,\n};\n","import type { Variants } from 'motion/react';\nimport { motion, useAnimation } from 'motion/react';\nimport type { HTMLAttributes } from 'react';\nimport { forwardRef, useCallback, useImperativeHandle, useRef } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nexport interface ArrowUpIconHandle {\n startAnimation: () => void;\n stopAnimation: () => void;\n}\n\ninterface ArrowUpIconProps extends HTMLAttributes<HTMLDivElement> {\n size?: number;\n}\n\nconst PATH_VARIANTS: Variants = {\n normal: { d: 'm5 12 7-7 7 7', translateY: 0 },\n animate: {\n d: 'm5 12 7-7 7 7',\n translateY: [0, 3, 0],\n transition: {\n duration: 0.4,\n },\n },\n};\n\nconst SECOND_PATH_VARIANTS: Variants = {\n normal: { d: 'M12 19V5' },\n animate: {\n d: ['M12 19V5', 'M12 19V10', 'M12 19V5'],\n transition: {\n duration: 0.4,\n },\n },\n};\n\nconst ArrowUpIcon = forwardRef<ArrowUpIconHandle, ArrowUpIconProps>(\n ({ onMouseEnter, onMouseLeave, className, size = 20, ...props }, ref) => {\n const controls = useAnimation();\n const isControlledRef = useRef(false);\n\n useImperativeHandle(ref, () => {\n isControlledRef.current = true;\n\n return {\n startAnimation: () => controls.start('animate'),\n stopAnimation: () => controls.start('normal'),\n };\n });\n\n const handleMouseEnter = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n if (isControlledRef.current) {\n onMouseEnter?.(e);\n } else {\n controls.start('animate');\n }\n },\n [controls, onMouseEnter],\n );\n\n const handleMouseLeave = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n if (isControlledRef.current) {\n onMouseLeave?.(e);\n } else {\n controls.start('normal');\n }\n },\n [controls, onMouseLeave],\n );\n\n return (\n <div\n className={cn(className)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n {...props}\n >\n <svg\n fill=\"none\"\n height={size}\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"2\"\n viewBox=\"0 0 24 24\"\n width={size}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <motion.path\n animate={controls}\n d=\"m5 12 7-7 7 7\"\n variants={PATH_VARIANTS}\n />\n <motion.path\n animate={controls}\n d=\"M12 19V5\"\n variants={SECOND_PATH_VARIANTS}\n />\n </svg>\n </div>\n );\n },\n);\n\nArrowUpIcon.displayName = 'ArrowUpIcon';\n\nexport { ArrowUpIcon };\n","import {\n AnimatePresence,\n type HTMLMotionProps,\n motion,\n useReducedMotion,\n} from 'motion/react';\nimport type { ReactNode } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nimport { ArrowUpIcon } from '../ui/ArrowUpIcon.tsx';\n\ntype SubmitButtonVariant = 'send' | 'stop';\n\ntype SubmitButtonProps = Omit<HTMLMotionProps<'button'>, 'children'> & {\n variant: SubmitButtonVariant;\n};\n\nconst BUTTON_TRANSITION = { duration: 0.15, ease: [0, 0, 0.2, 1] } as const;\nconst ICON_TRANSITION = { duration: 0.12, ease: [0, 0, 0.2, 1] } as const;\n\nexport function SubmitButton({\n variant,\n className,\n disabled,\n ...rest\n}: SubmitButtonProps) {\n const reducedMotion = useReducedMotion();\n const isStop = variant === 'stop';\n\n return (\n <motion.button\n initial={reducedMotion ? false : { opacity: 0, scale: 0.9 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={reducedMotion ? undefined : { opacity: 0, scale: 0.9 }}\n transition={BUTTON_TRANSITION}\n whileHover={disabled || reducedMotion ? undefined : { scale: 1.04 }}\n whileTap={disabled || reducedMotion ? undefined : { scale: 0.96 }}\n aria-label={isStop ? 'Stop streaming' : 'Send prompt'}\n {...rest}\n disabled={disabled}\n className={cn(\n 'relative flex size-8 items-center justify-center rounded-full',\n 'bg-primary text-primary-foreground',\n 'transition-opacity hover:opacity-90 active:opacity-80',\n 'disabled:cursor-not-allowed disabled:opacity-35 disabled:hover:opacity-35',\n 'focus-visible:outline-[1.5px] focus-visible:outline-offset-[2.5px] focus-visible:outline-current',\n className,\n )}\n >\n <AnimatePresence initial={false}>\n <motion.span\n key={isStop ? 'stop' : 'send'}\n initial={reducedMotion ? false : { opacity: 0, scale: 0.7 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={reducedMotion ? undefined : { opacity: 0, scale: 0.7 }}\n transition={ICON_TRANSITION}\n className=\"absolute flex items-center justify-center\"\n >\n {isStop ? <ChatStopIcon /> : <ChatSendIcon />}\n </motion.span>\n </AnimatePresence>\n </motion.button>\n );\n}\n\nfunction ChatIcon({ children }: { children: ReactNode }) {\n return (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n {children}\n </svg>\n );\n}\n\nfunction ChatSendIcon() {\n return <ArrowUpIcon />;\n}\n\nfunction ChatStopIcon() {\n return (\n <ChatIcon>\n <rect x=\"5\" y=\"5\" width=\"10\" height=\"10\" rx=\"1.5\" />\n </ChatIcon>\n );\n}\n","import { type ToolUIPart, getToolName } from 'ai';\nimport { AlertCircle, RefreshCw } from 'lucide-react';\nimport type { ZodError } from 'zod';\n\nimport {\n Alert,\n AlertDescription,\n AlertTitle,\n Button,\n Card,\n CardContent,\n CardFooter,\n CardHeader,\n CardTitle,\n} from '@deepagents/react-shadcn';\n\nimport { useAgentMessages } from '../chat/agent-context.tsx';\n\nexport interface ToolErrorProps {\n title?: string;\n detail?: string;\n detailLabel?: string;\n part: ToolUIPart;\n error: ZodError;\n}\n\nexport function ToolError({\n title = 'Failed to render tool',\n detail,\n detailLabel = 'View details',\n part,\n error,\n}: ToolErrorProps) {\n const agent = useAgentMessages();\n const errorMessage = error.issues\n .map((e) => `${e.path.join('.')}: ${e.message}`)\n .join('\\n');\n return (\n <Card className=\"border-destructive/50 bg-destructive/5\">\n <CardHeader>\n <CardTitle className=\"text-destructive flex items-center gap-2\">\n <AlertCircle className=\"size-5\" />\n {title}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <Alert variant=\"destructive\">\n <AlertCircle className=\"size-4\" />\n <AlertTitle>Error</AlertTitle>\n <AlertDescription>{errorMessage}</AlertDescription>\n </Alert>\n\n {detail && (\n <details className=\"text-sm\">\n <summary className=\"text-muted-foreground hover:text-foreground cursor-pointer\">\n {detailLabel}\n </summary>\n <pre className=\"bg-muted mt-2 max-h-48 overflow-auto rounded-md p-3 text-xs\">\n <code>{detail}</code>\n </pre>\n </details>\n )}\n </CardContent>\n {\n <CardFooter>\n <Button\n variant=\"outline\"\n onClick={() => {\n const retryPrompt = [\n `The model tried to call the tool \"${getToolName(part)}\"` +\n ` with the following inputs:`,\n JSON.stringify(part.input),\n 'Please fix the inputs.',\n ];\n\n agent.addToolOutput({\n toolCallId: part.toolCallId,\n tool: getToolName(part),\n output: retryPrompt,\n state: 'output-available',\n });\n }}\n className=\"gap-2\"\n >\n <RefreshCw className=\"size-4\" />\n Ask AI to fix this\n </Button>\n </CardFooter>\n }\n </Card>\n );\n}\n","import type React from 'react';\nimport {\n type PropsWithChildren,\n createContext,\n use,\n useEffect,\n useEffectEvent,\n useRef,\n useState,\n} from 'react';\n\nimport { useAgent, useAgentStatus } from '../../chat/agent-context.tsx';\n\nexport interface Tip<C = unknown> {\n id: string;\n content: (context: C) => Promise<string>;\n cooldownSessions: number;\n isRelevant: (context: C) => Promise<boolean>;\n}\n\nexport const TipValueContext = createContext<string>('');\n\nexport function useTipValue(): string {\n return use(TipValueContext);\n}\n\nconst HISTORY_KEY = 'tips:history';\nconst SESSION_KEY = 'tips:session';\n\ntype TipHistory = Record<string, number>;\n\nfunction readHistory(): TipHistory {\n try {\n return JSON.parse(localStorage.getItem(HISTORY_KEY) ?? '{}');\n } catch {\n return {};\n }\n}\n\nfunction writeShown(tipId: string, session: number): void {\n try {\n const history = readHistory();\n history[tipId] = session;\n localStorage.setItem(HISTORY_KEY, JSON.stringify(history));\n } catch {\n /* noop */\n }\n}\n\nfunction resolveSession(chatId: string): number {\n try {\n const raw = localStorage.getItem(SESSION_KEY);\n const state: { id: string; n: number } = raw\n ? JSON.parse(raw)\n : { id: '', n: 0 };\n if (state.id !== chatId) {\n state.id = chatId;\n state.n += 1;\n localStorage.setItem(SESSION_KEY, JSON.stringify(state));\n }\n return state.n;\n } catch {\n return 0;\n }\n}\n\nfunction staleness(\n tipId: string,\n session: number,\n history: TipHistory,\n): number {\n const lastShown = history[tipId];\n if (lastShown == null) return Infinity;\n return session - lastShown;\n}\n\nasync function selectTip<C>(\n tips: Tip<C>[],\n context: C,\n session: number,\n): Promise<{ id: string; text: string } | null> {\n const history = readHistory();\n\n const flags = await Promise.all(tips.map((t) => t.isRelevant(context)));\n const relevant = tips.filter((_, i) => flags[i]);\n if (relevant.length === 0) return null;\n\n const eligible = relevant.filter(\n (t) => staleness(t.id, session, history) >= t.cooldownSessions,\n );\n\n const pool = eligible.length > 0 ? eligible : relevant;\n\n pool.sort(\n (a, b) =>\n staleness(b.id, session, history) - staleness(a.id, session, history),\n );\n\n const selected = pool[0];\n const text = await selected.content(context);\n return { id: selected.id, text };\n}\n\nexport function TipProvider<C>({\n tips,\n streaming,\n chatId,\n context,\n children,\n}: {\n tips: Tip<C>[];\n streaming: boolean;\n chatId: string;\n context: C;\n children: React.ReactNode;\n}) {\n const [session] = useState(() => resolveSession(chatId));\n const [tip, setTip] = useState('');\n const prevStreaming = useRef(false);\n const selecting = useRef(false);\n\n const pick = useEffectEvent(() => {\n if (selecting.current) return;\n selecting.current = true;\n selectTip(tips, context, session)\n .then((result) => {\n if (result) {\n setTip(result.text);\n writeShown(result.id, session);\n }\n })\n .finally(() => {\n selecting.current = false;\n });\n });\n\n useEffect(() => {\n pick();\n }, []);\n\n useEffect(() => {\n const justStarted = streaming && !prevStreaming.current;\n prevStreaming.current = streaming;\n if (!justStarted) return;\n pick();\n }, [streaming]);\n\n return <TipValueContext value={tip}>{children}</TipValueContext>;\n}\n\nexport function Tips<C>({\n tips,\n context,\n children,\n}: PropsWithChildren<{\n tips: Tip<C>[];\n context: C;\n}>) {\n const { chatId } = useAgent();\n const { status } = useAgentStatus();\n const streaming = status === 'streaming' || status === 'submitted';\n return (\n <TipProvider\n tips={tips}\n streaming={streaming}\n chatId={chatId ?? ''}\n context={context}\n >\n {children}\n </TipProvider>\n );\n}\n","import { Lightbulb } from 'lucide-react';\nimport { useEffect, useState } from 'react';\n\nimport { cn } from '@deepagents/react-shadcn';\n\nimport { TextShimmer } from '../text-shimmer.tsx';\nimport { useTipValue } from './TipProvider.tsx';\n\nconst SHIMMER_DURATION = 1.5;\n\nexport function TipLine({ className }: { className?: string }) {\n const tip = useTipValue();\n const [prevTip, setPrevTip] = useState(tip);\n const [shimmerEnabled, setShimmerEnabled] = useState(false);\n\n if (tip !== prevTip) {\n setPrevTip(tip);\n if (tip) {\n setShimmerEnabled(true);\n }\n }\n\n useEffect(() => {\n if (!shimmerEnabled) return;\n const timer = setTimeout(\n () => setShimmerEnabled(false),\n SHIMMER_DURATION * 1000,\n );\n return () => clearTimeout(timer);\n }, [shimmerEnabled]);\n\n return (\n <p\n className={cn(\n 'flex items-center justify-center gap-1.5 px-3 text-xs',\n className,\n )}\n >\n <Lightbulb className=\"size-3 shrink-0\" />\n <TextShimmer\n as=\"span\"\n enabled={shimmerEnabled}\n duration={SHIMMER_DURATION}\n >\n Tip: {tip}\n </TextShimmer>\n </p>\n );\n}\n","import { AlertCircle, RefreshCw } from 'lucide-react';\nimport * as React from 'react';\n\nimport {\n Alert,\n AlertDescription,\n AlertTitle,\n Button,\n Card,\n CardContent,\n CardFooter,\n CardHeader,\n CardTitle,\n} from '@deepagents/react-shadcn';\n\ninterface ErrorBoundaryProps {\n children: React.ReactNode;\n code: string;\n onRetry?: (errorMessage: string) => void;\n}\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n error: Error | null;\n}\n\nexport class DynamicUIErrorBoundary extends React.Component<\n ErrorBoundaryProps,\n ErrorBoundaryState\n> {\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = { hasError: false, error: null };\n }\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { hasError: true, error };\n }\n\n handleRetry = () => {\n const errorMessage = this.state.error?.message || 'Unknown error';\n this.setState({ hasError: false, error: null });\n this.props.onRetry?.(errorMessage);\n };\n\n override render() {\n if (this.state.hasError) {\n return (\n <DynamicUIError\n error={this.state.error}\n code={this.props.code}\n onRetry={this.props.onRetry ? this.handleRetry : undefined}\n />\n );\n }\n\n return this.props.children;\n }\n}\n\nexport function DynamicUIError({\n error,\n code,\n onRetry,\n}: {\n error: Error | null;\n code: string;\n onRetry?: () => void;\n}) {\n return (\n <Card className=\"border-destructive/50 bg-destructive/5\">\n <CardHeader>\n <CardTitle className=\"text-destructive flex items-center gap-2\">\n <AlertCircle className=\"size-5\" />\n Failed to render dynamic UI\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <Alert variant=\"destructive\">\n <AlertCircle className=\"size-4\" />\n <AlertTitle>Error</AlertTitle>\n <AlertDescription>\n {error?.message || 'Unknown error occurred'}\n </AlertDescription>\n </Alert>\n\n <details className=\"text-sm\">\n <summary className=\"text-muted-foreground hover:text-foreground cursor-pointer\">\n View generated code\n </summary>\n <pre className=\"bg-muted mt-2 max-h-48 overflow-auto rounded-md p-3 text-xs\">\n <code>{code}</code>\n </pre>\n </details>\n </CardContent>\n {onRetry && (\n <CardFooter>\n <Button variant=\"outline\" onClick={onRetry} className=\"gap-2\">\n <RefreshCw className=\"size-4\" />\n Ask AI to fix this\n </Button>\n </CardFooter>\n )}\n </Card>\n );\n}\n","import * as React from 'react';\n\nimport * as ShadcnComponents from '@deepagents/react-shadcn';\n\n// Only expose safe React hooks - no useRef (DOM access), no useContext (escape scope)\nconst safeReactHooks = {\n useState: React.useState,\n useEffect: React.useEffect,\n useMemo: React.useMemo,\n useCallback: React.useCallback,\n useReducer: React.useReducer,\n useId: React.useId,\n};\n\nconst safeReactUtils = {\n Fragment: React.Fragment,\n createElement: React.createElement,\n};\n\n// Create the safe scope object\nexport function createSafeScope(): Record<string, unknown> {\n return {\n // React hooks and utilities\n ...safeReactHooks,\n ...safeReactUtils,\n React: {\n ...safeReactHooks,\n ...safeReactUtils,\n },\n\n // All shadcn components\n ...ShadcnComponents,\n\n // Block dangerous globals by setting them to undefined\n window: undefined,\n document: undefined,\n localStorage: undefined,\n sessionStorage: undefined,\n fetch: undefined,\n XMLHttpRequest: undefined,\n WebSocket: undefined,\n eval: undefined,\n Function: undefined,\n setTimeout: undefined,\n setInterval: undefined,\n importScripts: undefined,\n navigator: undefined,\n location: undefined,\n history: undefined,\n console: undefined,\n alert: undefined,\n confirm: undefined,\n prompt: undefined,\n };\n}\n\nexport function getScopeKeys(): string[] {\n return Object.keys(createSafeScope());\n}\n\nexport function getScopeValues(): unknown[] {\n return Object.values(createSafeScope());\n}\n","import { transform } from 'sucrase';\n\nexport type TranspileResult =\n { success: true; code: string } | { success: false; error: string };\n\n/**\n * Strip import/export statements from code since we use eval with injected scope.\n * All dependencies (React hooks, shadcn components) are already available in scope.\n */\nfunction preprocessCode(code: string): string {\n return (\n code\n // Remove import statements (e.g., import { useState } from 'react')\n .replace(/^import\\s+.*?from\\s+['\"][^'\"]+['\"];?\\s*$/gm, '')\n // Remove side-effect imports (e.g., import 'styles.css')\n .replace(/^import\\s+['\"][^'\"]+['\"];?\\s*$/gm, '')\n // Remove \"export default Component;\" at end\n .replace(/^export\\s+default\\s+\\w+;?\\s*$/gm, '')\n // Convert \"export default function Component\" or \"export default () =>\" to just the definition\n .replace(/^export\\s+default\\s+/gm, 'const Component = ')\n .trim()\n );\n}\n\nexport function transpileJSX(code: string): TranspileResult {\n try {\n // Preprocess to remove import/export statements\n const preprocessed = preprocessCode(code);\n\n // Sucrase transforms JSX to React.createElement calls\n const result = transform(preprocessed, {\n transforms: ['jsx', 'typescript'],\n jsxRuntime: 'classic',\n production: true,\n });\n\n return {\n success: true,\n code: result.code,\n };\n } catch (error) {\n return {\n success: false,\n error:\n error instanceof Error ? error.message : 'Unknown transpilation error',\n };\n }\n}\n\n/**\n * Extract PascalCase variable/function names from code (React component convention).\n * These are candidate component names to check at runtime.\n */\nfunction extractComponentNames(code: string): string[] {\n const patterns = [\n /(?:const|let|var)\\s+([A-Z][a-zA-Z0-9]*)\\s*=/g, // const MyComponent =\n /function\\s+([A-Z][a-zA-Z0-9]*)\\s*\\(/g, // function MyComponent(\n ];\n\n const names = new Set<string>();\n for (const pattern of patterns) {\n let match;\n while ((match = pattern.exec(code)) !== null) {\n names.add(match[1]);\n }\n }\n return Array.from(names);\n}\n\n// Wrap the transpiled code to return a component\n// Dynamically detects component by finding PascalCase names in the code\nexport function wrapAsComponent(transpiledCode: string): string {\n const componentNames = extractComponentNames(transpiledCode);\n\n // Generate checks for each found PascalCase name\n const checks = componentNames\n .map((name) => `if (typeof ${name} !== 'undefined') return ${name};`)\n .join('\\n ');\n\n return `\n return (function() {\n ${transpiledCode}\n ${checks}\n return null;\n })();\n `;\n}\n","import * as React from 'react';\n\nimport { DynamicUIError, DynamicUIErrorBoundary } from './error-boundary.tsx';\nimport { getScopeKeys, getScopeValues } from './safe-scope.ts';\nimport { transpileJSX, wrapAsComponent } from './transpiler.ts';\n\ninterface DynamicRendererProps {\n code: string;\n onRetry?: (errorMessage: string) => void;\n}\n\ntype EvalResult =\n | { success: true; Component: React.ComponentType }\n | { success: false; error: string };\n\nfunction evalCode(code: string): EvalResult {\n try {\n const transpileResult = transpileJSX(code);\n\n if (!transpileResult.success) {\n return {\n success: false,\n error: `Transpilation failed: ${transpileResult.error}`,\n };\n }\n\n const wrappedCode = wrapAsComponent(transpileResult.code);\n const scopeKeys = getScopeKeys();\n const scopeValues = getScopeValues();\n\n // Create function with safe scope - dangerous globals are set to undefined\n // eslint-disable-next-line no-new-func\n const factory = new Function(...scopeKeys, wrappedCode);\n const Component = factory(...scopeValues);\n\n if (!Component) {\n return {\n success: false,\n error: 'Code must export a Component variable',\n };\n }\n\n return {\n success: true,\n Component,\n };\n } catch (error) {\n return {\n success: false,\n error:\n error instanceof Error ? error.message : 'Unknown evaluation error',\n };\n }\n}\n\nexport function DynamicRenderer({ code, onRetry }: DynamicRendererProps) {\n const result = React.useMemo(() => evalCode(code), [code]);\n\n if (!result.success) {\n return (\n <DynamicUIError\n error={new Error(result.error)}\n code={code}\n onRetry={onRetry ? () => onRetry(result.error) : undefined}\n />\n );\n }\n\n const Component = result.Component;\n\n return (\n <DynamicUIErrorBoundary code={code} onRetry={onRetry}>\n <Component />\n </DynamicUIErrorBoundary>\n );\n}\n","import type { ChatStatus, FileUIPart } from 'ai';\nimport {\n CornerDownLeftIcon,\n ImageIcon,\n Loader2Icon,\n MicIcon,\n PaperclipIcon,\n PlusIcon,\n SquareIcon,\n XIcon,\n} from 'lucide-react';\nimport { nanoid } from 'nanoid';\nimport {\n type ChangeEvent,\n type ChangeEventHandler,\n Children,\n type ClipboardEventHandler,\n type ComponentProps,\n type FormEvent,\n type FormEventHandler,\n Fragment,\n type HTMLAttributes,\n type KeyboardEventHandler,\n type PropsWithChildren,\n type ReactNode,\n type RefObject,\n createContext,\n startTransition,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport {\n Button,\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n HoverCard,\n HoverCardContent,\n HoverCardTrigger,\n InputGroup,\n InputGroupAddon,\n InputGroupButton,\n InputGroupTextarea,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n cn,\n} from '@deepagents/react-shadcn';\n\n// ============================================================================\n// Provider Context & Types\n// ============================================================================\n\nexport type AttachmentsContext = {\n files: (FileUIPart & { id: string })[];\n add: (files: File[] | FileList) => void;\n remove: (id: string) => void;\n clear: () => void;\n openFileDialog: () => void;\n fileInputRef: RefObject<HTMLInputElement | null>;\n};\n\nexport type TextInputContext = {\n value: string;\n setInput: (v: string) => void;\n clear: () => void;\n};\n\nexport type PromptInputControllerProps = {\n textInput: TextInputContext;\n attachments: AttachmentsContext;\n /** INTERNAL: Allows PromptInput to register its file textInput + \"open\" callback */\n __registerFileInput: (\n ref: RefObject<HTMLInputElement | null>,\n open: () => void,\n ) => void;\n};\n\nconst PromptInputController = createContext<PromptInputControllerProps | null>(\n null,\n);\nconst ProviderAttachmentsContext = createContext<AttachmentsContext | null>(\n null,\n);\n\nexport const usePromptInputController = () => {\n const ctx = useContext(PromptInputController);\n if (!ctx) {\n throw new Error(\n 'Wrap your component inside <PromptInputProvider> to use usePromptInputController().',\n );\n }\n return ctx;\n};\n\n// Optional variants (do NOT throw). Useful for dual-mode components.\nconst useOptionalPromptInputController = () =>\n useContext(PromptInputController);\n\nexport const useProviderAttachments = () => {\n const ctx = useContext(ProviderAttachmentsContext);\n if (!ctx) {\n throw new Error(\n 'Wrap your component inside <PromptInputProvider> to use useProviderAttachments().',\n );\n }\n return ctx;\n};\n\nconst useOptionalProviderAttachments = () =>\n useContext(ProviderAttachmentsContext);\n\nexport type PromptInputProviderProps = PropsWithChildren<{\n initialInput?: string;\n}>;\n\n/**\n * Optional global provider that lifts PromptInput state outside of PromptInput.\n * If you don't use it, PromptInput stays fully self-managed.\n */\nexport function PromptInputProvider({\n initialInput: initialTextInput = '',\n children,\n}: PromptInputProviderProps) {\n // ----- textInput state\n const [textInput, setTextInput] = useState(initialTextInput);\n const clearInput = useCallback(() => setTextInput(''), []);\n\n // ----- attachments state (global when wrapped)\n const [attachmentFiles, setAttachmentFiles] = useState<\n (FileUIPart & { id: string })[]\n >([]);\n const fileInputRef = useRef<HTMLInputElement | null>(null);\n const openRef = useRef<() => void>(() => {\n // noop – replaced when provider mounts\n });\n\n const add = useCallback((files: File[] | FileList) => {\n const incoming = Array.from(files);\n if (incoming.length === 0) {\n return;\n }\n\n setAttachmentFiles((prev) =>\n prev.concat(\n incoming.map((file) => ({\n id: nanoid(),\n type: 'file' as const,\n url: URL.createObjectURL(file),\n mediaType: file.type,\n filename: file.name,\n })),\n ),\n );\n }, []);\n\n const remove = useCallback((id: string) => {\n setAttachmentFiles((prev) => {\n const found = prev.find((f) => f.id === id);\n if (found?.url) {\n URL.revokeObjectURL(found.url);\n }\n return prev.filter((f) => f.id !== id);\n });\n }, []);\n\n const clear = useCallback(() => {\n setAttachmentFiles((prev) => {\n for (const f of prev) {\n if (f.url) {\n URL.revokeObjectURL(f.url);\n }\n }\n return [];\n });\n }, []);\n\n // Keep a ref to attachments for cleanup on unmount (avoids stale closure)\n const attachmentsRef = useRef(attachmentFiles);\n // eslint-disable-next-line react-hooks/refs -- synchronous write required so unmount cleanup reads latest value\n attachmentsRef.current = attachmentFiles;\n\n // Cleanup blob URLs on unmount to prevent memory leaks\n useEffect(() => {\n return () => {\n for (const f of attachmentsRef.current) {\n if (f.url) {\n URL.revokeObjectURL(f.url);\n }\n }\n };\n }, []);\n\n const openFileDialog = useCallback(() => {\n openRef.current?.();\n }, []);\n\n const attachments = useMemo<AttachmentsContext>(\n () => ({\n files: attachmentFiles,\n add,\n remove,\n clear,\n openFileDialog,\n fileInputRef,\n }),\n [attachmentFiles, add, remove, clear, openFileDialog],\n );\n\n const __registerFileInput = useCallback(\n (ref: RefObject<HTMLInputElement | null>, open: () => void) => {\n fileInputRef.current = ref.current;\n openRef.current = open;\n },\n [],\n );\n\n const controller = useMemo<PromptInputControllerProps>(\n () => ({\n textInput: {\n value: textInput,\n setInput: setTextInput,\n clear: clearInput,\n },\n attachments,\n __registerFileInput,\n }),\n [textInput, clearInput, attachments, __registerFileInput],\n );\n\n return (\n <PromptInputController.Provider value={controller}>\n <ProviderAttachmentsContext.Provider value={attachments}>\n {children}\n </ProviderAttachmentsContext.Provider>\n </PromptInputController.Provider>\n );\n}\n\n// ============================================================================\n// Component Context & Hooks\n// ============================================================================\n\nconst LocalAttachmentsContext = createContext<AttachmentsContext | null>(null);\n\nexport const usePromptInputAttachments = () => {\n // Dual-mode: prefer provider if present, otherwise use local\n const provider = useOptionalProviderAttachments();\n const local = useContext(LocalAttachmentsContext);\n const context = provider ?? local;\n if (!context) {\n throw new Error(\n 'usePromptInputAttachments must be used within a PromptInput or PromptInputProvider',\n );\n }\n return context;\n};\n\nexport type PromptInputAttachmentProps = HTMLAttributes<HTMLDivElement> & {\n data: FileUIPart & { id: string };\n className?: string;\n};\n\nexport function PromptInputAttachment({\n data,\n className,\n ...props\n}: PromptInputAttachmentProps) {\n const attachments = usePromptInputAttachments();\n\n const filename = data.filename || '';\n\n const mediaType =\n data.mediaType?.startsWith('image/') && data.url ? 'image' : 'file';\n const isImage = mediaType === 'image';\n\n const attachmentLabel = filename || (isImage ? 'Image' : 'Attachment');\n\n return (\n <PromptInputHoverCard>\n <HoverCardTrigger\n delay={0}\n closeDelay={0}\n render={\n <div\n className={cn(\n 'group border-border hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 relative flex h-8 cursor-pointer items-center gap-1.5 rounded-md border px-1.5 text-sm font-medium transition-all select-none',\n className,\n )}\n key={data.id}\n {...props}\n />\n }\n >\n <div className=\"relative size-5 shrink-0\">\n <div className=\"bg-background absolute inset-0 flex size-5 items-center justify-center overflow-hidden rounded transition-opacity group-hover:opacity-0\">\n {isImage ? (\n <img\n alt={filename || 'attachment'}\n className=\"size-5 object-cover\"\n height={20}\n src={data.url}\n width={20}\n />\n ) : (\n <div className=\"text-muted-foreground flex size-5 items-center justify-center\">\n <PaperclipIcon className=\"size-3\" />\n </div>\n )}\n </div>\n <Button\n aria-label=\"Remove attachment\"\n className=\"absolute inset-0 size-5 cursor-pointer rounded p-0 opacity-0 transition-opacity group-hover:pointer-events-auto group-hover:opacity-100 [&>svg]:size-2.5\"\n onClick={(e) => {\n e.stopPropagation();\n attachments.remove(data.id);\n }}\n type=\"button\"\n variant=\"ghost\"\n >\n <XIcon />\n <span className=\"sr-only\">Remove</span>\n </Button>\n </div>\n\n <span className=\"flex-1 truncate\">{attachmentLabel}</span>\n </HoverCardTrigger>\n <PromptInputHoverCardContent className=\"w-auto p-2\">\n <div className=\"w-auto space-y-3\">\n {isImage && (\n <div className=\"flex max-h-96 w-96 items-center justify-center overflow-hidden rounded-md border\">\n <img\n alt={filename || 'attachment preview'}\n className=\"max-h-full max-w-full object-contain\"\n height={384}\n src={data.url}\n width={448}\n />\n </div>\n )}\n <div className=\"flex items-center gap-2.5\">\n <div className=\"min-w-0 flex-1 space-y-1 px-0.5\">\n <h4 className=\"truncate text-sm leading-none font-semibold\">\n {filename || (isImage ? 'Image' : 'Attachment')}\n </h4>\n {data.mediaType && (\n <p className=\"text-muted-foreground truncate font-mono text-xs\">\n {data.mediaType}\n </p>\n )}\n </div>\n </div>\n </div>\n </PromptInputHoverCardContent>\n </PromptInputHoverCard>\n );\n}\n\nexport type PromptInputAttachmentsProps = Omit<\n HTMLAttributes<HTMLDivElement>,\n 'children'\n> & {\n children: (attachment: FileUIPart & { id: string }) => ReactNode;\n};\n\nexport function PromptInputAttachments({\n children,\n className,\n ...props\n}: PromptInputAttachmentsProps) {\n const attachments = usePromptInputAttachments();\n\n if (!attachments.files.length) {\n return null;\n }\n\n return (\n <div\n className={cn('flex w-full flex-wrap items-center gap-2 p-3', className)}\n {...props}\n >\n {attachments.files.map((file) => (\n <Fragment key={file.id}>{children(file)}</Fragment>\n ))}\n </div>\n );\n}\n\nexport type PromptInputActionAddAttachmentsProps = ComponentProps<\n typeof DropdownMenuItem\n> & {\n label?: string;\n};\n\nexport const PromptInputActionAddAttachments = ({\n label = 'Add photos or files',\n ...props\n}: PromptInputActionAddAttachmentsProps) => {\n const attachments = usePromptInputAttachments();\n\n return (\n <DropdownMenuItem\n {...props}\n onSelect={(e) => {\n e.preventDefault();\n attachments.openFileDialog();\n }}\n >\n <ImageIcon className=\"mr-2 size-4\" /> {label}\n </DropdownMenuItem>\n );\n};\n\nexport type PromptInputMessage = {\n text: string;\n files: FileUIPart[];\n};\n\nexport type PromptInputProps = Omit<\n HTMLAttributes<HTMLFormElement>,\n 'onSubmit' | 'onError'\n> & {\n accept?: string; // e.g., \"image/*\" or leave undefined for any\n multiple?: boolean;\n // When true, accepts drops anywhere on document. Default false (opt-in).\n globalDrop?: boolean;\n // Render a hidden input with given name and keep it in sync for native form posts. Default false.\n syncHiddenInput?: boolean;\n // Minimal constraints\n maxFiles?: number;\n maxFileSize?: number; // bytes\n onError?: (err: {\n code: 'max_files' | 'max_file_size' | 'accept';\n message: string;\n }) => void;\n onSubmit: (\n message: PromptInputMessage,\n event: FormEvent<HTMLFormElement>,\n ) => void | Promise<void>;\n};\n\nexport const PromptInput = ({\n className,\n accept,\n multiple,\n globalDrop,\n syncHiddenInput,\n maxFiles,\n maxFileSize,\n onError,\n onSubmit,\n children,\n ...props\n}: PromptInputProps) => {\n // Try to use a provider controller if present\n const controller = useOptionalPromptInputController();\n const usingProvider = !!controller;\n\n // Refs\n const inputRef = useRef<HTMLInputElement | null>(null);\n const formRef = useRef<HTMLFormElement | null>(null);\n\n // ----- Local attachments (only used when no provider)\n const [items, setItems] = useState<(FileUIPart & { id: string })[]>([]);\n const files = usingProvider ? controller.attachments.files : items;\n\n // Keep a ref to files for cleanup on unmount (avoids stale closure)\n const filesRef = useRef(files);\n // eslint-disable-next-line react-hooks/refs -- synchronous write required so unmount cleanup reads latest value\n filesRef.current = files;\n\n const openFileDialogLocal = useCallback(() => {\n inputRef.current?.click();\n }, []);\n\n const matchesAccept = useCallback(\n (f: File) => {\n if (!accept || accept.trim() === '') {\n return true;\n }\n\n const patterns = accept\n .split(',')\n .map((s) => s.trim())\n .filter(Boolean);\n\n return patterns.some((pattern) => {\n if (pattern.endsWith('/*')) {\n const prefix = pattern.slice(0, -1); // e.g: image/* -> image/\n return f.type.startsWith(prefix);\n }\n return f.type === pattern;\n });\n },\n [accept],\n );\n\n const addLocal = useCallback(\n (fileList: File[] | FileList) => {\n const incoming = Array.from(fileList);\n const accepted = incoming.filter((f) => matchesAccept(f));\n if (incoming.length && accepted.length === 0) {\n onError?.({\n code: 'accept',\n message: 'No files match the accepted types.',\n });\n return;\n }\n const withinSize = (f: File) =>\n maxFileSize ? f.size <= maxFileSize : true;\n const sized = accepted.filter(withinSize);\n if (accepted.length > 0 && sized.length === 0) {\n onError?.({\n code: 'max_file_size',\n message: 'All files exceed the maximum size.',\n });\n return;\n }\n\n setItems((prev) => {\n const capacity =\n typeof maxFiles === 'number'\n ? Math.max(0, maxFiles - prev.length)\n : undefined;\n const capped =\n typeof capacity === 'number' ? sized.slice(0, capacity) : sized;\n if (typeof capacity === 'number' && sized.length > capacity) {\n onError?.({\n code: 'max_files',\n message: 'Too many files. Some were not added.',\n });\n }\n const next: (FileUIPart & { id: string })[] = [];\n for (const file of capped) {\n next.push({\n id: nanoid(),\n type: 'file',\n url: URL.createObjectURL(file),\n mediaType: file.type,\n filename: file.name,\n });\n }\n return prev.concat(next);\n });\n },\n [matchesAccept, maxFiles, maxFileSize, onError],\n );\n\n const removeLocal = useCallback(\n (id: string) =>\n setItems((prev) => {\n const found = prev.find((file) => file.id === id);\n if (found?.url) {\n URL.revokeObjectURL(found.url);\n }\n return prev.filter((file) => file.id !== id);\n }),\n [],\n );\n\n const clearLocal = useCallback(\n () =>\n setItems((prev) => {\n for (const file of prev) {\n if (file.url) {\n URL.revokeObjectURL(file.url);\n }\n }\n return [];\n }),\n [],\n );\n\n const add = usingProvider ? controller.attachments.add : addLocal;\n const remove = usingProvider ? controller.attachments.remove : removeLocal;\n const clear = usingProvider ? controller.attachments.clear : clearLocal;\n const openFileDialog = usingProvider\n ? controller.attachments.openFileDialog\n : openFileDialogLocal;\n\n // Let provider know about our hidden file input so external menus can call openFileDialog()\n useEffect(() => {\n if (!usingProvider) return;\n controller.__registerFileInput(inputRef, () => inputRef.current?.click());\n }, [usingProvider, controller]);\n\n // Note: File input cannot be programmatically set for security reasons\n // The syncHiddenInput prop is no longer functional\n useEffect(() => {\n if (syncHiddenInput && inputRef.current && files.length === 0) {\n inputRef.current.value = '';\n }\n }, [files, syncHiddenInput]);\n\n // Attach drop handlers on nearest form and document (opt-in)\n useEffect(() => {\n const form = formRef.current;\n if (!form) return;\n if (globalDrop) return; // when global drop is on, let the document-level handler own drops\n\n const onDragOver = (e: DragEvent) => {\n if (e.dataTransfer?.types?.includes('Files')) {\n e.preventDefault();\n }\n };\n const onDrop = (e: DragEvent) => {\n if (e.dataTransfer?.types?.includes('Files')) {\n e.preventDefault();\n }\n if (e.dataTransfer?.files && e.dataTransfer.files.length > 0) {\n add(e.dataTransfer.files);\n }\n };\n form.addEventListener('dragover', onDragOver);\n form.addEventListener('drop', onDrop);\n return () => {\n form.removeEventListener('dragover', onDragOver);\n form.removeEventListener('drop', onDrop);\n };\n }, [add, globalDrop]);\n\n useEffect(() => {\n if (!globalDrop) return;\n\n const onDragOver = (e: DragEvent) => {\n if (e.dataTransfer?.types?.includes('Files')) {\n e.preventDefault();\n }\n };\n const onDrop = (e: DragEvent) => {\n if (e.dataTransfer?.types?.includes('Files')) {\n e.preventDefault();\n }\n if (e.dataTransfer?.files && e.dataTransfer.files.length > 0) {\n add(e.dataTransfer.files);\n }\n };\n document.addEventListener('dragover', onDragOver);\n document.addEventListener('drop', onDrop);\n return () => {\n document.removeEventListener('dragover', onDragOver);\n document.removeEventListener('drop', onDrop);\n };\n }, [add, globalDrop]);\n\n useEffect(\n () => () => {\n if (!usingProvider) {\n for (const f of filesRef.current) {\n if (f.url) URL.revokeObjectURL(f.url);\n }\n }\n },\n\n [usingProvider],\n );\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n if (event.currentTarget.files) {\n add(event.currentTarget.files);\n }\n // Reset input value to allow selecting files that were previously removed\n event.currentTarget.value = '';\n };\n\n const convertBlobUrlToDataUrl = async (\n url: string,\n ): Promise<string | null> => {\n try {\n const response = await fetch(url);\n const blob = await response.blob();\n return new Promise((resolve) => {\n const reader = new FileReader();\n\n reader.onloadend = () => resolve(reader.result as string);\n reader.onerror = () => resolve(null);\n reader.readAsDataURL(blob);\n });\n } catch {\n return null;\n }\n };\n\n const ctx = useMemo<AttachmentsContext>(\n () => ({\n files: files.map((item) => ({ ...item, id: item.id })),\n add,\n remove,\n clear,\n openFileDialog,\n fileInputRef: inputRef,\n }),\n [files, add, remove, clear, openFileDialog],\n );\n\n const handleSubmit: FormEventHandler<HTMLFormElement> = (event) => {\n event.preventDefault();\n\n const form = event.currentTarget;\n const text = usingProvider\n ? controller.textInput.value\n : (() => {\n const formData = new FormData(form);\n\n return (formData.get('message') as string) || '';\n })();\n\n // Reset form immediately after capturing text to avoid race condition\n // where user input during async blob conversion would be lost\n if (!usingProvider) {\n form.reset();\n }\n\n // Convert blob URLs to data URLs asynchronously\n Promise.all(\n files.map(async ({ id, ...item }) => {\n if (item.url && item.url.startsWith('blob:')) {\n const dataUrl = await convertBlobUrlToDataUrl(item.url);\n // If conversion failed, keep the original blob URL\n return {\n ...item,\n url: dataUrl ?? item.url,\n };\n }\n return item;\n }),\n )\n .then((convertedFiles: FileUIPart[]) => {\n try {\n const result = onSubmit({ text, files: convertedFiles }, event);\n\n // Handle both sync and async onSubmit\n if (result instanceof Promise) {\n result\n .then(() => {\n clear();\n if (usingProvider) {\n controller.textInput.clear();\n }\n })\n .catch(() => {\n // Don't clear on error - user may want to retry\n });\n } else {\n // Sync function completed without throwing, clear attachments\n clear();\n if (usingProvider) {\n controller.textInput.clear();\n }\n }\n } catch {\n // Don't clear on error - user may want to retry\n }\n })\n .catch(() => {\n // Don't clear on error - user may want to retry\n });\n };\n\n // Render with or without local provider\n const inner = (\n <>\n <input\n accept={accept}\n aria-label=\"Upload files\"\n className=\"hidden\"\n multiple={multiple}\n onChange={handleChange}\n ref={inputRef}\n title=\"Upload files\"\n type=\"file\"\n />\n <form\n className={cn('w-full', className)}\n onSubmit={handleSubmit}\n ref={formRef}\n {...props}\n >\n <InputGroup className=\"overflow-hidden\">{children}</InputGroup>\n </form>\n </>\n );\n\n return usingProvider ? (\n inner\n ) : (\n <LocalAttachmentsContext.Provider value={ctx}>\n {inner}\n </LocalAttachmentsContext.Provider>\n );\n};\n\nexport type PromptInputBodyProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputBody = ({\n className,\n ...props\n}: PromptInputBodyProps) => (\n <div className={cn('contents', className)} {...props} />\n);\n\nexport type PromptInputTextareaProps = ComponentProps<\n typeof InputGroupTextarea\n>;\n\nexport const PromptInputTextarea = ({\n onChange,\n className,\n placeholder = 'What would you like to know?',\n ...props\n}: PromptInputTextareaProps) => {\n const controller = useOptionalPromptInputController();\n const attachments = usePromptInputAttachments();\n const [isComposing, setIsComposing] = useState(false);\n\n const handleKeyDown: KeyboardEventHandler<HTMLTextAreaElement> = (e) => {\n if (e.key === 'Enter') {\n if (isComposing || e.nativeEvent.isComposing) {\n return;\n }\n if (e.shiftKey) {\n return;\n }\n e.preventDefault();\n\n // Check if the submit button is disabled before submitting\n const form = e.currentTarget.form;\n const submitButton = form?.querySelector<HTMLButtonElement>(\n 'button[type=\"submit\"]',\n );\n if (submitButton?.disabled) {\n return;\n }\n\n form?.requestSubmit();\n }\n\n // Remove last attachment when Backspace is pressed and textarea is empty\n if (\n e.key === 'Backspace' &&\n e.currentTarget.value === '' &&\n attachments.files.length > 0\n ) {\n e.preventDefault();\n const lastAttachment = attachments.files[attachments.files.length - 1];\n if (lastAttachment) {\n attachments.remove(lastAttachment.id);\n }\n }\n };\n\n const handlePaste: ClipboardEventHandler<HTMLTextAreaElement> = (event) => {\n const items = event.clipboardData?.items;\n\n if (!items) {\n return;\n }\n\n const files: File[] = [];\n\n for (const item of items) {\n if (item.kind === 'file') {\n const file = item.getAsFile();\n if (file) {\n files.push(file);\n }\n }\n }\n\n if (files.length > 0) {\n event.preventDefault();\n attachments.add(files);\n }\n };\n\n const controlledProps = controller\n ? {\n value: controller.textInput.value,\n onChange: (e: ChangeEvent<HTMLTextAreaElement>) => {\n controller.textInput.setInput(e.currentTarget.value);\n onChange?.(e);\n },\n }\n : {\n onChange,\n };\n\n return (\n <InputGroupTextarea\n className={cn('field-sizing-content max-h-48 min-h-16', className)}\n name=\"message\"\n onCompositionEnd={() => setIsComposing(false)}\n onCompositionStart={() => setIsComposing(true)}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n placeholder={placeholder}\n {...props}\n {...controlledProps}\n />\n );\n};\n\nexport type PromptInputHeaderProps = Omit<\n ComponentProps<typeof InputGroupAddon>,\n 'align'\n>;\n\nexport const PromptInputHeader = ({\n className,\n ...props\n}: PromptInputHeaderProps) => (\n <InputGroupAddon\n align=\"block-end\"\n className={cn('order-first flex-wrap gap-1', className)}\n {...props}\n />\n);\n\nexport type PromptInputFooterProps = Omit<\n ComponentProps<typeof InputGroupAddon>,\n 'align'\n>;\n\nexport const PromptInputFooter = ({\n className,\n ...props\n}: PromptInputFooterProps) => (\n <InputGroupAddon\n align=\"block-end\"\n className={cn('justify-between gap-1', className)}\n {...props}\n />\n);\n\nexport type PromptInputToolsProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTools = ({\n className,\n ...props\n}: PromptInputToolsProps) => (\n <div className={cn('flex items-center gap-1', className)} {...props} />\n);\n\nexport type PromptInputButtonProps = ComponentProps<typeof InputGroupButton>;\n\nexport const PromptInputButton = ({\n variant = 'ghost',\n className,\n size,\n ...props\n}: PromptInputButtonProps) => {\n const newSize =\n size ?? (Children.count(props.children) > 1 ? 'sm' : 'icon-sm');\n\n return (\n <InputGroupButton\n className={cn(className)}\n size={newSize}\n type=\"button\"\n variant={variant}\n {...props}\n />\n );\n};\n\nexport type PromptInputActionMenuProps = ComponentProps<typeof DropdownMenu>;\nexport const PromptInputActionMenu = (props: PromptInputActionMenuProps) => (\n <DropdownMenu {...props} />\n);\n\nexport type PromptInputActionMenuTriggerProps = PromptInputButtonProps;\n\nexport const PromptInputActionMenuTrigger = ({\n className,\n children,\n ...props\n}: PromptInputActionMenuTriggerProps) => (\n <DropdownMenuTrigger\n render={<PromptInputButton className={className} {...props} />}\n >\n {children ?? <PlusIcon className=\"size-4\" />}\n </DropdownMenuTrigger>\n);\n\nexport type PromptInputActionMenuContentProps = ComponentProps<\n typeof DropdownMenuContent\n>;\nexport const PromptInputActionMenuContent = ({\n className,\n ...props\n}: PromptInputActionMenuContentProps) => (\n <DropdownMenuContent align=\"start\" className={cn(className)} {...props} />\n);\n\nexport type PromptInputActionMenuItemProps = ComponentProps<\n typeof DropdownMenuItem\n>;\nexport const PromptInputActionMenuItem = ({\n className,\n ...props\n}: PromptInputActionMenuItemProps) => (\n <DropdownMenuItem className={cn(className)} {...props} />\n);\n\n// Note: Actions that perform side-effects (like opening a file dialog)\n// are provided in opt-in modules (e.g., prompt-input-attachments).\n\nexport type PromptInputSubmitProps = ComponentProps<typeof InputGroupButton> & {\n status?: ChatStatus;\n};\n\nexport const PromptInputSubmit = ({\n className,\n variant = 'default',\n size = 'icon-sm',\n status,\n children,\n ...props\n}: PromptInputSubmitProps) => {\n let Icon = <CornerDownLeftIcon className=\"size-4\" />;\n\n if (status === 'submitted') {\n Icon = <Loader2Icon className=\"size-4 animate-spin\" />;\n } else if (status === 'streaming') {\n Icon = <SquareIcon className=\"size-4\" />;\n } else if (status === 'error') {\n Icon = <XIcon className=\"size-4\" />;\n }\n\n return (\n <InputGroupButton\n aria-label=\"Submit\"\n className={cn(className)}\n size={size}\n type=\"submit\"\n variant={variant}\n {...props}\n >\n {children ?? Icon}\n </InputGroupButton>\n );\n};\n\ninterface SpeechRecognition extends EventTarget {\n continuous: boolean;\n interimResults: boolean;\n lang: string;\n start(): void;\n stop(): void;\n onstart: ((this: SpeechRecognition, ev: Event) => void) | null;\n onend: ((this: SpeechRecognition, ev: Event) => void) | null;\n onresult:\n ((this: SpeechRecognition, ev: SpeechRecognitionEvent) => void) | null;\n onerror:\n ((this: SpeechRecognition, ev: SpeechRecognitionErrorEvent) => void) | null;\n}\n\ninterface SpeechRecognitionEvent extends Event {\n results: SpeechRecognitionResultList;\n resultIndex: number;\n}\n\ntype SpeechRecognitionResultList = {\n readonly length: number;\n item(index: number): SpeechRecognitionResult;\n [index: number]: SpeechRecognitionResult;\n};\n\ntype SpeechRecognitionResult = {\n readonly length: number;\n item(index: number): SpeechRecognitionAlternative;\n [index: number]: SpeechRecognitionAlternative;\n isFinal: boolean;\n};\n\ntype SpeechRecognitionAlternative = {\n transcript: string;\n confidence: number;\n};\n\ninterface SpeechRecognitionErrorEvent extends Event {\n error: string;\n}\n\ndeclare global {\n interface Window {\n SpeechRecognition: {\n new (): SpeechRecognition;\n };\n webkitSpeechRecognition: {\n new (): SpeechRecognition;\n };\n }\n}\n\nexport type PromptInputSpeechButtonProps = ComponentProps<\n typeof PromptInputButton\n> & {\n textareaRef?: RefObject<HTMLTextAreaElement | null>;\n onTranscriptionChange?: (text: string) => void;\n};\n\nexport const PromptInputSpeechButton = ({\n className,\n textareaRef,\n onTranscriptionChange,\n ...props\n}: PromptInputSpeechButtonProps) => {\n const [isListening, setIsListening] = useState(false);\n const [recognition, setRecognition] = useState<SpeechRecognition | null>(\n null,\n );\n const recognitionRef = useRef<SpeechRecognition | null>(null);\n\n useEffect(() => {\n if (\n typeof window !== 'undefined' &&\n ('SpeechRecognition' in window || 'webkitSpeechRecognition' in window)\n ) {\n const SpeechRecognition =\n window.SpeechRecognition || window.webkitSpeechRecognition;\n const speechRecognition = new SpeechRecognition();\n\n speechRecognition.continuous = true;\n speechRecognition.interimResults = true;\n speechRecognition.lang = 'en-US';\n\n speechRecognition.onstart = () => {\n setIsListening(true);\n };\n\n speechRecognition.onend = () => {\n setIsListening(false);\n };\n\n speechRecognition.onresult = (event) => {\n let finalTranscript = '';\n\n for (let i = event.resultIndex; i < event.results.length; i++) {\n const result = event.results[i];\n if (result.isFinal) {\n finalTranscript += result[0]?.transcript ?? '';\n }\n }\n\n if (finalTranscript && textareaRef?.current) {\n const textarea = textareaRef.current;\n const currentValue = textarea.value;\n const newValue =\n currentValue + (currentValue ? ' ' : '') + finalTranscript;\n\n textarea.value = newValue;\n textarea.dispatchEvent(new Event('input', { bubbles: true }));\n onTranscriptionChange?.(newValue);\n }\n };\n\n speechRecognition.onerror = (event) => {\n console.error('Speech recognition error:', event.error);\n setIsListening(false);\n };\n\n recognitionRef.current = speechRecognition;\n startTransition(() => setRecognition(speechRecognition));\n }\n\n return () => {\n if (recognitionRef.current) {\n recognitionRef.current.stop();\n }\n };\n }, [textareaRef, onTranscriptionChange]);\n\n const toggleListening = useCallback(() => {\n if (!recognition) {\n return;\n }\n\n if (isListening) {\n recognition.stop();\n } else {\n recognition.start();\n }\n }, [recognition, isListening]);\n\n return (\n <PromptInputButton\n className={cn(\n 'relative transition-all duration-200',\n isListening && 'bg-accent text-accent-foreground animate-pulse',\n className,\n )}\n disabled={!recognition}\n onClick={toggleListening}\n {...props}\n >\n <MicIcon className=\"size-4\" />\n </PromptInputButton>\n );\n};\n\nexport type PromptInputSelectProps = ComponentProps<typeof Select>;\n\nexport const PromptInputSelect = (props: PromptInputSelectProps) => (\n <Select {...props} />\n);\n\nexport type PromptInputSelectTriggerProps = ComponentProps<\n typeof SelectTrigger\n>;\n\nexport const PromptInputSelectTrigger = ({\n className,\n ...props\n}: PromptInputSelectTriggerProps) => (\n <SelectTrigger\n className={cn(\n 'text-muted-foreground border-none bg-transparent font-medium shadow-none transition-colors',\n 'hover:bg-accent hover:text-foreground aria-expanded:bg-accent aria-expanded:text-foreground',\n className,\n )}\n {...props}\n />\n);\n\nexport type PromptInputSelectContentProps = ComponentProps<\n typeof SelectContent\n>;\n\nexport const PromptInputSelectContent = ({\n className,\n ...props\n}: PromptInputSelectContentProps) => (\n <SelectContent className={cn(className)} {...props} />\n);\n\nexport type PromptInputSelectItemProps = ComponentProps<typeof SelectItem>;\n\nexport const PromptInputSelectItem = ({\n className,\n ...props\n}: PromptInputSelectItemProps) => (\n <SelectItem className={cn(className)} {...props} />\n);\n\nexport type PromptInputSelectValueProps = ComponentProps<typeof SelectValue>;\n\nexport const PromptInputSelectValue = ({\n className,\n ...props\n}: PromptInputSelectValueProps) => (\n <SelectValue className={cn(className)} {...props} />\n);\n\nexport type PromptInputHoverCardProps = ComponentProps<typeof HoverCard>;\n\nexport const PromptInputHoverCard = (props: PromptInputHoverCardProps) => (\n <HoverCard {...props} />\n);\n\nexport type PromptInputHoverCardTriggerProps = ComponentProps<\n typeof HoverCardTrigger\n>;\n\nexport const PromptInputHoverCardTrigger = ({\n delay = 0,\n closeDelay = 0,\n ...props\n}: PromptInputHoverCardTriggerProps) => (\n <HoverCardTrigger delay={delay} closeDelay={closeDelay} {...props} />\n);\n\nexport type PromptInputHoverCardContentProps = ComponentProps<\n typeof HoverCardContent\n>;\n\nexport const PromptInputHoverCardContent = ({\n align = 'start',\n ...props\n}: PromptInputHoverCardContentProps) => (\n <HoverCardContent align={align} {...props} />\n);\n\nexport type PromptInputTabsListProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTabsList = ({\n className,\n ...props\n}: PromptInputTabsListProps) => <div className={cn(className)} {...props} />;\n\nexport type PromptInputTabProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTab = ({\n className,\n ...props\n}: PromptInputTabProps) => <div className={cn(className)} {...props} />;\n\nexport type PromptInputTabLabelProps = HTMLAttributes<HTMLHeadingElement>;\n\nexport const PromptInputTabLabel = ({\n className,\n children,\n ...props\n}: PromptInputTabLabelProps) => (\n <h3\n className={cn(\n 'text-muted-foreground mb-2 px-3 text-xs font-medium',\n className,\n )}\n {...props}\n >\n {children}\n </h3>\n);\n\nexport type PromptInputTabBodyProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTabBody = ({\n className,\n ...props\n}: PromptInputTabBodyProps) => (\n <div className={cn('space-y-1', className)} {...props} />\n);\n\nexport type PromptInputTabItemProps = HTMLAttributes<HTMLDivElement>;\n\nexport const PromptInputTabItem = ({\n className,\n ...props\n}: PromptInputTabItemProps) => (\n <div\n className={cn(\n 'hover:bg-accent flex items-center gap-2 px-3 py-2 text-xs',\n className,\n )}\n {...props}\n />\n);\n\nexport type PromptInputCommandProps = ComponentProps<typeof Command>;\n\nexport const PromptInputCommand = ({\n className,\n ...props\n}: PromptInputCommandProps) => <Command className={cn(className)} {...props} />;\n\nexport type PromptInputCommandInputProps = ComponentProps<typeof CommandInput>;\n\nexport const PromptInputCommandInput = ({\n className,\n ...props\n}: PromptInputCommandInputProps) => (\n <CommandInput className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandListProps = ComponentProps<typeof CommandList>;\n\nexport const PromptInputCommandList = ({\n className,\n ...props\n}: PromptInputCommandListProps) => (\n <CommandList className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandEmptyProps = ComponentProps<typeof CommandEmpty>;\n\nexport const PromptInputCommandEmpty = ({\n className,\n ...props\n}: PromptInputCommandEmptyProps) => (\n <CommandEmpty className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandGroupProps = ComponentProps<typeof CommandGroup>;\n\nexport const PromptInputCommandGroup = ({\n className,\n ...props\n}: PromptInputCommandGroupProps) => (\n <CommandGroup className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandItemProps = ComponentProps<typeof CommandItem>;\n\nexport const PromptInputCommandItem = ({\n className,\n ...props\n}: PromptInputCommandItemProps) => (\n <CommandItem className={cn(className)} {...props} />\n);\n\nexport type PromptInputCommandSeparatorProps = ComponentProps<\n typeof CommandSeparator\n>;\n\nexport const PromptInputCommandSeparator = ({\n className,\n ...props\n}: PromptInputCommandSeparatorProps) => (\n <CommandSeparator className={cn(className)} {...props} />\n);\n","import { useState } from 'react';\n\nexport type OnClickYieldResult = {\n loading: boolean;\n error?: unknown;\n};\n\nexport function useAsyncGenerator() {\n const [state, setState] = useState<OnClickYieldResult>({\n loading: false,\n error: null,\n });\n\n const execute = async (generator: AsyncGenerator<OnClickYieldResult>) => {\n try {\n setState({ loading: true, error: null });\n for await (const value of generator) {\n setState(value);\n }\n } catch (error) {\n setState({ loading: false, error });\n } finally {\n setState((prev) => ({ ...prev, loading: false }));\n }\n };\n\n return { ...state, execute };\n}\n","import { useCallback, useEffect, useRef } from 'react';\n\ninterface UseAutoResizeTextareaProps {\n minHeight: number;\n maxHeight?: number;\n value?: string;\n}\n\nexport function useAutoResizeTextarea({\n minHeight,\n maxHeight,\n value,\n}: UseAutoResizeTextareaProps) {\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n const adjustHeight = useCallback(\n (reset?: boolean) => {\n const textarea = textareaRef.current;\n if (!textarea) return;\n\n if (reset || !textarea.value) {\n textarea.style.height = `${minHeight}px`;\n return;\n }\n\n textarea.style.height = 'auto';\n\n const newHeight = Math.max(\n minHeight,\n Math.min(textarea.scrollHeight, maxHeight ?? Number.POSITIVE_INFINITY),\n );\n\n textarea.style.height = `${newHeight}px`;\n },\n [minHeight, maxHeight],\n );\n\n useEffect(() => {\n const textarea = textareaRef.current;\n if (textarea) {\n textarea.style.height = `${minHeight}px`;\n }\n }, [minHeight]);\n\n useEffect(() => {\n adjustHeight();\n }, [value, adjustHeight]);\n\n useEffect(() => {\n const handleResize = () => adjustHeight();\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, [adjustHeight]);\n\n return { textareaRef, adjustHeight };\n}\n","import { useEffect } from 'react';\n\ntype KeyHandler = (e: KeyboardEvent) => void;\n\ninterface UseKeyboardOptions {\n enabled?: boolean;\n handlers: Record<string, KeyHandler>;\n}\n\n/**\n * Build a normalized key string from a keyboard event.\n * Supports modifier combinations like \"ctrl+i\", \"meta+shift+k\".\n */\nfunction getKeyCombo(e: KeyboardEvent): string {\n const parts: string[] = [];\n if (e.ctrlKey) parts.push('ctrl');\n if (e.metaKey) parts.push('meta');\n if (e.altKey) parts.push('alt');\n if (e.shiftKey) parts.push('shift');\n parts.push(e.key.toLowerCase());\n return parts.join('+');\n}\n\nexport function useKeyboard({ enabled = true, handlers }: UseKeyboardOptions) {\n useEffect(() => {\n if (!enabled) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n const keyCombo = getKeyCombo(e);\n // Check for exact combo match first (e.g., \"ctrl+i\")\n let handler = handlers[keyCombo];\n // Fall back to simple key match for non-modifier shortcuts\n if (!handler) {\n handler = handlers[e.key];\n }\n if (handler) {\n e.preventDefault();\n e.stopPropagation();\n handler(e);\n }\n };\n\n document.addEventListener('keydown', handleKeyDown, true);\n return () => document.removeEventListener('keydown', handleKeyDown, true);\n }, [enabled, handlers]);\n}\n"],"mappings":"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"}
|