netstar-ai-chat 1.1.3 → 1.2.0

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 (290) hide show
  1. package/README.md +72 -42
  2. package/dist/AgentChat/AIMessage.d.ts +3 -468
  3. package/dist/AgentChat/LangchainMessage.d.ts +29 -64
  4. package/dist/AgentChat/Langchain_py_AIMessage_V3.d.ts +117 -0
  5. package/dist/AgentChat/index.vue.d.ts +136 -1
  6. package/dist/ChatPanel/AgentPicker.vue.d.ts +1 -1
  7. package/dist/ChatPanel/MessageRenderer.vue.d.ts +57 -0
  8. package/dist/ChatPanel/SubAgentNode.vue.d.ts +5 -3
  9. package/dist/ChatPanel/ToolCallNode.vue.d.ts +3 -3
  10. package/dist/ChatPanel/ToolRenders/SaveModuleDocsRenderer.vue.d.ts +1 -1
  11. package/dist/ChatPanel/ToolRenders/defaultToolRenderers.d.ts +1 -1
  12. package/dist/ChatPanel/index.vue.d.ts +13 -5
  13. package/dist/{CodeBlockNode-C5YfkOd2.cjs → CodeBlockNode-B0lPtyct.cjs} +1 -1
  14. package/dist/{CodeBlockNode-Bl376Tuq.js → CodeBlockNode-CnaZ3zyB.js} +6 -6
  15. package/dist/{_baseClone-DfLe8fd9.js → _baseClone-7NefrPwN.js} +1 -1
  16. package/dist/{_baseClone-DnuF78sx.cjs → _baseClone-BOcitq6m.cjs} +1 -1
  17. package/dist/{_baseUniq-DvIaM-Ll.js → _baseUniq-CSQ-H4D2.js} +1 -1
  18. package/dist/{_baseUniq-Dcs-spTT.cjs → _baseUniq-CqpmQxqh.cjs} +1 -1
  19. package/dist/abnfDiagram-VRR7QNED-BYRABo_Q.cjs +1 -0
  20. package/dist/{abnfDiagram-VRR7QNED-BZIwESBc.js → abnfDiagram-VRR7QNED-D9U__qNu.js} +19 -19
  21. package/dist/architecture-TIHT7OUA-Bmqcwpw4.js +3 -0
  22. package/dist/architecture-TIHT7OUA-CD5wBac1.cjs +1 -0
  23. package/dist/architectureDiagram-ZJ3FMSHR-CVebim_4.cjs +36 -0
  24. package/dist/{architectureDiagram-ZJ3FMSHR-pJBnYWx2.js → architectureDiagram-ZJ3FMSHR-CmcjwoSX.js} +87 -87
  25. package/dist/{blockDiagram-677ZJIJ3-CMnrPBRA.cjs → blockDiagram-677ZJIJ3-Be_G9lhQ.cjs} +8 -8
  26. package/dist/{blockDiagram-677ZJIJ3-RU9mFIp8.js → blockDiagram-677ZJIJ3-CdDyh7iW.js} +338 -338
  27. package/dist/{c4Diagram-LMCZKHZV-XVBQkiBu.js → c4Diagram-LMCZKHZV-CH8ko4ZC.js} +181 -181
  28. package/dist/{c4Diagram-LMCZKHZV-CupZJT9_.cjs → c4Diagram-LMCZKHZV-CtbAkh79.cjs} +6 -6
  29. package/dist/{channel-B_58s50a.js → channel-BnB95kqx.js} +1 -1
  30. package/dist/channel-CdG42V9d.cjs +1 -0
  31. package/dist/{chunk-32BRIVSS-O-rQI_k2.js → chunk-32BRIVSS-CT33v5on.js} +13 -13
  32. package/dist/{chunk-32BRIVSS-DUxAI9Oa.cjs → chunk-32BRIVSS-DigYn36E.cjs} +1 -1
  33. package/dist/{chunk-52WLFC77-B-_tvcsL.js → chunk-52WLFC77-2RH-0ekb.js} +140 -140
  34. package/dist/{chunk-52WLFC77-SZUA2rNI.cjs → chunk-52WLFC77-DBSW6_kl.cjs} +4 -4
  35. package/dist/{chunk-C7G6YPKG-HH-he6SO.cjs → chunk-C7G6YPKG-BSuHkazO.cjs} +1 -1
  36. package/dist/{chunk-C7G6YPKG-D1CB1CXU.js → chunk-C7G6YPKG-DQxf-Xa1.js} +1 -1
  37. package/dist/{chunk-EX3LRPZG-DsMgdRSQ.js → chunk-EX3LRPZG-BiTMJTUd.js} +159 -159
  38. package/dist/{chunk-EX3LRPZG-DtMEhuOI.cjs → chunk-EX3LRPZG-DsC_McmL.cjs} +5 -5
  39. package/dist/{chunk-FWX5IMBZ-D1zxb7hX.cjs → chunk-FWX5IMBZ-CJoGNJr1.cjs} +1 -1
  40. package/dist/{chunk-FWX5IMBZ-CmuXQilW.js → chunk-FWX5IMBZ-DnOWYjHJ.js} +17 -17
  41. package/dist/chunk-HOUHSVGY-CjxgTQ36.cjs +1 -0
  42. package/dist/{chunk-HOUHSVGY-D13Pk7nF.js → chunk-HOUHSVGY-JI15eS6d.js} +99 -99
  43. package/dist/{chunk-ICXQ74PX-Bq9mKzdP.js → chunk-ICXQ74PX-AB0YYrCz.js} +200 -203
  44. package/dist/chunk-ICXQ74PX-C2LXvuOX.cjs +2 -0
  45. package/dist/{chunk-KEIR6QF5-CNjhxe7N.cjs → chunk-KEIR6QF5-CptWNl3y.cjs} +5 -5
  46. package/dist/{chunk-KEIR6QF5-yJg1YNda.js → chunk-KEIR6QF5-Jxtjc4VW.js} +19 -14
  47. package/dist/{chunk-MOJQB5TN-BOC0rggK.js → chunk-MOJQB5TN-Dntj9mkN.js} +44 -44
  48. package/dist/{chunk-MOJQB5TN-CSjPQYln.cjs → chunk-MOJQB5TN-DxQ0ngzZ.cjs} +4 -4
  49. package/dist/{chunk-OGEWGWER-BYjMhJGb.js → chunk-OGEWGWER-CHi7zWbV.js} +2 -2
  50. package/dist/{chunk-OGEWGWER-Bzj7N4Ii.cjs → chunk-OGEWGWER-CbjcRJ3r.cjs} +1 -1
  51. package/dist/{chunk-PUDLZKDR-C38vl57g.js → chunk-PUDLZKDR-CS3U_4cS.js} +273 -273
  52. package/dist/chunk-PUDLZKDR-DB8WgE52.cjs +156 -0
  53. package/dist/{chunk-Q4XR5HBZ-DwgV8nWo.js → chunk-Q4XR5HBZ-Cj6aNu7P.js} +47 -47
  54. package/dist/{chunk-Q4XR5HBZ-DATOcgxL.cjs → chunk-Q4XR5HBZ-DaCPmvF4.cjs} +5 -5
  55. package/dist/chunk-RYQCIY6F-ChmcJMzX.js +240 -0
  56. package/dist/chunk-RYQCIY6F-DdAm7mOI.cjs +1 -0
  57. package/dist/{chunk-V7JOEXUC-BtPDQ29N.js → chunk-V7JOEXUC-Cxyc-auv.js} +168 -168
  58. package/dist/{chunk-V7JOEXUC-BZ8tO4Um.cjs → chunk-V7JOEXUC-U6Ydcbd7.cjs} +6 -6
  59. package/dist/chunk-VAUOI2AC-5cWRBwiO.js +10 -0
  60. package/dist/chunk-VAUOI2AC-ChXXWnS8.cjs +1 -0
  61. package/dist/chunk-VR4S4FIN-C6Lfkqc-.cjs +1 -0
  62. package/dist/chunk-VR4S4FIN-DmiT7c_4.js +26 -0
  63. package/dist/{chunk-WYO6CB5R-DVUXWnvM.js → chunk-WYO6CB5R-DDiVNnZS.js} +264 -232
  64. package/dist/chunk-WYO6CB5R-DgGAZPU6.cjs +127 -0
  65. package/dist/chunk-XXDRQBXY-D06qZOoL.cjs +1 -0
  66. package/dist/chunk-XXDRQBXY-uYLfFt0V.js +9 -0
  67. package/dist/{chunk-ZGVPDNZ5-Ch-mMgcC.cjs → chunk-ZGVPDNZ5-BhVWFiJ2.cjs} +7 -7
  68. package/dist/{chunk-ZGVPDNZ5-CYGK4FNM.js → chunk-ZGVPDNZ5-vpVwNpxZ.js} +382 -382
  69. package/dist/classDiagram-OUVF2IWQ-C4eAjkxH.js +30 -0
  70. package/dist/classDiagram-OUVF2IWQ-Db8clYmt.cjs +1 -0
  71. package/dist/classDiagram-v2-EOCWNBFH-D261zRUO.js +30 -0
  72. package/dist/classDiagram-v2-EOCWNBFH-Db8clYmt.cjs +1 -0
  73. package/dist/{cose-bilkent-JH36ORCC-DpRqLdKD.js → cose-bilkent-JH36ORCC-OYg86qZi.js} +21 -21
  74. package/dist/cose-bilkent-JH36ORCC-rCM4XH-L.cjs +1 -0
  75. package/dist/cynefin-VYW2F7L2-Dd87z8mS.js +3 -0
  76. package/dist/cynefin-VYW2F7L2-lykB010p.cjs +1 -0
  77. package/dist/{cynefinDiagram-TSTJHNR4-LkTzYNHk.js → cynefinDiagram-TSTJHNR4-BWjDLuTh.js} +41 -41
  78. package/dist/{cynefinDiagram-TSTJHNR4-Ccm1ka2e.cjs → cynefinDiagram-TSTJHNR4-BkS_wtrA.cjs} +1 -1
  79. package/dist/{cytoscape.esm-CjrrPC2e.js → cytoscape.esm-2_5VU6EM.js} +35 -38
  80. package/dist/cytoscape.esm-yf049eLd.cjs +321 -0
  81. package/dist/{dagre-PTzdtelL.js → dagre-BjEXkvEk.js} +5 -5
  82. package/dist/{dagre-CXyc9XfZ.cjs → dagre-CsBlmOuW.cjs} +1 -1
  83. package/dist/{dagre-VKFMJZFB-BTdSraA9.js → dagre-VKFMJZFB-M6JAXH15.js} +45 -43
  84. package/dist/dagre-VKFMJZFB-WhWrlI2l.cjs +4 -0
  85. package/dist/{diagram-FQU43EPY-Nd_0dBIp.js → diagram-FQU43EPY--cJ9UrFx.js} +90 -90
  86. package/dist/{diagram-FQU43EPY-DXRLbyr1.cjs → diagram-FQU43EPY-CqmrQQRo.cjs} +3 -3
  87. package/dist/{diagram-G47NLZAW-C6QidYrt.cjs → diagram-G47NLZAW-C02lK1FA.cjs} +1 -1
  88. package/dist/{diagram-G47NLZAW-DsbgcrAn.js → diagram-G47NLZAW-D6By1xr0.js} +57 -57
  89. package/dist/{diagram-NH7WQ7WH-BIir8UdD.cjs → diagram-NH7WQ7WH-BNrzsOcd.cjs} +1 -1
  90. package/dist/{diagram-NH7WQ7WH-LBvy80o5.js → diagram-NH7WQ7WH-Corf-D4W.js} +23 -23
  91. package/dist/{diagram-OA4YK3LP-B6zIeHZO.cjs → diagram-OA4YK3LP-18F3dOdf.cjs} +3 -3
  92. package/dist/{diagram-OA4YK3LP-wIkZDLSU.js → diagram-OA4YK3LP-BYFD5IwC.js} +37 -37
  93. package/dist/{diagram-WEI45ONY-DuODSE5u.js → diagram-WEI45ONY-R0dgnQK1.js} +27 -27
  94. package/dist/{diagram-WEI45ONY-DoJT44KW.cjs → diagram-WEI45ONY-cD-Up4g4.cjs} +2 -2
  95. package/dist/{dist-v6nlIdy5.js → dist-BDCICxM4.js} +2 -2
  96. package/dist/{dist-CPyTkG8r.cjs → dist-BwfWgJVK.cjs} +2 -2
  97. package/dist/ebnfDiagram-CCIWWBDH-CeqcH_nx.cjs +1 -0
  98. package/dist/{ebnfDiagram-CCIWWBDH-BPnqNNpq.js → ebnfDiagram-CCIWWBDH-D-LQt0VK.js} +18 -18
  99. package/dist/{erDiagram-Q63AITRT-oWnqBAPP.js → erDiagram-Q63AITRT-C3GAIY0f.js} +150 -150
  100. package/dist/{erDiagram-Q63AITRT-Cn4JXzJb.cjs → erDiagram-Q63AITRT-X2RNGOXE.cjs} +6 -6
  101. package/dist/eventmodeling-45OFAUF4-B_ynZkRQ.js +3 -0
  102. package/dist/eventmodeling-45OFAUF4-CM2eQj8O.cjs +1 -0
  103. package/dist/{exports-DwEr4CaV.cjs → exports-DpKiJKdc.cjs} +16 -16
  104. package/dist/{exports-Dinh5Uav.js → exports-DxD_H8QF.js} +954 -976
  105. package/dist/{find-x1vnFfLQ.cjs → find-BxEmWrQ6.cjs} +1 -1
  106. package/dist/{find-ClvQYvkR.js → find-jpUl7auE.js} +2 -2
  107. package/dist/flowDiagram-23GEKE2U-CoLPfQLo.js +17 -0
  108. package/dist/flowDiagram-23GEKE2U-Dlwfo0qV.cjs +1 -0
  109. package/dist/ganttDiagram-NO4QXBWP-B5CW5uPR.cjs +292 -0
  110. package/dist/{ganttDiagram-NO4QXBWP-B8AFbqrz.js → ganttDiagram-NO4QXBWP-bcp9layO.js} +737 -735
  111. package/dist/gitGraph-TEB2WS4Q-Gm9pJli1.cjs +1 -0
  112. package/dist/gitGraph-TEB2WS4Q-_nwCB0SS.js +3 -0
  113. package/dist/{gitGraphDiagram-IHSO6WYX-TXisRU_i.cjs → gitGraphDiagram-IHSO6WYX-DpKBzrV-.cjs} +6 -6
  114. package/dist/{gitGraphDiagram-IHSO6WYX-CpjxCJlh.js → gitGraphDiagram-IHSO6WYX-QCUZyW5e.js} +169 -169
  115. package/dist/{graphlib-k6k9Vm8G.js → graphlib-BB0MKP8u.js} +2 -2
  116. package/dist/graphlib-ClIdtRj9.cjs +1 -0
  117. package/dist/index.cjs +130 -127
  118. package/dist/index.d.ts +3 -2
  119. package/dist/index.mjs +22856 -22134
  120. package/dist/{index2-yTxzTVBu.js → index2-BSr7S0C5.js} +2 -2
  121. package/dist/{index2-CnmK_w-r.cjs → index2-_zHc6SK_.cjs} +1 -1
  122. package/dist/{index3-DrxPRm5U.js → index3-CyGC1was.js} +2 -2
  123. package/dist/{index3-Cra8CIdH.cjs → index3-D_jj1NKp.cjs} +1 -1
  124. package/dist/{index4-CHF714Fw.cjs → index4-BHfGnR2u.cjs} +1 -1
  125. package/dist/{index4-ppvoYsGN.js → index4-D5rsJ0_Z.js} +2 -2
  126. package/dist/{index5-BKQ2Amnn.cjs → index5-BnTHeY1i.cjs} +1 -1
  127. package/dist/{index5-DzVNhT7a.js → index5-Bo_RL0c2.js} +2 -2
  128. package/dist/index6-Cm4WSXqx.cjs +1 -0
  129. package/dist/{index6-8EbawCUX.js → index6-DQjYhTGp.js} +5 -4
  130. package/dist/index7-B77YUge-.js +2 -0
  131. package/dist/index7-DHWai4TM.cjs +1 -0
  132. package/dist/info-DKCQHKI2-D1etQ3oK.js +3 -0
  133. package/dist/info-DKCQHKI2-DxGaDBcM.cjs +1 -0
  134. package/dist/infoDiagram-FWYZ7A6U-CUSeMHvc.cjs +2 -0
  135. package/dist/infoDiagram-FWYZ7A6U-Dlkyygyj.js +20 -0
  136. package/dist/{ishikawaDiagram-FXEZZL3T-DAFpMtyi.cjs → ishikawaDiagram-FXEZZL3T-BdQz8lKG.cjs} +2 -2
  137. package/dist/{ishikawaDiagram-FXEZZL3T-Dldh7OZP.js → ishikawaDiagram-FXEZZL3T-f63Pa_V4.js} +5 -5
  138. package/dist/{journeyDiagram-5HDEW3XC-DWc-P146.js → journeyDiagram-5HDEW3XC-CH7i7jBs.js} +101 -101
  139. package/dist/{journeyDiagram-5HDEW3XC-BoJvuLAJ.cjs → journeyDiagram-5HDEW3XC-DUvZexNx.cjs} +6 -6
  140. package/dist/{kanban-definition-HUTT4EX6-4QNogezI.js → kanban-definition-HUTT4EX6-CYsxErx1.js} +103 -103
  141. package/dist/{kanban-definition-HUTT4EX6-CSpYoE2w.cjs → kanban-definition-HUTT4EX6-CgIhk6Nq.cjs} +24 -24
  142. package/dist/{katex-mzuGQl-k.cjs → katex-B2yUJbSv.cjs} +1 -1
  143. package/dist/{katex-uQfgtQZ-.js → katex-DYYjh8th.js} +1 -1
  144. package/dist/{languageIconExtended-BKBNbfml.js → languageIconExtended-D3NyoQsF.js} +1 -1
  145. package/dist/{line-umMVu17Q.cjs → line-CuOvmG3r.cjs} +1 -1
  146. package/dist/{line-QnKkzT3y.js → line-DDlPSVXI.js} +1 -1
  147. package/dist/{map-Z0MjoLCA.cjs → map-DQa5BmtJ.cjs} +1 -1
  148. package/dist/{map-DjeO4fpf.js → map-DSwjMp08.js} +1 -1
  149. package/dist/{mermaid-parser.core-Bhhg_EMD.js → mermaid-parser.core-C7Y1U2dG.js} +16 -16
  150. package/dist/{mermaid-parser.core-C0weIoPn.cjs → mermaid-parser.core-vu0vFLu5.cjs} +2 -2
  151. package/dist/{mermaid.core-qeaVmjNi.js → mermaid.core-B9txn6LH.js} +209 -209
  152. package/dist/mermaid.core-BY60WVKf.cjs +10 -0
  153. package/dist/{mhchem-DMzgkAws.cjs → mhchem-DN9hxCSV.cjs} +1 -1
  154. package/dist/{mhchem-CGx3NnwF.js → mhchem-DkcK-87v.js} +1 -1
  155. package/dist/{mindmap-definition-LN4V7U3C-BPRHfBFx.cjs → mindmap-definition-LN4V7U3C-CSY7pOww.cjs} +8 -8
  156. package/dist/{mindmap-definition-LN4V7U3C-3kHBPRaO.js → mindmap-definition-LN4V7U3C-D6xLNNgR.js} +114 -114
  157. package/dist/packet-7NZHBO7P-BtzQMhR1.cjs +1 -0
  158. package/dist/packet-7NZHBO7P-Cxh6gUzq.js +3 -0
  159. package/dist/pegDiagram-2B236MQR-BS6oTVU4.cjs +1 -0
  160. package/dist/{pegDiagram-2B236MQR-BlS7jv2X.js → pegDiagram-2B236MQR-nh8oCBKX.js} +20 -20
  161. package/dist/pie-RZYD4A2V-28vJXWmd.js +3 -0
  162. package/dist/pie-RZYD4A2V-DoKVT0Bp.cjs +1 -0
  163. package/dist/{pieDiagram-ENE6RG2P-peGWddZk.cjs → pieDiagram-ENE6RG2P-DSHG7_jm.cjs} +3 -3
  164. package/dist/{pieDiagram-ENE6RG2P-B5uibzAn.js → pieDiagram-ENE6RG2P-NWcPYOXw.js} +23 -23
  165. package/dist/{quadrantDiagram-ABIIQ3AL-el6K_cdK.js → quadrantDiagram-ABIIQ3AL-BfWkMzGv.js} +155 -155
  166. package/dist/{quadrantDiagram-ABIIQ3AL-0axZxxZT.cjs → quadrantDiagram-ABIIQ3AL-CQX2-mVc.cjs} +6 -6
  167. package/dist/radar-I7S5WNFK-BmiEyMYr.cjs +1 -0
  168. package/dist/radar-I7S5WNFK-DAFbJ23a.js +3 -0
  169. package/dist/railroad-3IZDKUUU-Dq8rQgau.cjs +1 -0
  170. package/dist/railroad-3IZDKUUU-cz_uETvX.js +3 -0
  171. package/dist/railroad-abnf-AHOZXSZD-B6zkJ2e_.js +3 -0
  172. package/dist/railroad-abnf-AHOZXSZD-CG1PV0OB.cjs +1 -0
  173. package/dist/railroad-ebnf-EBAXGLYW-BYo_1aGK.cjs +1 -0
  174. package/dist/railroad-ebnf-EBAXGLYW-Ctmy9-Ww.js +3 -0
  175. package/dist/railroad-peg-LSFZ7HO6-AEuVizPb.cjs +1 -0
  176. package/dist/railroad-peg-LSFZ7HO6-CEym5ii9.js +3 -0
  177. package/dist/{railroadDiagram-RFXS5EU6-CCPPrI-t.js → railroadDiagram-RFXS5EU6-96iI9HI1.js} +15 -15
  178. package/dist/railroadDiagram-RFXS5EU6-DliMEhm8.cjs +1 -0
  179. package/dist/{requirementDiagram-TGXJPOKE-CgkIyDji.js → requirementDiagram-TGXJPOKE-CyIh331z.js} +120 -120
  180. package/dist/{requirementDiagram-TGXJPOKE-BYbIrtTk.cjs → requirementDiagram-TGXJPOKE-D5H_p3Ks.cjs} +7 -7
  181. package/dist/{sankeyDiagram-HTMAVEWB-CRbnmmPK.js → sankeyDiagram-HTMAVEWB-CRnHOKWN.js} +76 -76
  182. package/dist/{sankeyDiagram-HTMAVEWB-1N6666do.cjs → sankeyDiagram-HTMAVEWB-DPvIVzkz.cjs} +7 -7
  183. package/dist/{sequenceDiagram-DBY2YBRQ-B0eyTzj-.js → sequenceDiagram-DBY2YBRQ-0tnNLtWM.js} +398 -398
  184. package/dist/{sequenceDiagram-DBY2YBRQ-ouUfS-aJ.cjs → sequenceDiagram-DBY2YBRQ-fRfw1SEy.cjs} +9 -9
  185. package/dist/{shiki-langs-6yxXN7qk.js → shiki-langs-D-LUDCzU.js} +875 -888
  186. package/dist/shiki-langs-Lh5_SPxS.cjs +12 -0
  187. package/dist/{stateDiagram-2N3HPSRC-C-LgZZWO.cjs → stateDiagram-2N3HPSRC-82ch_Shh.cjs} +1 -1
  188. package/dist/{stateDiagram-2N3HPSRC-DE5rAPBU.js → stateDiagram-2N3HPSRC-CrILo1Ob.js} +52 -52
  189. package/dist/stateDiagram-v2-6OUMAXLB-BJ_y8F8h.js +30 -0
  190. package/dist/stateDiagram-v2-6OUMAXLB-DNZRXbnw.cjs +1 -0
  191. package/dist/style.css +1 -1
  192. package/dist/{swimlanes-5IMT3BWC-60brIBR8.js → swimlanes-5IMT3BWC-CXaPZYKa.js} +610 -610
  193. package/dist/swimlanes-5IMT3BWC-DFx8_mh8.cjs +1 -0
  194. package/dist/{swimlanesDiagram-G3AALYLV-DH4TYPXG.js → swimlanesDiagram-G3AALYLV-BzJDvwlH.js} +14 -14
  195. package/dist/swimlanesDiagram-G3AALYLV-DrYu3LGq.cjs +8 -0
  196. package/dist/{timeline-definition-FHXFAJF6-Cb_8gFYP.cjs → timeline-definition-FHXFAJF6-BacHIFDE.cjs} +7 -7
  197. package/dist/{timeline-definition-FHXFAJF6-FkgzuuoZ.js → timeline-definition-FHXFAJF6-Cx6_UT76.js} +219 -219
  198. package/dist/treeView-QDETBFTQ-DNd2QS6G.js +3 -0
  199. package/dist/treeView-QDETBFTQ-sGY_E6sy.cjs +1 -0
  200. package/dist/treemap-6X3UGDF4-4YMo2j3u.cjs +1 -0
  201. package/dist/treemap-6X3UGDF4-C0rfp2is.js +3 -0
  202. package/dist/types/agent-runtime.d.ts +81 -0
  203. package/dist/types/agent.d.ts +100 -30
  204. package/dist/types/history.d.ts +41 -0
  205. package/dist/types/index.d.ts +5 -0
  206. package/dist/types/interrupt.d.ts +42 -0
  207. package/dist/types/message.d.ts +142 -0
  208. package/dist/types/renderer.d.ts +57 -0
  209. package/dist/{vennDiagram-L72KCM5P-DigPDc3M.js → vennDiagram-L72KCM5P-DhoiUsqP.js} +97 -97
  210. package/dist/{vennDiagram-L72KCM5P-DRanJu29.cjs → vennDiagram-L72KCM5P-apGzGOyM.cjs} +7 -7
  211. package/dist/vue-i18n-C7jKL7st.cjs +5 -0
  212. package/dist/{vue-i18n-C_VfkvBa.js → vue-i18n-D3reS2g6.js} +993 -991
  213. package/dist/wardley-OPB4EBWU-B7N7QwfR.js +3 -0
  214. package/dist/wardley-OPB4EBWU-DxpM8Ty5.cjs +1 -0
  215. package/dist/{wardleyDiagram-EHGQE667-ZqPLK5FR.cjs → wardleyDiagram-EHGQE667-CFmF44DD.cjs} +3 -3
  216. package/dist/{wardleyDiagram-EHGQE667-DQE0RgUA.js → wardleyDiagram-EHGQE667-Zc3EuSsM.js} +38 -38
  217. package/dist/{xychartDiagram-FW5EYKEG-9RCD4gzs.cjs → xychartDiagram-FW5EYKEG--ncct-F6.cjs} +6 -6
  218. package/dist/{xychartDiagram-FW5EYKEG-B_EUKZ5E.js → xychartDiagram-FW5EYKEG-rgeLk06Q.js} +142 -142
  219. package/package.json +1 -1
  220. package/dist/abnfDiagram-VRR7QNED-CbMhyWtU.cjs +0 -1
  221. package/dist/architecture-TIHT7OUA-BePVesqR.cjs +0 -1
  222. package/dist/architecture-TIHT7OUA-CdCN4XW2.js +0 -3
  223. package/dist/architectureDiagram-ZJ3FMSHR-DhyGcAG9.cjs +0 -36
  224. package/dist/channel-CftZUi3r.cjs +0 -1
  225. package/dist/chunk-HOUHSVGY-CqEBw5yz.cjs +0 -1
  226. package/dist/chunk-ICXQ74PX-TcRXMN1n.cjs +0 -2
  227. package/dist/chunk-PUDLZKDR-CW0NtNgG.cjs +0 -156
  228. package/dist/chunk-RYQCIY6F-BzgJphK3.js +0 -240
  229. package/dist/chunk-RYQCIY6F-TmRlMIef.cjs +0 -1
  230. package/dist/chunk-VAUOI2AC-3AGHwQI8.cjs +0 -1
  231. package/dist/chunk-VAUOI2AC-D4COVrqB.js +0 -10
  232. package/dist/chunk-VR4S4FIN-BBKjPbG_.js +0 -26
  233. package/dist/chunk-VR4S4FIN-DXfCPsY8.cjs +0 -1
  234. package/dist/chunk-WYO6CB5R-DNtzmu_Z.cjs +0 -127
  235. package/dist/chunk-XXDRQBXY-DWq_A1Wb.js +0 -9
  236. package/dist/chunk-XXDRQBXY-gWcN0uCZ.cjs +0 -1
  237. package/dist/classDiagram-OUVF2IWQ-D5d3Ve3V.cjs +0 -1
  238. package/dist/classDiagram-OUVF2IWQ-fZsVI9E2.js +0 -30
  239. package/dist/classDiagram-v2-EOCWNBFH-C6kEwoL8.js +0 -30
  240. package/dist/classDiagram-v2-EOCWNBFH-D5d3Ve3V.cjs +0 -1
  241. package/dist/cose-bilkent-JH36ORCC-J0CMLAR2.cjs +0 -1
  242. package/dist/cynefin-VYW2F7L2-D56X6uF-.js +0 -3
  243. package/dist/cynefin-VYW2F7L2-DfMKgfBn.cjs +0 -1
  244. package/dist/cytoscape.esm-BJfLlyzE.cjs +0 -321
  245. package/dist/dagre-VKFMJZFB-Ctqi7MfW.cjs +0 -4
  246. package/dist/ebnfDiagram-CCIWWBDH-BVWfIZk7.cjs +0 -1
  247. package/dist/eventmodeling-45OFAUF4-9NJTUpfs.cjs +0 -1
  248. package/dist/eventmodeling-45OFAUF4-DhmcBUQs.js +0 -3
  249. package/dist/flowDiagram-23GEKE2U-BUXacWnP.cjs +0 -1
  250. package/dist/flowDiagram-23GEKE2U-BaBY93fD.js +0 -17
  251. package/dist/ganttDiagram-NO4QXBWP-iuUxsjHH.cjs +0 -292
  252. package/dist/gitGraph-TEB2WS4Q-DQ-Mge2t.cjs +0 -1
  253. package/dist/gitGraph-TEB2WS4Q-DuFCGfar.js +0 -3
  254. package/dist/graphlib-DAeg7Jk0.cjs +0 -1
  255. package/dist/index6-CBReBKoT.cjs +0 -1
  256. package/dist/index7-C5MItTwA.js +0 -7
  257. package/dist/index7-DEgfT5JF.cjs +0 -1
  258. package/dist/info-DKCQHKI2-CVAfu3m_.cjs +0 -1
  259. package/dist/info-DKCQHKI2-X1UEZeu5.js +0 -3
  260. package/dist/infoDiagram-FWYZ7A6U-BQ-pmobf.js +0 -20
  261. package/dist/infoDiagram-FWYZ7A6U-BTUkuUAu.cjs +0 -2
  262. package/dist/mermaid.core-OQ4AmR9-.cjs +0 -10
  263. package/dist/packet-7NZHBO7P-CWI1wkgR.js +0 -3
  264. package/dist/packet-7NZHBO7P-olpQFy19.cjs +0 -1
  265. package/dist/pegDiagram-2B236MQR-5may-nQh.cjs +0 -1
  266. package/dist/pie-RZYD4A2V-CyOF19CW.js +0 -3
  267. package/dist/pie-RZYD4A2V-KV7VmSAP.cjs +0 -1
  268. package/dist/radar-I7S5WNFK-BjTQsjn9.cjs +0 -1
  269. package/dist/radar-I7S5WNFK-DXOk1lH0.js +0 -3
  270. package/dist/railroad-3IZDKUUU-BudmQt4z.js +0 -3
  271. package/dist/railroad-3IZDKUUU-CVKrVFrS.cjs +0 -1
  272. package/dist/railroad-abnf-AHOZXSZD-BEuRVGxN.cjs +0 -1
  273. package/dist/railroad-abnf-AHOZXSZD-Bs1OWkDS.js +0 -3
  274. package/dist/railroad-ebnf-EBAXGLYW-Cih63c2z.cjs +0 -1
  275. package/dist/railroad-ebnf-EBAXGLYW-DN3oF240.js +0 -3
  276. package/dist/railroad-peg-LSFZ7HO6--hTz8Aio.js +0 -3
  277. package/dist/railroad-peg-LSFZ7HO6-DbHn_Dfb.cjs +0 -1
  278. package/dist/railroadDiagram-RFXS5EU6-DI-XxXi4.cjs +0 -1
  279. package/dist/shiki-langs-CgHqCFaJ.cjs +0 -12
  280. package/dist/stateDiagram-v2-6OUMAXLB-BCQHyE7c.cjs +0 -1
  281. package/dist/stateDiagram-v2-6OUMAXLB-DkIz3RiF.js +0 -30
  282. package/dist/swimlanes-5IMT3BWC-CtACnTwN.cjs +0 -1
  283. package/dist/swimlanesDiagram-G3AALYLV-D0jwQqk6.cjs +0 -8
  284. package/dist/treeView-QDETBFTQ-B_LvJjui.cjs +0 -1
  285. package/dist/treeView-QDETBFTQ-WaAklEEa.js +0 -3
  286. package/dist/treemap-6X3UGDF4-BZ8Ptxjo.cjs +0 -1
  287. package/dist/treemap-6X3UGDF4-TbJH_2rS.js +0 -3
  288. package/dist/vue-i18n-3JaSdo8e.cjs +0 -5
  289. package/dist/wardley-OPB4EBWU-B1lggTfF.cjs +0 -1
  290. package/dist/wardley-OPB4EBWU-GZ7F_2Eb.js +0 -3
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @netstar/ai-chat
2
2
 
