fix: handle state for multiturn subTasks

This commit is contained in:
a7m-1st 2025-10-19 16:59:44 +03:00
parent 04279fccae
commit eee8cb62a4
2 changed files with 14 additions and 4 deletions

View file

@ -451,7 +451,7 @@ export default function ChatBox(): JSX.Element {
const handleEditQuery = () => {
const taskId = chatStore.activeTaskId as string;
fetchDelete(`/chat/${taskId}`);
const messageIndex = chatStore.tasks[taskId].messages.findIndex(
const messageIndex = chatStore.tasks[taskId].messages.findLastIndex(
(item) => item.step === "to_sub_tasks"
);
const question = chatStore.tasks[taskId].messages[messageIndex - 2].content;
@ -487,8 +487,11 @@ export default function ChatBox(): JSX.Element {
// Determine if we're in the "splitting in progress" phase (skeleton visible)
// Equivalent to the skeleton condition used in the JSX below
const toSubTasksMessage = task.messages.find((m) => m.step === "to_sub_tasks");
const isSkeletonPhase = ((!toSubTasksMessage && !task.hasWaitComfirm && task.messages.length > 0) || task.isTakeControl);
const toSubTasksMessage = task.messages.find((m) => (m.step === "to_sub_tasks" && !m.isConfirm));
const isSkeletonPhase = (
task.status !== 'finished' &&
(!toSubTasksMessage && !task.hasWaitComfirm && task.messages.length > 0) ||
(task.isTakeControl && (!toSubTasksMessage || !toSubTasksMessage.isConfirm)));
if (isSkeletonPhase) {
return "splitting";
}
@ -633,7 +636,12 @@ export default function ChatBox(): JSX.Element {
})) || []}
onRemoveQueuedMessage={(id) => handleRemoveTaskQueue(id)}
subtitle={getBottomBoxState() === 'confirm'
? chatStore.tasks[chatStore.activeTaskId]?.messages?.[0]?.content
? (() => {
// Find the last message where role is "user"
const messages = chatStore.tasks[chatStore.activeTaskId]?.messages || [];
const lastUserMessage = messages.slice().reverse().find(msg => msg.role === "user");
return lastUserMessage?.content || chatStore.tasks[chatStore.activeTaskId]?.summaryTask;
})()
: chatStore.tasks[chatStore.activeTaskId]?.summaryTask}
onStartTask={() => handleConfirmTask()}
onEdit={handleEditQuery}

View file

@ -608,6 +608,8 @@ const chatStore = (initial?: Partial<ChatStore>) => createStore<ChatStore>()(
return;
}
if (agentMessages.step === "confirmed") {
//Reset is status to pending
setStatus(currentTaskId, 'pending')
setHasWaitComfirm(currentTaskId, false)
return
}