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:
elpresidank 2026-04-07 03:22:55 -05:00
parent 50fb311d2d
commit c7eefee607
34 changed files with 1457 additions and 112 deletions

View 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 };
}