@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;" />
65 lines (63 loc) • 2.18 kB
JavaScript
import {
useCopilotChat
} from "./chunk-CLAHAV6J.mjs";
import {
useToast
} from "./chunk-EFL5OBKN.mjs";
import {
CopilotContext
} from "./chunk-YHT6CWIY.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 } = 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(__spreadProps(__spreadValues({}, action), { id: actionId }));
}, [
action,
hasAction,
isCurrentAction,
setLangGraphInterruptAction,
removeLangGraphInterruptAction,
...dependencies || []
]);
}
export {
useLangGraphInterrupt
};
//# sourceMappingURL=chunk-EBSAU46C.mjs.map