@copilotkit/react-core
Version:
<img src="https://github.com/user-attachments/assets/0a6b64d9-e193-4940-a3f6-60334ac34084" alt="banner" style="border-radius: 12px; border: 2px solid #d6d4fa;" />
71 lines (69 loc) • 2.23 kB
JavaScript
import {
useCopilotChat
} from "./chunk-QHCLJODF.mjs";
import {
useToast
} from "./chunk-EFL5OBKN.mjs";
import {
CopilotContext
} from "./chunk-EUX2P2E7.mjs";
import {
__spreadProps,
__spreadValues
} from "./chunk-SKC7AJIV.mjs";
// src/hooks/use-langgraph-interrupt.ts
import { useContext, useEffect, useMemo } from "react";
import { dataToUUID } from "@copilotkit/shared";
function useLangGraphInterrupt(action, dependencies) {
var _a;
const {
setLangGraphInterruptAction,
removeLangGraphInterruptAction,
langGraphInterruptAction,
threadId
} = useContext(CopilotContext);
const { runChatCompletion } = useCopilotChat();
const { addToast } = useToast();
const actionId = dataToUUID(JSON.stringify(action), "lgAction");
const hasAction = useMemo(
() => Boolean(langGraphInterruptAction == null ? void 0 : langGraphInterruptAction.id),
[langGraphInterruptAction]
);
const isCurrentAction = useMemo(
() => (langGraphInterruptAction == null ? void 0 : langGraphInterruptAction.id) && (langGraphInterruptAction == null ? void 0 : langGraphInterruptAction.id) === actionId,
[langGraphInterruptAction]
);
useEffect(() => {
var _a2;
if (hasAction && isCurrentAction && ((_a2 = langGraphInterruptAction == null ? void 0 : langGraphInterruptAction.event) == null ? void 0 : _a2.response)) {
runChatCompletion();
}
}, [(_a = langGraphInterruptAction == null ? void 0 : langGraphInterruptAction.event) == null ? void 0 : _a.response, runChatCompletion, hasAction, isCurrentAction]);
useEffect(() => {
if (!action)
return;
if (hasAction && !isCurrentAction && !action.enabled) {
addToast({
type: "warning",
message: "An action is already registered for the interrupt event"
});
return;
}
if (hasAction && isCurrentAction) {
return;
}
setLangGraphInterruptAction(threadId, __spreadProps(__spreadValues({}, action), { id: actionId }));
}, [
action,
hasAction,
isCurrentAction,
setLangGraphInterruptAction,
removeLangGraphInterruptAction,
threadId,
...dependencies || []
]);
}
export {
useLangGraphInterrupt
};
//# sourceMappingURL=chunk-U3DQY67T.mjs.map