diff --git a/legacy/packages/core/src/events/tracker.ts b/legacy/packages/core/src/events/tracker.ts index 683877f3..d3c4870c 100644 --- a/legacy/packages/core/src/events/tracker.ts +++ b/legacy/packages/core/src/events/tracker.ts @@ -228,7 +228,7 @@ export class TerminalTaskTracker { case TaskStatus.FAILED: return [SYMBOLS.CROSS, red] case TaskStatus.RETRYING: - return [SYMBOLS.WARNING, yellow] + return [this.getSpinnerSymbol(), yellow] case TaskStatus.RUNNING: default: return [this.getSpinnerSymbol(), cyan] @@ -268,20 +268,24 @@ export class TerminalTaskTracker { line = indent + gray(SYMBOLS.BAR_END) } - if (output) { - if (status === TaskStatus.COMPLETED) { - const formattedOutput = this.stringify(output) - line += - indent + - ' ' + - gray(SYMBOLS.RIGHT_ARROW + SPACE + formattedOutput) - } else if (status === TaskStatus.FAILED) { - line += - indent + ' ' + gray(SYMBOLS.RIGHT_ARROW + SPACE + red(output)) - } else if (status === TaskStatus.RETRYING) { - line += - indent + ' ' + gray(SYMBOLS.RIGHT_ARROW + SPACE + yellow(output)) - } + const formattedOutput = this.stringify(output || '') + if (status === TaskStatus.COMPLETED) { + line += + indent + ' ' + gray(SYMBOLS.RIGHT_ARROW + SPACE + formattedOutput) + } else if (status === TaskStatus.FAILED) { + line += + indent + + ' ' + + gray(SYMBOLS.RIGHT_ARROW) + + SPACE + + red(formattedOutput) + } else if (status === TaskStatus.RETRYING) { + line += + indent + + ' ' + + yellow(SYMBOLS.WARNING) + + SPACE + + gray(formattedOutput) } lines.push(line) diff --git a/legacy/packages/core/src/task.ts b/legacy/packages/core/src/task.ts index eb4ce053..c6188c33 100644 --- a/legacy/packages/core/src/task.ts +++ b/legacy/packages/core/src/task.ts @@ -360,6 +360,12 @@ export abstract class BaseTask< ctx.attemptNumber = err.attemptNumber + 1 ctx.metadata.error = err + this._eventEmitter.emit(TaskStatus.RETRYING, { + taskInputs: input, + taskOutput: err, + ...ctx.metadata + }) + if (err instanceof errors.ZodOutputValidationError) { ctx.retryMessage = err.message return @@ -383,6 +389,12 @@ export abstract class BaseTask< // task for now. return } else { + this._eventEmitter.emit(TaskStatus.FAILED, { + taskInputs: input, + taskOutput: err, + ...ctx.metadata + }) + throw err } }