{/* Sidebar */} ({ id, title }))} activeConversationId={activeConvId} onNewChat={handleNewChat} onSelectConversation={handleSelectConversation} onRenameConversation={handleRenameConversation} onDeleteConversation={handleDeleteConversation} onOpenExtensions={handleOpenExtensions} connectedExtensionsCount={extensions.filter((e) => e.connected).length} /> {/* Main content area */}
{/* Top bar */} setSidebarOpen((v) => !v)} /> {/* Messages or welcome */}
{messages.length === 0 && !isLoading ? ( <> {/* 显示工单摘要(仅当工单系统已连接) */} {ticketSystemConnected && ticketSummary && } ) : (
{/* 对话中也显示工单摘要 */} {ticketSystemConnected && ticketSummary && } {messages.map((msg) => { // Hide empty assistant message while streaming — the typing indicator covers it if (msg.role === "assistant" && msg.content === "" && isLoading) { return null; } return ( ); })} {isLoading && messages.length > 0 && messages[messages.length - 1].role !== "assistant" && ( )}
)}
{/* Input */}
{/* Extensions Panel */} setExtensionsPanelOpen(false)} extensions={extensions} onUpdateExtension={handleUpdateExtension} />
); }