fix: prevent error event from overriding completed status in controller
Add finished guard so that once a task reaches completed/error terminal state, subsequent events don't flip the status back. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
6876ec569b
commit
2a150dcff5
|
|
@ -63,12 +63,14 @@ export class AgentController {
|
|||
});
|
||||
|
||||
let eventCount = 0;
|
||||
let finished = false;
|
||||
for await (const event of stream) {
|
||||
eventCount++;
|
||||
this.logger.log(`[Task ${task.id}] Event #${eventCount}: type=${event.type}${event.type === 'text' ? ` len=${(event as any).content?.length}` : ''}`);
|
||||
this.logger.log(`[Task ${task.id}] Event #${eventCount}: type=${event.type}${event.type === 'text' ? ` len=${(event as any).content?.length}` : ''}${event.type === 'error' ? ` msg=${(event as any).message}` : ''}`);
|
||||
this.gateway.emitStreamEvent(session.id, event);
|
||||
|
||||
if (event.type === 'completed') {
|
||||
if (event.type === 'completed' && !finished) {
|
||||
finished = true;
|
||||
task.status = TaskStatus.COMPLETED;
|
||||
task.result = event.summary;
|
||||
task.tokensUsed = event.tokensUsed;
|
||||
|
|
@ -80,7 +82,8 @@ export class AgentController {
|
|||
await this.sessionRepository.save(session);
|
||||
}
|
||||
|
||||
if (event.type === 'error') {
|
||||
if (event.type === 'error' && !finished) {
|
||||
finished = true;
|
||||
task.status = TaskStatus.FAILED;
|
||||
task.result = event.message;
|
||||
task.completedAt = new Date();
|
||||
|
|
|
|||
Loading…
Reference in New Issue