summaryrefslogtreecommitdiff
path: root/makima/frontend/src/hooks
diff options
context:
space:
mode:
Diffstat (limited to 'makima/frontend/src/hooks')
-rw-r--r--makima/frontend/src/hooks/useDirectiveMemories.ts86
1 files changed, 0 insertions, 86 deletions
diff --git a/makima/frontend/src/hooks/useDirectiveMemories.ts b/makima/frontend/src/hooks/useDirectiveMemories.ts
deleted file mode 100644
index b2a87d0..0000000
--- a/makima/frontend/src/hooks/useDirectiveMemories.ts
+++ /dev/null
@@ -1,86 +0,0 @@
-import { useState, useEffect, useCallback } from "react";
-import {
- type DirectiveMemory,
- type MemoryCategory,
- type CreateDirectiveMemoryRequest,
- listDirectiveMemories,
- createDirectiveMemory,
- deleteDirectiveMemory,
-} from "../lib/api";
-
-export function useDirectiveMemories(directiveId: string | undefined) {
- const [memories, setMemories] = useState<DirectiveMemory[]>([]);
- const [loading, setLoading] = useState(false);
- const [error, setError] = useState<string | null>(null);
-
- const refreshMemories = useCallback(async () => {
- if (!directiveId) return;
- try {
- setLoading(true);
- setError(null);
- const response = await listDirectiveMemories(directiveId);
- setMemories(response.memories);
- } catch (e) {
- setError(e instanceof Error ? e.message : "Failed to load memories");
- } finally {
- setLoading(false);
- }
- }, [directiveId]);
-
- useEffect(() => {
- refreshMemories();
- }, [refreshMemories]);
-
- const add = useCallback(async (req: CreateDirectiveMemoryRequest) => {
- if (!directiveId) return;
- try {
- setError(null);
- await createDirectiveMemory(directiveId, req);
- await refreshMemories();
- } catch (e) {
- setError(e instanceof Error ? e.message : "Failed to add memory");
- }
- }, [directiveId, refreshMemories]);
-
- const remove = useCallback(async (memoryId: string) => {
- if (!directiveId) return;
- try {
- setError(null);
- await deleteDirectiveMemory(directiveId, memoryId);
- await refreshMemories();
- } catch (e) {
- setError(e instanceof Error ? e.message : "Failed to delete memory");
- }
- }, [directiveId, refreshMemories]);
-
- const clearAll = useCallback(async () => {
- if (!directiveId) return;
- try {
- setError(null);
- await Promise.all(memories.map((m) => deleteDirectiveMemory(directiveId, m.id)));
- setMemories([]);
- } catch (e) {
- setError(e instanceof Error ? e.message : "Failed to clear memories");
- }
- }, [directiveId, memories]);
-
- /** Group entries by category */
- const grouped = memories.reduce<Record<MemoryCategory, DirectiveMemory[]>>(
- (acc, entry) => {
- acc[entry.category].push(entry);
- return acc;
- },
- { decision: [], context: [], preference: [], learning: [], issue: [], progress: [], other: [] },
- );
-
- return {
- memories,
- grouped,
- loading,
- error,
- refresh: refreshMemories,
- add,
- remove,
- clearAll,
- };
-}