feat(ui): Implement in-place message editing with re-response (#3798)

Co-authored-by: Zane Staggs <zane@squareup.com>
This commit is contained in:
Bright Zheng
2025-08-19 11:22:57 -04:00
committed by GitHub
parent 73e4839c4a
commit e5075ea180
7 changed files with 432 additions and 37 deletions
@@ -37,6 +37,7 @@ interface ProgressiveMessageListProps {
// Custom render function for messages
renderMessage?: (message: Message, index: number) => React.ReactNode | null;
isStreamingMessage?: boolean; // Whether messages are currently being streamed
onMessageUpdate?: (messageId: string, newContent: string) => void;
}
export default function ProgressiveMessageList({
@@ -52,6 +53,7 @@ export default function ProgressiveMessageList({
showLoadingThreshold = 50,
renderMessage, // Custom render function
isStreamingMessage = false, // Whether messages are currently being streamed
onMessageUpdate,
}: ProgressiveMessageListProps) {
const [renderedCount, setRenderedCount] = useState(() => {
// Initialize with either all messages (if small) or first batch (if large)
@@ -206,7 +208,9 @@ export default function ProgressiveMessageList({
}}
/>
) : (
!hasOnlyToolResponses(message) && <UserMessage message={message} />
!hasOnlyToolResponses(message) && (
<UserMessage message={message} onMessageUpdate={onMessageUpdate} />
)
)}
</>
) : (
@@ -258,6 +262,7 @@ export default function ProgressiveMessageList({
appendMessage,
toolCallNotifications,
isStreamingMessage,
onMessageUpdate,
hasContextHandlerContent,
getContextHandlerType,
onScrollToBottom,