protected handleError()

in packages/core/src/amazonqDoc/session/sessionState.ts [58:118]


    protected handleError(messenger: DocMessenger, codegenResult: any): Error {
        // eslint-disable-next-line unicorn/no-null
        messenger.sendUpdatePromptProgress(this.tabID, null)

        switch (true) {
            case codegenResult.codeGenerationStatusDetail?.includes('README_TOO_LARGE'): {
                return new ReadmeTooLargeError()
            }
            case codegenResult.codeGenerationStatusDetail?.includes('README_UPDATE_TOO_LARGE'): {
                return new ReadmeUpdateTooLargeError(codegenResult.codeGenerationRemainingIterationCount || 0)
            }
            case codegenResult.codeGenerationStatusDetail?.includes('WORKSPACE_TOO_LARGE'): {
                return new ContentLengthError()
            }
            case codegenResult.codeGenerationStatusDetail?.includes('WORKSPACE_EMPTY'): {
                return new WorkspaceEmptyError()
            }
            case codegenResult.codeGenerationStatusDetail?.includes('PROMPT_UNRELATED'): {
                return new PromptUnrelatedError(codegenResult.codeGenerationRemainingIterationCount || 0)
            }
            case codegenResult.codeGenerationStatusDetail?.includes('PROMPT_TOO_VAGUE'): {
                return new PromptTooVagueError(codegenResult.codeGenerationRemainingIterationCount || 0)
            }
            case codegenResult.codeGenerationStatusDetail?.includes('PROMPT_REFUSAL'): {
                return new PromptRefusalException(codegenResult.codeGenerationRemainingIterationCount || 0)
            }
            case codegenResult.codeGenerationStatusDetail?.includes('Guardrails'): {
                return new ApiClientError(
                    i18n('AWS.amazonq.doc.error.docGen.default'),
                    'GetTaskAssistCodeGeneration',
                    'GuardrailsException',
                    400
                )
            }
            case codegenResult.codeGenerationStatusDetail?.includes('EmptyPatch'): {
                if (codegenResult.codeGenerationStatusDetail?.includes('NO_CHANGE_REQUIRED')) {
                    return new NoChangeRequiredException()
                }

                return new LlmError(i18n('AWS.amazonq.doc.error.docGen.default'), {
                    code: 'EmptyPatchException',
                })
            }
            case codegenResult.codeGenerationStatusDetail?.includes('Throttling'): {
                return new ApiClientError(
                    i18n('AWS.amazonq.featureDev.error.throttling'),
                    'GetTaskAssistCodeGeneration',
                    'ThrottlingException',
                    429
                )
            }
            default: {
                return new ApiServiceError(
                    i18n('AWS.amazonq.doc.error.docGen.default'),
                    'GetTaskAssistCodeGeneration',
                    'UnknownException',
                    500
                )
            }
        }
    }