61 lines
1.7 KiB
Go
61 lines
1.7 KiB
Go
package promptkit
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
|
|
"gitea.maximumdirect.net/eric/promptkit/internal/profile"
|
|
"gitea.maximumdirect.net/eric/promptkit/internal/promptdef"
|
|
"gitea.maximumdirect.net/eric/promptkit/internal/usecase"
|
|
)
|
|
|
|
func mapPublicError(err error) error {
|
|
if err == nil {
|
|
return nil
|
|
}
|
|
publicErr := publicErrorFor(err)
|
|
if publicErr == nil {
|
|
return err
|
|
}
|
|
return fmt.Errorf("%w: %w", publicErr, err)
|
|
}
|
|
|
|
func publicErrorFor(err error) error {
|
|
switch {
|
|
case errors.Is(err, promptdef.ErrPromptDefinitionNotFound):
|
|
return ErrPromptNotFound
|
|
case errors.Is(err, profile.ErrProfileNotFound):
|
|
return ErrProfileNotFound
|
|
case errors.Is(err, usecase.ErrProfileRequired):
|
|
return errors.Join(ErrInvalidRequest, ErrProfileRequired)
|
|
case errors.Is(err, usecase.ErrPromptLoad):
|
|
return ErrPromptLoad
|
|
case errors.Is(err, usecase.ErrProfileLoad):
|
|
return ErrProfileLoad
|
|
case errors.Is(err, promptdef.ErrInvalidYAML), errors.Is(err, promptdef.ErrInvalidPromptDefinition):
|
|
return ErrPromptLoad
|
|
case isProfileLoadCause(err):
|
|
return ErrProfileLoad
|
|
case errors.Is(err, usecase.ErrAPIKeyEnvMissing):
|
|
return errors.Join(ErrInvalidRequest, ErrAPIKeyEnvMissing)
|
|
case errors.Is(err, usecase.ErrArtifactLoad):
|
|
return ErrArtifactLoad
|
|
case errors.Is(err, usecase.ErrPromptRender):
|
|
return ErrPromptRender
|
|
case errors.Is(err, usecase.ErrLLMGenerate):
|
|
return ErrLLMGenerate
|
|
case errors.Is(err, usecase.ErrValidation):
|
|
return ErrValidation
|
|
case errors.Is(err, usecase.ErrInvalidRequest):
|
|
return ErrInvalidRequest
|
|
default:
|
|
return nil
|
|
}
|
|
}
|
|
|
|
func isProfileLoadCause(err error) bool {
|
|
return errors.Is(err, profile.ErrInvalidYAML) ||
|
|
errors.Is(err, profile.ErrInvalidProfile) ||
|
|
errors.Is(err, profile.ErrRawAPIKeyNotAllowed)
|
|
}
|