mirror of
https://github.com/eigent-ai/eigent.git
synced 2026-05-19 16:31:36 +00:00
fix: handle state for multiturn subTasks
This commit is contained in:
parent
04279fccae
commit
eee8cb62a4
2 changed files with 14 additions and 4 deletions
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue