53 lines
2.5 KiB
JavaScript
53 lines
2.5 KiB
JavaScript
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
|
|
const require_CopilotChatConfigurationProvider = require('../providers/CopilotChatConfigurationProvider.cjs');
|
|
require('../providers/index.cjs');
|
|
const require_CopilotKitProvider = require('../providers/CopilotKitProvider.cjs');
|
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
|
|
//#region src/hooks/use-render-custom-messages.tsx
|
|
function useRenderCustomMessages() {
|
|
const { copilotkit } = require_CopilotKitProvider.useCopilotKit();
|
|
const config = require_CopilotChatConfigurationProvider.useCopilotChatConfiguration();
|
|
if (!config) return null;
|
|
const { agentId, threadId } = config;
|
|
const customMessageRenderers = copilotkit.renderCustomMessages.filter((renderer) => renderer.agentId === void 0 || renderer.agentId === agentId).sort((a, b) => {
|
|
const aHasAgent = a.agentId !== void 0;
|
|
if (aHasAgent === (b.agentId !== void 0)) return 0;
|
|
return aHasAgent ? -1 : 1;
|
|
});
|
|
return function(params) {
|
|
if (!customMessageRenderers.length) return null;
|
|
const { message, position } = params;
|
|
const resolvedRunId = copilotkit.getRunIdForMessage(agentId, threadId, message.id) ?? copilotkit.getRunIdsForThread(agentId, threadId).slice(-1)[0];
|
|
const runId = resolvedRunId ?? `missing-run-id:${message.id}`;
|
|
const agent = copilotkit.getAgent(agentId);
|
|
if (!agent) throw new Error("Agent not found");
|
|
const messagesIdsInRun = resolvedRunId ? agent.messages.filter((msg) => copilotkit.getRunIdForMessage(agentId, threadId, msg.id) === resolvedRunId).map((msg) => msg.id) : [message.id];
|
|
const rawMessageIndex = agent.messages.findIndex((msg) => msg.id === message.id);
|
|
const messageIndex = rawMessageIndex >= 0 ? rawMessageIndex : 0;
|
|
const messageIndexInRun = resolvedRunId ? Math.max(messagesIdsInRun.indexOf(message.id), 0) : 0;
|
|
const numberOfMessagesInRun = resolvedRunId ? messagesIdsInRun.length : 1;
|
|
const stateSnapshot = resolvedRunId ? copilotkit.getStateByRun(agentId, threadId, resolvedRunId) : void 0;
|
|
let result = null;
|
|
for (const renderer of customMessageRenderers) {
|
|
if (!renderer.render) continue;
|
|
const Component = renderer.render;
|
|
result = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Component, {
|
|
message,
|
|
position,
|
|
runId,
|
|
messageIndex,
|
|
messageIndexInRun,
|
|
numberOfMessagesInRun,
|
|
agentId,
|
|
stateSnapshot
|
|
}, `${runId}-${message.id}-${position}`);
|
|
if (result) break;
|
|
}
|
|
return result;
|
|
};
|
|
}
|
|
|
|
//#endregion
|
|
exports.useRenderCustomMessages = useRenderCustomMessages;
|
|
//# sourceMappingURL=use-render-custom-messages.cjs.map
|