Includes the current working directory changes. Historical commits and release binaries are excluded to limit Gitea storage. Source base: d7515973fbfd6dd2001fa156c483455b8081c7cb
70 lines
2.3 KiB
Go
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
|
|
}
|