react-ai-renderer 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. package/dist/{MermaidRenderer-0ef71453.js → MermaidRenderer-07b34bcf.js} +2 -2
  2. package/dist/{MermaidRenderer-321bfe50.js.map → MermaidRenderer-07b34bcf.js.map} +1 -1
  3. package/dist/{MermaidRenderer-321bfe50.js → MermaidRenderer-0aacea2f.js} +2 -2
  4. package/dist/{MermaidRenderer-0ef71453.js.map → MermaidRenderer-0aacea2f.js.map} +1 -1
  5. package/dist/{MermaidRenderer-4bae11d6.js → MermaidRenderer-1c06834c.js} +2 -2
  6. package/dist/{MermaidRenderer-325a9dee.js.map → MermaidRenderer-1c06834c.js.map} +1 -1
  7. package/dist/{MermaidRenderer-325a9dee.js → MermaidRenderer-22b8cb81.js} +2 -2
  8. package/dist/{MermaidRenderer-4bae11d6.js.map → MermaidRenderer-22b8cb81.js.map} +1 -1
  9. package/dist/MermaidRenderer-2438ceb1.js +170 -0
  10. package/dist/MermaidRenderer-2438ceb1.js.map +1 -0
  11. package/dist/MermaidRenderer-2f6d93a2.js +170 -0
  12. package/dist/MermaidRenderer-2f6d93a2.js.map +1 -0
  13. package/dist/MermaidRenderer-447e20f0.js +170 -0
  14. package/dist/MermaidRenderer-447e20f0.js.map +1 -0
  15. package/dist/MermaidRenderer-456abbe8.js +170 -0
  16. package/dist/MermaidRenderer-456abbe8.js.map +1 -0
  17. package/dist/MermaidRenderer-45a1e235.js +170 -0
  18. package/dist/MermaidRenderer-45a1e235.js.map +1 -0
  19. package/dist/{MermaidRenderer-653a4dab.js → MermaidRenderer-4b75a3e5.js} +2 -2
  20. package/dist/{MermaidRenderer-653a4dab.js.map → MermaidRenderer-4b75a3e5.js.map} +1 -1
  21. package/dist/{MermaidRenderer-67edae8e.js → MermaidRenderer-59cd2aac.js} +2 -2
  22. package/dist/{MermaidRenderer-67edae8e.js.map → MermaidRenderer-59cd2aac.js.map} +1 -1
  23. package/dist/{MermaidRenderer-13e4a89a.js → MermaidRenderer-61954263.js} +2 -2
  24. package/dist/{MermaidRenderer-75832c15.js.map → MermaidRenderer-61954263.js.map} +1 -1
  25. package/dist/{MermaidRenderer-a25ae84f.js → MermaidRenderer-62cbf217.js} +1 -1
  26. package/dist/{MermaidRenderer-13e4a89a.js.map → MermaidRenderer-62cbf217.js.map} +1 -1
  27. package/dist/MermaidRenderer-6323359c.js +170 -0
  28. package/dist/MermaidRenderer-6323359c.js.map +1 -0
  29. package/dist/{MermaidRenderer-d8836800.js → MermaidRenderer-680adac3.js} +1 -1
  30. package/dist/MermaidRenderer-680adac3.js.map +1 -0
  31. package/dist/{MermaidRenderer-75832c15.js → MermaidRenderer-771db0f2.js} +2 -2
  32. package/dist/MermaidRenderer-771db0f2.js.map +1 -0
  33. package/dist/MermaidRenderer-7a5bd531.js +170 -0
  34. package/dist/MermaidRenderer-7a5bd531.js.map +1 -0
  35. package/dist/MermaidRenderer-94fceb26.js +172 -0
  36. package/dist/MermaidRenderer-94fceb26.js.map +1 -0
  37. package/dist/MermaidRenderer-a6a464ec.js +172 -0
  38. package/dist/MermaidRenderer-a6a464ec.js.map +1 -0
  39. package/dist/MermaidRenderer-a8c58389.js +172 -0
  40. package/dist/MermaidRenderer-a8c58389.js.map +1 -0
  41. package/dist/MermaidRenderer-b23c2eec.js +172 -0
  42. package/dist/MermaidRenderer-b23c2eec.js.map +1 -0
  43. package/dist/MermaidRenderer-b30dda58.js +170 -0
  44. package/dist/MermaidRenderer-b30dda58.js.map +1 -0
  45. package/dist/MermaidRenderer-b65fed60.js +172 -0
  46. package/dist/MermaidRenderer-b65fed60.js.map +1 -0
  47. package/dist/MermaidRenderer-c594187b.js +172 -0
  48. package/dist/MermaidRenderer-c594187b.js.map +1 -0
  49. package/dist/MermaidRenderer-c5f51ccf.js +172 -0
  50. package/dist/MermaidRenderer-c5f51ccf.js.map +1 -0
  51. package/dist/MermaidRenderer-cf69f9fc.js +172 -0
  52. package/dist/MermaidRenderer-cf69f9fc.js.map +1 -0
  53. package/dist/MermaidRenderer-fa15e3c7.js +172 -0
  54. package/dist/MermaidRenderer-fa15e3c7.js.map +1 -0
  55. package/dist/MermaidRenderer-fc75606f.js +170 -0
  56. package/dist/MermaidRenderer-fc75606f.js.map +1 -0
  57. package/dist/index-27d5e758.js +1399 -0
  58. package/dist/index-27d5e758.js.map +1 -0
  59. package/dist/{index-922bbd30.js → index-2b2eb026.js} +195 -141
  60. package/dist/{index-bb96fdaf.js.map → index-2b2eb026.js.map} +1 -1
  61. package/dist/{index-4592abf8.js → index-34e4d478.js} +31 -53
  62. package/dist/index-34e4d478.js.map +1 -0
  63. package/dist/index-4881fdf3.js +1458 -0
  64. package/dist/index-4881fdf3.js.map +1 -0
  65. package/dist/{index-283b43ef.js → index-4d8e81d1.js} +97 -118
  66. package/dist/index-4d8e81d1.js.map +1 -0
  67. package/dist/{index-3de28f18.js → index-4f25eb16.js} +19 -49
  68. package/dist/index-4f25eb16.js.map +1 -0
  69. package/dist/index-53d781f0.js +1476 -0
  70. package/dist/index-53d781f0.js.map +1 -0
  71. package/dist/index-543584d8.js +1398 -0
  72. package/dist/index-543584d8.js.map +1 -0
  73. package/dist/index-54c78282.js +1474 -0
  74. package/dist/index-54c78282.js.map +1 -0
  75. package/dist/index-57a0454a.js +1441 -0
  76. package/dist/index-57a0454a.js.map +1 -0
  77. package/dist/index-58ab9759.js +1424 -0
  78. package/dist/index-58ab9759.js.map +1 -0
  79. package/dist/index-58ee3084.js +1399 -0
  80. package/dist/index-58ee3084.js.map +1 -0
  81. package/dist/{index-bb96fdaf.js → index-5edd5559.js} +20 -53
  82. package/dist/index-5edd5559.js.map +1 -0
  83. package/dist/{index-415b51ad.js → index-65168e57.js} +20 -53
  84. package/dist/index-65168e57.js.map +1 -0
  85. package/dist/index-66021d90.js +1431 -0
  86. package/dist/index-66021d90.js.map +1 -0
  87. package/dist/index-71e57dce.js +1425 -0
  88. package/dist/index-71e57dce.js.map +1 -0
  89. package/dist/{index-ae31bd04.js → index-742d8be6.js} +97 -119
  90. package/dist/index-742d8be6.js.map +1 -0
  91. package/dist/{index-c0acef6b.js → index-813be4d3.js} +254 -159
  92. package/dist/index-813be4d3.js.map +1 -0
  93. package/dist/index-82c906b1.js +1448 -0
  94. package/dist/index-82c906b1.js.map +1 -0
  95. package/dist/index-a7fb8ff9.js +1432 -0
  96. package/dist/index-a7fb8ff9.js.map +1 -0
  97. package/dist/{index-c6ab333d.js → index-b4765fbd.js} +19 -49
  98. package/dist/index-b4765fbd.js.map +1 -0
  99. package/dist/{index-fdaa9757.js → index-b78ff7b5.js} +254 -168
  100. package/dist/index-b78ff7b5.js.map +1 -0
  101. package/dist/index-c56180b9.js +1425 -0
  102. package/dist/index-c56180b9.js.map +1 -0
  103. package/dist/{index-7e8dc866.js → index-d5855b9f.js} +195 -132
  104. package/dist/{index-415b51ad.js.map → index-d5855b9f.js.map} +1 -1
  105. package/dist/{index-1d051ba8.js → index-d63be97b.js} +31 -54
  106. package/dist/index-d63be97b.js.map +1 -0
  107. package/dist/index-dd9fe728.js +1457 -0
  108. package/dist/index-dd9fe728.js.map +1 -0
  109. package/dist/index-e0ce1691.js +1467 -0
  110. package/dist/index-e0ce1691.js.map +1 -0
  111. package/dist/index-fadb7b0b.js +1450 -0
  112. package/dist/index-fadb7b0b.js.map +1 -0
  113. package/dist/index.d.ts +30 -9
  114. package/dist/index.es.js +1 -1
  115. package/dist/index.js +1 -1
  116. package/package.json +1 -1
  117. package/dist/MermaidRenderer-6237d7da.js +0 -170
  118. package/dist/MermaidRenderer-6237d7da.js.map +0 -1
  119. package/dist/MermaidRenderer-6f071d8e.js +0 -170
  120. package/dist/MermaidRenderer-6f071d8e.js.map +0 -1
  121. package/dist/MermaidRenderer-7cb138d1.js +0 -170
  122. package/dist/MermaidRenderer-7cb138d1.js.map +0 -1
  123. package/dist/MermaidRenderer-8a8fb725.js +0 -172
  124. package/dist/MermaidRenderer-8a8fb725.js.map +0 -1
  125. package/dist/MermaidRenderer-91a0a7d8.js +0 -170
  126. package/dist/MermaidRenderer-91a0a7d8.js.map +0 -1
  127. package/dist/MermaidRenderer-9ff856f3.js +0 -172
  128. package/dist/MermaidRenderer-9ff856f3.js.map +0 -1
  129. package/dist/MermaidRenderer-a25ae84f.js.map +0 -1
  130. package/dist/MermaidRenderer-c3014102.js +0 -172
  131. package/dist/MermaidRenderer-c3014102.js.map +0 -1
  132. package/dist/MermaidRenderer-c664aa66.js +0 -170
  133. package/dist/MermaidRenderer-c664aa66.js.map +0 -1
  134. package/dist/MermaidRenderer-d1518f28.js +0 -172
  135. package/dist/MermaidRenderer-d1518f28.js.map +0 -1
  136. package/dist/MermaidRenderer-d7545a7e.js +0 -172
  137. package/dist/MermaidRenderer-d7545a7e.js.map +0 -1
  138. package/dist/MermaidRenderer-d8836800.js.map +0 -1
  139. package/dist/MermaidRenderer-d9c8351a.js +0 -172
  140. package/dist/MermaidRenderer-d9c8351a.js.map +0 -1
  141. package/dist/MermaidRenderer-dc0ac92e.js +0 -170
  142. package/dist/MermaidRenderer-dc0ac92e.js.map +0 -1
  143. package/dist/MermaidRenderer-e549ab85.js +0 -172
  144. package/dist/MermaidRenderer-e549ab85.js.map +0 -1
  145. package/dist/MermaidRenderer-e5d81a6f.js +0 -172
  146. package/dist/MermaidRenderer-e5d81a6f.js.map +0 -1
  147. package/dist/MermaidRenderer-e82f36e4.js +0 -172
  148. package/dist/MermaidRenderer-e82f36e4.js.map +0 -1
  149. package/dist/MermaidRenderer-f04366c1.js +0 -170
  150. package/dist/MermaidRenderer-f04366c1.js.map +0 -1
  151. package/dist/MermaidRenderer-f6473da3.js +0 -170
  152. package/dist/MermaidRenderer-f6473da3.js.map +0 -1
  153. package/dist/MermaidRenderer-f82d0d11.js +0 -170
  154. package/dist/MermaidRenderer-f82d0d11.js.map +0 -1
  155. package/dist/index-02f4473f.js +0 -1313
  156. package/dist/index-02f4473f.js.map +0 -1
  157. package/dist/index-172582eb.js +0 -1294
  158. package/dist/index-172582eb.js.map +0 -1
  159. package/dist/index-1d051ba8.js.map +0 -1
  160. package/dist/index-283b43ef.js.map +0 -1
  161. package/dist/index-2d979ad5.js +0 -1314
  162. package/dist/index-2d979ad5.js.map +0 -1
  163. package/dist/index-349401d2.js +0 -1288
  164. package/dist/index-349401d2.js.map +0 -1
  165. package/dist/index-398258c5.js +0 -1314
  166. package/dist/index-398258c5.js.map +0 -1
  167. package/dist/index-3cf82be4.js +0 -1287
  168. package/dist/index-3cf82be4.js.map +0 -1
  169. package/dist/index-3de28f18.js.map +0 -1
  170. package/dist/index-4592abf8.js.map +0 -1
  171. package/dist/index-4edeb553.js +0 -1313
  172. package/dist/index-4edeb553.js.map +0 -1
  173. package/dist/index-534d3bce.js +0 -1312
  174. package/dist/index-534d3bce.js.map +0 -1
  175. package/dist/index-6ceb7256.js +0 -1287
  176. package/dist/index-6ceb7256.js.map +0 -1
  177. package/dist/index-7e8dc866.js.map +0 -1
  178. package/dist/index-896de550.js +0 -1313
  179. package/dist/index-896de550.js.map +0 -1
  180. package/dist/index-8dbf398a.js +0 -1313
  181. package/dist/index-8dbf398a.js.map +0 -1
  182. package/dist/index-922bbd30.js.map +0 -1
  183. package/dist/index-a5a2c748.js +0 -1288
  184. package/dist/index-a5a2c748.js.map +0 -1
  185. package/dist/index-abed2ed7.js +0 -1286
  186. package/dist/index-abed2ed7.js.map +0 -1
  187. package/dist/index-ae31bd04.js.map +0 -1
  188. package/dist/index-b0cab34f.js +0 -1287
  189. package/dist/index-b0cab34f.js.map +0 -1
  190. package/dist/index-c0acef6b.js.map +0 -1
  191. package/dist/index-c6ab333d.js.map +0 -1
  192. package/dist/index-d4f12a68.js +0 -1287
  193. package/dist/index-d4f12a68.js.map +0 -1
  194. package/dist/index-e07ca144.js +0 -1320
  195. package/dist/index-e07ca144.js.map +0 -1
  196. package/dist/index-fdaa9757.js.map +0 -1
