Skip to content

[F2-06] Errores de aplicación y de proveedor (AppError / ProviderError) #28

Open

Description

@JCCG-code

Fase: F2 · Tamaño: S · Depende de: #22 (F1-02)

Objetivo

Errores con códigos estables, estados HTTP siempre válidos y una clasificación clara de qué se puede reintentar.

Alcance

  • AppError { status, code, retryable, cause } en apps/server/src/core/errors.ts. Si status no es un código HTTP válido (400–599), queda en 500.
  • ProviderError extends AppError con code: 'auth' | 'rate_limit' | 'quota' | 'safety' | 'invalid_request' | 'timeout' | 'unavailable' | 'cancelled' | 'unknown' y retryAfterMs opcional.
  • Tabla de qué códigos son reintentables (rate_limit, timeout, unavailable) y cuáles no.
  • Sustituye a errors/HttpError.js.

Criterios de aceptación

  • Test: new AppError({ status: 1 }).status === 500.
  • Test: new ProviderError({ code: 'rate_limit' }).retryable === true; 'auth', 'safety' y 'invalid_request' → false.
  • grep -rn "HttpError" apps packages no devuelve nada al cerrar la épica F2.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions