@agentscope-ai/chat 1.1.20 → 1.1.22

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 (335) hide show
  1. package/bin/client.js +1 -1
  2. package/components/AGUI/components/HelpModal/icons.tsx +68 -0
  3. package/components/AGUI/components/HelpModal/index.tsx +1 -0
  4. package/components/AGUI/components/HelpModal/modal.tsx +101 -0
  5. package/components/AGUI/components/chat/Button.tsx +18 -0
  6. package/components/AGUI/components/chat/Chat.tsx +780 -0
  7. package/components/AGUI/components/chat/ChatContext.tsx +248 -0
  8. package/components/AGUI/components/chat/CodeBlock.tsx +406 -0
  9. package/components/AGUI/components/chat/Header.tsx +22 -0
  10. package/components/AGUI/components/chat/Icons.tsx +237 -0
  11. package/components/AGUI/components/chat/ImageUploadQueue.tsx +77 -0
  12. package/components/AGUI/components/chat/Input.tsx +24 -0
  13. package/components/AGUI/components/chat/Markdown.tsx +134 -0
  14. package/components/AGUI/components/chat/Messages.tsx +259 -0
  15. package/components/AGUI/components/chat/Modal.tsx +133 -0
  16. package/components/AGUI/components/chat/Popup.tsx +57 -0
  17. package/components/AGUI/components/chat/PoweredByTag.tsx +29 -0
  18. package/components/AGUI/components/chat/Sidebar.tsx +74 -0
  19. package/components/AGUI/components/chat/Suggestion.tsx +132 -0
  20. package/components/AGUI/components/chat/Suggestions.tsx +20 -0
  21. package/components/AGUI/components/chat/Textarea.tsx +61 -0
  22. package/components/AGUI/components/chat/Window.tsx +152 -0
  23. package/components/AGUI/components/chat/index.tsx +11 -0
  24. package/components/AGUI/components/chat/messages/AssistantMessage.tsx +69 -0
  25. package/components/AGUI/components/chat/messages/RenderActionExecutionMessage.tsx +129 -0
  26. package/components/AGUI/components/chat/messages/RenderAgentStateMessage.tsx +116 -0
  27. package/components/AGUI/components/chat/messages/RenderImageMessage.tsx +64 -0
  28. package/components/AGUI/components/chat/messages/RenderResultMessage.tsx +26 -0
  29. package/components/AGUI/components/chat/messages/RenderTextMessage.tsx +51 -0
  30. package/components/AGUI/components/chat/messages/UserMessage.tsx +10 -0
  31. package/components/AGUI/components/chat/props.ts +186 -0
  32. package/components/AGUI/components/index.ts +1 -0
  33. package/components/AGUI/context/index.ts +1 -0
  34. package/components/AGUI/hooks/index.ts +1 -0
  35. package/components/AGUI/hooks/use-copilot-chat-suggestions.tsx +122 -0
  36. package/components/AGUI/hooks/use-copy-to-clipboard.tsx +29 -0
  37. package/components/AGUI/hooks/use-dark-mode.ts +10 -0
  38. package/components/AGUI/hooks/use-push-to-talk.tsx +166 -0
  39. package/components/AGUI/index.tsx +4 -0
  40. package/components/AGUI/lib/utils.test.ts +7 -0
  41. package/components/AGUI/lib/utils.ts +27 -0
  42. package/components/AGUI/styles.css +0 -0
  43. package/components/AGUI/types/css.ts +0 -0
  44. package/components/AGUI/types/index.ts +1 -0
  45. package/components/AGUI/types/suggestions.ts +6 -0
  46. package/components/Accordion/Accordion.tsx +203 -0
  47. package/components/Accordion/BodyContent.tsx +28 -0
  48. package/components/Accordion/DeepThinking.tsx +91 -0
  49. package/components/Accordion/SoftLightTitle.tsx +13 -0
  50. package/components/Accordion/demo/search.tsx +39 -0
  51. package/components/Accordion/demo/steps.tsx +135 -0
  52. package/components/Accordion/demo/thinking.tsx +62 -0
  53. package/components/Accordion/index.en-US.md +34 -0
  54. package/components/Accordion/index.tsx +3 -0
  55. package/components/Accordion/index.zh-CN.md +34 -0
  56. package/components/Accordion/style.ts +208 -0
  57. package/components/AgentScopeRuntimeWebUI/demo/index.tsx +4 -0
  58. package/components/AgentScopeRuntimeWebUI/index.tsx +3 -0
  59. package/components/AgentScopeRuntimeWebUI/lib/AgentScopeRuntime/Request/Builder.tsx +82 -0
  60. package/components/AgentScopeRuntimeWebUI/lib/AgentScopeRuntime/Request/Card.tsx +52 -0
  61. package/components/AgentScopeRuntimeWebUI/lib/AgentScopeRuntime/Response/Actions.tsx +39 -0
  62. package/components/AgentScopeRuntimeWebUI/lib/AgentScopeRuntime/Response/Builder.tsx +205 -0
  63. package/components/AgentScopeRuntimeWebUI/lib/AgentScopeRuntime/Response/Card.tsx +44 -0
  64. package/components/AgentScopeRuntimeWebUI/lib/AgentScopeRuntime/Response/Error.tsx +7 -0
  65. package/components/AgentScopeRuntimeWebUI/lib/AgentScopeRuntime/Response/Message.tsx +23 -0
  66. package/components/AgentScopeRuntimeWebUI/lib/AgentScopeRuntime/Response/Reasoning.tsx +16 -0
  67. package/components/AgentScopeRuntimeWebUI/lib/AgentScopeRuntime/Response/Tool.tsx +19 -0
  68. package/components/AgentScopeRuntimeWebUI/lib/AgentScopeRuntime/index.tsx +0 -0
  69. package/components/AgentScopeRuntimeWebUI/lib/AgentScopeRuntime/types.tsx +100 -0
  70. package/components/AgentScopeRuntimeWebUI/lib/Chat/Input/index.tsx +77 -0
  71. package/components/AgentScopeRuntimeWebUI/lib/Chat/Input/useAttachments.tsx +53 -0
  72. package/components/AgentScopeRuntimeWebUI/lib/Chat/MessageList/index.tsx +30 -0
  73. package/components/AgentScopeRuntimeWebUI/lib/Chat/Welcome/index.tsx +66 -0
  74. package/components/AgentScopeRuntimeWebUI/lib/Chat/Welcome/styles.ts +51 -0
  75. package/components/AgentScopeRuntimeWebUI/lib/Chat/hooks/index.tsx +5 -0
  76. package/components/AgentScopeRuntimeWebUI/lib/Chat/hooks/useChatController.tsx +130 -0
  77. package/components/AgentScopeRuntimeWebUI/lib/Chat/hooks/useChatMessageHandler.tsx +87 -0
  78. package/components/AgentScopeRuntimeWebUI/lib/Chat/hooks/useChatRequest.tsx +114 -0
  79. package/components/AgentScopeRuntimeWebUI/lib/Chat/hooks/useChatSessionHandler.tsx +50 -0
  80. package/components/AgentScopeRuntimeWebUI/lib/Chat/index.tsx +18 -0
  81. package/components/AgentScopeRuntimeWebUI/lib/Chat/styles.tsx +59 -0
  82. package/components/AgentScopeRuntimeWebUI/lib/ChatAnywhere/ComposedProvider.tsx +27 -0
  83. package/components/AgentScopeRuntimeWebUI/lib/ChatAnywhere/index.tsx +29 -0
  84. package/components/AgentScopeRuntimeWebUI/lib/Context/ChatAnywhereControl.tsx +0 -0
  85. package/components/AgentScopeRuntimeWebUI/lib/Context/ChatAnywhereInputContext.tsx +27 -0
  86. package/components/AgentScopeRuntimeWebUI/lib/Context/ChatAnywhereLayoutContext.tsx +27 -0
  87. package/components/AgentScopeRuntimeWebUI/lib/Context/ChatAnywhereMessagesContext.tsx +82 -0
  88. package/components/AgentScopeRuntimeWebUI/lib/Context/ChatAnywhereOptionsContext.tsx +76 -0
  89. package/components/AgentScopeRuntimeWebUI/lib/Context/ChatAnywhereSessionsContext.tsx +111 -0
  90. package/components/AgentScopeRuntimeWebUI/lib/Context/useChatAnywhereEventEmitter.tsx +30 -0
  91. package/components/AgentScopeRuntimeWebUI/lib/Header/index.tsx +45 -0
  92. package/components/AgentScopeRuntimeWebUI/lib/Header/styles.ts +23 -0
  93. package/components/AgentScopeRuntimeWebUI/lib/Layout/index.tsx +45 -0
  94. package/components/AgentScopeRuntimeWebUI/lib/Layout/styles.tsx +104 -0
  95. package/components/AgentScopeRuntimeWebUI/lib/Sessions/index.tsx +114 -0
  96. package/components/AgentScopeRuntimeWebUI/lib/Sessions/styles.tsx +0 -0
  97. package/components/AgentScopeRuntimeWebUI/lib/demo/OptionsPanel/FormItem.tsx +37 -0
  98. package/components/AgentScopeRuntimeWebUI/lib/demo/OptionsPanel/OptionsEditor.tsx +163 -0
  99. package/components/AgentScopeRuntimeWebUI/lib/demo/OptionsPanel/defaultConfig.ts +43 -0
  100. package/components/AgentScopeRuntimeWebUI/lib/demo/OptionsPanel/index.tsx +27 -0
  101. package/components/AgentScopeRuntimeWebUI/lib/demo/index.tsx +57 -0
  102. package/components/AgentScopeRuntimeWebUI/lib/demo/sessionApi/index.ts +51 -0
  103. package/components/AgentScopeRuntimeWebUI/lib/types/IChatAnywhere.ts +358 -0
  104. package/components/AgentScopeRuntimeWebUI/lib/types/IMessages.tsx +52 -0
  105. package/components/AgentScopeRuntimeWebUI/lib/types/ISessions.tsx +29 -0
  106. package/components/AgentScopeRuntimeWebUI/lib/types/index.tsx +3 -0
  107. package/components/AgentScopeRuntimeWebUI/starter/OptionsPanel/FormItem.tsx +37 -0
  108. package/components/AgentScopeRuntimeWebUI/starter/OptionsPanel/OptionsEditor.tsx +163 -0
  109. package/components/AgentScopeRuntimeWebUI/starter/OptionsPanel/defaultConfig.ts +43 -0
  110. package/components/AgentScopeRuntimeWebUI/starter/OptionsPanel/index.tsx +27 -0
  111. package/components/AgentScopeRuntimeWebUI/starter/index.tsx +57 -0
  112. package/components/AgentScopeRuntimeWebUI/starter/sessionApi/index.ts +51 -0
  113. package/components/Attachments/DropArea.tsx +97 -0
  114. package/components/Attachments/FileList/AudioIcon.tsx +20 -0
  115. package/components/Attachments/FileList/FileListCard.tsx +270 -0
  116. package/components/Attachments/FileList/Progress.tsx +30 -0
  117. package/components/Attachments/FileList/VideoIcon.tsx +20 -0
  118. package/components/Attachments/FileList/index.tsx +201 -0
  119. package/components/Attachments/PlaceholderUploader.tsx +124 -0
  120. package/components/Attachments/SilentUploader.tsx +39 -0
  121. package/components/Attachments/context.tsx +11 -0
  122. package/components/Attachments/demo/basic.tsx +71 -0
  123. package/components/Attachments/index.en-US.md.bk +10 -0
  124. package/components/Attachments/index.tsx +274 -0
  125. package/components/Attachments/index.zh-CN.md.bk +10 -0
  126. package/components/Attachments/style/fileCard.ts +163 -0
  127. package/components/Attachments/style/index.ts +232 -0
  128. package/components/Attachments/util.ts +56 -0
  129. package/components/Bubble/Avatar.tsx +39 -0
  130. package/components/Bubble/Bubble.tsx +131 -0
  131. package/components/Bubble/BubbleList.tsx +105 -0
  132. package/components/Bubble/Cards.tsx +61 -0
  133. package/components/Bubble/Footer.tsx +55 -0
  134. package/components/Bubble/Interrupted.tsx +82 -0
  135. package/components/Bubble/ScrollToBottom.tsx +42 -0
  136. package/components/Bubble/Spin.tsx +13 -0
  137. package/components/Bubble/demo/assistantWithCode.tsx +60 -0
  138. package/components/Bubble/demo/assistantWithErrorStatus.tsx +102 -0
  139. package/components/Bubble/demo/assistantWithImage.tsx +46 -0
  140. package/components/Bubble/demo/assistantWithProcess.tsx +103 -0
  141. package/components/Bubble/demo/assistantWithSearch.tsx +69 -0
  142. package/components/Bubble/demo/assistantWithThinking.tsx +54 -0
  143. package/components/Bubble/demo/basic.tsx +55 -0
  144. package/components/Bubble/demo/userWithFile.tsx +27 -0
  145. package/components/Bubble/demo/userWithImage.tsx +26 -0
  146. package/components/Bubble/hooks/useDisplayData.ts +0 -0
  147. package/components/Bubble/hooks/useListData.ts +0 -0
  148. package/components/Bubble/index.en-US.md +33 -0
  149. package/components/Bubble/index.tsx +21 -0
  150. package/components/Bubble/index.zh-CN.md +33 -0
  151. package/components/Bubble/interface.ts +71 -0
  152. package/components/Bubble/loading.tsx +15 -0
  153. package/components/Bubble/style/avatar.ts +43 -0
  154. package/components/Bubble/style/footer.ts +45 -0
  155. package/components/Bubble/style/index.ts +192 -0
  156. package/components/Bubble/style/list.ts +51 -0
  157. package/components/ChatAnywhere/Chat/Ref.tsx +20 -0
  158. package/components/ChatAnywhere/Chat/index.tsx +56 -0
  159. package/components/ChatAnywhere/Chat/style.ts +59 -0
  160. package/components/ChatAnywhere/Header/index.tsx +37 -0
  161. package/components/ChatAnywhere/Header/style.ts +27 -0
  162. package/components/ChatAnywhere/Input/index.tsx +158 -0
  163. package/components/ChatAnywhere/Input/style.ts +14 -0
  164. package/components/ChatAnywhere/Layout/index.tsx +70 -0
  165. package/components/ChatAnywhere/Layout/style.ts +51 -0
  166. package/components/ChatAnywhere/SessionList/index.tsx +122 -0
  167. package/components/ChatAnywhere/SessionList/style.ts +53 -0
  168. package/components/ChatAnywhere/hooks/ChatAnywhereProvider.tsx +219 -0
  169. package/components/ChatAnywhere/hooks/types.ts +333 -0
  170. package/components/ChatAnywhere/hooks/useInput.tsx +22 -0
  171. package/components/ChatAnywhere/hooks/useMessages.tsx +63 -0
  172. package/components/ChatAnywhere/hooks/useSessionList.tsx +123 -0
  173. package/components/ChatAnywhere/index.tsx +49 -0
  174. package/components/Conversations/GroupTitle.tsx +28 -0
  175. package/components/Conversations/Item.tsx +189 -0
  176. package/components/Conversations/demo/basic.tsx +107 -0
  177. package/components/Conversations/demo/timeline.tsx +111 -0
  178. package/components/Conversations/demo/timestamp.tsx +110 -0
  179. package/components/Conversations/hooks/useGroupable.ts +81 -0
  180. package/components/Conversations/index.en-US.md +32 -0
  181. package/components/Conversations/index.tsx +176 -0
  182. package/components/Conversations/index.zh-CN.md +31 -0
  183. package/components/Conversations/interface.ts +69 -0
  184. package/components/Conversations/style.ts +153 -0
  185. package/components/DefaultCards/DeepThinking/index.tsx +33 -0
  186. package/components/DefaultCards/Files/index.tsx +69 -0
  187. package/components/DefaultCards/Footer/index.tsx +16 -0
  188. package/components/DefaultCards/Images/index.tsx +53 -0
  189. package/components/DefaultCards/Interrupted/index.tsx +13 -0
  190. package/components/DefaultCards/Text/index.tsx +13 -0
  191. package/components/DefaultCards/index.tsx +6 -0
  192. package/components/DeviceAction/actionMap.tsx +100 -0
  193. package/components/DeviceAction/demo/index.tsx +132 -0
  194. package/components/DeviceAction/index.en-US.md +19 -0
  195. package/components/DeviceAction/index.tsx +75 -0
  196. package/components/DeviceAction/index.zh-CN.md +19 -0
  197. package/components/Disclaimer/demo/index.tsx +4 -0
  198. package/components/Disclaimer/demo/withLink.tsx +4 -0
  199. package/components/Disclaimer/index.en-US.md +23 -0
  200. package/components/Disclaimer/index.tsx +42 -0
  201. package/components/Disclaimer/index.zh-CN.md +24 -0
  202. package/components/Disclaimer/style.ts +17 -0
  203. package/components/ImageGenerator/demo/basic.tsx +23 -0
  204. package/components/ImageGenerator/demo/custom.tsx +56 -0
  205. package/components/ImageGenerator/demo/size.tsx +15 -0
  206. package/components/ImageGenerator/index.en-US.md +23 -0
  207. package/components/ImageGenerator/index.tsx +124 -0
  208. package/components/ImageGenerator/index.zh-CN.md +23 -0
  209. package/components/ImageGenerator/style.ts +99 -0
  210. package/components/Markdown/Markdown/AnimationNode.tsx +89 -0
  211. package/components/Markdown/Markdown/Markdown.tsx +61 -0
  212. package/components/Markdown/Markdown/core/Parser.ts +52 -0
  213. package/components/Markdown/Markdown/core/Renderer.ts +121 -0
  214. package/components/Markdown/Markdown/core/index.ts +4 -0
  215. package/components/Markdown/Markdown/defaultComponents/CodeBlock.tsx +113 -0
  216. package/components/Markdown/Markdown/defaultComponents/DisabledImage.tsx +3 -0
  217. package/components/Markdown/Markdown/defaultComponents/Media.tsx +71 -0
  218. package/components/Markdown/Markdown/hooks/index.ts +4 -0
  219. package/components/Markdown/Markdown/hooks/useAnimation.tsx +27 -0
  220. package/components/Markdown/Markdown/hooks/useCitationsData.tsx +36 -0
  221. package/components/Markdown/Markdown/hooks/useStreaming.ts +503 -0
  222. package/components/Markdown/Markdown/hooks/useTyping.ts +22 -0
  223. package/components/Markdown/Markdown/index.tsx +198 -0
  224. package/components/Markdown/Markdown/interface.ts +217 -0
  225. package/components/Markdown/Markdown/style.ts +152 -0
  226. package/components/Markdown/demo/basic.tsx +107 -0
  227. package/components/Markdown/demo/citations.tsx +47 -0
  228. package/components/Markdown/demo/cursor.tsx +9 -0
  229. package/components/Markdown/demo/latex.tsx +77 -0
  230. package/components/Markdown/demo/typing.tsx +82 -0
  231. package/components/Markdown/index.en-US.md +27 -0
  232. package/components/Markdown/index.ts +1 -0
  233. package/components/Markdown/index.zh-CN.md +28 -0
  234. package/components/Markdown/plugins/citations/CitationComponent.tsx +72 -0
  235. package/components/Markdown/plugins/citations/index.tsx +37 -0
  236. package/components/Markdown/plugins/cursor/Dot.tsx +106 -0
  237. package/components/Markdown/plugins/cursor/Underline.tsx +38 -0
  238. package/components/Markdown/plugins/cursor/index.tsx +59 -0
  239. package/components/Markdown/plugins/latex/index.ts +109 -0
  240. package/components/Markdown/plugins/type.ts +71 -0
  241. package/components/Mermaid/demo/basic.tsx +12 -0
  242. package/components/Mermaid/demo/class.tsx +31 -0
  243. package/components/Mermaid/demo/flowchart.tsx +13 -0
  244. package/components/Mermaid/demo/sequence.tsx +18 -0
  245. package/components/Mermaid/demo/state.tsx +16 -0
  246. package/components/Mermaid/demo/timeline.tsx +15 -0
  247. package/components/Mermaid/index.en-US.md +27 -0
  248. package/components/Mermaid/index.tsx +118 -0
  249. package/components/Mermaid/index.zh-CN.md +27 -0
  250. package/components/OperateCard/OperateCard.tsx +93 -0
  251. package/components/OperateCard/demo/index.tsx +35 -0
  252. package/components/OperateCard/demo/rag.tsx +19 -0
  253. package/components/OperateCard/demo/thinking.tsx +17 -0
  254. package/components/OperateCard/demo/todo.tsx +28 -0
  255. package/components/OperateCard/demo/toolCall.tsx +14 -0
  256. package/components/OperateCard/demo/webSearch.tsx +12 -0
  257. package/components/OperateCard/index.en-US.md +51 -0
  258. package/components/OperateCard/index.tsx +1 -0
  259. package/components/OperateCard/index.zh-CN.md +51 -0
  260. package/components/OperateCard/preset/Rag.tsx +90 -0
  261. package/components/OperateCard/preset/Thinking.tsx +45 -0
  262. package/components/OperateCard/preset/TodoList.tsx +73 -0
  263. package/components/OperateCard/preset/ToolCall.tsx +67 -0
  264. package/components/OperateCard/preset/WebSearch.tsx +65 -0
  265. package/components/OperateCard/preset/index.tsx +5 -0
  266. package/components/OperateCard/style.ts +268 -0
  267. package/components/Provider/CustomCardsProvider.tsx +17 -0
  268. package/components/Provider/GlobalProvider.tsx +17 -0
  269. package/components/Provider/index.tsx +33 -0
  270. package/components/Provider/types.ts +23 -0
  271. package/components/ResponsesAPI/index.tsx +0 -0
  272. package/components/Sender/ModeSelect/index.tsx +160 -0
  273. package/components/Sender/ModeSelect/styles.ts +0 -0
  274. package/components/Sender/SenderHeader.tsx +164 -0
  275. package/components/Sender/StopLoading.tsx +48 -0
  276. package/components/Sender/components/ActionButton.tsx +106 -0
  277. package/components/Sender/components/ClearButton.tsx +10 -0
  278. package/components/Sender/components/LoadingButton.tsx +26 -0
  279. package/components/Sender/components/SendButton.tsx +22 -0
  280. package/components/Sender/components/SpeechButton/RecordingIcon.tsx +68 -0
  281. package/components/Sender/components/SpeechButton/index.tsx +30 -0
  282. package/components/Sender/demo/asr.tsx +7 -0
  283. package/components/Sender/demo/basic.tsx +7 -0
  284. package/components/Sender/demo/loading.tsx +5 -0
  285. package/components/Sender/demo/moreMode.tsx +45 -0
  286. package/components/Sender/demo/morePrefixAction.tsx +40 -0
  287. package/components/Sender/demo/withFile.tsx +54 -0
  288. package/components/Sender/demo/withImage.tsx +52 -0
  289. package/components/Sender/index.en-US.md +29 -0
  290. package/components/Sender/index.tsx +491 -0
  291. package/components/Sender/index.zh-CN.md +30 -0
  292. package/components/Sender/style/index.ts +150 -0
  293. package/components/Sender/useSpeech.ts +133 -0
  294. package/components/StatusCard/demo/index.tsx +32 -0
  295. package/components/StatusCard/index.en-US.md +30 -0
  296. package/components/StatusCard/index.tsx +162 -0
  297. package/components/StatusCard/index.zh-CN.md +27 -0
  298. package/components/StatusCard/style.ts +119 -0
  299. package/components/Stream/index.ts +203 -0
  300. package/components/Util/hooks/use-proxy-imperative-handle.ts +25 -0
  301. package/components/Util/sleep.ts +3 -0
  302. package/components/Util/type.ts +1 -0
  303. package/components/Util/warning.ts +118 -0
  304. package/components/Version/index.ts +3 -0
  305. package/components/Voice/Recorder.tsx +3 -0
  306. package/components/Voice/demo/index.tsx +0 -0
  307. package/components/Voice/index.en-US.md +8 -0
  308. package/components/Voice/index.tsx +0 -0
  309. package/components/Voice/index.zh-CN.md +9 -0
  310. package/components/Welcome/demo/EyeFollower.tsx +161 -0
  311. package/components/Welcome/demo/demo0.tsx +14 -0
  312. package/components/Welcome/demo/demo1.tsx +16 -0
  313. package/components/Welcome/demo/demo2.tsx +30 -0
  314. package/components/Welcome/demo/demo3.tsx +16 -0
  315. package/components/Welcome/index.en-US.md +28 -0
  316. package/components/Welcome/index.tsx +72 -0
  317. package/components/Welcome/index.zh-CN.md +28 -0
  318. package/components/index.ts +88 -0
  319. package/components/overview.en-US.md +10 -0
  320. package/components/overview.zh-CN.md +10 -0
  321. package/lib/AgentScopeRuntimeWebUI/index.d.ts +1 -0
  322. package/lib/AgentScopeRuntimeWebUI/index.js +1 -0
  323. package/lib/AgentScopeRuntimeWebUI/starter/OptionsPanel/FormItem.d.ts +9 -0
  324. package/lib/AgentScopeRuntimeWebUI/starter/OptionsPanel/FormItem.js +33 -0
  325. package/lib/AgentScopeRuntimeWebUI/starter/OptionsPanel/OptionsEditor.d.ts +7 -0
  326. package/lib/AgentScopeRuntimeWebUI/starter/OptionsPanel/OptionsEditor.js +188 -0
  327. package/lib/AgentScopeRuntimeWebUI/starter/OptionsPanel/defaultConfig.d.ts +29 -0
  328. package/lib/AgentScopeRuntimeWebUI/starter/OptionsPanel/defaultConfig.js +35 -0
  329. package/lib/AgentScopeRuntimeWebUI/starter/OptionsPanel/index.d.ts +6 -0
  330. package/lib/AgentScopeRuntimeWebUI/starter/OptionsPanel/index.js +49 -0
  331. package/lib/AgentScopeRuntimeWebUI/starter/index.d.ts +1 -0
  332. package/lib/AgentScopeRuntimeWebUI/starter/index.js +70 -0
  333. package/lib/AgentScopeRuntimeWebUI/starter/sessionApi/index.d.ts +14 -0
  334. package/lib/AgentScopeRuntimeWebUI/starter/sessionApi/index.js +143 -0
  335. package/package.json +3 -2
