Files
NotesAgentic/frontend/src/stores/skill.ts
T
saint f9efc4f4a2 feat(frontend): 搭建桌面端基础界面与 Workspace
- App Shell 壳层:主导航、次导航、Title Bar、状态栏
- Vault 入口页:最近 Vault、打开/创建 Vault、AI Core 状态
- Workspace 与文件树:浏览、打开、创建笔记/文件夹
- Design Token:浅色/深色主题 CSS Variables
- Contracts / Service / Store / Router 基础架构
- 统一 ApiClient 与 SseClient,对接后端 API 契约
2026-08-29 10:36:16 +08:00

70 lines
1.9 KiB
TypeScript

import { defineStore } from 'pinia'
import { ref, computed } from 'vue'
import type { Skill } from '@/contracts'
import { mockSkills } from '@/services/skillService'
export const useSkillStore = defineStore('skill', () => {
const skills = ref<Skill[]>(mockSkills)
const selectedSkillId = ref<string | null>(null)
const isLoading = ref(false)
const selectedSkill = computed(() =>
skills.value.find((s) => s.skill_id === selectedSkillId.value) || null
)
const enabledSkills = computed(() => skills.value.filter((s) => s.enabled))
const installedSkills = computed(() => skills.value.filter((s) => s.status !== 'error'))
const readySkills = computed(() => skills.value.filter((s) => s.status === 'ready'))
async function loadSkills() {
isLoading.value = true
try {
const { listSkills } = await import('@/services/skillService')
skills.value = await listSkills()
} finally {
isLoading.value = false
}
}
function selectSkill(skillId: string | null) {
selectedSkillId.value = skillId
}
async function enableSkill(skillId: string) {
const skill = skills.value.find((s) => s.skill_id === skillId)
if (skill) {
skill.enabled = true
skill.status = 'ready'
}
}
async function disableSkill(skillId: string) {
const skill = skills.value.find((s) => s.skill_id === skillId)
if (skill) {
skill.enabled = false
skill.status = 'disabled'
}
}
async function uninstallSkill(skillId: string) {
const idx = skills.value.findIndex((s) => s.skill_id === skillId)
if (idx > -1) skills.value.splice(idx, 1)
if (selectedSkillId.value === skillId) selectedSkillId.value = null
}
return {
skills,
selectedSkillId,
selectedSkill,
enabledSkills,
installedSkills,
readySkills,
isLoading,
loadSkills,
selectSkill,
enableSkill,
disableSkill,
uninstallSkill,
}
})