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
This commit is contained in:
69
internal/bridge/skill.go
Normal file
69
internal/bridge/skill.go
Normal file
@@ -0,0 +1,69 @@
|
||||
// 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
|
||||
}
|
||||
Reference in New Issue
Block a user