@@ -455,18 +455,6 @@ function __generator(thisArg, body) {
455
455
  }
456
456
  }
457
457
 
458
- function __values(o) {
459
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
460
- if (m) return m.call(o);
461
- if (o && typeof o.length === "number") return {
462
- next: function () {
463
- if (o && i >= o.length) o = void 0;
464
- return { value: o && o[i++], done: !o };
465
- }
466
- };
467
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
468
- }
469
-
470
458
  function __read(o, n) {
471
459
  var m = typeof Symbol === "function" && o[Symbol.iterator];
472
460
  if (!m) return o;
@@ -549,7 +537,7 @@ var CodeHighlight = function (_a) {
549
537
  if (language === "mermaid") {
550
538
  // 动态导入 MermaidRenderer 组件
551
539
  var MermaidRenderer = /*#__PURE__*/React__default.lazy(function () {
552
- return import('./MermaidRenderer-f6473da3.js').catch(function () {
540
+ return import('./MermaidRenderer-2f6d93a2.js').catch(function () {
553
541
  return {
554
542
  default: function () {
555
543
  return /*#__PURE__*/jsx("div", {});
@@ -617,57 +605,239 @@ var CodeHighlight = function (_a) {
617
605
  var Think = function (_a) {
618
606
  var content = _a.content,
619
607
  children = _a.children;
608
+ var _b = __read(useState(true), 2),
609
+ isExpanded = _b[0],
610
+ setIsExpanded = _b[1];
620
611
  var thinkContent = content || children;
621
612
  if (!thinkContent) {
622
613
  return /*#__PURE__*/jsx("div", {});
623
614
  }
624
- return /*#__PURE__*/jsx("div", {
625
- style: {
626
- marginBottom: 12
627
- },
628
- children: /*#__PURE__*/jsxs("details", {
629
- open: true,
630
- children: [/*#__PURE__*/jsx("summary", {
631
- style: {
632
- fontWeight: 'bold',
633
- cursor: 'pointer',
634
- padding: '8px',
635
- backgroundColor: '#f0f0f0',
636
- borderRadius: '4px',
637
- marginBottom: '8px'
638
- },
639
- children: "\uD83E\uDDE0 AI \u601D\u8003\u8FC7\u7A0B"
640
- }), /*#__PURE__*/jsx("blockquote", {
641
- style: {
642
- borderLeft: '3px solid #2196f3',
643
- color: '#666',
644
- paddingLeft: 12,
645
- fontStyle: 'italic',
646
- marginBottom: 0,
647
- backgroundColor: '#f9f9f9',
648
- padding: '8px'
649
- },
650
- children: typeof thinkContent === 'string' ? decodeURIComponent(thinkContent) : thinkContent
615
+ return /*#__PURE__*/jsxs("div", {
616
+ className: "funq-think border rounded-lg p-3 mb-3 bg-blue-50 border-blue-200",
617
+ children: [/*#__PURE__*/jsxs("div", {
618
+ className: "flex items-center justify-between cursor-pointer",
619
+ onClick: function () {
620
+ return setIsExpanded(!isExpanded);
621
+ },
622
+ children: [/*#__PURE__*/jsxs("div", {
623
+ className: "flex items-center gap-2",
624
+ children: [/*#__PURE__*/jsx("div", {
625
+ className: "w-4 h-4 rounded-full bg-blue-500 flex items-center justify-center",
626
+ children: /*#__PURE__*/jsx("svg", {
627
+ className: "w-3 h-3 text-white",
628
+ fill: "none",
629
+ stroke: "currentColor",
630
+ viewBox: "0 0 24 24",
631
+ children: /*#__PURE__*/jsx("path", {
632
+ strokeLinecap: "round",
633
+ strokeLinejoin: "round",
634
+ strokeWidth: "2",
635
+ d: "M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"
636
+ })
637
+ })
638
+ }), /*#__PURE__*/jsx("span", {
639
+ className: "font-medium text-sm",
640
+ children: "AI \u601D\u8003\u8FC7\u7A0B"
641
+ })]
642
+ }), /*#__PURE__*/jsx("div", {
643
+ className: "w-4 h-4 text-muted-foreground",
644
+ children: isExpanded ? /*#__PURE__*/jsx("svg", {
645
+ fill: "none",
646
+ stroke: "currentColor",
647
+ viewBox: "0 0 24 24",
648
+ children: /*#__PURE__*/jsx("path", {
649
+ strokeLinecap: "round",
650
+ strokeLinejoin: "round",
651
+ strokeWidth: "2",
652
+ d: "M5 15l7-7 7 7"
653
+ })
654
+ }) : /*#__PURE__*/jsx("svg", {
655
+ fill: "none",
656
+ stroke: "currentColor",
657
+ viewBox: "0 0 24 24",
658
+ children: /*#__PURE__*/jsx("path", {
659
+ strokeLinecap: "round",
660
+ strokeLinejoin: "round",
661
+ strokeWidth: "2",
662
+ d: "M19 9l-7 7-7-7"
663
+ })
664
+ })
651
665
  })]
652
- })
666
+ }), isExpanded && /*#__PURE__*/jsx("div", {
667
+ className: "mt-3 pt-3 border-t border-blue-200",
668
+ children: /*#__PURE__*/jsx("blockquote", {
669
+ className: "text-sm text-blue-800 bg-blue-100 p-2 rounded",
670
+ children: typeof thinkContent === 'string' ? decodeURIComponent(thinkContent) : thinkContent
671
+ })
672
+ })]
653
673
  });
654
674
  };
655
675
 
656
- var EncodedContent = function (_a) {
657
- var encodedContent = _a.encodedContent,
658
- props = __rest(_a, ["encodedContent"]);
659
- // 解码内容
660
- var decodedContent = React__default.useMemo(function () {
676
+ var ToolCall = function (_a) {
677
+ var toolCall = _a.toolCall,
678
+ children = _a.children;
679
+ var _b = __read(useState(false), 2),
680
+ isExpanded = _b[0],
681
+ setIsExpanded = _b[1];
682
+ var getStateIcon = function () {
683
+ switch (toolCall.state) {
684
+ case 'loading':
685
+ return /*#__PURE__*/jsx("div", {
686
+ className: "w-4 h-4 animate-spin border-2 border-blue-500 border-t-transparent rounded-full"
687
+ });
688
+ case 'done':
689
+ return /*#__PURE__*/jsx("div", {
690
+ className: "w-4 h-4 rounded-full bg-green-500 flex items-center justify-center",
691
+ children: /*#__PURE__*/jsx("svg", {
692
+ className: "w-3 h-3 text-white",
693
+ fill: "none",
694
+ stroke: "currentColor",
695
+ viewBox: "0 0 24 24",
696
+ children: /*#__PURE__*/jsx("path", {
697
+ strokeLinecap: "round",
698
+ strokeLinejoin: "round",
699
+ strokeWidth: "2",
700
+ d: "M5 13l4 4L19 7"
701
+ })
702
+ })
703
+ });
704
+ case 'error':
705
+ return /*#__PURE__*/jsx("div", {
706
+ className: "w-4 h-4 rounded-full bg-red-500 flex items-center justify-center",
707
+ children: /*#__PURE__*/jsx("svg", {
708
+ className: "w-3 h-3 text-white",
709
+ fill: "none",
710
+ stroke: "currentColor",
711
+ viewBox: "0 0 24 24",
712
+ children: /*#__PURE__*/jsx("path", {
713
+ strokeLinecap: "round",
714
+ strokeLinejoin: "round",
715
+ strokeWidth: "2",
716
+ d: "M6 18L18 6M6 6l12 12"
717
+ })
718
+ })
719
+ });
720
+ default:
721
+ return /*#__PURE__*/jsx("div", {
722
+ className: "w-4 h-4 animate-spin border-2 border-blue-500 border-t-transparent rounded-full"
723
+ });
724
+ }
725
+ };
726
+ var getStateText = function () {
727
+ switch (toolCall.state) {
728
+ case 'loading':
729
+ return '执行中...';
730
+ case 'done':
731
+ return '执行完成';
732
+ case 'error':
733
+ return '执行出错';
734
+ default:
735
+ return '执行中...';
736
+ }
737
+ };
738
+ var getStateClass = function () {
739
+ switch (toolCall.state) {
740
+ case 'loading':
741
+ return 'bg-blue-50 border-blue-200';
742
+ case 'done':
743
+ return 'bg-green-50 border-green-200';
744
+ case 'error':
745
+ return 'bg-red-50 border-red-200';
746
+ default:
747
+ return 'bg-blue-50 border-blue-200';
748
+ }
749
+ };
750
+ // 解析工具调用结果,如果是JSON字符串则格式化显示
751
+ var formatResult = function (result) {
752
+ if (!result) return result;
661
753
  try {
662
- return decodeURIComponent(encodedContent);
754
+ // 尝试解析为JSON
755
+ var parsed = JSON.parse(result);
756
+ return JSON.stringify(parsed, null, 2);
663
757
  } catch (e) {
664
- console.warn('Failed to decode content:', e);
665
- return encodedContent;
758
+ // 如果不是有效的JSON,直接返回原始字符串
759
+ return result;
666
760
  }
667
- }, [encodedContent]);
668
- return /*#__PURE__*/jsx("span", {
669
- ...props,
670
- children: decodedContent
761
+ };
762
+ return /*#__PURE__*/jsxs("div", {
763
+ className: "funq-tool-call border rounded-lg p-3 mb-3 ".concat(getStateClass()),
764
+ children: [/*#__PURE__*/jsxs("div", {
765
+ className: "flex items-center justify-between cursor-pointer",
766
+ onClick: function () {
767
+ return setIsExpanded(!isExpanded);
768
+ },
769
+ children: [/*#__PURE__*/jsxs("div", {
770
+ className: "flex items-center gap-2",
771
+ children: [getStateIcon(), /*#__PURE__*/jsxs("span", {
772
+ className: "font-medium text-sm",
773
+ children: ["\u5DE5\u5177\u8C03\u7528: ", toolCall.toolCallName]
774
+ }), /*#__PURE__*/jsx("span", {
775
+ className: "text-xs text-muted-foreground",
776
+ children: getStateText()
777
+ })]
778
+ }), /*#__PURE__*/jsxs("div", {
779
+ className: "flex items-center gap-2",
780
+ children: [toolCall.startTime && /*#__PURE__*/jsxs("span", {
781
+ className: "text-xs text-muted-foreground",
782
+ children: ["\u5F00\u59CB: ", new Date(toolCall.startTime).toLocaleTimeString()]
783
+ }), toolCall.endTime && toolCall.executionTime && /*#__PURE__*/jsxs("span", {
784
+ className: "text-xs text-muted-foreground",
785
+ children: ["\u8017\u65F6: ", toolCall.executionTime, "ms"]
786
+ }), /*#__PURE__*/jsx("div", {
787
+ className: "w-4 h-4 text-muted-foreground",
788
+ children: isExpanded ? /*#__PURE__*/jsx("svg", {
789
+ fill: "none",
790
+ stroke: "currentColor",
791
+ viewBox: "0 0 24 24",
792
+ children: /*#__PURE__*/jsx("path", {
793
+ strokeLinecap: "round",
794
+ strokeLinejoin: "round",
795
+ strokeWidth: "2",
796
+ d: "M5 15l7-7 7 7"
797
+ })
798
+ }) : /*#__PURE__*/jsx("svg", {
799
+ fill: "none",
800
+ stroke: "currentColor",
801
+ viewBox: "0 0 24 24",
802
+ children: /*#__PURE__*/jsx("path", {
803
+ strokeLinecap: "round",
804
+ strokeLinejoin: "round",
805
+ strokeWidth: "2",
806
+ d: "M19 9l-7 7-7-7"
807
+ })
808
+ })
809
+ })]
810
+ })]
811
+ }), isExpanded && /*#__PURE__*/jsxs("div", {
812
+ className: "mt-3 pt-3 border-t border-border",
813
+ children: [toolCall.toolCallArgs && /*#__PURE__*/jsxs("div", {
814
+ className: "mb-3",
815
+ children: [/*#__PURE__*/jsx("h4", {
816
+ className: "text-sm font-medium mb-1",
817
+ children: "\u53C2\u6570:"
818
+ }), /*#__PURE__*/jsx("pre", {
819
+ className: "text-xs bg-muted p-2 rounded overflow-x-auto break-words whitespace-pre-wrap",
820
+ children: toolCall.toolCallArgs
821
+ })]
822
+ }), (toolCall.delta || toolCall.state === 'error') && /*#__PURE__*/jsxs("div", {
823
+ children: [/*#__PURE__*/jsx("h4", {
824
+ className: "text-sm font-medium mb-1",
825
+ children: "\u7ED3\u679C:"
826
+ }), /*#__PURE__*/jsx("div", {
827
+ className: "text-sm p-2 rounded ".concat(toolCall.state === 'error' ? 'bg-red-100 text-red-800' : 'bg-muted'),
828
+ children: toolCall.state === 'error' ? /*#__PURE__*/jsx("pre", {
829
+ className: "whitespace-pre-wrap break-words overflow-x-auto",
830
+ children: formatResult(toolCall.delta) || '工具执行出错'
831
+ }) : /*#__PURE__*/jsx("pre", {
832
+ className: "whitespace-pre-wrap break-words overflow-x-auto",
833
+ children: formatResult(toolCall.delta)
834
+ })
835
+ })]
836
+ }), children && /*#__PURE__*/jsx("div", {
837
+ className: "mt-2",
838
+ children: children
839
+ })]
840
+ })]
671
841
  });
672
842
  };
673
843
 
@@ -808,14 +978,14 @@ var PreComponent = function (props) {
808
978
  });
809
979
  };
810
980
  var BuiltInComponents = {
811
- AC_DS_THINK: Think,
981
+ _THINK: Think,
982
+ _TOOL_CALL: ToolCall,
812
983
  pre: PreComponent,
813
984
  code: CodeComponent,
814
985
  p: PComponent,
815
986
  a: AComponent,
816
987
  video: VideoComponent,
817
- audio: AudioComponent,
818
- EncodedContent: EncodedContent
988
+ audio: AudioComponent
819
989
  };
820
990
 
821
991
  var ErrorBoundary = /** @class */function (_super) {
@@ -902,6 +1072,15 @@ function remarkThinkUpdate(content) {
902
1072
  resultContent: resultContent
903
1073
  };
904
1074
  }
1075
+ /**
1076
+ * 转义流式内容中的特殊字符,防止MDX解析错误
1077
+ * @param content 需要转义的内容
1078
+ * @returns 转义后的内容
1079
+ */
1080
+ function escapeContentForStream(content) {
1081
+ if (typeof content !== 'string') return content;
1082
+ return content.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#x27;').replace(/{/g, '&#123;').replace(/}/g, '&#125;');
1083
+ }
905
1084
 
906
1085
  var renderTimer = null;
907
1086
  // 辅助函数:格式化props
@@ -923,12 +1102,11 @@ function formatProps(props) {
923
1102
  }
924
1103
  function renderMdx(mdxContent, scope, registeredComponents) {
925
1104
  return __awaiter(this, void 0, void 0, function () {
926
- var componentTagRegex, usedComponents, match, _registeredComponents, usedComponents_1, usedComponents_1_1, component, vf, XComponent, e_1;
927
- var e_2, _a;
928
- return __generator(this, function (_b) {
929
- switch (_b.label) {
1105
+ var componentTagRegex, usedComponents, match, vf, XComponent;
1106
+ return __generator(this, function (_a) {
1107
+ switch (_a.label) {
930
1108
  case 0:
931
- _b.trys.push([0, 3,, 4]);
1109
+ _a.trys.push([0, 3,, 4]);
932
1110
  renderTimer && clearTimeout(renderTimer);
933
1111
  componentTagRegex = /<([A-Z][a-zA-Z]*)\b/g;
934
1112
  usedComponents = new Set();
@@ -936,25 +1114,6 @@ function renderMdx(mdxContent, scope, registeredComponents) {
936
1114
  while ((match = componentTagRegex.exec(mdxContent)) !== null) {
937
1115
  usedComponents.add(match[1]);
938
1116
  }
939
- _registeredComponents = new Set(Object.keys(registeredComponents));
940
- try {
941
- for (usedComponents_1 = __values(usedComponents), usedComponents_1_1 = usedComponents_1.next(); !usedComponents_1_1.done; usedComponents_1_1 = usedComponents_1.next()) {
942
- component = usedComponents_1_1.value;
943
- if (!_registeredComponents.has(component)) {
944
- throw new Error("Component ".concat(component, " is used but not registered in the components object."));
945
- }
946
- }
947
- } catch (e_2_1) {
948
- e_2 = {
949
- error: e_2_1
950
- };
951
- } finally {
952
- try {
953
- if (usedComponents_1_1 && !usedComponents_1_1.done && (_a = usedComponents_1.return)) _a.call(usedComponents_1);
954
- } finally {
955
- if (e_2) throw e_2.error;
956
- }
957
- }
958
1117
  return [4 /*yield*/, compile(mdxContent, {
959
1118
  outputFormat: "function-body",
960
1119
  remarkPlugins: [[RemarkMath, {
@@ -967,29 +1126,27 @@ function renderMdx(mdxContent, scope, registeredComponents) {
967
1126
  }]]
968
1127
  })];
969
1128
  case 1:
970
- vf = _b.sent();
1129
+ vf = _a.sent();
971
1130
  return [4 /*yield*/, run(vf, __assign(__assign(__assign({}, runtime), scope), {
972
1131
  Fragment: MdxLayout
973
1132
  }))];
974
1133
  case 2:
975
- XComponent = _b.sent().default;
1134
+ XComponent = _a.sent().default;
976
1135
  return [2 /*return*/, /*#__PURE__*/React.createElement(XComponent, {
977
1136
  components: registeredComponents,
978
1137
  scope: scope
979
1138
  })];
980
1139
  case 3:
981
- e_1 = _b.sent();
1140
+ _a.sent();
982
1141
  return [2 /*return*/, new Promise(function (resolve) {
983
1142
  renderTimer = setTimeout(function () {
984
- console.log(e_1, 'e');
985
- console.log(mdxContent, 'mdxContent');
986
1143
  resolve(/*#__PURE__*/React.createElement('div', {
987
1144
  style: {
988
1145
  backgroundColor: 'transparent'
989
1146
  }
990
1147
  }, mdxContent));
991
1148
  clearTimeout(renderTimer); // 清理定时器
992
- }, 1000); // 1秒延迟
1149
+ }, 2000); // 1秒延迟
993
1150
  })];
994
1151
  case 4:
995
1152
  return [2 /*return*/];
@@ -1061,14 +1218,7 @@ function parseComponentRecursively(allComponentHandlers, item, scope) {
1061
1218
  parsedChildren_1 = _a.sent();
1062
1219
  item.children.map(function (item, index) {
1063
1220
  if (item.type === 'text') {
1064
- // 对包含特殊字符的文本进行转义处理,避免MDX解析错误
1065
- var textContent = parsedChildren_1[index];
1066
- if (typeof textContent === 'string' && (textContent.includes('{') || textContent.includes('}'))) {
1067
- // 使用 encodeURIComponent 编码内容,但需要在组件内部解码
1068
- childrenContent_1 += encodeURIComponent(textContent);
1069
- } else {
1070
- childrenContent_1 += textContent;
1071
- }
1221
+ childrenContent_1 += escapeContentForStream(parsedChildren_1[index]); // encodeURIComponent(parsedChildren[index]);
1072
1222
  } else {
1073
1223
  childrenContent_1 += parsedChildren_1[index];
1074
1224
  }
@@ -1153,11 +1303,12 @@ function ReactAIRenderer(_a) {
1153
1303
  var content = _a.content,
1154
1304
  _b = _a.scope,
1155
1305
  scope = _b === void 0 ? {} : _b,
1156
- components = _a.components,
1306
+ _c = _a.components,
1307
+ components = _c === void 0 ? {} : _c,
1157
1308
  children = _a.children,
1158
- _c = _a.componentHandlers,
1159
- componentHandlers = _c === void 0 ? [] : _c;
1160
- content = content || children;
1309
+ _d = _a.componentHandlers,
1310
+ componentHandlers = _d === void 0 ? [] : _d;
1311
+ content = content || children || '';
1161
1312
  var allComponents = __assign(__assign({}, BuiltInComponents), components);
1162
1313
  // 修复:确保 components 是一个对象后再使用 Object.entries
1163
1314
  var allComponentHandlers = __spreadArray(__spreadArray([], __read(components ? Object.entries(components).filter(function (_a) {
@@ -1177,11 +1328,11 @@ function ReactAIRenderer(_a) {
1177
1328
  selfClosing: selfClosing
1178
1329
  };
1179
1330
  }) : []), false), __read(componentHandlers), false);
1180
- var _d = __read(useState(null), 2),
1181
- component = _d[0],
1182
- setComponent = _d[1];
1331
+ var _e = __read(useState(null), 2),
1332
+ component = _e[0],
1333
+ setComponent = _e[1];
1183
1334
  var parser = new MDXStreamingParser(allComponentHandlers);
1184
- var mdxContent = content;
1335
+ var mdxContent = content || '';
1185
1336
  useEffect(function () {
1186
1337
  var parseMDX = function () {
1187
1338
  return __awaiter(_this, void 0, void 0, function () {
@@ -1242,72 +1393,7 @@ function ReactAIRenderer(_a) {
1242
1393
  });
1243
1394
  }
1244
1395
 
1245
- var ToolCall = function (_a) {
1246
- var name = _a.name,
1247
- args = _a.args,
1248
- children = _a.children;
1249
- return /*#__PURE__*/jsxs("div", {
1250
- style: {
1251
- border: '1px solid #e0e0e0',
1252
- borderRadius: '4px',
1253
- margin: '8px 0',
1254
- backgroundColor: '#fafafa'
1255
- },
1256
- children: [/*#__PURE__*/jsxs("div", {
1257
- style: {
1258
- padding: '8px',
1259
- backgroundColor: '#f5f5f5',
1260
- borderBottom: '1px solid #e0e0e0',
1261
- fontWeight: 'bold',
1262
- display: 'flex',
1263
- alignItems: 'center'
1264
- },
1265
- children: [/*#__PURE__*/jsx("span", {
1266
- style: {
1267
- marginRight: '8px'
1268
- },
1269
- children: "\uD83D\uDD27"
1270
- }), /*#__PURE__*/jsxs("span", {
1271
- children: ["\u5DE5\u5177\u8C03\u7528: ", name]
1272
- })]
1273
- }), args && /*#__PURE__*/jsxs("div", {
1274
- style: {
1275
- padding: '8px'
1276
- },
1277
- children: [/*#__PURE__*/jsx("div", {
1278
- style: {
1279
- fontWeight: 'bold',
1280
- marginBottom: '4px'
1281
- },
1282
- children: "\u53C2\u6570:"
1283
- }), /*#__PURE__*/jsx("pre", {
1284
- style: {
1285
- backgroundColor: '#f0f0f0',
1286
- padding: '8px',
1287
- borderRadius: '4px',
1288
- overflowX: 'auto',
1289
- fontSize: '12px'
1290
- },
1291
- children: JSON.stringify(args, null, 2)
1292
- })]
1293
- }), children && /*#__PURE__*/jsxs("div", {
1294
- style: {
1295
- padding: '8px'
1296
- },
1297
- children: [/*#__PURE__*/jsx("div", {
1298
- style: {
1299
- fontWeight: 'bold',
1300
- marginBottom: '4px'
1301
- },
1302
- children: "\u7ED3\u679C:"
1303
- }), /*#__PURE__*/jsx("div", {
1304
- children: children
1305
- })]
1306
- })]
1307
- });
1308
- };
1309
-
1310
1396
  // 导出 MDXStreamingParser 类
1311
1397
 
1312
1398
  export { MDXStreamingParser as M, ReactAIRenderer as R, Think as T, __read as _, __awaiter as a, __generator as b, ToolCall as c };
1313
- //# sourceMappingURL=index-fdaa9757.js.map
1399
+ //# sourceMappingURL=index-b78ff7b5.js.map