// Copyright (c) 2024-2026 Tencent Zhuque Lab. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// Requirement: Any integration or derivative work must explicitly attribute
// Tencent Zhuque Lab (https://github.com/Tencent/AI-Infra-Guard) in its
// documentation or user interface, as detailed in the NOTICE file.

package websocket

import (
	"github.com/Tencent/AI-Infra-Guard/common/utils"
	"github.com/Tencent/AI-Infra-Guard/internal/mcp"
	"github.com/gin-gonic/gin"
)

func GetMcpPluginList(c *gin.Context) {
	scanner := mcp.NewScanner(nil, nil)
	names, err := scanner.GetAllPluginNames()
	ret := make([]string, 0)
	notInclude := []string{"code_info_collection", "mcp_info_collection", "vuln_review"}
	for _, name := range names {
		if utils.StrInSlice(name, notInclude) {
			continue
		}
		ret = append(ret, name)
	}
	if err != nil {
		c.JSON(500, gin.H{
			"code": 1,
			"msg":  err.Error(),
			"data": nil,
		})
		return
	}
	c.JSON(200, gin.H{
		"code": 0,
		"msg":  "",
		"data": ret,
	})
}
