package newagenttools

import "strings"

var activeOptimizeAllowedTools = map[string]struct{}{
	ToolNameContextToolsAdd:    {},
	ToolNameContextToolsRemove: {},
	"analyze_health":           {},
	"move":                     {},
	"swap":                     {},
}

// IsToolAllowedInActiveOptimize 判定工具是否允许出现在“粗排后主动优化专用模式”里。
//
// 职责边界：
// 1. 这里只做场景级白名单裁剪，不参与工具是否已注册、是否被临时禁用、是否需要 confirm 的判断；
// 2. 该白名单只服务于“首次粗排后自动微调”链路，避免 LLM 在主动优化时重新暴露大量读工具；
// 3. context_tools_add/remove 仍保留，是为了兼容系统级动态区协议，但不代表会重新放开其它业务工具。
func IsToolAllowedInActiveOptimize(name string) bool {
	_, ok := activeOptimizeAllowedTools[strings.TrimSpace(name)]
	return ok
}

// FilterSchemasForActiveOptimize 过滤出主动优化专用模式允许暴露给 LLM 的工具 schema。
func FilterSchemasForActiveOptimize(schemas []ToolSchemaEntry) []ToolSchemaEntry {
	if len(schemas) == 0 {
		return nil
	}
	filtered := make([]ToolSchemaEntry, 0, len(schemas))
	for _, item := range schemas {
		if !IsToolAllowedInActiveOptimize(item.Name) {
			continue
		}
		filtered = append(filtered, item)
	}
	return filtered
}
