@huyooo/ai-chat-frontend-react 0.2.45 → 0.3.6

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 (188) hide show
  1. package/dist/adapter.d.ts +58 -0
  2. package/dist/adapter.d.ts.map +1 -0
  3. package/dist/components/ChatPanel.d.ts +71 -0
  4. package/dist/components/ChatPanel.d.ts.map +1 -0
  5. package/dist/components/common/ConfirmDialog.d.ts +27 -0
  6. package/dist/components/common/ConfirmDialog.d.ts.map +1 -0
  7. package/dist/components/common/CopyButton.d.ts +15 -0
  8. package/dist/components/common/CopyButton.d.ts.map +1 -0
  9. package/dist/components/common/IndexingSettings.d.ts +3 -0
  10. package/dist/components/common/IndexingSettings.d.ts.map +1 -0
  11. package/dist/components/common/Toast.d.ts +12 -0
  12. package/dist/components/common/Toast.d.ts.map +1 -0
  13. package/dist/components/common/ToggleSwitch.d.ts +9 -0
  14. package/dist/components/common/ToggleSwitch.d.ts.map +1 -0
  15. package/dist/components/header/ChatHeader.d.ts +42 -0
  16. package/dist/components/header/ChatHeader.d.ts.map +1 -0
  17. package/dist/components/input/AtFilePicker.d.ts +16 -0
  18. package/dist/components/input/AtFilePicker.d.ts.map +1 -0
  19. package/dist/components/input/ChatInput.d.ts +49 -0
  20. package/dist/components/input/ChatInput.d.ts.map +1 -0
  21. package/dist/components/input/DropdownSelector.d.ts +46 -0
  22. package/dist/components/input/DropdownSelector.d.ts.map +1 -0
  23. package/dist/components/input/ImagePreviewModal.d.ts +11 -0
  24. package/dist/components/input/ImagePreviewModal.d.ts.map +1 -0
  25. package/dist/components/input/QueuedMessageList.d.ts +11 -0
  26. package/dist/components/input/QueuedMessageList.d.ts.map +1 -0
  27. package/dist/components/input/at-views/AtChatsView.d.ts +17 -0
  28. package/dist/components/input/at-views/AtChatsView.d.ts.map +1 -0
  29. package/dist/components/input/at-views/AtDocsView.d.ts +17 -0
  30. package/dist/components/input/at-views/AtDocsView.d.ts.map +1 -0
  31. package/dist/components/input/at-views/AtFilesView.d.ts +26 -0
  32. package/dist/components/input/at-views/AtFilesView.d.ts.map +1 -0
  33. package/dist/components/input/at-views/AtTerminalsView.d.ts +17 -0
  34. package/dist/components/input/at-views/AtTerminalsView.d.ts.map +1 -0
  35. package/dist/components/input/at-views/index.d.ts +9 -0
  36. package/dist/components/input/at-views/index.d.ts.map +1 -0
  37. package/dist/components/input/at-views/useAtViewTooltip.d.ts +12 -0
  38. package/dist/components/input/at-views/useAtViewTooltip.d.ts.map +1 -0
  39. package/dist/components/input/atContextItems.d.ts +9 -0
  40. package/dist/components/input/atContextItems.d.ts.map +1 -0
  41. package/dist/components/input/atContextToolHints.d.ts +2 -0
  42. package/dist/components/input/atContextToolHints.d.ts.map +1 -0
  43. package/dist/components/message/MessageBubble.d.ts +69 -0
  44. package/dist/components/message/MessageBubble.d.ts.map +1 -0
  45. package/dist/components/message/PartsRenderer.d.ts +22 -0
  46. package/dist/components/message/PartsRenderer.d.ts.map +1 -0
  47. package/dist/components/message/WelcomeMessage.d.ts +16 -0
  48. package/dist/components/message/WelcomeMessage.d.ts.map +1 -0
  49. package/dist/components/message/parts/CollapsibleCard.d.ts +29 -0
  50. package/dist/components/message/parts/CollapsibleCard.d.ts.map +1 -0
  51. package/dist/components/message/parts/CompactPart.d.ts +14 -0
  52. package/dist/components/message/parts/CompactPart.d.ts.map +1 -0
  53. package/dist/components/message/parts/ContentCompressPart.d.ts +13 -0
  54. package/dist/components/message/parts/ContentCompressPart.d.ts.map +1 -0
  55. package/dist/components/message/parts/ErrorPart.d.ts +10 -0
  56. package/dist/components/message/parts/ErrorPart.d.ts.map +1 -0
  57. package/dist/components/message/parts/ExtensionPartHost.d.ts +15 -0
  58. package/dist/components/message/parts/ExtensionPartHost.d.ts.map +1 -0
  59. package/dist/components/message/parts/ImagePart.d.ts +9 -0
  60. package/dist/components/message/parts/ImagePart.d.ts.map +1 -0
  61. package/dist/components/message/parts/PlanPart.d.ts +11 -0
  62. package/dist/components/message/parts/PlanPart.d.ts.map +1 -0
  63. package/dist/components/message/parts/TavilySearchPart.d.ts +18 -0
  64. package/dist/components/message/parts/TavilySearchPart.d.ts.map +1 -0
  65. package/dist/components/message/parts/TextPart.d.ts +9 -0
  66. package/dist/components/message/parts/TextPart.d.ts.map +1 -0
  67. package/dist/components/message/parts/ThinkingPart.d.ts +12 -0
  68. package/dist/components/message/parts/ThinkingPart.d.ts.map +1 -0
  69. package/dist/components/message/parts/ToolCallPart.d.ts +35 -0
  70. package/dist/components/message/parts/ToolCallPart.d.ts.map +1 -0
  71. package/dist/components/message/parts/ZhipuSearchPart.d.ts +20 -0
  72. package/dist/components/message/parts/ZhipuSearchPart.d.ts.map +1 -0
  73. package/dist/components/message/parts/index.d.ts +20 -0
  74. package/dist/components/message/parts/index.d.ts.map +1 -0
  75. package/dist/components/message/parts/tool-call-display.d.ts +26 -0
  76. package/dist/components/message/parts/tool-call-display.d.ts.map +1 -0
  77. package/dist/components/message/parts/visual-predicate.d.ts +7 -0
  78. package/dist/components/message/parts/visual-predicate.d.ts.map +1 -0
  79. package/dist/components/message/parts/visual-render.d.ts +2 -0
  80. package/dist/components/message/parts/visual-render.d.ts.map +1 -0
  81. package/dist/components/message/parts/visual.d.ts +3 -0
  82. package/dist/components/message/parts/visual.d.ts.map +1 -0
  83. package/dist/components/message/welcome-types.d.ts +28 -0
  84. package/dist/components/message/welcome-types.d.ts.map +1 -0
  85. package/dist/context/AutoRunConfigContext.d.ts +8 -0
  86. package/dist/context/AutoRunConfigContext.d.ts.map +1 -0
  87. package/dist/context/ChatAdapterContext.d.ts +4 -0
  88. package/dist/context/ChatAdapterContext.d.ts.map +1 -0
  89. package/dist/context/ChatInputContext.d.ts +51 -0
  90. package/dist/context/ChatInputContext.d.ts.map +1 -0
  91. package/dist/context/PartLoaderContext.d.ts +25 -0
  92. package/dist/context/PartLoaderContext.d.ts.map +1 -0
  93. package/dist/context/RenderersContext.d.ts +22 -0
  94. package/dist/context/RenderersContext.d.ts.map +1 -0
  95. package/dist/hooks/chat/types.d.ts +109 -0
  96. package/dist/hooks/chat/types.d.ts.map +1 -0
  97. package/dist/hooks/chat/useCapabilityConfig.d.ts +35 -0
  98. package/dist/hooks/chat/useCapabilityConfig.d.ts.map +1 -0
  99. package/dist/hooks/chat/useMessageActions.d.ts +13 -0
  100. package/dist/hooks/chat/useMessageActions.d.ts.map +1 -0
  101. package/dist/hooks/chat/useMessageSender.d.ts +15 -0
  102. package/dist/hooks/chat/useMessageSender.d.ts.map +1 -0
  103. package/dist/hooks/chat/useSessionManager.d.ts +18 -0
  104. package/dist/hooks/chat/useSessionManager.d.ts.map +1 -0
  105. package/dist/hooks/chat/utils.d.ts +20 -0
  106. package/dist/hooks/chat/utils.d.ts.map +1 -0
  107. package/dist/hooks/useChat.d.ts +105 -0
  108. package/dist/hooks/useChat.d.ts.map +1 -0
  109. package/dist/hooks/useImageUpload.d.ts +56 -0
  110. package/dist/hooks/useImageUpload.d.ts.map +1 -0
  111. package/dist/hooks/useVoiceInput.d.ts +26 -0
  112. package/dist/hooks/useVoiceInput.d.ts.map +1 -0
  113. package/dist/hooks/useVoiceToTextInput.d.ts +22 -0
  114. package/dist/hooks/useVoiceToTextInput.d.ts.map +1 -0
  115. package/dist/icons.d.ts +2 -0
  116. package/dist/icons.d.ts.map +1 -0
  117. package/dist/index.d.ts +55 -684
  118. package/dist/index.d.ts.map +1 -0
  119. package/dist/index.js +34 -1
  120. package/dist/style.css +103 -0
  121. package/dist/types/index.d.ts +251 -0
  122. package/dist/types/index.d.ts.map +1 -0
  123. package/dist/utils/applyToolCallResult.d.ts +8 -0
  124. package/dist/utils/applyToolCallResult.d.ts.map +1 -0
  125. package/dist/utils/applyToolCallResult.test.d.ts +2 -0
  126. package/dist/utils/applyToolCallResult.test.d.ts.map +1 -0
  127. package/package.json +19 -11
  128. package/dist/KaTeX_AMS-Regular-CYEKBG2K.woff +0 -0
  129. package/dist/KaTeX_AMS-Regular-JKX5W2C4.ttf +0 -0
  130. package/dist/KaTeX_AMS-Regular-U6PRYMIZ.woff2 +0 -0
  131. package/dist/KaTeX_Caligraphic-Bold-5QL5CMTE.woff2 +0 -0
  132. package/dist/KaTeX_Caligraphic-Bold-WZ3QSGD3.woff +0 -0
  133. package/dist/KaTeX_Caligraphic-Bold-ZTS3R3HK.ttf +0 -0
  134. package/dist/KaTeX_Caligraphic-Regular-3LKEU76G.woff +0 -0
  135. package/dist/KaTeX_Caligraphic-Regular-A7XRTZ5Q.ttf +0 -0
  136. package/dist/KaTeX_Caligraphic-Regular-KX5MEWCF.woff2 +0 -0
  137. package/dist/KaTeX_Fraktur-Bold-2QVFK6NQ.woff2 +0 -0
  138. package/dist/KaTeX_Fraktur-Bold-T4SWXBMT.woff +0 -0
  139. package/dist/KaTeX_Fraktur-Bold-WGHVTYOR.ttf +0 -0
  140. package/dist/KaTeX_Fraktur-Regular-2PEIFJSJ.woff2 +0 -0
  141. package/dist/KaTeX_Fraktur-Regular-5U4OPH2X.ttf +0 -0
  142. package/dist/KaTeX_Fraktur-Regular-PQMHCIK6.woff +0 -0
  143. package/dist/KaTeX_Main-Bold-2GA4IZIN.woff +0 -0
  144. package/dist/KaTeX_Main-Bold-W5FBVCZM.ttf +0 -0
  145. package/dist/KaTeX_Main-Bold-YP5VVQRP.woff2 +0 -0
  146. package/dist/KaTeX_Main-BoldItalic-4P4C7HJH.woff +0 -0
  147. package/dist/KaTeX_Main-BoldItalic-N4V3DX7S.woff2 +0 -0
  148. package/dist/KaTeX_Main-BoldItalic-ODMLBJJQ.ttf +0 -0
  149. package/dist/KaTeX_Main-Italic-I43T2HSR.ttf +0 -0
  150. package/dist/KaTeX_Main-Italic-RELBIK7M.woff2 +0 -0
  151. package/dist/KaTeX_Main-Italic-SASNQFN2.woff +0 -0
  152. package/dist/KaTeX_Main-Regular-ARRPAO67.woff2 +0 -0
  153. package/dist/KaTeX_Main-Regular-P5I74A2A.woff +0 -0
  154. package/dist/KaTeX_Main-Regular-W74P5G27.ttf +0 -0
  155. package/dist/KaTeX_Math-BoldItalic-6EBV3DK5.woff +0 -0
  156. package/dist/KaTeX_Math-BoldItalic-K4WTGH3J.woff2 +0 -0
  157. package/dist/KaTeX_Math-BoldItalic-VB447A4D.ttf +0 -0
  158. package/dist/KaTeX_Math-Italic-6KGCHLFN.woff2 +0 -0
  159. package/dist/KaTeX_Math-Italic-KKK3USB2.woff +0 -0
  160. package/dist/KaTeX_Math-Italic-SON4MRCA.ttf +0 -0
  161. package/dist/KaTeX_SansSerif-Bold-RRNVJFFW.woff2 +0 -0
  162. package/dist/KaTeX_SansSerif-Bold-STQ6RXC7.ttf +0 -0
  163. package/dist/KaTeX_SansSerif-Bold-X5M5EMOD.woff +0 -0
  164. package/dist/KaTeX_SansSerif-Italic-HMPFTM52.woff2 +0 -0
  165. package/dist/KaTeX_SansSerif-Italic-PSN4QKYX.woff +0 -0
  166. package/dist/KaTeX_SansSerif-Italic-WTBAZBGY.ttf +0 -0
  167. package/dist/KaTeX_SansSerif-Regular-2TL3USAE.ttf +0 -0
  168. package/dist/KaTeX_SansSerif-Regular-OQCII6EP.woff +0 -0
  169. package/dist/KaTeX_SansSerif-Regular-XIQ62X4E.woff2 +0 -0
  170. package/dist/KaTeX_Script-Regular-72OLXYNA.ttf +0 -0
  171. package/dist/KaTeX_Script-Regular-A5IFOEBS.woff +0 -0
  172. package/dist/KaTeX_Script-Regular-APUWIHLP.woff2 +0 -0
  173. package/dist/KaTeX_Size1-Regular-4HRHTS65.woff +0 -0
  174. package/dist/KaTeX_Size1-Regular-5LRUTBFT.woff2 +0 -0
  175. package/dist/KaTeX_Size1-Regular-7K6AASVL.ttf +0 -0
  176. package/dist/KaTeX_Size2-Regular-222HN3GT.ttf +0 -0
  177. package/dist/KaTeX_Size2-Regular-K5ZHAIS6.woff +0 -0
  178. package/dist/KaTeX_Size2-Regular-LELKET5D.woff2 +0 -0
  179. package/dist/KaTeX_Size3-Regular-TLFPAHDE.woff +0 -0
  180. package/dist/KaTeX_Size3-Regular-UFCO6WCA.ttf +0 -0
  181. package/dist/KaTeX_Size3-Regular-WQRQ47UD.woff2 +0 -0
  182. package/dist/KaTeX_Size4-Regular-7PGNVPQK.ttf +0 -0
  183. package/dist/KaTeX_Size4-Regular-CDMV7U5C.woff2 +0 -0
  184. package/dist/KaTeX_Size4-Regular-PKMWZHNC.woff +0 -0
  185. package/dist/KaTeX_Typewriter-Regular-3F5K6SQ6.ttf +0 -0
  186. package/dist/KaTeX_Typewriter-Regular-MJMFSK64.woff +0 -0
  187. package/dist/KaTeX_Typewriter-Regular-VBYJ4NRC.woff2 +0 -0
  188. package/dist/index.css +0 -4017
