dify/web/features/agent-v2/agent-composer/store-modules/skills.ts
Stephen Zhou a84c2d36a3
style: format with vp fmt (#38803)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-07-12 15:57:46 +00:00

36 lines
1.2 KiB
TypeScript

import type { AgentSkill } from '../form-state'
import type { DraftFieldUpdate } from './utils'
import { atom } from 'jotai'
import { syncSkillReferenceLabels } from '../reference-labels'
import { agentComposerDraftAtom } from '../store'
import { resolveDraftFieldUpdate } from './utils'
export const agentComposerSkillsAtom = atom<AgentSkill[], [DraftFieldUpdate<AgentSkill[]>], void>(
(get) => get(agentComposerDraftAtom).skills,
(get, set, skillsUpdate: DraftFieldUpdate<AgentSkill[]>) => {
const draft = get(agentComposerDraftAtom)
const skills = resolveDraftFieldUpdate(draft.skills, skillsUpdate)
set(agentComposerDraftAtom, {
...draft,
prompt: syncSkillReferenceLabels({
prompt: draft.prompt,
currentSkills: draft.skills,
nextSkills: skills,
}),
skills,
})
},
)
export const upsertAgentSkillAtom = atom(null, (_get, set, skill: AgentSkill) => {
set(agentComposerSkillsAtom, (skills) => [
...skills.filter((item) => item.id !== skill.id),
skill,
])
})
export const removeAgentSkillAtom = atom(null, (_get, set, skillId: string) => {
set(agentComposerSkillsAtom, (skills) => skills.filter((item) => item.id !== skillId))
})