Files
AgentCoord/src/stores/modules/agents.ts

123 lines
2.8 KiB
TypeScript
Raw Normal View History

import { ref } from 'vue'
import { defineStore } from 'pinia'
import { v4 as uuidv4 } from 'uuid'
import { store } from '../index'
import { useStorage } from '@vueuse/core'
import type { IExecuteRawResponse } from '@/api'
export interface Agent {
Name: string
Profile: string
Icon: string
}
type HslColorVector = [number, number, number]
export interface IRichText {
template: string;
data: Record<string, {
text: string;
style?: Record<string, string>
color?: HslColorVector
}>;
}
export interface TaskProcess {
ActionType: string
AgentName: string
Description: string
ID: string
ImportantInput: string[]
}
export interface IRawStepTask {
Id?: string
StepName?: string
TaskContent?: string
InputObject_List?: string[]
OutputObject?: string
AgentSelection?: string[]
Collaboration_Brief_FrontEnd: IRichText
TaskProcess: TaskProcess[]
}
export interface IRawPlanResponse {
'Initial Input Object'?: string[] | string
'General Goal'?: string
'Collaboration Process'?: IRawStepTask[]
}
export const useAgentsStore = defineStore('counter', () => {
const agents = useStorage<Agent[]>('agents', [])
function setAgents(agent: Agent[]) {
agents.value = agent
}
// 任务搜索的内容
const searchValue = useStorage<string>('agent-search-value', '')
function setSearchValue(value: string) {
searchValue.value = value
}
// 当前的展示的任务流程
const currentTask = ref<IRawStepTask>()
function setCurrentTask(task: IRawStepTask) {
currentTask.value = task
}
const agentRawPlan = ref<{ data?: IRawPlanResponse; loading?: boolean }>({ loading: false })
function setAgentRawPlan(plan: { data?: IRawPlanResponse; loading?: boolean }) {
if (plan.data) {
plan.data['Collaboration Process'] = plan.data['Collaboration Process']?.map(item => ({
...item,
Id: uuidv4(),
}))
}
agentRawPlan.value = {
...agentRawPlan.value,
...plan,
}
}
// 执行完任务的结果
const executePlan = ref<IExecuteRawResponse[]>([])
function setExecutePlan(plan: IExecuteRawResponse[]) {
executePlan.value = plan
}
function resetAgent() {
agentRawPlan.value = {
loading: false,
}
currentTask.value = undefined
executePlan.value = []
}
return {
agents,
setAgents,
searchValue,
setSearchValue,
currentTask,
setCurrentTask,
agentRawPlan,
setAgentRawPlan,
executePlan,
setExecutePlan,
resetAgent,
}
})
/**
* Pinia Store 使 Pinia store
* 使 Pinia Store
* https://pinia.vuejs.org/core-concepts/outside-component-usage.html#using-a-store-outside-of-a-component
*/
export function useAgentsStoreHook() {
return useAgentsStore(store)
}