package/dist/style.css CHANGED
@@ -34,8 +34,12 @@
34
34
  --chat-primary: #54a9ff;
35
35
  /* hover:比主色更深一档,保持可感知的交互反馈 */
36
36
  --chat-primary-hover: #2f90ff;
37
+ --chat-accent: var(--chat-primary);
38
+ --chat-accent-hover: var(--chat-primary-hover);
39
+ --chat-warning: #f59e0b;
37
40
  --chat-destructive: #cf2d56;
38
41
  --chat-destructive-hover: #b3003f;
42
+ --chat-error: var(--chat-destructive);
39
43
  --chat-success: #1f8a65;
40
44
  --chat-code-bg: #f2f1ed;
41
45
  --chat-code-text: #26251eeb;
@@ -45,6 +49,21 @@
45
49
  --chat-fab-bg: #ffffff;
46
50
  --chat-fab-bg-hover: var(--chat-input-bg);
47
51
  --chat-fab-shadow: 0 10px 24px rgba(0, 0, 0, 0.12);
52
+ --chat-radius: 8px;
53
+ --chat-overlay-strong: rgba(0, 0, 0, 0.7);
54
+ --chat-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.08);
55
+ --chat-shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.16);
56
+ --chat-border-strong: color-mix(in srgb, var(--chat-border) 140%, transparent);
57
+ --chat-hover-bg: color-mix(in srgb, var(--chat-text) 8%, transparent);
58
+ --chat-surface-hover: color-mix(in srgb, var(--chat-text) 5%, transparent);
59
+ --chat-surface-active: color-mix(in srgb, var(--chat-text) 10%, transparent);
60
+ --chat-inline-code-bg: rgba(110, 118, 129, 0.15);
61
+ --chat-inline-code-text: #c81e78;
62
+ --chat-hr-bg: color-mix(in srgb, var(--chat-text) 18%, transparent);
63
+ --chat-blockquote-bg: color-mix(in srgb, var(--chat-accent) 8%, transparent);
64
+ --chat-table-header-bg: color-mix(in srgb, var(--chat-text) 6%, transparent);
65
+ --chat-table-row-hover-bg: color-mix(in srgb, var(--chat-text) 5%, transparent);
66
+ --chat-latex-bg: color-mix(in srgb, var(--chat-text) 2%, transparent);
48
67
 
