rag / frontend /src /models /agentFlows.js
gaojintao01
Add files using Git LFS
f8b5d42
import { API_BASE } from "@/utils/constants";
import { baseHeaders } from "@/utils/request";
const AgentFlows = {
/**
* Save a flow configuration
* @param {string} name - Display name of the flow
* @param {object} config - The configuration object for the flow
* @param {string} [uuid] - Optional UUID for updating existing flow
* @returns {Promise<{success: boolean, error: string | null, flow: {name: string, config: object, uuid: string} | null}>}
*/
saveFlow: async (name, config, uuid = null) => {
return await fetch(`${API_BASE}/agent-flows/save`, {
method: "POST",
headers: {
...baseHeaders(),
"Content-Type": "application/json",
},
body: JSON.stringify({ name, config, uuid }),
})
.then((res) => {
if (!res.ok) throw new Error(res.error || "Failed to save flow");
return res;
})
.then((res) => res.json())
.catch((e) => ({
success: false,
error: e.message,
flow: null,
}));
},
/**
* List all available flows in the system
* @returns {Promise<{success: boolean, error: string | null, flows: Array<{name: string, uuid: string, description: string, steps: Array}>}>}
*/
listFlows: async () => {
return await fetch(`${API_BASE}/agent-flows/list`, {
method: "GET",
headers: baseHeaders(),
})
.then((res) => res.json())
.catch((e) => ({
success: false,
error: e.message,
flows: [],
}));
},
/**
* Get a specific flow by UUID
* @param {string} uuid - The UUID of the flow to retrieve
* @returns {Promise<{success: boolean, error: string | null, flow: {name: string, config: object, uuid: string} | null}>}
*/
getFlow: async (uuid) => {
return await fetch(`${API_BASE}/agent-flows/${uuid}`, {
method: "GET",
headers: baseHeaders(),
})
.then((res) => {
if (!res.ok) throw new Error(response.error || "Failed to get flow");
return res;
})
.then((res) => res.json())
.catch((e) => ({
success: false,
error: e.message,
flow: null,
}));
},
/**
* Execute a specific flow
* @param {string} uuid - The UUID of the flow to run
* @param {object} variables - Optional variables to pass to the flow
* @returns {Promise<{success: boolean, error: string | null, results: object | null}>}
*/
// runFlow: async (uuid, variables = {}) => {
// return await fetch(`${API_BASE}/agent-flows/${uuid}/run`, {
// method: "POST",
// headers: {
// ...baseHeaders(),
// "Content-Type": "application/json",
// },
// body: JSON.stringify({ variables }),
// })
// .then((res) => {
// if (!res.ok) throw new Error(response.error || "Failed to run flow");
// return res;
// })
// .then((res) => res.json())
// .catch((e) => ({
// success: false,
// error: e.message,
// results: null,
// }));
// },
/**
* Delete a specific flow
* @param {string} uuid - The UUID of the flow to delete
* @returns {Promise<{success: boolean, error: string | null}>}
*/
deleteFlow: async (uuid) => {
return await fetch(`${API_BASE}/agent-flows/${uuid}`, {
method: "DELETE",
headers: baseHeaders(),
})
.then((res) => {
if (!res.ok) throw new Error(response.error || "Failed to delete flow");
return res;
})
.then((res) => res.json())
.catch((e) => ({
success: false,
error: e.message,
}));
},
/**
* Toggle a flow's active status
* @param {string} uuid - The UUID of the flow to toggle
* @param {boolean} active - The new active status
* @returns {Promise<{success: boolean, error: string | null}>}
*/
toggleFlow: async (uuid, active) => {
try {
const result = await fetch(`${API_BASE}/agent-flows/${uuid}/toggle`, {
method: "POST",
headers: {
...baseHeaders(),
"Content-Type": "application/json",
},
body: JSON.stringify({ active }),
})
.then((res) => {
if (!res.ok) throw new Error(res.error || "Failed to toggle flow");
return res;
})
.then((res) => res.json());
return { success: true, flow: result.flow };
} catch (error) {
console.error("Failed to toggle flow:", error);
return { success: false, error: error.message };
}
},
};
export default AgentFlows;