Files
FuDie0915 db73cf5a39 chore: import Local-Cursor v1.1.8 source snapshot
Includes the current working directory changes. Historical commits and release binaries are excluded to limit Gitea storage.
Source base: d7515973fbfd6dd2001fa156c483455b8081c7cb
2026-11-10 01:24:28 +08:00

70 lines
2.3 KiB
Go

// skill.go 提供 Skill 管理相关的 Wails service。
package bridge
import (
"cursor/internal/cursor"
"cursor/internal/skills"
)
// SkillProject 表示一个用户打开过的 Cursor 项目。
type SkillProject = cursor.ProjectEntry
// SkillInfo 表示一个内置 Skill。
type SkillInfo = skills.Skill
// SkillService 定义 Skill 管理相关的 Wails service。
type SkillService struct{}
// NewSkillService 创建 Skill 管理 service。
func NewSkillService() *SkillService {
return &SkillService{}
}
// ListRecentProjects 返回用户打开过的 Cursor 项目列表。
func (s *SkillService) ListRecentProjects() ([]SkillProject, error) {
logServiceCall("skills", "list_recent_projects")
projects, err := cursor.ListRecentProjects()
logServiceResult("skills", "list_recent_projects", err)
return projects, err
}
// ListSkills 返回所有内置 Skill。
func (s *SkillService) ListSkills() ([]SkillInfo, error) {
logServiceCall("skills", "list_builtin")
result := skills.List()
logServiceResult("skills", "list_builtin", nil)
return result, nil
}
// DeleteProjectRecord 从 Cursor 的项目记录中删除指定项目。
func (s *SkillService) DeleteProjectRecord(projectPath string) error {
logServiceCall("skills", "delete_project_record", "project", projectPath)
err := cursor.DeleteProjectRecord(projectPath)
logServiceResult("skills", "delete_project_record", err)
return err
}
// GetProjectSkillStates 返回指定项目内各内置 skill 的安装状态。
func (s *SkillService) GetProjectSkillStates(projectPath string) (map[string]bool, error) {
logServiceCall("skills", "get_project_states", "project", projectPath)
states := make(map[string]bool)
for _, skill := range skills.List() {
states[skill.Name] = skills.IsInstalled(projectPath, skill.Name)
}
logServiceResult("skills", "get_project_states", nil)
return states, nil
}
// SetProjectSkill 开启时将内置 skill 安装到项目,关闭时移除。
func (s *SkillService) SetProjectSkill(projectPath string, skillName string, enabled bool) error {
logServiceCall("skills", "set_project_skill", "project", projectPath, "skill", skillName, "enabled", enabled)
var err error
if enabled {
err = skills.Install(projectPath, skillName)
} else {
err = skills.Uninstall(projectPath, skillName)
}
logServiceResult("skills", "set_project_skill", err)
return err
}