49
68
  /* 代码高亮 - GitHub Light 风格 */
50
69
  --chat-hljs-keyword: #cf222e;
@@ -95,8 +114,12 @@
95
114
  /* 主色:light/dark 保持一致(蓝) */
96
115
  --chat-primary: #54a9ff;
97
116
  --chat-primary-hover: #2f90ff;
117
+ --chat-accent: var(--chat-primary);
118
+ --chat-accent-hover: var(--chat-primary-hover);
119
+ --chat-warning: #f59e0b;
98
120
  --chat-destructive: #cf2d56;
99
121
  --chat-destructive-hover: #e33b67;
122
+ --chat-error: var(--chat-destructive);
100
123
  --chat-success: #1f8a65;
101
124
  --chat-code-bg: #1f2937;
102
125
  --chat-code-text: #e5e7eb;
@@ -106,6 +129,21 @@
106
129
  --chat-fab-bg: var(--chat-muted);
107
130
  --chat-fab-bg-hover: var(--chat-muted-hover);
108
131
  --chat-fab-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
132
+ --chat-radius: 8px;
133
+ --chat-overlay-strong: rgba(0, 0, 0, 0.7);
134
+ --chat-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.2);
135
+ --chat-shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.4);
136
+ --chat-border-strong: color-mix(in srgb, var(--chat-border) 140%, transparent);
137
+ --chat-hover-bg: color-mix(in srgb, var(--chat-text) 8%, transparent);
138
+ --chat-surface-hover: color-mix(in srgb, var(--chat-text) 5%, transparent);
139
+ --chat-surface-active: color-mix(in srgb, var(--chat-text) 10%, transparent);
140
+ --chat-inline-code-bg: rgba(110, 118, 129, 0.25);
141
+ --chat-inline-code-text: #f472b6;
142
+ --chat-hr-bg: color-mix(in srgb, var(--chat-text) 20%, transparent);
143
+ --chat-blockquote-bg: color-mix(in srgb, var(--chat-accent) 8%, transparent);
144
+ --chat-table-header-bg: color-mix(in srgb, var(--chat-text) 6%, transparent);
145
+ --chat-table-row-hover-bg: color-mix(in srgb, var(--chat-text) 5%, transparent);
146
+ --chat-latex-bg: color-mix(in srgb, var(--chat-text) 2%, transparent);
109
147
 
