AimuxException.fromCode constructor

AimuxException.fromCode(
  1. int code,
  2. String message, {
  3. int status = -1,
  4. int retryMs = -1,
  5. bool retryable = false,
})

Dispatch code → concrete subclass (defaults for status when -1).

Implementation

factory AimuxException.fromCode(
  int code,
  String message, {
  int status = -1,
  int retryMs = -1,
  bool retryable = false,
}) {
  switch (code) {
    case AimuxErrorCode.jsonParse:
      return JSONParseError(message, status: status, retryMs: retryMs, retryable: retryable);
    case AimuxErrorCode.invalidResponseData:
      return InvalidResponseDataError(message, status: status, retryMs: retryMs, retryable: retryable);
    case AimuxErrorCode.invalidArgument:
      return InvalidArgumentError(message, status: status, retryMs: retryMs, retryable: retryable);
    case AimuxErrorCode.invalidPrompt:
      return InvalidPromptError(message, status: status, retryMs: retryMs, retryable: retryable);
    case AimuxErrorCode.tokenExpired:
      return TokenExpiredError(
        message,
        status: status == -1 ? 401 : status,
        retryMs: retryMs,
        retryable: retryable,
      );
    case AimuxErrorCode.unsupportedFunctionality:
      return UnsupportedFunctionalityError(message, status: status, retryMs: retryMs, retryable: retryable);
    case AimuxErrorCode.noSuchModel:
      return NoSuchModelError(message, status: status, retryMs: retryMs, retryable: retryable);
    case AimuxErrorCode.noSuchProvider:
      return NoSuchProviderError(message, status: status, retryMs: retryMs, retryable: retryable);
    case AimuxErrorCode.apiCall:
      return APICallError(message, status: status, retryMs: retryMs, retryable: retryable);
    case AimuxErrorCode.retry:
      // The real decode path ([_decode]) rebuilds the attempt history via
      // the retry getters; a bare code carries only its message.
      return RetryError(
        message,
        reason: RetryErrorReason.maxRetriesExceeded,
        errors: [OtherError(message)],
      );
    case AimuxErrorCode.timeout:
      return AimuxTimeoutError(message, status: status, retryMs: retryMs, retryable: retryable);
    case AimuxErrorCode.aborted:
      return RequestAbortedError(message, status: status, retryMs: retryMs, retryable: retryable);
    case AimuxErrorCode.noSuchTool:
      return NoSuchToolError(message, status: status, retryMs: retryMs, retryable: retryable);
    case AimuxErrorCode.invalidToolInput:
      return InvalidToolInputError(message, status: status, retryMs: retryMs, retryable: retryable);
    case AimuxErrorCode.toolCallRepair:
      return ToolCallRepairError(message, status: status, retryMs: retryMs, retryable: retryable);
    case AimuxErrorCode.other:
      return OtherError(message, status: status, retryMs: retryMs, retryable: retryable);
    default:
      throw StateError('Unknown AimuxErrorCode: $code');
  }
}