diff --git a/packages/services/agent-service/src/interfaces/rest/controllers/agent.controller.ts b/packages/services/agent-service/src/interfaces/rest/controllers/agent.controller.ts index 01e2f99..d91361c 100644 --- a/packages/services/agent-service/src/interfaces/rest/controllers/agent.controller.ts +++ b/packages/services/agent-service/src/interfaces/rest/controllers/agent.controller.ts @@ -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();