{"version":3,"file":"use-render-custom-messages.mjs","names":[],"sources":["../../src/hooks/use-render-custom-messages.tsx"],"sourcesContent":["import { useCopilotChatConfiguration, useCopilotKit } from \"@/providers\";\nimport { ReactCustomMessageRendererPosition } from \"@/types/react-custom-message-renderer\";\nimport { Message } from \"@ag-ui/core\";\n\ninterface UseRenderCustomMessagesParams {\n  message: Message;\n  position: ReactCustomMessageRendererPosition;\n}\n\nexport function useRenderCustomMessages() {\n  const { copilotkit } = useCopilotKit();\n  const config = useCopilotChatConfiguration();\n\n  if (!config) {\n    return null;\n  }\n\n  const { agentId, threadId } = config;\n\n  const customMessageRenderers = copilotkit.renderCustomMessages\n    .filter(\n      (renderer) =>\n        renderer.agentId === undefined || renderer.agentId === agentId,\n    )\n    .sort((a, b) => {\n      const aHasAgent = a.agentId !== undefined;\n      const bHasAgent = b.agentId !== undefined;\n      if (aHasAgent === bHasAgent) return 0;\n      return aHasAgent ? -1 : 1;\n    });\n\n  return function (params: UseRenderCustomMessagesParams) {\n    if (!customMessageRenderers.length) {\n      return null;\n    }\n    const { message, position } = params;\n    const resolvedRunId =\n      copilotkit.getRunIdForMessage(agentId, threadId, message.id) ??\n      copilotkit.getRunIdsForThread(agentId, threadId).slice(-1)[0];\n    const runId = resolvedRunId ?? `missing-run-id:${message.id}`;\n    const agent = copilotkit.getAgent(agentId);\n    if (!agent) {\n      throw new Error(\"Agent not found\");\n    }\n\n    const messagesIdsInRun = resolvedRunId\n      ? agent.messages\n          .filter(\n            (msg) =>\n              copilotkit.getRunIdForMessage(agentId, threadId, msg.id) ===\n              resolvedRunId,\n          )\n          .map((msg) => msg.id)\n      : [message.id];\n\n    const rawMessageIndex = agent.messages.findIndex(\n      (msg) => msg.id === message.id,\n    );\n    const messageIndex = rawMessageIndex >= 0 ? rawMessageIndex : 0;\n    const messageIndexInRun = resolvedRunId\n      ? Math.max(messagesIdsInRun.indexOf(message.id), 0)\n      : 0;\n    const numberOfMessagesInRun = resolvedRunId ? messagesIdsInRun.length : 1;\n    const stateSnapshot = resolvedRunId\n      ? copilotkit.getStateByRun(agentId, threadId, resolvedRunId)\n      : undefined;\n\n    let result = null;\n    for (const renderer of customMessageRenderers) {\n      if (!renderer.render) {\n        continue;\n      }\n      const Component = renderer.render;\n      result = (\n        <Component\n          key={`${runId}-${message.id}-${position}`}\n          message={message}\n          position={position}\n          runId={runId}\n          messageIndex={messageIndex}\n          messageIndexInRun={messageIndexInRun}\n          numberOfMessagesInRun={numberOfMessagesInRun}\n          agentId={agentId}\n          stateSnapshot={stateSnapshot}\n        />\n      );\n      if (result) {\n        break;\n      }\n    }\n    return result;\n  };\n}\n"],"mappings":";;;;;;AASA,SAAgB,0BAA0B;CACxC,MAAM,EAAE,eAAe,eAAe;CACtC,MAAM,SAAS,6BAA6B;AAE5C,KAAI,CAAC,OACH,QAAO;CAGT,MAAM,EAAE,SAAS,aAAa;CAE9B,MAAM,yBAAyB,WAAW,qBACvC,QACE,aACC,SAAS,YAAY,UAAa,SAAS,YAAY,QAC1D,CACA,MAAM,GAAG,MAAM;EACd,MAAM,YAAY,EAAE,YAAY;AAEhC,MAAI,eADc,EAAE,YAAY,QACH,QAAO;AACpC,SAAO,YAAY,KAAK;GACxB;AAEJ,QAAO,SAAU,QAAuC;AACtD,MAAI,CAAC,uBAAuB,OAC1B,QAAO;EAET,MAAM,EAAE,SAAS,aAAa;EAC9B,MAAM,gBACJ,WAAW,mBAAmB,SAAS,UAAU,QAAQ,GAAG,IAC5D,WAAW,mBAAmB,SAAS,SAAS,CAAC,MAAM,GAAG,CAAC;EAC7D,MAAM,QAAQ,iBAAiB,kBAAkB,QAAQ;EACzD,MAAM,QAAQ,WAAW,SAAS,QAAQ;AAC1C,MAAI,CAAC,MACH,OAAM,IAAI,MAAM,kBAAkB;EAGpC,MAAM,mBAAmB,gBACrB,MAAM,SACH,QACE,QACC,WAAW,mBAAmB,SAAS,UAAU,IAAI,GAAG,KACxD,cACH,CACA,KAAK,QAAQ,IAAI,GAAG,GACvB,CAAC,QAAQ,GAAG;EAEhB,MAAM,kBAAkB,MAAM,SAAS,WACpC,QAAQ,IAAI,OAAO,QAAQ,GAC7B;EACD,MAAM,eAAe,mBAAmB,IAAI,kBAAkB;EAC9D,MAAM,oBAAoB,gBACtB,KAAK,IAAI,iBAAiB,QAAQ,QAAQ,GAAG,EAAE,EAAE,GACjD;EACJ,MAAM,wBAAwB,gBAAgB,iBAAiB,SAAS;EACxE,MAAM,gBAAgB,gBAClB,WAAW,cAAc,SAAS,UAAU,cAAc,GAC1D;EAEJ,IAAI,SAAS;AACb,OAAK,MAAM,YAAY,wBAAwB;AAC7C,OAAI,CAAC,SAAS,OACZ;GAEF,MAAM,YAAY,SAAS;AAC3B,YACE,oBAAC;IAEU;IACC;IACH;IACO;IACK;IACI;IACd;IACM;MARV,GAAG,MAAM,GAAG,QAAQ,GAAG,GAAG,WAS/B;AAEJ,OAAI,OACF;;AAGJ,SAAO"}