110
148
  /* 代码高亮 - GitHub Dark 风格 */
111
149
  --chat-hljs-keyword: #ff7b72;
@@ -155,8 +193,12 @@
155
193
  --chat-text-muted: #26251e99;
156
194
  --chat-primary: #54a9ff;
157
195
  --chat-primary-hover: #2f90ff;
196
+ --chat-accent: var(--chat-primary);
197
+ --chat-accent-hover: var(--chat-primary-hover);
198
+ --chat-warning: #f59e0b;
158
199
  --chat-destructive: #cf2d56;
159
200
  --chat-destructive-hover: #b3003f;
201
+ --chat-error: var(--chat-destructive);
160
202
  --chat-success: #1f8a65;
161
203
  --chat-code-bg: #f2f1ed;
162
204
  --chat-code-text: #26251eeb;
@@ -165,6 +207,21 @@
165
207
  --chat-fab-bg: #ffffff;
166
208
  --chat-fab-bg-hover: var(--chat-input-bg);
167
209
  --chat-fab-shadow: 0 10px 24px rgba(0, 0, 0, 0.12);
210
+ --chat-radius: 8px;
211
+ --chat-overlay-strong: rgba(0, 0, 0, 0.7);
212
+ --chat-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.08);
213
+ --chat-shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.16);
214
+ --chat-border-strong: color-mix(in srgb, var(--chat-border) 140%, transparent);
215
+ --chat-hover-bg: color-mix(in srgb, var(--chat-text) 8%, transparent);
216
+ --chat-surface-hover: color-mix(in srgb, var(--chat-text) 5%, transparent);
217
+ --chat-surface-active: color-mix(in srgb, var(--chat-text) 10%, transparent);
218
+ --chat-inline-code-bg: rgba(110, 118, 129, 0.15);
219
+ --chat-inline-code-text: #c81e78;
220
+ --chat-hr-bg: color-mix(in srgb, var(--chat-text) 18%, transparent);
221
+ --chat-blockquote-bg: color-mix(in srgb, var(--chat-accent) 8%, transparent);
222
+ --chat-table-header-bg: color-mix(in srgb, var(--chat-text) 6%, transparent);
223
+ --chat-table-row-hover-bg: color-mix(in srgb, var(--chat-text) 5%, transparent);
224
+ --chat-latex-bg: color-mix(in srgb, var(--chat-text) 2%, transparent);
168
225
 