3
- Vue 3 AI 对话面板组件 — 可复用的智能对话 UI 组件,支持多 Agent 切换、工具调用可视化、人工审批流程。
3
+ Vue 3 AI 对话面板组件 — 可复用的智能对话 UI,支持多 Agent 切换、思考过程可视、工具调用渲染、子智能体调用、人工审批流程。
4
4
 
5
5
  ## 安装
6
6
 
@@ -20,21 +20,20 @@ npm install vue ant-design-vue ant-design-x-vue @ant-design/icons-vue
20
20
  v-model="inputText"
21
21
  v-model:agent-key="currentAgent"
22
22
  @submit="handleSubmit"
23
- @cancel="handleCancel"
24
- @reset="handleReset"
25
23
  />
26
24
  </template>
27
25
 
28
26
  <script setup lang="ts">
29
- import { ChatPanel, type AgentOption } from '@netstar/ai-chat';
27
+ import { ChatPanel, Langchain_py_AIMessage_V3, type AgentOption } from '@netstar/ai-chat';
30
28
  import '@netstar/ai-chat/style.css';
31
29
 
30
+ const agent = new Langchain_py_AIMessage_V3({
31
+ endpoint: 'http://localhost:8000/langgraph/stream',
32
+ historyEndpoint: 'http://localhost:8000/history',
33
+ });
34
+
32
35
  const agents: AgentOption[] = [
33
- {
34
- key: 'assistant',
35
- label: '通用助手',
36
- agent: myAgentInstance,
37
- },
36
+ { key: 'assistant', label: '通用助手', agent },
38
37
  ];
