(id toolspkg.ToolID, err error)
| 4552 | } |
| 4553 | |
| 4554 | func nativeTaskToolError(id toolspkg.ToolID, err error) error { |
| 4555 | if err == nil { |
| 4556 | return nil |
| 4557 | } |
| 4558 | if _, ok := taskpkg.AutonomyReasonOf(err); ok { |
| 4559 | return nativeAutonomyToolError(id, err) |
| 4560 | } |
| 4561 | switch { |
| 4562 | case errors.Is(err, taskpkg.ErrValidation), |
| 4563 | errors.Is(err, taskpkg.ErrInvalidScopeBinding), |
| 4564 | errors.Is(err, taskpkg.ErrImmutableField), |
| 4565 | errors.Is(err, taskpkg.ErrPayloadTooLarge): |
| 4566 | return toolspkg.NewToolError( |
| 4567 | toolspkg.ErrorCodeInvalidInput, |
| 4568 | id, |
| 4569 | taskpkg.RedactClaimTokens(err.Error()), |
| 4570 | fmt.Errorf("%w: %w", toolspkg.ErrToolInvalidInput, err), |
| 4571 | toolspkg.ReasonSchemaInvalid, |
| 4572 | ) |
| 4573 | case errors.Is(err, taskpkg.ErrTaskNotFound), |
| 4574 | errors.Is(err, taskpkg.ErrTaskBlockNotFound), |
| 4575 | errors.Is(err, taskpkg.ErrTaskRunNotFound): |
| 4576 | return toolspkg.NewToolError( |
| 4577 | toolspkg.ErrorCodeNotFound, |
| 4578 | id, |
| 4579 | taskpkg.RedactClaimTokens(err.Error()), |
| 4580 | fmt.Errorf("%w: %w", toolspkg.ErrToolNotFound, err), |
| 4581 | ) |
| 4582 | case errors.Is(err, taskpkg.ErrConflict), |
| 4583 | errors.Is(err, taskpkg.ErrInvalidClaimToken), |
| 4584 | errors.Is(err, taskpkg.ErrLeaseExpired), |
| 4585 | errors.Is(err, taskpkg.ErrInvalidStatusTransition), |
| 4586 | errors.Is(err, taskpkg.ErrHallucinatedTaskRefs): |
| 4587 | return toolspkg.NewToolError( |
| 4588 | toolspkg.ErrorCodeConflict, |
| 4589 | id, |
| 4590 | taskpkg.RedactClaimTokens(err.Error()), |
| 4591 | fmt.Errorf("%w: %w", toolspkg.ErrToolConflict, err), |
| 4592 | ) |
| 4593 | case errors.Is(err, taskpkg.ErrPermissionDenied): |
| 4594 | return toolspkg.NewToolError( |
| 4595 | toolspkg.ErrorCodeDenied, |
| 4596 | id, |
| 4597 | taskpkg.RedactClaimTokens(err.Error()), |
| 4598 | fmt.Errorf("%w: %w", toolspkg.ErrToolDenied, err), |
| 4599 | toolspkg.ReasonSessionDenied, |
| 4600 | ) |
| 4601 | default: |
| 4602 | return toolspkg.NewToolError( |
| 4603 | toolspkg.ErrorCodeBackendFailed, |
| 4604 | id, |
| 4605 | taskpkg.RedactClaimTokens(err.Error()), |
| 4606 | fmt.Errorf("%w: %w", toolspkg.ErrToolBackendFailed, err), |
| 4607 | toolspkg.ReasonBackendUnhealthy, |
| 4608 | ) |
| 4609 | } |
| 4610 | } |
| 4611 |
no test coverage detected