169
226
  /* 代码高亮 - GitHub Light 风格 */
170
227
  --chat-hljs-keyword: #cf222e;
@@ -213,8 +270,12 @@
213
270
  /* 主色:light/dark 保持一致(蓝) */
214
271
  --chat-primary: #54a9ff;
215
272
  --chat-primary-hover: #2f90ff;
273
+ --chat-accent: var(--chat-primary);
274
+ --chat-accent-hover: var(--chat-primary-hover);
275
+ --chat-warning: #f59e0b;
216
276
  --chat-destructive: #cf2d56;
217
277
  --chat-destructive-hover: #e33b67;
278
+ --chat-error: var(--chat-destructive);
218
279
  --chat-success: #1f8a65;
219
280
  --chat-code-bg: #1f2937;
220
281
  --chat-code-text: #e5e7eb;
@@ -223,6 +284,21 @@
223
284
  --chat-fab-bg: var(--chat-muted);
224
285
  --chat-fab-bg-hover: var(--chat-muted-hover);
225
286
  --chat-fab-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
287
+ --chat-radius: 8px;
288
+ --chat-overlay-strong: rgba(0, 0, 0, 0.7);
289
+ --chat-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.2);
290
+ --chat-shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.4);
291
+ --chat-border-strong: color-mix(in srgb, var(--chat-border) 140%, transparent);
292
+ --chat-hover-bg: color-mix(in srgb, var(--chat-text) 8%, transparent);
293
+ --chat-surface-hover: color-mix(in srgb, var(--chat-text) 5%, transparent);
294
+ --chat-surface-active: color-mix(in srgb, var(--chat-text) 10%, transparent);
295
+ --chat-inline-code-bg: rgba(110, 118, 129, 0.25);
296
+ --chat-inline-code-text: #f472b6;
297
+ --chat-hr-bg: color-mix(in srgb, var(--chat-text) 20%, transparent);
298
+ --chat-blockquote-bg: color-mix(in srgb, var(--chat-accent) 8%, transparent);
299
+ --chat-table-header-bg: color-mix(in srgb, var(--chat-text) 6%, transparent);
300
+ --chat-table-row-hover-bg: color-mix(in srgb, var(--chat-text) 5%, transparent);
301
+ --chat-latex-bg: color-mix(in srgb, var(--chat-text) 2%, transparent);
226
302
 
227
303
  /* 代码高亮 - GitHub Dark 风格 */
228
304
  --chat-hljs-keyword: #ff7b72;
@@ -302,6 +378,33 @@
302
378
  gap: 8px;
303
379
  }
304
380
 
381
+ .scroll-anchor {
382
+ height: 1px;
383
+ flex-shrink: 0;
384
+ }
385
+
386
+ .history-load-btn {
387
+ align-self: center;
388
+ min-width: 120px;
389
+ padding: 6px 12px;
390
+ border-radius: 8px;
391
+ border: 1px solid var(--chat-border);
392
+ background: var(--chat-surface, var(--chat-muted));
393
+ color: var(--chat-text-muted);
394
+ cursor: pointer;
395
+ transition: background-color 0.2s ease, color 0.2s ease;
396
+ }
397
+
398
+ .history-load-btn:hover:not(:disabled) {
399
+ background: var(--chat-fab-bg-hover, var(--chat-muted-hover));
400
+ color: var(--chat-text);
401
+ }
402
+
403
+ .history-load-btn:disabled {
404
+ cursor: default;
405
+ opacity: 0.7;
406
+ }
407
+
305
408
  /* 滚动到底部按钮 */
306
409
  .scroll-to-bottom-btn {
307
410
  position: absolute;
@@ -0,0 +1,251 @@
1
+ /**
2
+ * AI Chat 前端类型定义
3
+ * 核心类型从 bridge-electron 导出,保持类型一致性
4
+ *
5
+ * 架构:消息内容使用 ContentPart 数组,支持流式渲染和自定义 UI
6
+ */
7
+ import type { ChatMode as ChatModeType, ThinkingMode as ThinkingModeType, SessionRecord as SessionRecordType, MessageRecord as MessageRecordType, ModelOption as ModelOptionType } from '@huyooo/ai-chat-bridge-electron/renderer';
8
+ import type { AtContextItem } from '@huyooo/ai-chat-types';
9
+ import type { FinishReason as FinishReasonType, ProtocolId as ProtocolIdType } from '@huyooo/ai-chat-core';
10
+ import type { AssetApprovalPolicy, AssetHostDependency, AssetSideEffectLevel, ToolApprovalReason } from '@huyooo/ai-chat-shared';
11
+ export type ChatMode = ChatModeType;
12
+ export type ThinkingMode = ThinkingModeType;
13
+ export type SessionRecord = SessionRecordType;
14
+ export type MessageRecord = MessageRecordType;
15
+ export type ModelOption = ModelOptionType;
16
+ export type ProtocolId = ProtocolIdType;
17
+ export type FinishReason = FinishReasonType;
18
+ /**
19
+ * render 型工具 Part 的公共字段
20
+ *
21
+ * 所有由 ui.type === 'render' 工具生成的 Part 都携带这些字段:
22
+ * - status: 'running' | 'done',组件必须处理两种状态
23
+ * - data: 工具业务数据,禁止平铺到 Part 根层,避免与协议字段冲突
24
+ * - meta: 工具/宿主元信息
25
+ */
26
+ export interface RenderPartMeta {
27
+ toolCallId: string;
28
+ toolName: string;
29
+ renderName: string;
30
+ }
31
+ export interface RenderPartBase {
32
+ status: 'running' | 'done';
33
+ data: Record<string, unknown>;
34
+ meta: RenderPartMeta;
35
+ }
36
+ /** 文本内容 Part */
37
+ export interface TextPart {
38
+ type: 'text';
39
+ /** 内容块 ID(由 text_start 事件分配,用于精确追加) */
40
+ blockId?: string;
41
+ text: string;
42
+ /**
43
+ * 文本块生命周期。
44
+ * 历史消息可能缺失,缺失时按 done 处理。
45
+ */
46
+ status?: 'running' | 'done';
47
+ }
48
+ /** 代码块 Part(从 text 中解析,或直接返回)*/
49
+ export interface CodePart {
50
+ type: 'code';
51
+ content: string;
52
+ language?: string;
53
+ }
54
+ /** 思考过程 Part */
55
+ export interface ThinkingPart {
56
+ type: 'thinking';
57
+ blockId?: string;
58
+ text: string;
59
+ status: 'running' | 'done';
60
+ duration?: number;
61
+ }
62
+ /** Tavily 搜索 Part */
63
+ export interface TavilySearchPart extends RenderPartBase {
64
+ type: 'tavily_search';
65
+ }
66
+ /** 智谱搜索 Part */
67
+ export interface ZhipuSearchPart extends RenderPartBase {
68
+ type: 'zhipu_search';
69
+ }
70
+ /** 工具调用 Part(仅展示执行过程,结果由具体类型 Part 渲染)*/
71
+ export interface ToolCallPart {
72
+ type: 'tool_call';
73
+ id: string;
74
+ name: string;
75
+ args?: Record<string, unknown>;
76
+ status: 'pending' | 'running' | 'done' | 'error' | 'cancelled' | 'skipped';
77
+ approvalReason?: ToolApprovalReason;
78
+ approvalPolicy?: AssetApprovalPolicy;
79
+ sideEffectLevel?: AssetSideEffectLevel;
80
+ hostDependency?: AssetHostDependency;
81
+ riskSummary?: string;
82
+ riskTags?: string[];
83
+ riskSignals?: string[];
84
+ /** 工具执行输出(用于 run_terminal_command 等需要展示 stdout/stderr 的工具) */
85
+ output?: {
86
+ stdout?: string;
87
+ stderr?: string;
88
+ };
89
+ /** 错误信息(status 为 error 时) */
90
+ error?: string;
91
+ /** 结构化错误(便于展示建议、重试按钮) */
92
+ toolError?: import('@huyooo/ai-chat-types').ToolError;
93
+ }
94
+ /** 图片 Part */
95
+ export interface ImagePart {
96
+ type: 'image';
97
+ url: string;
98
+ }
99
+ /** 错误 Part */
100
+ export interface ErrorPart {
101
+ type: 'error';
102
+ message: string;
103
+ category?: string;
104
+ retryable?: boolean;
105
+ }
106
+ /** 计划步骤 */
107
+ export interface PlanStepItem {
108
+ id: string;
109
+ title: string;
110
+ status: 'pending' | 'in_progress' | 'done' | 'failed';
111
+ }
112
+ /** 计划进度 Part(由 update_plan 工具的 ui: { type: 'render', name: 'plan', singleton: true } 生成) */
113
+ export interface PlanPart extends RenderPartBase {
114
+ type: 'plan';
115
+ }
116
+ /** 上下文压缩 Part(AI 总结对话历史) */
117
+ export interface CompactPart {
118
+ type: 'compact';
119
+ status: 'running' | 'done' | 'failed';
120
+ /** 执行压缩所用的模型 */
121
+ model?: string;
122
+ /** 压缩前估算 token 数 */
123
+ estimatedTokens?: number;
124
+ /** 可用 prompt token 预算 */
125
+ budget?: number;
126
+ /** 压缩前 token 数(实际) */
127
+ tokensBeforeCompact?: number;
128
+ /** 压缩后估算 token 数 */
129
+ compressedTokens?: number;
130
+ /** 压缩前消息数 */
131
+ originalMessageCount?: number;
132
+ /** 压缩后消息数 */
133
+ compressedMessageCount?: number;
134
+ /** 耗时(秒) */
135
+ duration?: number;
136
+ /** AI 生成的摘要内容 */
137
+ summaryContent?: string;
138
+ }
139
+ /** 单条消息内容压缩 Part(超长用户输入由 AI 压缩后的元数据) */
140
+ export interface ContentCompressPart {
141
+ type: 'content_compress';
142
+ status: 'running' | 'done' | 'failed';
143
+ /** 执行压缩所用的模型 */
144
+ model?: string;
145
+ /** AI 生成的摘要/要点 */
146
+ summary?: string;
147
+ /** 原文估算 token 数 */
148
+ originalTokens?: number;
149
+ /** 压缩后摘要 token 数 */
150
+ compressedTokens?: number;
151
+ /** 压缩耗时(毫秒) */
152
+ duration?: number;
153
+ }
154
+ /** 天气 Part(由 get_weather 工具生成)*/
155
+ export interface WeatherPart extends RenderPartBase {
156
+ type: 'weather';
157
+ }
158
+ /** 任意 `type` 字符串的 Part(扩展 Part、宿主 partRenderers 未单独建模的卡片等) */
159
+ export interface CustomPart {
160
+ type: string;
161
+ [key: string]: unknown;
162
+ }
163
+ /** 协议与组件库内置的 ContentPart 判别联合(不含市场扩展 dist) */
164
+ export type BuiltinPart = TextPart | CodePart | ThinkingPart | TavilySearchPart | ZhipuSearchPart | ToolCallPart | ImagePart | ErrorPart | PlanPart | CompactPart | ContentCompressPart;
165
+ /** 聊天消息中的 Part:`BuiltinPart` + 常用宿主示例 `WeatherPart` + 其余 `CustomPart`(含扩展 Part 的 `type`) */
166
+ export type ContentPart = BuiltinPart | WeatherPart | CustomPart;
167
+ /** 内置 Part 的 `type` 字面量 */
168
+ export type BuiltinPartType = BuiltinPart['type'];
169
+ /** 任意 Part 的 `type`(含扩展 `ui.name`) */
170
+ export type ContentPartType = string;
171
+ /** 步骤折叠模式 */
172
+ export type StepsExpandedType = 'open' | 'close' | 'auto';
173
+ /** 错误详情(结构化错误信息) */
174
+ export interface ErrorDetails {
175
+ category?: string;
176
+ message: string;
177
+ code?: string;
178
+ statusCode?: number;
179
+ retryable?: boolean;
180
+ retryAfter?: number;
181
+ }
182
+ /** 聊天消息(前端显示用)- 新架构:基于 parts 数组 */
183
+ export interface ChatMessage {
184
+ id: string;
185
+ role: 'user' | 'assistant' | 'system';
186
+ /** 会话内单调递增序号(用于分页/分叉) */
187
+ sequence?: number;
188
+ /** 内容 parts 数组 - 核心渲染数据 */
189
+ parts: ContentPart[];
190
+ /** 用户通过 @ 选择的上下文资源 */
191
+ atContextItems?: AtContextItem[];
192
+ /** 生成此消息时使用的模型 */
193
+ model?: string;
194
+ /** 生成此消息时使用的模式 (ask/agent) */
195
+ mode?: string;
196
+ /** 生成此消息时是否启用 web 搜索 */
197
+ webSearchEnabled?: boolean;
198
+ /** 生成此消息时是否启用深度思考 */
199
+ thinkingEnabled?: boolean;
200
+ /** 用户上传的图片(仅用户消息) */
201
+ images?: string[];
202
+ /** 是否正在加载 */
203
+ loading?: boolean;
204
+ /** Agent 当前阶段(后端通过 agent_status / compress 事件推送) */
205
+ agentPhase?: 'thinking' | 'compressing';
206
+ /** 是否已复制 */
207
+ copied?: boolean;
208
+ /** 消息时间戳 */
209
+ timestamp?: number;
210
+ /** 错误详情(如果有错误) */
211
+ error?: ErrorDetails;
212
+ /** 是否被用户中止 */
213
+ aborted?: boolean;
214
+ /** Token 使用统计(done 事件携带) */
215
+ usage?: {
216
+ promptTokens: number;
217
+ completionTokens: number;
218
+ totalTokens: number;
219
+ reasoningTokens?: number;
220
+ cachedTokens?: number;
221
+ };
222
+ /** 响应耗时(毫秒) */
223
+ duration?: number;
224
+ /** 结束原因(done 事件携带) */
225
+ finishReason?: FinishReason;
226
+ /** 计费信息(云端模式,done 后由 ai-server 返回) */
227
+ billing?: {
228
+ pointsConsumed: number;
229
+ remainingPoints: number;
230
+ costYuan?: number;
231
+ model?: string;
232
+ };
233
+ }
234
+ /** 获取消息的纯文本内容(用于复制、保存等) */
235
+ export declare function getMessageText(message: ChatMessage): string;
236
+ export declare function isThinkingPart(p: ContentPart): p is ThinkingPart;
237
+ export declare function isTavilySearchPart(p: ContentPart): p is TavilySearchPart;
238
+ export declare function isZhipuSearchPart(p: ContentPart): p is ZhipuSearchPart;
239
+ export declare function isToolCallPart(p: ContentPart): p is ToolCallPart;
240
+ export declare function isTextPart(p: ContentPart): p is TextPart;
241
+ export declare function isPlanPart(p: ContentPart): p is PlanPart;
242
+ /** render 型工具 Part 守卫:含 meta.toolCallId 的 Part 均为 render 型 */
243
+ export declare function isRenderPart(p: ContentPart): p is RenderPartBase & ContentPart;
244
+ /** 输入区配置快照(用于历史回溯/重发) */
245
+ export interface ChatInputOptions {
246
+ mode: ChatMode;
247
+ model: string;
248
+ webSearchEnabled: boolean;
249
+ thinkingEnabled: boolean;
250
+ }
251
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * tool_call_result 事件中 ui.type === 'render' 分支的前端适配层
3
+ * 共享核心逻辑位于 @huyooo/ai-chat-shared,这里只负责收敛为 ContentPart
4
+ */
5
+ import { type ToolCallResultData } from '@huyooo/ai-chat-shared';
6
+ import type { ContentPart } from '../types';
7
+ export declare function applyToolCallResultRender(data: ToolCallResultData, parts: ContentPart[]): ContentPart[];
8
+ //# sourceMappingURL=applyToolCallResult.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyToolCallResult.d.ts","sourceRoot":"","sources":["../../src/utils/applyToolCallResult.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAW3C,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,kBAAkB,EACxB,KAAK,EAAE,WAAW,EAAE,GACnB,WAAW,EAAE,CAQf"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=applyToolCallResult.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyToolCallResult.test.d.ts","sourceRoot":"","sources":["../../src/utils/applyToolCallResult.test.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@huyooo/ai-chat-frontend-react",
3
- "version": "0.2.45",
3
+ "version": "0.3.6",
4
4
  "description": "AI Chat Frontend - React components with adapter pattern",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -18,22 +18,29 @@
18
18
  "dist"
19
19
  ],
20
20
  "scripts": {
21
- "prebuild": "npm run clean",
22
- "build": "tsup",
23
- "dev": "tsup --watch",
21
+ "build": "npm run clean && npm run build:js && npm run build:types",
22
+ "build:js": "tsdown",
23
+ "build:types": "tsc -b tsconfig.json --emitDeclarationOnly",
24
+ "dev": "tsdown --watch",
24
25
  "typecheck": "tsc --noEmit",
25
- "clean": "rm -rf dist",
26
+ "clean": "rm -rf dist tsconfig.tsbuildinfo",
26
27
  "test": "vitest run",
27
28
  "prepublishOnly": "npm run build && npm run typecheck"
28
29
  },
29
30
  "peerDependencies": {
30
31
  "react": ">=18.0.0",
31
- "react-dom": ">=18.0.0"
32
+ "react-dom": ">=18.0.0",
33
+ "vue": "^3.4.0"
34
+ },
35
+ "peerDependenciesMeta": {
36
+ "vue": {
37
+ "optional": true
38
+ }
32
39
  },
33
40
  "dependencies": {
34
- "@huyooo/ai-chat-bridge-electron": "^0.2.45",
35
- "@huyooo/ai-chat-shared": "^0.2.45",
36
- "@huyooo/ai-chat-types": "^0.2.45",
41
+ "@huyooo/ai-chat-bridge-electron": "^0.3.6",
42
+ "@huyooo/ai-chat-shared": "^0.3.6",
43
+ "@huyooo/ai-chat-types": "^0.3.6",
37
44
  "@iconify/react": "^5.0.2"
38
45
  },
39
46
  "devDependencies": {
@@ -45,9 +52,10 @@
45
52
  "@types/react-dom": "^18.0.0",
46
53
  "react": "^18.0.0",
47
54
  "react-dom": "^18.0.0",
48
- "tsup": "^8.0.0",
55
+ "tsdown": "^0.21.0",
49
56
  "typescript": "^5.0.0",
50
- "vitest": "^4.0.18"
57
+ "vitest": "^4.0.18",
58
+ "vue": "^3.5.0"
51
59
  },
52
60
  "keywords": [
53
61
  "ai",
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file