70 lines
2.2 KiB
Go
70 lines
2.2 KiB
Go
package mediagen
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
|
|
"git.threesix.ai/jordan/persona-community-1/pkg/routing"
|
|
)
|
|
|
|
// Domain errors for programmatic error handling with errors.Is().
|
|
//
|
|
// IMPORTANT: Core routing errors (ErrRateLimit, ErrQuotaExceeded, ErrServerUnavailable)
|
|
// are defined in pkg/routing. Provider implementations should wrap those errors.
|
|
var (
|
|
// ErrInvalidConfig indicates invalid configuration.
|
|
ErrInvalidConfig = errors.New("invalid configuration")
|
|
|
|
// ErrInvalidRequest indicates invalid request parameters.
|
|
ErrInvalidRequest = errors.New("invalid request")
|
|
|
|
// ErrNoProvidersConfigured indicates no providers were configured.
|
|
ErrNoProvidersConfigured = errors.New("no providers configured")
|
|
|
|
// ErrAllProvidersFailed indicates all providers failed (fallback strategy).
|
|
// This is an alias for routing.ErrAllProvidersFailed.
|
|
ErrAllProvidersFailed = routing.ErrAllProvidersFailed
|
|
|
|
// ErrProviderUnavailable indicates a provider is unavailable.
|
|
ErrProviderUnavailable = errors.New("provider unavailable")
|
|
|
|
// ErrRateLimit indicates provider returned a rate limit (429) error.
|
|
// Re-exported from routing for convenience.
|
|
ErrRateLimit = routing.ErrRateLimit
|
|
|
|
// ErrQuotaExceeded indicates provider's quota has been exhausted.
|
|
// Re-exported from routing for convenience.
|
|
ErrQuotaExceeded = routing.ErrQuotaExceeded
|
|
|
|
// ErrServerUnavailable indicates a transient server error (5xx).
|
|
// Re-exported from routing for convenience.
|
|
ErrServerUnavailable = routing.ErrServerUnavailable
|
|
)
|
|
|
|
// ProviderLaoZhang is the provider name for LaoZhang (pay-per-use, never rate limited).
|
|
const ProviderLaoZhang = "laozhang"
|
|
|
|
// ProviderError wraps provider-specific errors with additional context.
|
|
type ProviderError struct {
|
|
Provider string // Provider name
|
|
Op string // Operation ("GenerateImage", "GenerateVideo", "Health")
|
|
Err error // Underlying error
|
|
}
|
|
|
|
func (e *ProviderError) Error() string {
|
|
return fmt.Sprintf("%s: %s: %v", e.Provider, e.Op, e.Err)
|
|
}
|
|
|
|
func (e *ProviderError) Unwrap() error {
|
|
return e.Err
|
|
}
|
|
|
|
// NewProviderError creates a new ProviderError.
|
|
func NewProviderError(provider, op string, err error) error {
|
|
return &ProviderError{
|
|
Provider: provider,
|
|
Op: op,
|
|
Err: err,
|
|
}
|
|
}
|