Back to Delivery 4 — Collaborative and Tested Quality Utilities

delivery-04-collaborative-tested-utilities/src/errors.ts

import type { DiagnosticContext, FailureKind } from "./models.js";

/**
 * A small, boundary-specific error that carries a controlled category and
 * diagnostic context. It is not a replacement for every application error.
 */
export class QualityUtilityError extends Error {
  readonly kind: FailureKind;
  readonly context: DiagnosticContext;

  constructor(kind: FailureKind, message: string, context: DiagnosticContext, cause?: unknown) {
    super(message, cause === undefined ? undefined : { cause });
    this.name = "QualityUtilityError";
    this.kind = kind;
    this.context = context;
  }
}

export function isRetryableDependencyFailure(error: unknown): boolean {
  return error instanceof QualityUtilityError && error.kind === "dependency-failure";
}