mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-07-03 06:51:00 +02:00
feat: add Docker entrypoints, LLM providers, pipeline hardening, workbench pages
Phase 9 — four parallel workstreams: - Stream A: 14 Docker entrypoints for containerized deployment - Stream B: Pipeline hardening — robust JSON parsing, LLM retry logic, consumer negative-ack, FalkorDB test import fix - Stream C: Azure OpenAI, OpenAI-compatible, and Mistral LLM providers - Stream D: Workbench Prompts, Token Cost, Knowledge Cores pages + Settings feature switches Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
50fb311d2d
commit
c7eefee607
34 changed files with 1457 additions and 112 deletions
50
ts/packages/workbench/src/hooks/use-prompts.ts
Normal file
50
ts/packages/workbench/src/hooks/use-prompts.ts
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
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 loadPrompts = useCallback(async () => {
|
||||
try {
|
||||
setLoading(true);
|
||||
const list = await socket.config().getPrompts();
|
||||
setPrompts(Array.isArray(list) ? list : []);
|
||||
} catch (err) {
|
||||
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, loadPrompts, loadSystemPrompt, getPrompt };
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue