mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-07-01 01:19:38 +02:00
Unit tests: Consumer class (7), recursive-splitter (10), parseJsonResponse (11) — 28 total. Docker: add 5 commented LLM provider services, dev compose override, .env.example. Workbench: chat persistence, error boundary, disconnect banner, prompts error handling. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
54 lines
1.8 KiB
TypeScript
54 lines
1.8 KiB
TypeScript
import { useCallback, useEffect, useState } from "react";
|
|
import { useSocket } from "@/providers/socket-provider";
|
|
import { useConnectionState } from "@/providers/socket-provider";
|
|
|
|
export function usePrompts() {
|
|
const socket = useSocket();
|
|
const connectionState = useConnectionState();
|
|
const [prompts, setPrompts] = useState<Array<{ id: string; name?: string; description?: string }>>([]);
|
|
const [systemPrompt, setSystemPrompt] = useState<string>("");
|
|
const [loading, setLoading] = useState(false);
|
|
const [error, setError] = useState<string | null>(null);
|
|
|
|
const loadPrompts = useCallback(async () => {
|
|
try {
|
|
setLoading(true);
|
|
setError(null);
|
|
const list = await socket.config().getPrompts();
|
|
setPrompts(Array.isArray(list) ? list : []);
|
|
} catch (err) {
|
|
const msg = err instanceof Error ? err.message : String(err);
|
|
setError(msg);
|
|
console.error("Failed to load prompts:", err);
|
|
} finally {
|
|
setLoading(false);
|
|
}
|
|
}, [socket]);
|
|
|
|
const loadSystemPrompt = useCallback(async () => {
|
|
try {
|
|
const sp = await socket.config().getSystemPrompt();
|
|
setSystemPrompt(typeof sp === "string" ? sp : JSON.stringify(sp, null, 2));
|
|
} catch (err) {
|
|
console.error("Failed to load system prompt:", err);
|
|
}
|
|
}, [socket]);
|
|
|
|
const getPrompt = useCallback(async (id: string) => {
|
|
return socket.config().getPrompt(id);
|
|
}, [socket]);
|
|
|
|
// Auto-load when connected
|
|
useEffect(() => {
|
|
const connected =
|
|
connectionState.status === "connected" ||
|
|
connectionState.status === "authenticated" ||
|
|
connectionState.status === "unauthenticated";
|
|
if (connected) {
|
|
loadPrompts();
|
|
loadSystemPrompt();
|
|
}
|
|
}, [connectionState.status, loadPrompts, loadSystemPrompt]);
|
|
|
|
return { prompts, systemPrompt, loading, error, loadPrompts, loadSystemPrompt, getPrompt };
|
|
}
|