Track the operation owning internal errors
This commit is contained in:
@@ -204,7 +204,7 @@ func (r *Runner) executePreparedRun(
|
||||
outputArtifact := buildOutputArtifact(genResp.Content, prepared.OutputContract.Format)
|
||||
validationResult, err := validateArtifact(ctx, &outputArtifact, 0)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("%w: %w", ErrValidation, err)
|
||||
return nil, &OperationError{Category: ErrValidation, Cause: err}
|
||||
}
|
||||
|
||||
if r.shouldAttemptRepair(prepared.OutputContract, validationResult) {
|
||||
@@ -238,7 +238,7 @@ func (r *Runner) executePreparedRun(
|
||||
|
||||
validationResult, err = validateArtifact(ctx, &outputArtifact, attemptsUsed)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("%w: %w", ErrValidation, err)
|
||||
return nil, &OperationError{Category: ErrValidation, Cause: err}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -269,10 +269,7 @@ func (r *Runner) executePreparedRun(
|
||||
}
|
||||
|
||||
func wrapGenerationError(err error) error {
|
||||
if errors.Is(err, llm.ErrInvalidRequest) {
|
||||
return fmt.Errorf("%w: %w", ErrInvalidRequest, err)
|
||||
}
|
||||
return fmt.Errorf("%w: %w", ErrLLMGenerate, err)
|
||||
return &OperationError{Category: ErrLLMGenerate, Cause: err}
|
||||
}
|
||||
|
||||
func addTokenUsage(total, next domain.TokenUsage) domain.TokenUsage {
|
||||
@@ -408,7 +405,7 @@ func (r *Runner) prepareValidation(
|
||||
}
|
||||
plan, err := preparer.PrepareValidation(ctx, contract)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("%w: %w", ErrValidation, err)
|
||||
return nil, &OperationError{Category: ErrValidation, Cause: err}
|
||||
}
|
||||
if plan == nil {
|
||||
return nil, fmt.Errorf("%w: validator returned nil prepared validation", ErrValidation)
|
||||
@@ -450,7 +447,7 @@ func (r *Runner) completePreparationWithStructuredOutput(
|
||||
for name, ref := range req.Inputs {
|
||||
art, readErr := r.artifacts.Read(ctx, ref)
|
||||
if readErr != nil {
|
||||
return nil, fmt.Errorf("%w: input %q: %w", ErrArtifactLoad, name, readErr)
|
||||
return nil, &OperationError{Category: ErrArtifactLoad, Cause: fmt.Errorf("input %q: %w", name, readErr)}
|
||||
}
|
||||
if art.Name == "" {
|
||||
art.Name = name
|
||||
@@ -467,7 +464,7 @@ func (r *Runner) completePreparationWithStructuredOutput(
|
||||
}
|
||||
renderedPrompt, err := r.renderer.Render(ctx, definitionToRender, resolvedInputs, req.Vars)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("%w: %w", ErrPromptRender, err)
|
||||
return nil, &OperationError{Category: ErrPromptRender, Cause: err}
|
||||
}
|
||||
effectivePrompt := *renderedPrompt
|
||||
if state.directSessionID != "" {
|
||||
|
||||
Reference in New Issue
Block a user