39
38
 
40
39
  const roles = {
@@ -48,41 +47,49 @@ npm install vue ant-design-vue ant-design-x-vue @ant-design/icons-vue
48
47
 
49
48
  ### AgentRuntime 接口
50
49
 
51
- ChatPanel 通过 `AgentRuntime` 接口与具体 AI 后端解耦。任何实现了该接口的对象均可作为 Agent 传入:
52
-
53
- ```typescript
54
- import type { AgentRuntime } from '@netstar/ai-chat';
55
-
56
- class MyAgent implements AgentRuntime {
57
- async ask(query: string) {
58
- /* SSE 流式请求 */
59
- }
60
- stop() {
61
- /* 中止请求 */
62
- }
63
- reset() {
64
- /* 清空历史 */
65
- }
66
- on(event, handler) {
67
- /* 注册事件 */
68
- }
69
- off(event, handler) {
70
- /* 移除事件 */
71
- }
72
- // ...
73
- }
50
+ ChatPanel 通过 `AgentRuntime` 接口与 AI 后端解耦,支持多种后端实现:
51
+
52
+ | 实现 | 说明 |
53
+ |---|---|
54
+ | `Langchain_py_AIMessage_V3` | **推荐** — LangGraph Python V3 SSE 流式接口,支持思考过程、子智能体 |
55
+ | `Langchain_py_AIMessage` | LangGraph Python V1/V2 SSE 流式接口 |
56
+ | `AI_SDK_AIMessage` | Vercel AI SDK 前端 Agent |
57
+ | `AI_SDK_Save_AIMessage` | Vercel AI SDK + 服务端历史持久化 |
58
+ | `Dify_SDK_AIMessage` | Dify 平台 API |
59
+
60
+ ### 消息渲染(V3 blocks)
61
+
62
+ V3 Agent 通过 `MessageBlock[]` 描述消息的完整生命周期,ChatPanel 自动按阶段渲染:
63
+
74
64
  ```
65
+ 💡 思考:需要调用子智能体计算...
66
+ ┌─ general-purpose ─ 子代理 ──┐
67
+ │ 💡 思考:解析表达式... │
68
+ │ ┌─ calculator ──────────────┐│
69
+ │ │ input: 10+10 output: 20 ││
70
+ │ └───────────────────────────┘│
71
+ │ 结果为 20 │
72
+ └───────────────────────────────┘
73
+ 子智能体返回结果 20
74
+ 10 + 10 = **20**
75
+ ```
76
+
77
+ - **ReasoningBlock** — 思考/推理内容,折叠在思考容器内
78
+ - **TextBlock** — 回复文本
79
+ - **ToolCallBlock** — 工具调用节点,渲染为 `ToolCallNode`
80
+ - **subAgentBlocks** — 子智能体的完整消息流,渲染为 `SubAgentNode`
75
81
 
76
82
  ### 工具调用可视化
77
83
 
78
- Agent 在流式响应中触发工具调用时,ChatPanel 会自动渲染 `ToolCallNode` 组件展示工具的执行状态。可通过 `toolRenderers` 自定义特定工具的渲染组件。
84
+ 通过 `toolRenderers` 为特定工具名提供自定义渲染组件,未匹配的工具回退到 `ToolCallNode`。
79
85
 
80
- ### 人工审批 (Human-in-the-Loop)
86
+ ### 子智能体
81
87
 
82
- 实现了 `ExtendedAgentRuntime` Agent 支持中断/审批流程:
88
+ V3 Agent 调用 `task` 工具时,ChatPanel 渲染 `SubAgentNode` 组件展示子智能体的完整推理过程,包括其思考内容、工具调用和输出。
83
89
 
84
- - 工具调用需要审批时,ChatPanel 自动显示审批 UI
85
- - 支持批准、拒绝、修改后批准三种决策
90
+ ### 人工审批 (Human-in-the-Loop)
91
+
92
+ 实现了 `ExtendedAgentRuntime` 的 Agent 支持中断/审批流程,支持批准、拒绝、修改后批准三种决策。
86
93
 
87
94
  ## Props
88
95
 
@@ -101,11 +108,34 @@ class MyAgent implements AgentRuntime {
101
108
 
102
109
  ## 导出
103
110
 
104
- - **ChatPanel** — 主对话面板组件
105
- - **AgentPicker** — Agent 选择器组件
106
- - **ToolCallNode** — 工具调用节点组件
107
- - **StreamMarkdown** — 流式 Markdown 渲染组件
108
- - **类型**完整的 TypeScript 类型定义
111
+ ### 组件
112
+
113
+ - **ChatPanel** — 主对话面板
114
+ - **AgentChat** — Agent 对话容器
115
+ - **AgentPicker**Agent 选择器
116
+ - **ToolCallNode** — 工具调用时间线节点
117
+ - **SubAgentNode** — 子智能体渲染节点
118
+ - **StreamMarkdown** — 流式 Markdown 渲染
119
+ - **ThinkNode** — 思考内容渲染节点
120
+ - **WriteTodosTopPanel** — 待办面板
121
+ - **SaveModuleDocsRenderer** — 文档保存渲染器
122
+
123
+ ### Agent 运行时
124
+
125
+ - **Langchain_py_AIMessage_V3** — LangGraph V3 SSE(推荐)
126
+ - **Langchain_py_AIMessage** — LangGraph V1/V2 SSE
127
+ - **AI_SDK_AIMessage** — Vercel AI SDK
128
+ - **AI_SDK_Save_AIMessage** — Vercel AI SDK + 历史持久化
129
+ - **Dify_SDK_AIMessage** — Dify 平台
130
+
131
+ ### 工具函数
132
+
133
+ - `convertHistoryRecord` / `convertConversationDetail` — 历史记录转换
134
+ - `extractTextContent` / `parseOpenAIAssistantToolCalls` — 消息解析
135
+
136
+ ### 类型
137
+
138
+ 所有类型通过 `@netstar/ai-chat` 统一导出,包括 `ChatMessage`、`MessageBlock`、`AgentRuntime`、`ExtendedAgentRuntime`、`ToolCallEvent`、`ToolTimelineItem` 等。
109
139
 
110
140
  ## License
111
141
 
@@ -1,469 +1,4 @@
1
- export type DecisionType = import('./LangchainMessage').DecisionType;
2
- export type InterruptEvent = import('./LangchainMessage').InterruptEvent;
3
- export type ResumeDecision = import('./LangchainMessage').ResumeDecision;
4
- export type CreateAgentDecision = import('./LangchainMessage').CreateAgentDecision;
5
- export type AnyResumeDecision = import('./LangchainMessage').AnyResumeDecision;
6
- /** 消息发送者角色 */
7
- export type ChatRole = 'ai' | 'user';
8
- /** 工具调用生命周期状态 */
9
- export type ToolCallStatus = 'error' | 'running' | 'success' | 'waiting';
10
- /**
11
- * Agent 层抛出的原始工具调用事件。
12
- * - `running`:工具已被调用,入参已知,等待执行结果。
13
- * - `success`:工具执行成功,output 为返回值。
14
- * - `error` :工具执行失败,error 为错误描述。
15
- */
16
- export interface ToolCallEvent {
17
- /** 审批配置(status === 'waiting' 时存在,来自中断事件) */
18
- approvalConfig?: {
19
- /** 允许的决策类型 */
20
- allowedDecisions: import('./LangchainMessage').DecisionType[];
21
- /** 操作描述 */
22
- description: string;
23
- /** 中断事件 ID */
24
- interruptId: string;
25
- };
26
- /** 工具执行耗时(毫秒),status 变为终态后才有值 */
27
- durationMs?: number;
28
- /** 错误信息(status === 'error' 时存在) */
29
- error?: string;
30
- /** 调用入参(任意结构,由具体工具定义) */
31
- input?: unknown;
32
- /** 调用输出(status === 'success' 时存在) */
33
- output?: unknown;
34
- /** 当前状态 */
35
- status: ToolCallStatus;
36
- /** 所处轮次序号(0-based),多步 Agent 循环时有值 */
37
- stepNumber?: number;
38
- /** 事件触发时的 Unix 时间戳(毫秒) */
39
- timestamp: number;
40
- /** 友好展示标题(优先于 toolName 展示,可选) */
41
- title?: string;
42
- /** 本次工具调用的唯一 ID(由模型分配) */
43
- toolCallId: string;
44
- /** 工具名称(程序标识符) */
45
- toolName: string;
46
- }
47
- /** 连续文本段,指向宿主消息 `content` 的字符区间 `[start, end)`.
48
- * `end === -1` 表示延伸到 `content` 末尾(流式尚未结束时使用)。
49
- */
50
- export interface TextSegment {
51
- /** 结束字符索引(不包含,-1 表示到消息末尾) */
52
- end: number;
53
- /** 起始字符索引(包含) */
54
- start: number;
55
- type: 'text';
56
- }
57
- /** 工具调用占位段,关联一次具体的工具调用 */
58
- export interface ToolSegment {
59
- toolCallId: string;
60
- type: 'tool';
61
- }
62
- /** 单个附件信息 */
63
- export interface AttachmentItem {
64
- /** 附件唯一 ID(上传后由后端返回) */
65
- id: string;
66
- /** 文件名(含扩展名) */
67
- name: string;
68
- /** 文件大小(字节) */
69
- size: number;
70
- /** 文件 MIME 类型 */
71
- type: string;
72
- /** 可访问的预览/下载 URL(可选) */
73
- url?: string;
74
- }
75
- /** 附件上传状态 */
76
- export type AttachmentStatus = 'done' | 'error' | 'uploading';
77
- /** 附件内容段,描述消息中携带的附件集合 */
78
- export interface AttachmentSegment {
79
- attachments: AttachmentItem[];
80
- type: 'attachment';
81
- }
82
- /** 消息内容段(文本段 | 工具调用段 | 附件段) */
83
- export type ContentSegment = AttachmentSegment | TextSegment | ToolSegment;
84
- /**
85
- * 工具调用时间线中的单条记录。
86
- * 由原始 ToolCallEvent 整合而来,包含截断后的预览字符串,
87
- * 可直接供 ChatPanel 渲染工具调用节点。
88
- */
89
- export interface ToolTimelineItem {
90
- /**
91
- * 审批配置(status === 'waiting' 时存在)。
92
- * 当工具调用需要人工审批时,存储审批相关的配置信息。
93
- */
94
- approvalConfig?: {
95
- /** 允许的决策类型 */
96
- allowedDecisions: import('./LangchainMessage').DecisionType[];
97
- /** 入参对象 */
98
- args: Record<string, unknown>;
99
- /** 操作描述 */
100
- description: string;
101
- /** 编辑内容(edit 审批时使用) */
102
- editContent: string;
103
- /** 中断事件 ID */
104
- interruptId: string;
105
- };
106
- /** 工具执行耗时(毫秒) */
107
- durationMs?: number;
108
- /** 原始错误(供特定工具自定义渲染使用) */
109
- error?: string;
110
- /** 原始入参(供特定工具自定义渲染使用) */
111
- input?: unknown;
112
- /** 入参预览文本(已截断) */
113
- inputPreview?: string;
114
- /** 原始输出(供特定工具自定义渲染使用) */
115
- output?: unknown;
116
- /**
117
- * 结果预览文本(已截断)。
118
- * status === 'error' 时为错误信息,success 时为输出内容。
119
- */
120
- resultPreview?: string;
121
- /** 调用发起时间(ms since epoch) */
122
- startedAt: number;
123
- status: ToolCallStatus;
124
- /** 所处步骤序号(0-based) */
125
- stepNumber?: number;
126
- /** 友好展示标题 */
127
- title?: string;
128
- toolCallId: string;
129
- toolName: string;
130
- }
131
- /**
132
- * ChatPanel 内部维护的消息结构。
133
- * - 用户消息仅含 role / key / content。
134
- * - AI 消息在流式输出时 loading 为 true,content 逐字追加;
135
- * 如有工具调用,toolTimeline 和 segments 同步更新。
136
- */
137
- export interface ChatMessage {
138
- /**
139
- * 消息正文(纯文本或 Markdown 字符串)。
140
- * AI 消息在流式输出时逐字追加;工具调用不计入此字段。
141
- */
142
- content: string;
143
- /** 消息唯一标识(渲染 key) */
144
- key: string;
145
- /** 消息是否正在加载(流式输出尚未结束) */
146
- loading?: boolean;
147
- /** 消息角色 */
148
- role: ChatRole;
149
- /**
150
- * 内容段列表,描述文本与工具调用的交叉顺序。
151
- * 无工具调用时为空,全部内容退化为单一文本段。
152
- */
153
- segments?: ContentSegment[];
154
- /** 工具调用时间线(AI 消息专用,用于渲染工具调用节点) */
155
- toolTimeline?: ToolTimelineItem[];
156
- }
157
- /** 已将字符范围解析为实际文本的渲染段 */
158
- export interface ResolvedTextSegment {
159
- /** 已切片的文本内容,可直接传给 StreamMarkdown */
160
- text: string;
161
- type: 'text';
162
- }
163
- /** 已解析的工具调用渲染段 */
164
- export interface ResolvedToolSegment {
165
- toolCallId: string;
166
- type: 'tool';
167
- }
168
- /** 已解析的附件渲染段 */
169
- export interface ResolvedAttachmentSegment {
170
- attachments: AttachmentItem[];
171
- type: 'attachment';
172
- }
173
- /** 可直接供模板 v-for 消费的渲染段联合类型 */
174
- export type ResolvedSegment = ResolvedAttachmentSegment | ResolvedTextSegment | ResolvedToolSegment;
175
- /**
176
- * 历史会话摘要条目,用于侧边栏列表展示。
177
- * 与具体后端(Dify / 自研)无关,由 Agent 层负责适配。
178
- */
179
- export interface ConversationSummary {
180
- /** 会话创建时间(ms since epoch,可选) */
181
- createdAt?: number;
182
- /** 会话唯一 ID */
183
- id: string;
184
- /** 会话标题(可能由用户命名或由模型自动生成) */
185
- title: string;
186
- /** 会话最后更新时间(ms since epoch,可选) */
187
- updatedAt?: number;
188
- }
189
- /** 历史会话列表响应 */
190
- export interface ConversationListResult {
191
- /** 是否还有更多分页数据 */
192
- hasMore: boolean;
193
- /** 本页会话摘要列表 */
194
- items: ConversationSummary[];
195
- /**
196
- * 用于加载下一页的游标(通常为末条记录 ID)。
197
- * `hasMore === false` 时可忽略。
198
- */
199
- nextCursor?: string;
200
- }
201
- /**
202
- * 单条原始消息记录(后端返回的最小结构)。
203
- * 与具体后端无关,由 Agent 层负责适配。
204
- */
205
- export interface HistoryMessageRecord {
206
- /** AI 回复文本(Markdown) */
207
- answer: string;
208
- /** 所属会话 ID */
209
- conversationId: string;
210
- /** 消息创建时间(ms since epoch,可选) */
211
- createdAt?: number;
212
- /** 原始消息 ID */
213
- id: string;
214
- /** 用户问题文本 */
215
- query: string;
216
- }
217
- /** 单条历史对话详情响应 */
218
- export interface ConversationDetailResult {
219
- /** 会话 ID */
220
- conversationId: string;
221
- /** 是否还有更多历史消息(分页加载时使用) */
222
- hasMore: boolean;
223
- /** 用于加载更多的游标(通常为首条记录 ID) */
224
- nextCursor?: string;
225
- /** 原始消息记录列表(按时间升序) */
226
- records: HistoryMessageRecord[];
227
- /** 对话标题 */
228
- title: string;
229
- }
230
- /**
231
- * 将单条 `HistoryMessageRecord` 转换为 ChatPanel 所需的一对消息(用户 + AI)。
232
- *
233
- * 转换规则:
234
- * - `record.query` → `ChatMessage { role: 'user', content: query }`
235
- * - `record.answer` → `ChatMessage { role: 'ai', content: answer }`
236
- *
237
- * @param record 单条原始历史消息
238
- * @param keyPrefix 生成唯一 key 的前缀(通常传 record.id)
239
- */
240
- export type HistoryRecordConverter = (record: HistoryMessageRecord, keyPrefix: string) => [userMsg: ChatMessage, aiMsg: ChatMessage];
241
- /**
242
- * 将完整 `ConversationDetailResult` 转换为可直接传入 ChatPanel
243
- * `initialMessages` prop 的 `ChatMessage[]` 数组(按时间升序)。
244
- */
245
- export type ConversationDetailConverter = (detail: ConversationDetailResult) => ChatMessage[];
246
- /**
247
- * `replyChange` 事件处理器。
248
- * @param delta 本次新增的文本片段(流式增量)
249
- * @param allReply 截至目前累积的完整回复内容
250
- */
251
- export type ReplyChangeHandler = (delta: string, allReply: string) => void;
252
- /** `stop` 事件处理器(Agent 主动停止或被中止时触发) */
253
- export type StopHandler = () => void;
254
- /** `toolCall` 事件处理器 */
255
- export type ToolCallHandler = (event: ToolCallEvent) => void;
256
- /** `interrupt` 事件处理器(工具调用需要审批时触发) */
257
- export type InterruptHandler = (event: import('./LangchainMessage').InterruptEvent) => void;
258
- /** Agent 可透传给上层的事件名 */
259
- export type AgentEventName = 'interrupt' | 'replyChange' | 'stop' | 'toolCall';
260
- /** Agent 事件透传载荷 */
261
- export type AgentEventPayload = {
262
- agentKey: string;
263
- args: [];
264
- event: 'stop';
265
- } | {
266
- agentKey: string;
267
- args: [event: import('./LangchainMessage').InterruptEvent];
268
- event: 'interrupt';
269
- } | {
270
- agentKey: string;
271
- args: [event: ToolCallEvent];
272
- event: 'toolCall';
273
- } | {
274
- agentKey: string;
275
- args: [reply: string, allReply: string];
276
- event: 'replyChange';
277
- };
278
- /** Agent 事件透传回调 */
279
- export type AgentEventCallback = (payload: AgentEventPayload) => void;
280
- /**
281
- * Agent 运行时接口。
282
- *
283
- * ChatPanel 通过此接口与具体 AI Agent 完全解耦:
284
- * 任何实现了该接口的对象均可作为 Agent 传入 ChatPanel。
285
- *
286
- * 典型实现:`ToolLoopAgentWapper`(见 wrapAgent.ts)
287
- */
288
- export interface AgentRuntime {
289
- /**
290
- * 向 Agent 提交用户问题并等待本轮回复完成。
291
- * 流式文本内容通过 `replyChange` 事件推送,
292
- * 工具调用事件通过 `toolCall` 事件推送。
293
- * Promise resolve 表示本轮通信结束(成功或被中止)。
294
- */
295
- ask(query: string): Promise<unknown>;
296
- /**
297
- * 获取指定会话的历史消息详情,并直接返回可渲染的消息列表。
298
- *
299
- * 实现方负责将后端原始数据(结构因各后端而异)适配为 `ChatMessage[]`,
300
- * 每条历史问答通常展开为 `[userMsg, aiMsg]` 两条记录,按时间升序排列。
301
- *
302
- * @param conversationId 目标会话 ID
303
- * @param cursor 分页游标;首次加载时传 `undefined`,
304
- * 后续翻页传上一次响应附带的游标值。
305
- * @returns 可直接传入 ChatPanel `initialMessages` prop 的消息数组
306
- */
307
- getConversationDetail(conversationId: string, cursor?: string): Promise<ChatMessage[]>;
308
- /**
309
- * 获取历史会话列表(分页)。
310
- *
311
- * @param cursor 分页游标;首次加载时传 `undefined`,
312
- * 后续翻页传上一次响应的 `nextCursor`。
313
- * @returns 会话摘要列表及分页信息
314
- */
315
- listConversations(cursor?: string): Promise<ConversationListResult>;
316
- /** 移除事件监听器 */
317
- off(event: 'replyChange', handler: ReplyChangeHandler): void;
318
- off(event: 'stop', handler: StopHandler): void;
319
- off(event: 'toolCall', handler: ToolCallHandler): void;
320
- /** 注册事件监听器 */
321
- on(event: 'replyChange', handler: ReplyChangeHandler): void;
322
- on(event: 'stop', handler: StopHandler): void;
323
- on(event: 'toolCall', handler: ToolCallHandler): void;
324
- /** 清空 Agent 内部的会话历史(不影响 ChatPanel 的消息列表) */
325
- reset(): void;
326
- /** 中止当前正在进行的请求,并触发 `stop` 事件 */
327
- stop(): void;
328
- /**
329
- * 是否支持历史会话(可选)。
330
- * 实现方根据后端配置判断,例如检查 historyEndpoint 是否已设置。
331
- * 未实现时默认视为不支持历史功能。
332
- */
333
- supportsHistory?(): boolean;
334
- /**
335
- * 上传附件文件(可选)。
336
- * 当实现方不支持附件功能时,返回 `undefined` 或抛出错误。
337
- * @returns 上传后的附件信息(含后端返回的 ID)
338
- */
339
- uploadFile?(file: File): Promise<AttachmentItem>;
340
- }
341
- /**
342
- * 携带初始上下文注入能力的扩展 Agent 接口(可选实现)。
343
- * 用于在正式对话前向 Agent 注入系统级背景信息,
344
- * 如用户画像、会话元数据等。
345
- */
346
- export interface ExtendedAgentRuntime extends AgentRuntime {
347
- /** 追加一条初始用户上下文(不计入对话历史展示) */
348
- addInitialUserContext(context: string): void;
349
- /** 清除全部初始用户上下文 */
350
- clearInitialUserContexts(): void;
351
- /** 移除中断事件监听器 */
352
- offInterrupt(handler: InterruptHandler): void;
353
- /** 注册中断事件监听器 */
354
- onInterrupt(handler: InterruptHandler): void;
355
- /**
356
- * 对中断工具调用做出决策后,恢复 SSE 流。
357
- * 调用方统一传递 ResumeDecision[],内部按 resumeMode 转换为对应后端格式。
358
- */
359
- resume(decisions: import('./LangchainMessage').ResumeDecision[]): Promise<void>;
360
- /** 覆盖全部初始用户上下文 */
361
- setInitialUserContexts(contexts: string[]): void;
362
- }
363
- /**
364
- * 传入 ChatPanel `agents` prop 的单个配置项。
365
- * 支持多 Agent 切换时,每个 Agent 对应一条记录。
366
- */
367
- export interface AgentOption {
368
- /** Agent 运行时实例 */
369
- agent: AgentRuntime;
370
- /** Sender footer 中的扩展控件(可选),切换 Agent 时自动替换 */
371
- footerControls?: FooterControl[];
372
- /** 用于唯一标识此 Agent,也作为下拉选项的 value */
373
- key: string;
374
- /** 下拉选择器中展示的友好名称 */
375
- label: string;
376
- /**
377
- * 工具名称 → 自定义渲染组件(可选)。
378
- *
379
- * 当指定的工具名出现时,ChatPanel 会使用此处配置的组件替换默认
380
- * `ToolCallNode`,实现工具级别的自定义 UI。
381
- * 未配置的工具名仍回退到默认 `ToolCallNode`。
382
- *
383
- * 组件须满足 `ToolRendererProps` props 与 `ToolRendererEmits` emits 约定。
384
- */
385
- toolRenderers?: ToolRendererMap;
386
- }
387
- /** Sender footer 扩展控件 */
388
- export interface FooterControl {
389
- /** Vue 组件定义,ChatPanel 会注入 props: agent, agentOption, disabled, ...props */
390
- component: import('vue').Component;
391
- /** 唯一标识(v-for key) */
392
- key: string;
393
- /** 透传给组件的额外 props(会与 agent/agentOption/disabled 合并) */
394
- props?: Record<string, unknown>;
395
- }
396
- /**
397
- * 将任意 payload 序列化为截断后的预览字符串。
398
- * - `string` → 直接使用
399
- * - `object / array` → JSON.stringify
400
- * - 其他 → String()
401
- * - 超出 `maxLength` 时截断并追加 "…"
402
- */
403
- export type PayloadPreviewFormatter = (payload: unknown, maxLength?: number) => string;
404
- /**
405
- * 自定义工具渲染组件的 props 约定。
406
- *
407
- * 与 `ToolCallNode` 保持完全一致,以便消费方可以直接以相同 prop 接口
408
- * 替换默认渲染组件,也可以将 `ToolCallNode` 作为基础组件复用。
409
- */
410
- export interface ToolRendererProps {
411
- /** 当前节点是否已展开详情 */
412
- expanded: boolean;
413
- /** 审批操作是否正在处理中(应据此禁用按钮) */
414
- resolving?: boolean;
415
- /** 工具在本轮对话中的步骤序号(0-based,可选) */
416
- stepNumber?: number;
417
- /** 工具调用时间线条目,包含状态、入参、输出等完整上下文 */
418
- tool: ToolTimelineItem;
419
- }
420
- /**
421
- * 自定义工具渲染组件的 emits 约定。
422
- *
423
- * 组件内部无需关心决策如何提交,只需 emit 对应事件,
424
- * ChatPanel 会统一处理并调用 Agent 的 resume 方法。
425
- */
426
- export interface ToolRendererEmits {
427
- /** 批准工具操作;actionName 为工具名称或空字符串(由 ChatPanel 自动推断) */
428
- approve: (actionName: string) => void;
429
- /** 提交修改后批准;editedContent 为修改后的内容 */
430
- edit: (actionName: string, editedContent: string) => void;
431
- /** 拒绝工具操作 */
432
- reject: (actionName: string) => void;
433
- /** 切换展开/折叠详情面板 */
434
- toggle: () => void;
435
- }
436
- /**
437
- * 工具名称 → 自定义渲染组件的映射表。
438
- *
439
- * key 为 `ToolTimelineItem.toolName`,value 为 Vue 组件定义。
440
- * 组件应满足 `ToolRendererProps` & `ToolRendererEmits` 约定。
441
- *
442
- * @example
443
- * ```ts
444
- * const toolRenderers: ToolRendererMap = {
445
- * search_web: SearchWebToolRenderer,
446
- * run_code: CodeExecutionRenderer,
447
- * };
448
- * ```
449
- */
450
- export type ToolRendererMap = Record<string, import('vue').Component>;
451
- /**
452
- * 将 Unix 时间戳(毫秒)格式化为本地时间字符串,
453
- * 用于工具调用时间线的时间展示。
454
- */
455
- export type TimestampFormatter = (timestamp: number) => string;
456
- /**
457
- * 将耗时(毫秒)格式化为可读字符串。
458
- * 例:120 → "120ms",1500 → "1.5s",12000 → "12s"
459
- */
460
- export type DurationFormatter = (durationMs: number) => string;
461
- /**
462
- * 将 `ChatMessage` 的 `segments` 解析为可直接用于模板渲染的段列表。
463
- * - 若消息没有 `segments`(无工具调用),退化为单一 `ResolvedTextSegment`。
464
- * - `TextSegment` 的字符范围会被切片为实际文本。
465
- */
466
- export type SegmentResolver = (message: ChatMessage) => ResolvedSegment[];
1
+ export type { AgentEventCallback, AgentEventName, AgentEventPayload, AgentOption, AgentRuntime, AnyResumeDecision, AttachmentItem, AttachmentSegment, AttachmentStatus, ChatMessage, ChatRole, ContentSegment, ConversationDetailConverter, ConversationDetailResult, ConversationListResult, ConversationSummary, CreateAgentDecision, DecisionType, DurationFormatter, ExtendedAgentRuntime, FooterControl, HistoryMessageRecord, HistoryRecordConverter, InterruptEvent, InterruptHandler, MessageBlock, PayloadPreviewFormatter, ReplyChangeHandler, ResolvedAttachmentSegment, ResolvedSegment, ResolvedTextSegment, ResolvedToolSegment, ResumeDecision, SegmentResolver, StopHandler, TextSegment, TimestampFormatter, ToolCallEvent, ToolCallHandler, ToolCallStatus, ToolRendererEmits, ToolRendererMap, ToolRendererProps, ToolSegment, ToolTimelineItem, } from '../types/index';
467
2
  /**
468
3
  * 将单条 `HistoryMessageRecord` 转换为一对 `ChatMessage`(用户 + AI)。
469
4
  *
@@ -476,7 +11,7 @@ export type SegmentResolver = (message: ChatMessage) => ResolvedSegment[];
476
11
  * const [userMsg, aiMsg] = convertHistoryRecord(record, record.id);
477
12
  * ```
478
13
  */
479
- export declare const convertHistoryRecord: HistoryRecordConverter;
14
+ export declare const convertHistoryRecord: import('../types/index').HistoryRecordConverter;
480
15
  /**
481
16
  * 将完整 `ConversationDetailResult` 转换为 `ChatMessage[]`,
482
17
  * 可直接传入 ChatPanel 的 `initialMessages` prop。
@@ -492,4 +27,4 @@ export declare const convertHistoryRecord: HistoryRecordConverter;
492
27
  * // <ChatPanel :initial-messages="messages" ... />
493
28
  * ```
494
29
  */
495
- export declare const convertConversationDetail: ConversationDetailConverter;
30
+ export declare const convertConversationDetail: import('../types/index').ConversationDetailConverter;