rdesign/frontend/node_modules/@copilotkitnext/react/dist/hooks/use-render-activity-message...

47 lines
1.8 KiB
JavaScript

import { useCopilotChatConfiguration } from "../providers/CopilotChatConfigurationProvider.mjs";
import "../providers/index.mjs";
import { useCopilotKit } from "../providers/CopilotKitProvider.mjs";
import { useCallback, useMemo } from "react";
import { DEFAULT_AGENT_ID } from "@copilotkitnext/shared";
import { jsx } from "react/jsx-runtime";
//#region src/hooks/use-render-activity-message.tsx
function useRenderActivityMessage() {
const { copilotkit } = useCopilotKit();
const agentId = useCopilotChatConfiguration()?.agentId ?? DEFAULT_AGENT_ID;
const renderers = copilotkit.renderActivityMessages;
const findRenderer = useCallback((activityType) => {
if (!renderers.length) return null;
const matches = renderers.filter((renderer) => renderer.activityType === activityType);
return matches.find((candidate) => candidate.agentId === agentId) ?? matches.find((candidate) => candidate.agentId === void 0) ?? renderers.find((candidate) => candidate.activityType === "*") ?? null;
}, [agentId, renderers]);
const renderActivityMessage = useCallback((message) => {
const renderer = findRenderer(message.activityType);
if (!renderer) return null;
const parseResult = renderer.content.safeParse(message.content);
if (!parseResult.success) {
console.warn(`Failed to parse content for activity message '${message.activityType}':`, parseResult.error);
return null;
}
const Component = renderer.render;
const agent = copilotkit.getAgent(agentId);
return /* @__PURE__ */ jsx(Component, {
activityType: message.activityType,
content: parseResult.data,
message,
agent
}, message.id);
}, [
agentId,
copilotkit,
findRenderer
]);
return useMemo(() => ({
renderActivityMessage,
findRenderer
}), [renderActivityMessage, findRenderer]);
}
//#endregion
export { useRenderActivityMessage };
//# sourceMappingURL=use-render-activity-message.mjs.map