dify/web/features/agent-v2/agent-composer/store-modules/knowledge.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

52 lines
1.7 KiB
TypeScript

import type { AgentKnowledgeRetrievalItem } from '../form-state'
import type { DraftFieldUpdate } from './utils'
import { atom } from 'jotai'
import { syncKnowledgeReferenceLabels } from '../reference-labels'
import { agentComposerDraftAtom } from '../store'
import { resolveDraftFieldUpdate } from './utils'
export const agentComposerKnowledgeRetrievalsAtom = atom(
(get) => get(agentComposerDraftAtom).knowledgeRetrievals,
(get, set, knowledgeRetrievalsUpdate: DraftFieldUpdate<AgentKnowledgeRetrievalItem[]>) => {
const draft = get(agentComposerDraftAtom)
const knowledgeRetrievals = resolveDraftFieldUpdate(
draft.knowledgeRetrievals,
knowledgeRetrievalsUpdate,
)
set(agentComposerDraftAtom, {
...draft,
prompt: syncKnowledgeReferenceLabels({
prompt: draft.prompt,
currentRetrievals: draft.knowledgeRetrievals,
nextRetrievals: knowledgeRetrievals,
}),
knowledgeRetrievals,
})
},
)
export const addKnowledgeRetrievalAtom = atom(
null,
(_get, set, retrieval: AgentKnowledgeRetrievalItem) => {
set(agentComposerKnowledgeRetrievalsAtom, (retrievals) => [...retrievals, retrieval])
},
)
export const updateKnowledgeRetrievalAtom = atom(
null,
(_get, set, retrieval: AgentKnowledgeRetrievalItem) => {
set(agentComposerKnowledgeRetrievalsAtom, (retrievals) =>
retrievals.map((currentRetrieval) =>
currentRetrieval.id === retrieval.id ? retrieval : currentRetrieval,
),
)
},
)
export const removeKnowledgeRetrievalAtom = atom(null, (_get, set, retrievalId: string) => {
set(agentComposerKnowledgeRetrievalsAtom, (retrievals) =>
retrievals.filter((retrieval) => retrieval.id !== retrievalId),
)
})