@@ -0,0 +1,51 @@
1
+ import { RenderMessageProps } from "../props";
2
+ import { UserMessage as DefaultUserMessage } from "./UserMessage";
3
+ import { AssistantMessage as DefaultAssistantMessage } from "./AssistantMessage";
4
+
5
+ export function RenderTextMessage({
6
+ UserMessage = DefaultUserMessage,
7
+ AssistantMessage = DefaultAssistantMessage,
8
+ ...props
9
+ }: RenderMessageProps) {
10
+ const {
11
+ message,
12
+ inProgress,
13
+ index,
14
+ isCurrentMessage,
15
+ onRegenerate,
16
+ onCopy,
17
+ onThumbsUp,
18
+ onThumbsDown,
19
+ markdownTagRenderers,
20
+ } = props;
21
+
22
+ if (message.isTextMessage()) {
23
+ if (message.role === "user") {
24
+ return (
25
+ <UserMessage
26
+ key={index}
27
+ data-message-role="user"
28
+ message={message.content}
29
+ rawData={message}
30
+ />
31
+ );
32
+ } else if (message.role == "assistant") {
33
+ return (
34
+ <AssistantMessage
35
+ key={index}
36
+ data-message-role="assistant"
37
+ message={message.content}
38
+ rawData={message}
39
+ isLoading={inProgress && isCurrentMessage && !message.content}
40
+ isGenerating={inProgress && isCurrentMessage && !!message.content}
41
+ isCurrentMessage={isCurrentMessage}
42
+ onRegenerate={() => onRegenerate?.(message.id)}
43
+ onCopy={onCopy}
44
+ onThumbsUp={onThumbsUp}
45
+ onThumbsDown={onThumbsDown}
46
+ markdownTagRenderers={markdownTagRenderers}
47
+ />
48
+ );
49
+ }
50
+ }
51
+ }
@@ -0,0 +1,10 @@
1
+ import { UserMessageProps } from "../props";
2
+ import { Bubble } from "@agentscope-ai/chat";
3
+
4
+ export const UserMessage = (props: UserMessageProps) => {
5
+ return <Bubble
6
+ role="user"
7
+ content={props.rawData.content}
8
+ id={props.rawData.id}
9
+ ></Bubble>
10
+ };
@@ -0,0 +1,186 @@
1
+ import { Message, TextMessage } from "@copilotkit/runtime-client-gql";
2
+ import { CopilotChatSuggestion } from "../../types/suggestions";
3
+ import { ReactNode } from "react";
4
+
5
+ export interface ButtonProps {}
6
+
7
+ export interface WindowProps {
8
+ clickOutsideToClose: boolean;
9
+ hitEscapeToClose: boolean;
10
+ shortcut: string;
11
+ children?: React.ReactNode;
12
+ }
13
+
14
+ export interface HeaderProps {}
15
+
16
+ export interface SuggestionsProps {
17
+ title: string;
18
+ message: string;
19
+ partial?: boolean;
20
+ className?: string;
21
+ onClick: (message: string) => void;
22
+ }
23
+
24
+ export type ComponentsMap<T extends Record<string, object> = Record<string, object>> = {
25
+ [K in keyof T]: React.FC<{ children?: ReactNode } & T[K]>;
26
+ };
27
+
28
+ export interface MessagesProps {
29
+ messages: Message[];
30
+ inProgress: boolean;
31
+ children?: React.ReactNode;
32
+ AssistantMessage: React.ComponentType<AssistantMessageProps>;
33
+ UserMessage: React.ComponentType<UserMessageProps>;
34
+ RenderTextMessage: React.ComponentType<RenderMessageProps>;
35
+ RenderActionExecutionMessage: React.ComponentType<RenderMessageProps>;
36
+ RenderAgentStateMessage: React.ComponentType<RenderMessageProps>;
37
+ RenderResultMessage: React.ComponentType<RenderMessageProps>;
38
+ RenderImageMessage: React.ComponentType<RenderMessageProps>;
39
+
40
+ /**
41
+ * Callback function to regenerate the assistant's response
42
+ */
43
+ onRegenerate?: (messageId: string) => void;
44
+
45
+ /**
46
+ * Callback function when the message is copied
47
+ */
48
+ onCopy?: (message: string) => void;
49
+
50
+ /**
51
+ * Callback function for thumbs up feedback
52
+ */
53
+ onThumbsUp?: (message: TextMessage) => void;
54
+
55
+ /**
56
+ * Callback function for thumbs down feedback
57
+ */
58
+ onThumbsDown?: (message: TextMessage) => void;
59
+
60
+ /**
61
+ * A list of markdown components to render in assistant message.
62
+ * Useful when you want to render custom elements in the message (e.g a reference tag element)
63
+ */
64
+ markdownTagRenderers?: ComponentsMap;
65
+ }
66
+
67
+ export interface Renderer {
68
+ content: string;
69
+ }
70
+
71
+ export interface UserMessageProps {
72
+ message?: string;
73
+ rawData: any;
74
+ subComponent?: React.JSX.Element;
75
+ }
76
+
77
+ export interface AssistantMessageProps {
78
+ /**
79
+ * The message content from the assistant
80
+ */
81
+
82
+ message?: string;
83
+
84
+ /**
85
+ * Indicates if this is the last message
86
+ */
87
+ isCurrentMessage?: boolean;
88
+
89
+ /**
90
+ * The raw data from the assistant's response
91
+ */
92
+ rawData: any;
93
+
94
+ /**
95
+ * A component that was decided to render by the LLM.
96
+ * When working with useCopilotActions and useCoAgentStateRender, this will be
97
+ * the render component that was specified.
98
+ */
99
+ subComponent?: React.JSX.Element;
100
+
101
+ /**
102
+ * Whether a response is loading, this is when the LLM is thinking of a response but hasn't finished yet.
103
+ */
104
+ isLoading: boolean;
105
+
106
+ /**
107
+ * Whether a response is generating, this is when the LLM is actively generating and streaming content.
108
+ */
109
+ isGenerating: boolean;
110
+
111
+ /**
112
+ * Callback function to regenerate the assistant's response
113
+ */
114
+ onRegenerate?: () => void;
115
+
116
+ /**
117
+ * Callback function when the message is copied
118
+ */
119
+ onCopy?: (message: string) => void;
120
+
121
+ /**
122
+ * Callback function for thumbs up feedback
123
+ */
124
+ onThumbsUp?: (message: TextMessage) => void;
125
+
126
+ /**
127
+ * Callback function for thumbs down feedback
128
+ */
129
+ onThumbsDown?: (message: TextMessage) => void;
130
+
131
+ /**
132
+ * A list of markdown components to render in assistant message.
133
+ * Useful when you want to render custom elements in the message (e.g a reference tag element)
134
+ */
135
+ markdownTagRenderers?: ComponentsMap;
136
+ }
137
+
138
+ export interface RenderMessageProps {
139
+ message: Message;
140
+ inProgress: boolean;
141
+ index: number;
142
+ isCurrentMessage: boolean;
143
+ actionResult?: string;
144
+ AssistantMessage?: React.ComponentType<AssistantMessageProps>;
145
+ UserMessage?: React.ComponentType<UserMessageProps>;
146
+
147
+ /**
148
+ * Callback function to regenerate the assistant's response
149
+ */
150
+ onRegenerate?: (messageId: string) => void;
151
+
152
+ /**
153
+ * Callback function when the message is copied
154
+ */
155
+ onCopy?: (message: string) => void;
156
+
157
+ /**
158
+ * Callback function for thumbs up feedback
159
+ */
160
+ onThumbsUp?: (message: TextMessage) => void;
161
+
162
+ /**
163
+ * Callback function for thumbs down feedback
164
+ */
165
+ onThumbsDown?: (message: TextMessage) => void;
166
+
167
+ /**
168
+ * A list of markdown components to render in assistant message.
169
+ * Useful when you want to render custom elements in the message (e.g a reference tag element)
170
+ */
171
+ markdownTagRenderers?: ComponentsMap;
172
+ }
173
+
174
+ export interface InputProps {
175
+ inProgress: boolean;
176
+ onSend: (text: string) => Promise<Message>;
177
+ isVisible?: boolean;
178
+ onStop?: () => void;
179
+ onUpload?: () => void;
180
+ hideStopButton?: boolean;
181
+ }
182
+
183
+ export interface RenderSuggestionsListProps {
184
+ suggestions: CopilotChatSuggestion[];
185
+ onSuggestionClick: (message: string) => void;
186
+ }
@@ -0,0 +1 @@
1
+ export * from "./chat";
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export * from "./use-copilot-chat-suggestions";
@@ -0,0 +1,122 @@
1
+ /**
2
+ * <Callout type="warning">
3
+ * useCopilotChatSuggestions is experimental. The interface is not final and
4
+ * can change without notice.
5
+ * </Callout>
6
+ *
7
+ * `useCopilotReadable` is a React hook that provides app-state and other information
8
+ * to the Copilot. Optionally, the hook can also handle hierarchical state within your
9
+ * application, passing these parent-child relationships to the Copilot.
10
+ *
11
+ * <br/>
12
+ * <img src="/images/use-copilot-chat-suggestions/use-copilot-chat-suggestions.gif" width="500" />
13
+ *
14
+ * ## Usage
15
+ *
16
+ * ### Install Dependencies
17
+ *
18
+ * This component is part of the [@copilotkit/react-ui](https://npmjs.com/package/@copilotkit/react-ui) package.
19
+ *
20
+ * ```shell npm2yarn \"@copilotkit/react-ui"\
21
+ * npm install @copilotkit/react-core @copilotkit/react-ui
22
+ * ```
23
+ *
24
+ * ### Simple Usage
25
+ *
26
+ * ```tsx
27
+ * import { useCopilotChatSuggestions } from "@copilotkit/react-ui";
28
+ *
29
+ * export function MyComponent() {
30
+ * const [employees, setEmployees] = useState([]);
31
+ *
32
+ * useCopilotChatSuggestions({
33
+ * instructions: `The following employees are on duty: ${JSON.stringify(employees)}`,
34
+ * });
35
+ * }
36
+ * ```
37
+ *
38
+ * ### Dependency Management
39
+ *
40
+ * ```tsx
41
+ * import { useCopilotChatSuggestions } from "@copilotkit/react-ui";
42
+ *
43
+ * export function MyComponent() {
44
+ * useCopilotChatSuggestions(
45
+ * {
46
+ * instructions: "Suggest the most relevant next actions.",
47
+ * },
48
+ * [appState],
49
+ * );
50
+ * }
51
+ * ```
52
+ *
53
+ * In the example above, the suggestions are generated based on the given instructions.
54
+ * The hook monitors `appState`, and updates suggestions accordingly whenever it changes.
55
+ *
56
+ * ### Behavior and Lifecycle
57
+ *
58
+ * The hook registers the configuration with the chat context upon component mount and
59
+ * removes it on unmount, ensuring a clean and efficient lifecycle management.
60
+ */
61
+
62
+ import { useEffect } from "react";
63
+ import { useCopilotContext } from "@copilotkit/react-core";
64
+ import { randomId } from "@copilotkit/shared";
65
+
66
+ interface UseCopilotChatSuggestionsConfiguration {
67
+ /**
68
+ * A prompt or instructions for the GPT to generate suggestions.
69
+ */
70
+ instructions: string;
71
+ /**
72
+ * The minimum number of suggestions to generate. Defaults to `1`.
73
+ * @default 1
74
+ */
75
+ minSuggestions?: number;
76
+ /**
77
+ * The maximum number of suggestions to generate. Defaults to `3`.
78
+ * @default 1
79
+ */
80
+ maxSuggestions?: number;
81
+
82
+ /**
83
+ * Whether the suggestions are available. Defaults to `enabled`.
84
+ * @default enabled
85
+ */
86
+ available?: "enabled" | "disabled";
87
+
88
+ /**
89
+ * An optional class name to apply to the suggestions.
90
+ */
91
+ className?: string;
92
+ }
93
+
94
+ export function useCopilotChatSuggestions(
95
+ {
96
+ available = "enabled",
97
+ instructions,
98
+ className,
99
+ minSuggestions = 1,
100
+ maxSuggestions = 3,
101
+ }: UseCopilotChatSuggestionsConfiguration,
102
+ dependencies: any[] = [],
103
+ ) {
104
+ const context = useCopilotContext();
105
+
106
+ useEffect(() => {
107
+ if (available === "disabled") return;
108
+
109
+ const id = randomId();
110
+
111
+ context.addChatSuggestionConfiguration(id, {
112
+ instructions,
113
+ minSuggestions,
114
+ maxSuggestions,
115
+ className,
116
+ });
117
+
118
+ return () => {
119
+ context.removeChatSuggestionConfiguration(id);
120
+ };
121
+ }, [...dependencies, instructions, minSuggestions, maxSuggestions, className, available]);
122
+ }
@@ -0,0 +1,29 @@
1
+ import * as React from "react";
2
+
3
+ export interface useCopyToClipboardProps {
4
+ timeout?: number;
5
+ }
6
+
7
+ export function useCopyToClipboard({ timeout = 2000 }: useCopyToClipboardProps) {
8
+ const [isCopied, setIsCopied] = React.useState<Boolean>(false);
9
+
10
+ const copyToClipboard = (value: string) => {
11
+ if (typeof window === "undefined" || !navigator.clipboard?.writeText) {
12
+ return;
13
+ }
14
+
15
+ if (!value) {
16
+ return;
17
+ }
18
+
19
+ navigator.clipboard.writeText(value).then(() => {
20
+ setIsCopied(true);
21
+
22
+ setTimeout(() => {
23
+ setIsCopied(false);
24
+ }, timeout);
25
+ });
26
+ };
27
+
28
+ return { isCopied, copyToClipboard };
29
+ }
@@ -0,0 +1,10 @@
1
+ export const useDarkMode = () => {
2
+ if (typeof window === "undefined") return false;
3
+ return (
4
+ document.documentElement.classList.contains("dark") ||
5
+ document.body.classList.contains("dark") ||
6
+ document.documentElement.getAttribute("data-theme") === "dark" ||
7
+ document.body.getAttribute("data-theme") === "dark" ||
8
+ window.matchMedia("(prefers-color-scheme: dark)").matches
9
+ );
10
+ };
@@ -0,0 +1,166 @@
1
+ import { useCopilotContext, useCopilotMessagesContext } from "@copilotkit/react-core";
2
+ import { Message, TextMessage } from "@copilotkit/runtime-client-gql";
3
+ import { MutableRefObject, useEffect, useRef, useState } from "react";
4
+
5
+ export const checkMicrophonePermission = async () => {
6
+ try {
7
+ const permissionStatus = await navigator.permissions.query({
8
+ name: "microphone" as PermissionName,
9
+ });
10
+ if (permissionStatus.state === "granted") {
11
+ return true;
12
+ } else {
13
+ return false;
14
+ }
15
+ } catch (err) {
16
+ console.error("Error checking microphone permission", err);
17
+ }
18
+ };
19
+
20
+ export const requestMicAndPlaybackPermission = async () => {
21
+ try {
22
+ const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
23
+ const audioContext = new window.AudioContext();
24
+ await audioContext.resume();
25
+ return { stream, audioContext };
26
+ } catch (err) {
27
+ console.error("Error requesting microphone and playback permissions", err);
28
+ return null;
29
+ }
30
+ };
31
+
32
+ const startRecording = async (
33
+ mediaStreamRef: MutableRefObject<MediaStream | null>,
34
+ mediaRecorderRef: MutableRefObject<MediaRecorder | null>,
35
+ audioContextRef: MutableRefObject<AudioContext | null>,
36
+ recordedChunks: Blob[],
37
+ onStop: () => void,
38
+ ) => {
39
+ if (!mediaStreamRef.current || !audioContextRef.current) {
40
+ mediaStreamRef.current = await navigator.mediaDevices.getUserMedia({ audio: true });
41
+ audioContextRef.current = new window.AudioContext();
42
+ await audioContextRef.current.resume();
43
+ }
44
+
45
+ mediaRecorderRef.current = new MediaRecorder(mediaStreamRef.current!);
46
+ mediaRecorderRef.current.start(1000);
47
+ mediaRecorderRef.current.ondataavailable = (event) => {
48
+ recordedChunks.push(event.data);
49
+ };
50
+ mediaRecorderRef.current.onstop = onStop;
51
+ };
52
+
53
+ const stopRecording = (mediaRecorderRef: MutableRefObject<MediaRecorder | null>) => {
54
+ if (mediaRecorderRef.current && mediaRecorderRef.current.state !== "inactive") {
55
+ mediaRecorderRef.current.stop();
56
+ }
57
+ };
58
+
59
+ const transcribeAudio = async (recordedChunks: Blob[], transcribeAudioUrl: string) => {
60
+ const completeBlob = new Blob(recordedChunks, { type: "audio/mp4" });
61
+ const formData = new FormData();
62
+ formData.append("file", completeBlob, "recording.mp4");
63
+
64
+ const response = await fetch(transcribeAudioUrl, {
65
+ method: "POST",
66
+ body: formData,
67
+ });
68
+
69
+ if (!response.ok) {
70
+ throw new Error(`Error: ${response.statusText}`);
71
+ }
72
+
73
+ const transcription = await response.json();
74
+ return transcription.text;
75
+ };
76
+
77
+ const playAudioResponse = (text: string, textToSpeechUrl: string, audioContext: AudioContext) => {
78
+ const encodedText = encodeURIComponent(text);
79
+ const url = `${textToSpeechUrl}?text=${encodedText}`;
80
+
81
+ fetch(url)
82
+ .then((response) => response.arrayBuffer())
83
+ .then((arrayBuffer) => audioContext.decodeAudioData(arrayBuffer))
84
+ .then((audioBuffer) => {
85
+ const source = audioContext.createBufferSource();
86
+ source.buffer = audioBuffer;
87
+ source.connect(audioContext.destination);
88
+ source.start(0);
89
+ })
90
+ .catch((error) => {
91
+ console.error("Error with decoding audio data", error);
92
+ });
93
+ };
94
+
95
+ export type PushToTalkState = "idle" | "recording" | "transcribing";
96
+
97
+ export type SendFunction = (text: string) => Promise<Message>;
98
+
99
+ export const usePushToTalk = ({
100
+ sendFunction,
101
+ inProgress,
102
+ }: {
103
+ sendFunction: SendFunction;
104
+ inProgress: boolean;
105
+ }) => {
106
+ const [pushToTalkState, setPushToTalkState] = useState<PushToTalkState>("idle");
107
+ const mediaStreamRef = useRef<MediaStream | null>(null);
108
+ const audioContextRef = useRef<AudioContext | null>(null);
109
+ const mediaRecorderRef = useRef<MediaRecorder | null>(null);
110
+ const recordedChunks = useRef<Blob[]>([]);
111
+ const generalContext = useCopilotContext();
112
+ const messagesContext = useCopilotMessagesContext();
113
+ const context = { ...generalContext, ...messagesContext };
114
+ const [startReadingFromMessageId, setStartReadingFromMessageId] = useState<string | null>(null);
115
+
116
+ useEffect(() => {
117
+ if (pushToTalkState === "recording") {
118
+ startRecording(
119
+ mediaStreamRef,
120
+ mediaRecorderRef,
121
+ audioContextRef,
122
+ recordedChunks.current,
123
+ () => {
124
+ setPushToTalkState("transcribing");
125
+ },
126
+ );
127
+ } else {
128
+ stopRecording(mediaRecorderRef);
129
+ if (pushToTalkState === "transcribing") {
130
+ transcribeAudio(recordedChunks.current, context.copilotApiConfig.transcribeAudioUrl!).then(
131
+ async (transcription) => {
132
+ recordedChunks.current = [];
133
+ setPushToTalkState("idle");
134
+ const message = await sendFunction(transcription);
135
+ setStartReadingFromMessageId(message.id);
136
+ },
137
+ );
138
+ }
139
+ }
140
+
141
+ return () => {
142
+ stopRecording(mediaRecorderRef);
143
+ };
144
+ }, [pushToTalkState]);
145
+
146
+ useEffect(() => {
147
+ if (inProgress === false && startReadingFromMessageId) {
148
+ const lastMessageIndex = context.messages.findIndex(
149
+ (message) => message.id === startReadingFromMessageId,
150
+ );
151
+
152
+ const messagesAfterLast = context.messages
153
+ .slice(lastMessageIndex + 1)
154
+ .filter(
155
+ (message) => message.isTextMessage() && message.role === "assistant",
156
+ ) as TextMessage[];
157
+
158
+ const text = messagesAfterLast.map((message) => message.content).join("\n");
159
+ playAudioResponse(text, context.copilotApiConfig.textToSpeechUrl!, audioContextRef.current!);
160
+
161
+ setStartReadingFromMessageId(null);
162
+ }
163
+ }, [startReadingFromMessageId, inProgress]);
164
+
165
+ return { pushToTalkState, setPushToTalkState };
166
+ };
@@ -0,0 +1,4 @@
1
+ export * from "./components";
2
+ export * from "./context";
3
+ export * from "./hooks";
4
+ export * from "./types";
@@ -0,0 +1,7 @@
1
+ import * as utils from "./utils";
2
+
3
+ describe("emptyTest", () => {
4
+ it("should be truthy", () => {
5
+ expect(true).toBeTruthy();
6
+ });
7
+ });
@@ -0,0 +1,27 @@
1
+ export async function fetcher<JSON = any>(input: RequestInfo, init?: RequestInit): Promise<JSON> {
2
+ const res = await fetch(input, init);
3
+
4
+ if (!res.ok) {
5
+ const json = await res.json();
6
+ if (json.error) {
7
+ const error = new Error(json.error) as Error & {
8
+ status: number;
9
+ };
10
+ error.status = res.status;
11
+ throw error;
12
+ } else {
13
+ throw new Error("An unexpected error occurred");
14
+ }
15
+ }
16
+
17
+ return res.json();
18
+ }
19
+
20
+ export function formatDate(input: string | number | Date): string {
21
+ const date = new Date(input);
22
+ return date.toLocaleDateString("en-US", {
23
+ month: "long",
24
+ day: "numeric",
25
+ year: "numeric",
26
+ });
27
+ }
File without changes
File without changes
@@ -0,0 +1 @@
1
+ export type { CopilotChatSuggestion } from "./suggestions";
@@ -0,0 +1,6 @@
1
+ export interface CopilotChatSuggestion {
2
+ title: string;
3
+ message: string;
4
+ partial?: boolean;
5
+ className?: string;
6
+ }