Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/openstatusHQ/openstatus. ๐ซ Status page with uptime monitoring & API monitoring as code ๐ซ openstatus.dev
bun drizzle-orm monitoring monitoring-as-code nextjs observability on-call open-source shadcn-ui status-page statuspage synthetic-monitoring tinybird turso uptime uptime-checker uptime-monitor
Something went wrong. Try again.
1.6 kB ยท 58 lines
TSX
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859"use client";
import { useCallback, useMemo } from "react";
import { ChatConversation } from "./chat-conversation";import { ChatErrorBanner } from "./chat-error-banner";import { ChatErrorBoundary } from "./chat-error-boundary";import { ChatPromptInput } from "./chat-prompt-input";import { type ChatToolContextValue, ChatToolProvider,} from "./chat-tool-context";import { useChatSession } from "./use-chat-session";
export function ChatSessionClient({ sessionId }: { sessionId: number }) { const { messages, sendMessage, status, error, addToolApprovalResponse, stop, } = useChatSession({ sessionId });
const onSubmit = useCallback( (text: string) => { if (!text.trim()) return; sendMessage({ text }); }, [sendMessage], );
const tool = useMemo<ChatToolContextValue>( () => ({ confirmTool: (approvalId) => addToolApprovalResponse({ id: approvalId, approved: true }), cancelTool: (approvalId, reason = "Cancelled by user.") => addToolApprovalResponse({ id: approvalId, approved: false, reason, }), }), [addToolApprovalResponse], );
return ( <ChatToolProvider value={tool}> <div className="flex min-h-[calc(100svh-3.5rem)] flex-col"> <ChatErrorBoundary> <ChatConversation messages={messages} status={status} /> </ChatErrorBoundary> {error ? <ChatErrorBanner error={error} /> : null} <ChatPromptInput onSubmit={onSubmit} status={status} onStop={stop} /> </div> </ChatToolProvider> );}