Fix chat type persistence and board flow
This commit is contained in:
@@ -1041,11 +1041,25 @@ function collectCodexTextFragments(value: unknown): string[] {
|
||||
return Object.values(record).flatMap((item) => collectCodexTextFragments(item));
|
||||
}
|
||||
|
||||
function extractCompletedAgentMessageText(item: unknown) {
|
||||
if (!item || typeof item !== 'object') {
|
||||
return '';
|
||||
}
|
||||
|
||||
const record = item as Record<string, unknown>;
|
||||
|
||||
if (record.type !== 'agent_message') {
|
||||
return '';
|
||||
}
|
||||
|
||||
return collectCodexTextFragments(record.text ?? record.content ?? record.message).join('');
|
||||
}
|
||||
|
||||
export function extractCodexStreamText(parsed: Record<string, unknown>) {
|
||||
const type = typeof parsed.type === 'string' ? parsed.type : '';
|
||||
|
||||
if (type === 'item.completed') {
|
||||
const completedText = collectCodexTextFragments(parsed.item).join('');
|
||||
const completedText = extractCompletedAgentMessageText(parsed.item);
|
||||
return {
|
||||
type,
|
||||
completedText,
|
||||
@@ -3186,9 +3200,19 @@ export class ChatService {
|
||||
});
|
||||
|
||||
const progressMessages = buildProgressMessages(request.text);
|
||||
let progressIndex = 0;
|
||||
let progressIndex = progressMessages.length > 1 ? 1 : 0;
|
||||
let lastProgressMessage = progressMessages[0] ?? '';
|
||||
let progressTimer: ReturnType<typeof setInterval> | null = setInterval(() => {
|
||||
const nextMessage = progressMessages[Math.min(progressIndex, progressMessages.length - 1)];
|
||||
|
||||
if (!nextMessage || nextMessage === lastProgressMessage) {
|
||||
if (progressIndex >= progressMessages.length - 1) {
|
||||
stopProgressTimer();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
lastProgressMessage = nextMessage;
|
||||
chatRuntimeService.appendLog(request.requestId, nextMessage);
|
||||
appendActivityLine(`# 진행: ${nextMessage}`);
|
||||
|
||||
@@ -3199,6 +3223,8 @@ export class ChatService {
|
||||
|
||||
if (progressIndex < progressMessages.length - 1) {
|
||||
progressIndex += 1;
|
||||
} else {
|
||||
stopProgressTimer();
|
||||
}
|
||||
}, 2200);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user