MCPcopy Index your code
hub / github.com/CommandCodeAI/BaseAI / usePipe

Function usePipe

packages/core/src/react/use-pipe.ts:29–308  ·  view source on GitHub ↗
({
	apiRoute = '/langbase/pipes/run-stream',
	onResponse,
	onFinish,
	onConnect,
	onError,
	threadId: initialThreadId,
	initialMessages = [],
	stream = true,
}: UsePipeOptions = {})

Source from the content-addressed store, hash-verified

27const externalThreadIdSchema = uuidSchema.optional();
28
29export function usePipe({
30 apiRoute = '/langbase/pipes/run-stream',
31 onResponse,
32 onFinish,
33 onConnect,
34 onError,
35 threadId: initialThreadId,
36 initialMessages = [],
37 stream = true,
38}: UsePipeOptions = {}) {
39 const [messages, setMessages] = useState<Message[]>(initialMessages);
40 const [input, setInput] = useState('');
41 const [isLoading, setIsLoading] = useState(false);
42 const [error, setError] = useState<Error | null>(null);
43
44 const abortControllerRef = useRef<AbortController | null>(null);
45 const threadIdRef = useRef<string | undefined>(
46 initialThreadId || undefined,
47 );
48 const messagesRef = useRef<Message[]>(initialMessages);
49 const isFirstRequestRef = useRef<boolean>(true);
50
51 const updateMessages = useCallback((newMessages: Message[]) => {
52 messagesRef.current = newMessages;
53 setMessages(newMessages);
54 }, []);
55
56 const processStreamResponse = useCallback(
57 async (runner: Runner) => {
58 let assistantMessage: Message = {role: 'assistant', content: ''};
59 updateMessages([...messagesRef.current, assistantMessage]);
60
61 for await (const chunk of runner) {
62 if (abortControllerRef.current?.signal.aborted) break;
63
64 const content = chunk.choices[0]?.delta?.content || '';
65 assistantMessage.content += content;
66
67 updateMessages([
68 ...messagesRef.current.slice(0, -1),
69 {...assistantMessage},
70 ]);
71 onResponse?.({...assistantMessage});
72 }
73
74 onFinish?.(messagesRef.current);
75 },
76 [updateMessages, onResponse, onFinish],
77 );
78
79 const processNonStreamResponse = useCallback(
80 (result: RunResponse) => {
81 const assistantMessage: Message = {
82 role: 'assistant',
83 content: result.completion,
84 };
85 const newMessages = [...messagesRef.current, assistantMessage];
86 updateMessages(newMessages);

Callers 7

setupUsePipeFunction · 0.90
ChatAdvancedFunction · 0.90
ChatSimpleFunction · 0.90
ChatAdvancedExampleFunction · 0.90
ChatSimpleExampleFunction · 0.90
ChatAdvancedFunction · 0.90
ChatSimpleFunction · 0.90

Calls 5

isProdFunction · 0.90
getRunnerFunction · 0.90
processErrorResponseFunction · 0.85
onErrorFunction · 0.85
getMethod · 0.80

Tested by 1

setupUsePipeFunction · 0.72