UNPKG

lunary

Version:

Lunary is an open-source platform for AI developers.

83 lines (81 loc) 2.13 kB
import { browser_default } from "./chunk-GL6XN5RS.js"; import "./chunk-AX3726TK.js"; import { __name } from "./chunk-AGSXOS4O.js"; // src/react.ts import { useEffect, useRef, useState } from "react"; function useChatMonitor() { const [thread, setThread] = useState(); const restart = /* @__PURE__ */ __name(() => { const newThread = browser_default.openThread(); setThread(newThread); return newThread; }, "restart"); const resumeThread = /* @__PURE__ */ __name((id) => { const newThread = browser_default.openThread(id); setThread(newThread); return newThread; }, "resumeThread"); useEffect(() => { restart(); }, []); return { restart, // Deprecated TODO: remove restartThread: restart, resumeThread, trackMessage: thread?.trackMessage, trackFeedback: browser_default.trackFeedback, identify: browser_default.identify }; } __name(useChatMonitor, "useChatMonitor"); var useMonitorVercelAI = /* @__PURE__ */ __name((props) => { const { messages, isLoading } = props; const { trackFeedback, trackMessage, resumeThread, restartThread, identify, restart } = useChatMonitor(); const previousMessages = useRef(messages); useEffect(() => { if (previousMessages.current.length < messages.length) { const newMessage = messages[messages.length - 1]; if (newMessage.role === "user") { trackMessage({ role: "user", id: newMessage.id, content: newMessage.content }); } else if (newMessage.role === "assistant" && // Make sure it's not streaming !isLoading) { const userMessage = messages[messages.length - 2]; trackMessage({ role: "assistant", id: userMessage.id, content: newMessage.content }); } } }, [isLoading, messages]); return { ...props, trackFeedback, trackMessage, resumeThread, restartThread, identify }; }, "useMonitorVercelAI"); var react_default = browser_default; export { react_default as default, useChatMonitor, useMonitorVercelAI };