Code review comment: @IMS94 I didn't get any issues when testing this in a project, anyway will have a look. `endsWith()` is a string matching and has some more weird behaviors such as matching with other module's file with the same name(diag location.filePath() contains the relative path only).

Code under review:
public static List<CodeAction> getAvailableCodeActions(CodeActionContext ctx) {
        LSClientLogger clientLogger = LSClientLogger.getInstance(ctx.languageServercontext());
        List<CodeAction> codeActions = new ArrayList<>();
        CodeActionProvidersHolder codeActionProvidersHolder
                = CodeActionProvidersHolder.getInstance(ctx.languageServercontext());

        
        SyntaxTree syntaxTree = ctx.workspace().syntaxTree(ctx.filePath()).orElseThrow();
        Optional<NonTerminalNode> matchedNode = CodeActionUtil.getTopLevelNode(ctx.cursorPosition(), syntaxTree);
        CodeActionNodeType matchedNodeType = CodeActionUtil.codeActionNodeType(matchedNode.orElse(null));
        SemanticModel semanticModel = ctx.workspace().semanticModel(ctx.filePath()).orElseThrow();
        if (matchedNode.isPresent() && matchedNodeType != CodeActionNodeType.NONE) {
            Range range = CommonUtil.toRange(matchedNode.get().lineRange());
            Node expressionNode = CodeActionUtil.largestExpressionNode(matchedNode.get(), range);
            TypeSymbol matchedTypeSymbol = semanticModel.type(expressionNode.lineRange()).orElse(null);

            PositionDetails posDetails = CodeActionPositionDetails.from(matchedNode.get(), null, matchedTypeSymbol);
            ctx.setPositionDetails(posDetails);
            codeActionProvidersHolder.getActiveNodeBasedProviders(matchedNodeType, ctx).forEach(provider -> {
                try {
                    List<CodeAction> codeActionsOut = provider.getNodeBasedCodeActions(ctx);
                    if (codeActionsOut != null) {
                        codeActions.addAll(codeActionsOut);
                    }
                } catch (Exception e) {
                    String msg = "CodeAction '" + provider.getClass().getSimpleName() + "' failed!";
                    clientLogger.logError(msg, e, null, (Position) null);
                }
            });
        }
        Project project = ctx.workspace().project(ctx.filePath()).orElseThrow();
        Path projectRoot = (project.kind() == ProjectKind.SINGLE_FILE_PROJECT)
                ? project.sourceRoot().getParent() :
                project.sourceRoot();
        
        ctx.allDiagnostics().stream().
                filter(diag -> projectRoot.resolve(diag.location().lineRange().filePath()).equals(ctx.filePath()) &&
                        CommonUtil.isWithinRange(ctx.cursorPosition(), CommonUtil.toRange(diag.location().lineRange()))
                )
                .forEach(diagnostic -> {
                    Range range = CommonUtil.toRange(diagnostic.location().lineRange());
                    PositionDetails positionDetails = computePositionDetails(range, syntaxTree, ctx);
                    ctx.setPositionDetails(positionDetails);
                    codeActionProvidersHolder.getActiveDiagnosticsBasedProviders(ctx).forEach(provider -> {
                        try {
                            List<CodeAction> codeActionsOut = provider.getDiagBasedCodeActions(diagnostic, ctx);
                            if (codeActionsOut != null) {
                                codeActions.addAll(codeActionsOut);
                            }
                        } catch (Exception e) {
                            String msg = "CodeAction '" + provider.getClass().getSimpleName() + "' failed!";
                            clientLogger.logError(msg, e, null, (Position) null);
                        }
                    });
                });
        return codeActions;
    }

Line commented on: CommonUtil.isWithinRange(ctx.cursorPosition(), CommonUtil.toRange(diag.location().lineRange()))

Revised code:
public static List<CodeAction> getAvailableCodeActions(CodeActionContext ctx) {
        LSClientLogger clientLogger = LSClientLogger.getInstance(ctx.languageServercontext());
        List<CodeAction> codeActions = new ArrayList<>();
        CodeActionProvidersHolder codeActionProvidersHolder
                = CodeActionProvidersHolder.getInstance(ctx.languageServercontext());

        
        SyntaxTree syntaxTree = ctx.workspace().syntaxTree(ctx.filePath()).orElseThrow();
        Optional<NonTerminalNode> matchedNode = CodeActionUtil.getTopLevelNode(ctx.cursorPosition(), syntaxTree);
        CodeActionNodeType matchedNodeType = CodeActionUtil.codeActionNodeType(matchedNode.orElse(null));
        SemanticModel semanticModel = ctx.workspace().semanticModel(ctx.filePath()).orElseThrow();
        if (matchedNode.isPresent() && matchedNodeType != CodeActionNodeType.NONE) {
            Range range = CommonUtil.toRange(matchedNode.get().lineRange());
            Node expressionNode = CodeActionUtil.largestExpressionNode(matchedNode.get(), range);
            TypeSymbol matchedTypeSymbol = semanticModel.type(expressionNode.lineRange()).orElse(null);

            PositionDetails posDetails = CodeActionPositionDetails.from(matchedNode.get(), null, matchedTypeSymbol);
            ctx.setPositionDetails(posDetails);
            codeActionProvidersHolder.getActiveNodeBasedProviders(matchedNodeType, ctx).forEach(provider -> {
                try {
                    List<CodeAction> codeActionsOut = provider.getNodeBasedCodeActions(ctx);
                    if (codeActionsOut != null) {
                        codeActions.addAll(codeActionsOut);
                    }
                } catch (Exception e) {
                    String msg = "CodeAction '" + provider.getClass().getSimpleName() + "' failed!";
                    clientLogger.logError(msg, e, null, (Position) null);
                }
            });
        }
        Project project = ctx.workspace().project(ctx.filePath()).orElseThrow();
        Path projectRoot = (project.kind() == ProjectKind.SINGLE_FILE_PROJECT)
                ? project.sourceRoot().getParent() :
                project.sourceRoot();
        
        ctx.allDiagnostics().stream().
                filter(diag -> projectRoot.resolve(diag.location().lineRange().filePath()).equals(ctx.filePath()) &&
                        CommonUtil.isWithinRange(ctx.cursorPosition(), CommonUtil.toRange(diag.location().lineRange()))
                )
                .forEach(diagnostic -> {
                    Range range = CommonUtil.toRange(diagnostic.location().lineRange());
                    PositionDetails positionDetails = computePositionDetails(range, syntaxTree, ctx);
                    ctx.setPositionDetails(positionDetails);
                    codeActionProvidersHolder.getActiveDiagnosticsBasedProviders(ctx).forEach(provider -> {
                        try {
                            List<CodeAction> codeActionsOut = provider.getDiagBasedCodeActions(diagnostic, ctx);
                            if (codeActionsOut != null) {
                                codeActions.addAll(codeActionsOut);
                            }
                        } catch (Exception e) {
                            String msg = "CodeAction '" + provider.getClass().getSimpleName() + "' failed!";
                            clientLogger.logError(msg, e, null, (Position) null);
                        }
                    });
                });
        return codeActions;
    }