package command

// Builtins returns the specs of all built-in commands. Pure.
func Builtins() []Spec {
	return []Spec{
		{
			Name:        "help",
			Aliases:     []string{"h"},
			Description: "Lista comandos disponibles",
			Usage:       "!help",
		},
		{
			Name:        "tools",
			Description: "Lista tools registradas con descripcion",
			Usage:       "!tools",
		},
		{
			Name:        "tool",
			Description: "Ejecutar una tool directamente",
			Usage:       "!tool <nombre> [key=value ...]",
		},
		{
			Name:        "ping",
			Description: "Alive check",
			Usage:       "!ping",
		},
		{
			Name:        "status",
			Description: "Info del agente: uptime, rooms activos",
			Usage:       "!status",
		},
		{
			Name:        "info",
			Description: "Nombre, version y descripcion del agente",
			Usage:       "!info",
		},
		{
			Name:        "clear",
			Description: "Limpia ventana de conversacion del room actual",
			Usage:       "!clear",
		},
		{
			Name:        "prompts",
			Description: "Lista prompt-commands disponibles (archivos .md en prompts/)",
			Usage:       "!prompts",
		},
		{
			Name:        "version",
			Aliases:     []string{"v"},
			Description: "Version del agente",
			Usage:       "!version",
		},
	}
}

// BuiltinNames returns just the command names (including aliases) for lookup. Pure.
func BuiltinNames() map[string]string {
	m := make(map[string]string)
	for _, spec := range Builtins() {
		m[spec.Name] = spec.Name
		for _, alias := range spec.Aliases {
			m[alias] = spec.Name
		}
	}
	return m
}
