updated orchestion to handle updating and deleting sessions
This commit is contained in:
@@ -143,3 +143,20 @@ export async function fetchModels() {
|
|||||||
if(!res.ok) throw new Error(`Failted to fetch models: ${res.status}`);
|
if(!res.ok) throw new Error(`Failted to fetch models: ${res.status}`);
|
||||||
return res.json();
|
return res.json();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function renameSession(sessionId, name) {
|
||||||
|
const res = await fetch(`${BASE_URL}/sessions/${sessionId}`, {
|
||||||
|
method: 'PATCH',
|
||||||
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
body: JSON.stringify({ name }),
|
||||||
|
});
|
||||||
|
if (!res.ok) throw new Error(`Failed to rename session: ${res.status}`);
|
||||||
|
return res.json();
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function deleteSession(sessionId) {
|
||||||
|
const res = await fetch(`${BASE_URL}/sessions/${sessionId}`, {
|
||||||
|
method: 'DELETE',
|
||||||
|
});
|
||||||
|
if (!res.ok) throw new Error(`Failed to delete session: ${res.status}`);
|
||||||
|
}
|
||||||
22
packages/chat-client/src/hooks/useContextMenu.js
Normal file
22
packages/chat-client/src/hooks/useContextMenu.js
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
import { useState, useEffect, useCallback } from 'react';
|
||||||
|
|
||||||
|
export function useContextMenu() {
|
||||||
|
const [menu, setMenu] = useState(null); // { x, y, session }
|
||||||
|
|
||||||
|
const open = useCallback((e, session) => {
|
||||||
|
e.preventDefault();
|
||||||
|
setMenu({ x: e.clientX, y: e.clientY, session });
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const close = useCallback(() => setMenu(null), []);
|
||||||
|
|
||||||
|
// Close on any click outside
|
||||||
|
useEffect(() => {
|
||||||
|
if (!menu) return;
|
||||||
|
const handler = () => close();
|
||||||
|
window.addEventListener('click', handler);
|
||||||
|
return () => window.removeEventListener('click', handler);
|
||||||
|
}, [menu, close]);
|
||||||
|
|
||||||
|
return { menu, open, close };
|
||||||
|
}
|
||||||
@@ -29,4 +29,25 @@ router.get('/', async (req, res) => {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
router.patch('/:sessionId', async (req, res) => {
|
||||||
|
const { name } = req.body;
|
||||||
|
if (!name?.trim()) return res.status(400).json({ error: 'name is required' });
|
||||||
|
|
||||||
|
try {
|
||||||
|
const session = await memory.updateSession(req.params.sessionId, { name: name.trim() });
|
||||||
|
res.json(session);
|
||||||
|
} catch (err) {
|
||||||
|
res.status(500).json({ error: err.message });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
router.delete('/:sessionId', async (req, res) => {
|
||||||
|
try {
|
||||||
|
await memory.deleteSession(req.params.sessionId);
|
||||||
|
res.status(204).send();
|
||||||
|
} catch (err) {
|
||||||
|
res.status(500).json({ error: err.message });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
module.exports = router;
|
module.exports = router;
|
||||||
@@ -63,6 +63,23 @@ async function getSessions(limit = EPISODIC.DEFAULT_SESSIONS_LIMIT, offset = EPI
|
|||||||
return res.json();
|
return res.json();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function updateSession(externalId, { name }) {
|
||||||
|
const res = await fetch(`${BASE_URL}/sessions/by-external/${externalId}`, {
|
||||||
|
method: 'PATCH',
|
||||||
|
headers: { 'Content-Type': 'application/json' },
|
||||||
|
body: JSON.stringify({ name }),
|
||||||
|
});
|
||||||
|
if (!res.ok) throw new Error(`Failed to update session: ${res.status}`);
|
||||||
|
return res.json();
|
||||||
|
}
|
||||||
|
|
||||||
|
async function deleteSession(externalId) {
|
||||||
|
const res = await fetch(`${BASE_URL}/sessions/by-external/${externalId}`, {
|
||||||
|
method: 'DELETE',
|
||||||
|
});
|
||||||
|
if (!res.ok) throw new Error(`Failed to delete session: ${res.status}`);
|
||||||
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
getSessionByExternalId,
|
getSessionByExternalId,
|
||||||
createSession,
|
createSession,
|
||||||
@@ -70,5 +87,7 @@ module.exports = {
|
|||||||
createEpisode,
|
createEpisode,
|
||||||
getEpisodeById,
|
getEpisodeById,
|
||||||
getSessionHistory,
|
getSessionHistory,
|
||||||
getSessions
|
getSessions,
|
||||||
|
updateSession,
|
||||||
|
deleteSession,
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user