Files
sproutclaw/.pi/agent/extensions/webui/frontend/src/routes/ChatPage.tsx
shumengya d51a055d78
Some checks failed
CI / build-check-test (push) Has been cancelled
npm audit / audit (push) Has been cancelled
feat: update webui extensions, models, and agent config
2026-06-10 21:45:53 +08:00

49 lines
1.3 KiB
TypeScript

import { ChatInput } from "../components/chat/ChatInput";
import { ExtensionDialogModal } from "../components/chat/ExtensionDialogModal";
import { ExtensionWidgetPanel } from "../components/chat/ExtensionWidgetPanel";
import { MessageList } from "../components/chat/MessageList";
import { PendingQueueBar } from "../components/chat/PendingQueueBar";
import { RunStatusBar } from "../components/chat/RunStatusBar";
import { Header } from "../components/layout/Header";
import { useChatContext } from "../context/ChatContext";
export function ChatPage() {
const {
pendingSteering,
pendingFollowUp,
isStreaming,
isCompacting,
retryState,
extensionWidgets,
extensionDialog,
abortStream,
abortRetry,
respondExtensionDialog,
dismissExtensionDialog,
} = useChatContext();
return (
<>
<Header />
<MessageList />
<ExtensionWidgetPanel widgets={extensionWidgets} />
<PendingQueueBar steering={pendingSteering} followUp={pendingFollowUp} />
<RunStatusBar
isStreaming={isStreaming}
isCompacting={isCompacting}
retryState={retryState}
onAbort={() => void abortStream()}
onAbortRetry={() => void abortRetry()}
/>
<ChatInput />
{extensionDialog ? (
<ExtensionDialogModal
dialog={extensionDialog}
onSubmit={respondExtensionDialog}
onDismiss={dismissExtensionDialog}
/>
) : null}
</>
);
}