@opentiny/tiny-robot 0.5.0 → 0.5.1-alpha.1

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 (269) hide show
  1. package/dist/action-group/ActionGroup.vue.d.ts +26 -0
  2. package/dist/action-group/ActionGroupItem.vue.d.ts +18 -0
  3. package/dist/action-group/index.d.ts +12 -0
  4. package/dist/action-group/index.type.d.ts +17 -0
  5. package/dist/anchor/components/AnchorItem.vue.d.ts +24 -0
  6. package/dist/anchor/components/AnchorList.vue.d.ts +20 -0
  7. package/dist/anchor/components/AnchorOverlay.vue.d.ts +33 -0
  8. package/dist/anchor/components/AnchorSearch.vue.d.ts +7 -0
  9. package/dist/anchor/composables/index.d.ts +5 -0
  10. package/dist/anchor/composables/useActiveSync.d.ts +10 -0
  11. package/dist/anchor/composables/useFloatingOffset.d.ts +6 -0
  12. package/dist/anchor/composables/useNavController.d.ts +12 -0
  13. package/dist/anchor/composables/useOverlayInteractions.d.ts +6 -0
  14. package/dist/anchor/composables/useTargetFeedback.d.ts +5 -0
  15. package/dist/anchor/defaults.d.ts +16 -0
  16. package/dist/anchor/index.d.ts +7 -0
  17. package/dist/anchor/index.type.d.ts +60 -0
  18. package/dist/anchor/index.vue.d.ts +159 -0
  19. package/dist/anchor/internal.type.d.ts +103 -0
  20. package/dist/anchor/utils/scroll.d.ts +7 -0
  21. package/dist/anchor/utils/target.d.ts +6 -0
  22. package/dist/attachments/components/FileCard.vue.d.ts +18 -0
  23. package/dist/attachments/components/ImagePreview.vue.d.ts +17 -0
  24. package/dist/attachments/components/index.d.ts +2 -0
  25. package/dist/attachments/composables/index.d.ts +5 -0
  26. package/dist/attachments/composables/useFileCard.d.ts +15 -0
  27. package/dist/attachments/composables/useFileType.d.ts +20 -0
  28. package/dist/attachments/composables/useImagePreview.d.ts +18 -0
  29. package/dist/attachments/composables/useListType.d.ts +11 -0
  30. package/dist/attachments/index.d.ts +7 -0
  31. package/dist/attachments/index.type.d.ts +70 -0
  32. package/dist/attachments/index.vue.d.ts +27 -0
  33. package/dist/attachments/utils.d.ts +3 -0
  34. package/dist/base-popper/components/Popper.vue.d.ts +28 -0
  35. package/dist/base-popper/index.d.ts +2 -0
  36. package/dist/base-popper/index.vue.d.ts +41 -0
  37. package/dist/bubble/Bubble.vue.d.ts +47 -0
  38. package/dist/bubble/BubbleBoxWrapper.vue.d.ts +22 -0
  39. package/dist/bubble/BubbleContentWrapper.vue.d.ts +22 -0
  40. package/dist/bubble/BubbleItem.vue.d.ts +44 -0
  41. package/dist/bubble/BubbleList.vue.d.ts +43 -0
  42. package/dist/bubble/BubbleProvider.vue.d.ts +18 -0
  43. package/dist/bubble/composables/index.d.ts +11 -0
  44. package/dist/bubble/composables/useBubbleBoxRenderer.d.ts +18 -0
  45. package/dist/bubble/composables/useBubbleContentRenderer.d.ts +18 -0
  46. package/dist/bubble/composables/useBubbleEvent.d.ts +3 -0
  47. package/dist/bubble/composables/useBubbleStateChange.d.ts +1 -0
  48. package/dist/bubble/composables/useBubbleStore.d.ts +16 -0
  49. package/dist/bubble/composables/useContentResolver.d.ts +5 -0
  50. package/dist/bubble/composables/useCopyCleanup.d.ts +6 -0
  51. package/dist/bubble/composables/useMessageContent.d.ts +5 -0
  52. package/dist/bubble/composables/useMessageGroup.d.ts +4 -0
  53. package/dist/bubble/composables/useOmitMessageFields.d.ts +12 -0
  54. package/dist/bubble/composables/useToolCall.d.ts +25 -0
  55. package/dist/bubble/constants.d.ts +42 -0
  56. package/dist/bubble/index.d.ts +19 -0
  57. package/dist/bubble/index.type.d.ts +185 -0
  58. package/dist/bubble/renderers/Box.vue.d.ts +18 -0
  59. package/dist/bubble/renderers/Image.vue.d.ts +4 -0
  60. package/dist/bubble/renderers/Loading.vue.d.ts +4 -0
  61. package/dist/bubble/renderers/Markdown.vue.d.ts +4 -0
  62. package/dist/bubble/renderers/Reasoning.vue.d.ts +9 -0
  63. package/dist/bubble/renderers/Text.vue.d.ts +4 -0
  64. package/dist/bubble/renderers/Tool.vue.d.ts +14 -0
  65. package/dist/bubble/renderers/ToolRole.vue.d.ts +4 -0
  66. package/dist/bubble/renderers/Tools.vue.d.ts +4 -0
  67. package/dist/bubble/renderers/allRenderers.d.ts +93 -0
  68. package/dist/bubble/renderers/defaultRenderers.d.ts +27 -0
  69. package/dist/bubble/utils.d.ts +7 -0
  70. package/dist/chat/components/ChatConversation.vue.d.ts +305 -0
  71. package/dist/chat/components/ChatLauncherButton.vue.d.ts +12 -0
  72. package/dist/chat/components/ChatMcpTrigger.vue.d.ts +30 -0
  73. package/dist/chat/components/ChatThemeToggleButton.vue.d.ts +6 -0
  74. package/dist/chat/components/ChatWelcome.vue.d.ts +14 -0
  75. package/dist/chat/components/icons/IconModelAliyunBailian.vue.d.ts +7 -0
  76. package/dist/chat/components/icons/IconModelDeepseek.vue.d.ts +7 -0
  77. package/dist/chat/components/icons/index.d.ts +5 -0
  78. package/dist/chat/composables/useChatConversation.d.ts +37 -0
  79. package/dist/chat/composables/useChatMcp.d.ts +29 -0
  80. package/dist/chat/composables/useChatModel.d.ts +27 -0
  81. package/dist/chat/index.d.ts +9 -0
  82. package/dist/chat/index.js +13904 -0
  83. package/dist/chat/index.type.d.ts +92 -0
  84. package/dist/chat/index.vue.d.ts +51 -0
  85. package/dist/chat/locale.d.ts +12 -0
  86. package/dist/chat/mcpServers.d.ts +3 -0
  87. package/dist/container/index.d.ts +7 -0
  88. package/dist/container/index.type.d.ts +20 -0
  89. package/dist/container/index.vue.d.ts +32 -0
  90. package/dist/conversations/index.d.ts +7 -0
  91. package/dist/conversations/index.vue.d.ts +2 -0
  92. package/dist/drag-overlay/constants.d.ts +17 -0
  93. package/dist/drag-overlay/directives/vDropzone.d.ts +14 -0
  94. package/dist/drag-overlay/index.d.ts +7 -0
  95. package/dist/drag-overlay/index.type.d.ts +105 -0
  96. package/dist/drag-overlay/index.vue.d.ts +20 -0
  97. package/dist/dropdown-menu/composables/usePopperHover.d.ts +6 -0
  98. package/dist/dropdown-menu/index.d.ts +7 -0
  99. package/dist/dropdown-menu/index.type.d.ts +42 -0
  100. package/dist/dropdown-menu/index.vue.d.ts +217 -0
  101. package/dist/feedback/components/SourceList.vue.d.ts +11 -0
  102. package/dist/feedback/components/index.d.ts +1 -0
  103. package/dist/feedback/index.d.ts +7 -0
  104. package/dist/feedback/index.type.d.ts +25 -0
  105. package/dist/feedback/index.vue.d.ts +13 -0
  106. package/dist/flow-layout-buttons/index.d.ts +7 -0
  107. package/dist/flow-layout-buttons/index.type.d.ts +35 -0
  108. package/dist/flow-layout-buttons/index.vue.d.ts +22 -0
  109. package/dist/history/components/Empty.vue.d.ts +7 -0
  110. package/dist/history/components/MenuList.vue.d.ts +24 -0
  111. package/dist/history/composables/useRenameEditor.d.ts +22 -0
  112. package/dist/history/constants.d.ts +1 -0
  113. package/dist/history/index.d.ts +7 -0
  114. package/dist/history/index.type.d.ts +33 -0
  115. package/dist/history/index.vue.d.ts +18 -0
  116. package/dist/icon-button/index.d.ts +7 -0
  117. package/dist/icon-button/index.type.d.ts +7 -0
  118. package/dist/icon-button/index.vue.d.ts +6 -0
  119. package/dist/index.d.ts +51 -5517
  120. package/dist/index.js +1 -1
  121. package/dist/layout/Layout.vue.d.ts +246 -0
  122. package/dist/layout/LayoutAsideToggle.vue.d.ts +20 -0
  123. package/dist/layout/LayoutProxyScrollbar.vue.d.ts +6 -0
  124. package/dist/layout/components/AsideContent.vue.d.ts +35 -0
  125. package/dist/layout/components/AsideResizeTrigger.vue.d.ts +20 -0
  126. package/dist/layout/components/FloatingDragBar.vue.d.ts +18 -0
  127. package/dist/layout/components/FloatingResizeTrigger.vue.d.ts +17 -0
  128. package/dist/layout/components/FloatingResizeTriggers.vue.d.ts +14 -0
  129. package/dist/layout/components/LayoutSurface.vue.d.ts +41 -0
  130. package/dist/layout/composables/useLayoutAsideStates.d.ts +21 -0
  131. package/dist/layout/composables/useLayoutContext.d.ts +4 -0
  132. package/dist/layout/composables/usePointerDrag.d.ts +19 -0
  133. package/dist/layout/index.d.ts +22 -0
  134. package/dist/layout/index.type.d.ts +111 -0
  135. package/dist/layout/internal.type.d.ts +43 -0
  136. package/dist/layout/utils/asideEventEmitters.d.ts +6 -0
  137. package/dist/layout/utils/asidePresets.d.ts +5 -0
  138. package/dist/layout/utils/cssLength.d.ts +2 -0
  139. package/dist/layout/utils/domInteraction.d.ts +1 -0
  140. package/dist/layout/utils/number.d.ts +1 -0
  141. package/dist/layout/utils/surfaceGeometry.d.ts +87 -0
  142. package/dist/layout/utils/surfaceResize.d.ts +10 -0
  143. package/dist/mcp-add-form/components/CodeEditor.vue.d.ts +9 -0
  144. package/dist/mcp-add-form/components/FormEditor.vue.d.ts +10 -0
  145. package/dist/mcp-add-form/components/index.d.ts +2 -0
  146. package/dist/mcp-add-form/index.d.ts +7 -0
  147. package/dist/mcp-add-form/index.type.d.ts +19 -0
  148. package/dist/mcp-add-form/index.vue.d.ts +13 -0
  149. package/dist/mcp-server-picker/components/NoData.vue.d.ts +7 -0
  150. package/dist/mcp-server-picker/components/PluginCard.vue.d.ts +40 -0
  151. package/dist/mcp-server-picker/components/PluginModal.vue.d.ts +15 -0
  152. package/dist/mcp-server-picker/components/index.d.ts +3 -0
  153. package/dist/mcp-server-picker/index.d.ts +7 -0
  154. package/dist/mcp-server-picker/index.type.d.ts +99 -0
  155. package/dist/mcp-server-picker/index.vue.d.ts +71 -0
  156. package/dist/prompts/index.d.ts +12 -0
  157. package/dist/prompts/index.type.d.ts +59 -0
  158. package/dist/prompts/prompt.vue.d.ts +5 -0
  159. package/dist/prompts/prompts.vue.d.ts +20 -0
  160. package/dist/sender/components/editor-content/index.vue.d.ts +4 -0
  161. package/dist/sender/components/footer/index.vue.d.ts +38 -0
  162. package/dist/sender/components/layouts/MultiLineLayout.vue.d.ts +43 -0
  163. package/dist/sender/components/layouts/SingleLineLayout.vue.d.ts +32 -0
  164. package/dist/sender/composables/index.d.ts +7 -0
  165. package/dist/sender/composables/useAutoSize.d.ts +5 -0
  166. package/dist/sender/composables/useEditor.d.ts +13 -0
  167. package/dist/sender/composables/useKeyboardShortcuts.d.ts +7 -0
  168. package/dist/sender/composables/useModeSwitch.d.ts +4 -0
  169. package/dist/sender/composables/useSenderCore.d.ts +31 -0
  170. package/dist/sender/composables/useSlotScope.d.ts +10 -0
  171. package/dist/sender/context/index.d.ts +6 -0
  172. package/dist/sender/context/types.d.ts +7 -0
  173. package/dist/sender/extensions/constants.d.ts +94 -0
  174. package/dist/sender/extensions/index.d.ts +12 -0
  175. package/dist/sender/extensions/mention/commands.d.ts +20 -0
  176. package/dist/sender/extensions/mention/components/mention-list.vue.d.ts +18 -0
  177. package/dist/sender/extensions/mention/components/mention-view.vue.d.ts +19 -0
  178. package/dist/sender/extensions/mention/extension.d.ts +6 -0
  179. package/dist/sender/extensions/mention/index.d.ts +22 -0
  180. package/dist/sender/extensions/mention/plugin.d.ts +16 -0
  181. package/dist/sender/extensions/mention/types.d.ts +126 -0
  182. package/dist/sender/extensions/mention/utils.d.ts +34 -0
  183. package/dist/sender/extensions/suggestion/extension.d.ts +8 -0
  184. package/dist/sender/extensions/suggestion/index.d.ts +20 -0
  185. package/dist/sender/extensions/suggestion/plugin.d.ts +21 -0
  186. package/dist/sender/extensions/suggestion/suggestion-list.vue.d.ts +46 -0
  187. package/dist/sender/extensions/suggestion/types.d.ts +254 -0
  188. package/dist/sender/extensions/suggestion/utils/filter.d.ts +29 -0
  189. package/dist/sender/extensions/suggestion/utils/highlight.d.ts +73 -0
  190. package/dist/sender/extensions/template/block/extension.d.ts +6 -0
  191. package/dist/sender/extensions/template/block/plugins.d.ts +13 -0
  192. package/dist/sender/extensions/template/block/template-block-view.vue.d.ts +14 -0
  193. package/dist/sender/extensions/template/commands.d.ts +31 -0
  194. package/dist/sender/extensions/template/extension.d.ts +6 -0
  195. package/dist/sender/extensions/template/index.d.ts +21 -0
  196. package/dist/sender/extensions/template/select/dropdown-manager.d.ts +23 -0
  197. package/dist/sender/extensions/template/select/extension.d.ts +5 -0
  198. package/dist/sender/extensions/template/select/plugins.d.ts +34 -0
  199. package/dist/sender/extensions/template/select/template-select-view.vue.d.ts +20 -0
  200. package/dist/sender/extensions/template/types.d.ts +100 -0
  201. package/dist/sender/extensions/template/utils.d.ts +20 -0
  202. package/dist/sender/extensions/utils/id-generator.d.ts +16 -0
  203. package/dist/sender/extensions/utils/index.d.ts +7 -0
  204. package/dist/sender/extensions/utils/keyboard.d.ts +49 -0
  205. package/dist/sender/extensions/utils/position.d.ts +25 -0
  206. package/dist/sender/index.d.ts +139 -0
  207. package/dist/sender/index.type.d.ts +311 -0
  208. package/dist/sender/index.vue.d.ts +93 -0
  209. package/dist/sender/types/base.d.ts +239 -0
  210. package/dist/sender/types/components.d.ts +68 -0
  211. package/dist/sender/types/composables.d.ts +122 -0
  212. package/dist/sender/types/context.d.ts +138 -0
  213. package/dist/sender/types/slots.d.ts +67 -0
  214. package/dist/sender/utils/countGraphemes.d.ts +1 -0
  215. package/dist/sender-actions/action-button/index.vue.d.ts +23 -0
  216. package/dist/sender-actions/clear-button/index.vue.d.ts +2 -0
  217. package/dist/sender-actions/clear-button/useClearButtonState.d.ts +6 -0
  218. package/dist/sender-actions/default-actions/index.vue.d.ts +17 -0
  219. package/dist/sender-actions/index.d.ts +21 -0
  220. package/dist/sender-actions/index.type.d.ts +7 -0
  221. package/dist/sender-actions/submit-button/index.vue.d.ts +2 -0
  222. package/dist/sender-actions/types/common.d.ts +40 -0
  223. package/dist/sender-actions/types/index.d.ts +5 -0
  224. package/dist/sender-actions/types/tooltip.d.ts +7 -0
  225. package/dist/sender-actions/upload-button/index.type.d.ts +57 -0
  226. package/dist/sender-actions/upload-button/index.vue.d.ts +16 -0
  227. package/dist/sender-actions/utils/tooltip.d.ts +8 -0
  228. package/dist/sender-actions/voice-button/index.type.d.ts +78 -0
  229. package/dist/sender-actions/voice-button/index.vue.d.ts +43 -0
  230. package/dist/sender-actions/voice-button/speech.types.d.ts +40 -0
  231. package/dist/sender-actions/voice-button/useSpeechHandler.d.ts +10 -0
  232. package/dist/sender-actions/voice-button/webSpeechHandler.d.ts +40 -0
  233. package/dist/sender-actions/word-counter/index.vue.d.ts +2 -0
  234. package/dist/sender-compat/index.d.ts +7 -0
  235. package/dist/sender-compat/index.type.d.ts +91 -0
  236. package/dist/sender-compat/index.vue.d.ts +538 -0
  237. package/dist/shared/composables/createTeleport.d.ts +2 -0
  238. package/dist/shared/composables/index.d.ts +6 -0
  239. package/dist/shared/composables/useAutoScroll.d.ts +25 -0
  240. package/dist/shared/composables/useControllableState.d.ts +20 -0
  241. package/dist/shared/composables/useSlotRefs.d.ts +12 -0
  242. package/dist/shared/composables/useTeleportTarget.d.ts +11 -0
  243. package/dist/shared/composables/useTouchDevice.d.ts +3 -0
  244. package/dist/shared/utils.d.ts +7 -0
  245. package/dist/style.css +1 -1
  246. package/dist/suggestion-pills/components/PillButton.vue.d.ts +16 -0
  247. package/dist/suggestion-pills/components/index.d.ts +1 -0
  248. package/dist/suggestion-pills/index.d.ts +13 -0
  249. package/dist/suggestion-pills/index.type.d.ts +45 -0
  250. package/dist/suggestion-pills/index.vue.d.ts +44 -0
  251. package/dist/suggestion-popover/components/Backdrop.vue.d.ts +5 -0
  252. package/dist/suggestion-popover/components/Header.vue.d.ts +4 -0
  253. package/dist/suggestion-popover/components/Loading.vue.d.ts +17 -0
  254. package/dist/suggestion-popover/components/NoData.vue.d.ts +17 -0
  255. package/dist/suggestion-popover/components/Tooltip.vue.d.ts +19 -0
  256. package/dist/suggestion-popover/index.d.ts +7 -0
  257. package/dist/suggestion-popover/index.type.d.ts +80 -0
  258. package/dist/suggestion-popover/index.vue.d.ts +262 -0
  259. package/dist/theme-provider/constants.d.ts +6 -0
  260. package/dist/theme-provider/index.d.ts +9 -0
  261. package/dist/theme-provider/index.js +32 -41
  262. package/dist/theme-provider/index.type.d.ts +18 -0
  263. package/dist/theme-provider/index.vue.d.ts +32 -0
  264. package/dist/theme-provider/useTheme.d.ts +11 -0
  265. package/dist/useTheme.js +22 -0
  266. package/dist/welcome/index.d.ts +7 -0
  267. package/dist/welcome/index.type.d.ts +10 -0
  268. package/dist/welcome/index.vue.d.ts +18 -0
  269. package/package.json +21 -2
@@ -0,0 +1,19 @@
1
+ import { App } from 'vue';
2
+ import { default as BubbleComp } from './Bubble.vue';
3
+ import { default as BubbleListComp } from './BubbleList.vue';
4
+ import { default as BubbleProviderComp } from './BubbleProvider.vue';
5
+ declare const bubbleInstall: (app: App) => void;
6
+ export declare const Bubble: typeof BubbleComp & {
7
+ install: typeof bubbleInstall;
8
+ };
9
+ declare const bubbleListInstall: (app: App) => void;
10
+ export declare const BubbleList: typeof BubbleListComp & {
11
+ install: typeof bubbleListInstall;
12
+ };
13
+ declare const bubbleProviderInstall: (app: App) => void;
14
+ export declare const BubbleProvider: typeof BubbleProviderComp & {
15
+ install: typeof bubbleProviderInstall;
16
+ };
17
+ export { useBubbleBoxRenderer, useBubbleContentRenderer, useBubbleEventFn, useBubbleStateChangeFn, useMessageContent, useOmitMessageFields, useToolCall, } from './composables';
18
+ export { BubbleRendererMatchPriority } from './constants';
19
+ export { BubbleRenderers } from './renderers/allRenderers';
@@ -0,0 +1,185 @@
1
+ import { Component, VNode } from 'vue';
2
+ /**
3
+ * 工具调用接口(支持 OpenAI 格式)
4
+ */
5
+ export interface ToolCall {
6
+ id: string;
7
+ type: 'function' | string;
8
+ function: {
9
+ name: string;
10
+ arguments: string;
11
+ };
12
+ [x: string]: any;
13
+ }
14
+ export type ChatMessageContentItem = {
15
+ type: string;
16
+ [key: string]: any;
17
+ };
18
+ export type ChatMessageContent = string | ChatMessageContentItem[];
19
+ /**
20
+ * 聊天消息接口(支持 OpenAI 格式)
21
+ */
22
+ interface ChatMessage<T extends ChatMessageContent = ChatMessageContent> {
23
+ role: string;
24
+ content?: T;
25
+ reasoning_content?: string;
26
+ tool_calls?: ToolCall[];
27
+ tool_call_id?: string;
28
+ name?: string;
29
+ }
30
+ type ChatMessageWithOptionalRole<T extends ChatMessageContent = ChatMessageContent> = Omit<ChatMessage<T>, 'role'> & {
31
+ role?: string;
32
+ };
33
+ export type BubbleMessage<T extends ChatMessageContent = ChatMessageContent, S extends Record<string, unknown> = Record<string, unknown>> = ChatMessageWithOptionalRole<T> & {
34
+ id?: string;
35
+ loading?: boolean;
36
+ state?: S;
37
+ };
38
+ export type BubbleProps = BubbleMessage & {
39
+ hidden?: boolean;
40
+ avatar?: VNode | Component;
41
+ placement?: 'start' | 'end';
42
+ shape?: 'corner' | 'rounded' | 'none';
43
+ contentRenderMode?: 'single' | 'split';
44
+ contentResolver?: (message: BubbleMessage) => ChatMessageContent | undefined;
45
+ fallbackBoxRenderer?: Component<BubbleBoxRendererProps>;
46
+ fallbackContentRenderer?: Component<BubbleContentRendererProps>;
47
+ };
48
+ export type BubbleMessageGroup = {
49
+ role: string;
50
+ messages: BubbleMessage[];
51
+ messageIndexes: number[];
52
+ /**
53
+ * @deprecated For custom groups with non-contiguous messages, deriving the global index from
54
+ * startIndex plus a local index can be incorrect. Use messageIndexes for index mapping instead.
55
+ */
56
+ startIndex?: number;
57
+ };
58
+ export type BubbleAttributes = Record<string, unknown>;
59
+ export type BubbleBoxRendererAttributeMap = BubbleAttributes;
60
+ export type BubbleBoxRendererAttributesResolver = (messages: BubbleMessage[], content: ChatMessageContentItem | undefined, contentIndex: number | undefined) => BubbleBoxRendererAttributeMap | undefined;
61
+ export type BubbleBoxAttributesResolver = (messages: BubbleMessage[], content: ChatMessageContentItem | undefined, contentIndex: number | undefined) => BubbleAttributes | undefined;
62
+ export type BubbleContentAttributesResolver = (message: BubbleMessage, content: ChatMessageContentItem, contentIndex: number) => BubbleAttributes | undefined;
63
+ export type BubbleBoxAttributesConfig = BubbleAttributes | BubbleBoxAttributesResolver;
64
+ export type BubbleContentAttributesConfig = BubbleAttributes | BubbleContentAttributesResolver;
65
+ export type BubbleBoxRendererMatch = {
66
+ /**
67
+ * 匹配函数,用于判断是否应该使用此渲染器
68
+ * @param messages - 消息数组
69
+ * @param content - 要渲染的内容项。仅在 `split` 模式下(contentIndex 为数字)才会传入;为当前消息(messages[0])经过 `contentResolver` 解析后的内容;`messages[0].content` 一定是一个数组,`content` 则为对应索引的内容项,即 `messages[0].content[contentIndex]`;当 contentIndex 为 undefined 时,content 也为 undefined
70
+ * @param contentIndex - 内容索引,用于指定要渲染的内容项。仅在 split 模式下才会传入(为数字),此时 messages 数组长度为 1
71
+ * @returns 如果匹配则返回 true,否则返回 false
72
+ */
73
+ find: (messages: BubbleMessage[], content: ChatMessageContentItem | undefined, contentIndex: number | undefined) => boolean;
74
+ renderer: Component<BubbleBoxRendererProps>;
75
+ priority?: number;
76
+ attributes?: BubbleBoxRendererAttributeMap | BubbleBoxRendererAttributesResolver;
77
+ };
78
+ export type BubbleContentRendererMatch = {
79
+ /**
80
+ * 匹配函数,用于判断是否应该使用此渲染器
81
+ * @param message - 消息对象
82
+ * @param content - 要渲染的内容项。为当前消息经过 contentResolver 解析并统一化后的内容项:若解析结果为数组,则取对应索引的内容项(由 contentIndex 指定);若为字符串,则转为 { type: 'text', text: string }。统一化为 ChatMessageContentItem 对象格式
83
+ * @param contentIndex - 内容索引。由 contentResolver 的解析结果为数组时使用。若 contentResolver 解析结果为字符串,content 会转换为对象,此时 contentIndex 为 0
84
+ * @returns 如果匹配则返回 true,否则返回 false
85
+ */
86
+ find: (message: BubbleMessage, content: ChatMessageContentItem, contentIndex: number) => boolean;
87
+ renderer: Component<BubbleContentRendererProps>;
88
+ priority?: number;
89
+ attributes?: BubbleAttributes;
90
+ };
91
+ export type BubbleBoxRendererProps = Pick<BubbleProps, 'placement' | 'shape'>;
92
+ export type BubbleContentRendererProps<T extends ChatMessageContent = ChatMessageContent, S extends Record<string, unknown> = Record<string, unknown>> = {
93
+ message: BubbleMessage<T, S>;
94
+ contentIndex: number;
95
+ };
96
+ type BubbleSlotProps = {
97
+ messages: BubbleMessage[];
98
+ role?: string;
99
+ };
100
+ export interface BubbleSlots {
101
+ prefix?: (slotProps: BubbleSlotProps) => VNode | VNode[];
102
+ suffix?: (slotProps: BubbleSlotProps) => VNode | VNode[];
103
+ after?: (slotProps: BubbleSlotProps) => VNode | VNode[];
104
+ 'content-footer'?: (slotProps: BubbleSlotProps & {
105
+ contentIndex?: number;
106
+ }) => VNode | VNode[];
107
+ }
108
+ /**
109
+ * 角色配置
110
+ * 用于配置不同角色的气泡样式
111
+ */
112
+ export type BubbleRoleConfig = Pick<BubbleProps, 'avatar' | 'placement' | 'shape' | 'hidden' | 'fallbackBoxRenderer' | 'fallbackContentRenderer'>;
113
+ /**
114
+ * 自定义分组函数类型
115
+ */
116
+ type BubbleGroupFunction = (messages: BubbleMessage[], dividerRole?: string) => BubbleMessageGroup[];
117
+ export interface BubbleListProps {
118
+ messages: BubbleMessage[];
119
+ /**
120
+ * 分组策略:
121
+ * - 'consecutive': 连续相同角色的消息合并为一组
122
+ * - 'divider': 按分割角色分组(每条分割角色消息单独成组,其他消息在两个分割角色之间合并为一组)
123
+ * - 自定义函数: (messages, dividerRole) => BubbleMessageGroup[]
124
+ *
125
+ * 特殊情况:
126
+ * - hidden 的消息需要单独分组,连续的 hidden 可以同一组
127
+ */
128
+ groupStrategy?: 'consecutive' | 'divider' | BubbleGroupFunction;
129
+ /**
130
+ * 'divider' 策略的分割角色
131
+ * 具有此角色的消息将作为分割线
132
+ * @default 'user'
133
+ */
134
+ dividerRole?: string;
135
+ /**
136
+ * 当消息没有角色或角色为空时,使用此角色
137
+ * @default 'assistant'
138
+ */
139
+ fallbackRole?: string;
140
+ /**
141
+ * 角色配置(头像、位置、形状)
142
+ */
143
+ roleConfigs?: Record<string, BubbleRoleConfig>;
144
+ contentRenderMode?: BubbleProps['contentRenderMode'];
145
+ contentResolver?: BubbleProps['contentResolver'];
146
+ /**
147
+ * 是否自动滚动到底部。需要满足以下条件:
148
+ * - BubbleList 是可滚动容器(需要 scrollHeight > clientHeight)
149
+ * - 滚动容器接近底部
150
+ *
151
+ * @default false
152
+ */
153
+ autoScroll?: boolean;
154
+ }
155
+ export type BubbleEvent = {
156
+ name: 'state:update';
157
+ payload: {
158
+ key: string;
159
+ value: unknown;
160
+ };
161
+ } | {
162
+ name: string;
163
+ payload?: unknown;
164
+ };
165
+ export interface BubbleProviderProps {
166
+ boxRendererMatches?: BubbleBoxRendererMatch[];
167
+ contentRendererMatches?: BubbleContentRendererMatch[];
168
+ boxAttributes?: BubbleBoxAttributesConfig;
169
+ contentAttributes?: BubbleContentAttributesConfig;
170
+ fallbackBoxRenderer?: Component<BubbleBoxRendererProps>;
171
+ fallbackContentRenderer?: Component<BubbleContentRendererProps>;
172
+ store?: Record<string, unknown>;
173
+ }
174
+ type BubbleListSlotProps = BubbleSlotProps & {
175
+ messageIndexes: number[];
176
+ };
177
+ export interface BubbleListSlots {
178
+ prefix?: (slotProps: BubbleListSlotProps) => VNode | VNode[];
179
+ suffix?: (slotProps: BubbleListSlotProps) => VNode | VNode[];
180
+ after?: (slotProps: BubbleListSlotProps) => VNode | VNode[];
181
+ 'content-footer'?: (slotProps: BubbleListSlotProps & {
182
+ contentIndex?: number;
183
+ }) => VNode | VNode[];
184
+ }
185
+ export {};
@@ -0,0 +1,18 @@
1
+ import { BubbleBoxRendererProps } from '../index.type';
2
+ declare function __VLS_template(): {
3
+ attrs: Partial<{}>;
4
+ slots: {
5
+ default?(_: {}): any;
6
+ };
7
+ refs: {};
8
+ rootEl: HTMLDivElement;
9
+ };
10
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
11
+ declare const __VLS_component: import('vue').DefineComponent<BubbleBoxRendererProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<BubbleBoxRendererProps> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
12
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
13
+ export default _default;
14
+ type __VLS_WithTemplateSlots<T, S> = T & {
15
+ new (): {
16
+ $slots: S;
17
+ };
18
+ };
@@ -0,0 +1,4 @@
1
+ import { BubbleContentRendererProps, ChatMessageContentItem } from '../index.type';
2
+ type __VLS_Props = BubbleContentRendererProps<ChatMessageContentItem[]>;
3
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLImageElement>;
4
+ export default _default;
@@ -0,0 +1,4 @@
1
+ import { BubbleContentRendererProps } from '../index.type';
2
+ type __VLS_Props = BubbleContentRendererProps;
3
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
4
+ export default _default;
@@ -0,0 +1,4 @@
1
+ import { BubbleContentRendererProps } from '../index.type';
2
+ type __VLS_Props = BubbleContentRendererProps;
3
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
4
+ export default _default;
@@ -0,0 +1,9 @@
1
+ import { BubbleContentRendererProps, ChatMessageContent } from '../index.type';
2
+ type __VLS_Props = BubbleContentRendererProps<ChatMessageContent, {
3
+ thinking?: boolean;
4
+ open?: boolean;
5
+ }>;
6
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
7
+ detailRef: HTMLParagraphElement;
8
+ }, any>;
9
+ export default _default;
@@ -0,0 +1,4 @@
1
+ import { BubbleContentRendererProps } from '../index.type';
2
+ type __VLS_Props = BubbleContentRendererProps;
3
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
4
+ export default _default;
@@ -0,0 +1,14 @@
1
+ import { ToolCallStatus } from '../composables';
2
+ import { BubbleContentRendererProps, ChatMessageContent } from '../index.type';
3
+ type __VLS_Props = BubbleContentRendererProps<ChatMessageContent, {
4
+ toolCall?: Record<string, {
5
+ status?: ToolCallStatus;
6
+ open?: boolean;
7
+ }>;
8
+ }> & {
9
+ toolCallIndex: number;
10
+ };
11
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
12
+ detailRef: HTMLDivElement;
13
+ }, HTMLDivElement>;
14
+ export default _default;
@@ -0,0 +1,4 @@
1
+ import { BubbleContentRendererProps } from '../index.type';
2
+ type __VLS_Props = BubbleContentRendererProps<string>;
3
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
4
+ export default _default;
@@ -0,0 +1,4 @@
1
+ import { BubbleContentRendererProps } from '../index.type';
2
+ type __VLS_Props = BubbleContentRendererProps;
3
+ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
4
+ export default _default;
@@ -0,0 +1,93 @@
1
+ export declare const BubbleRenderers: {
2
+ Box: {
3
+ new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins<Readonly<import('../index.type').BubbleBoxRendererProps> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {}, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, HTMLDivElement, import('vue').ComponentProvideOptions, {
4
+ P: {};
5
+ B: {};
6
+ D: {};
7
+ C: {};
8
+ M: {};
9
+ Defaults: {};
10
+ }, Readonly<import('../index.type').BubbleBoxRendererProps> & Readonly<{}>, {}, {}, {}, {}, {}>;
11
+ __isFragment?: never;
12
+ __isTeleport?: never;
13
+ __isSuspense?: never;
14
+ } & import('vue').ComponentOptionsBase<Readonly<import('../index.type').BubbleBoxRendererProps> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, {}, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & (new () => {
15
+ $slots: {
16
+ default?(_: {}): any;
17
+ };
18
+ });
19
+ Image: import('vue').DefineComponent<{
20
+ message: import('../index.type').BubbleMessage<import('../index.type').ChatMessageContentItem[], Record<string, unknown>>;
21
+ contentIndex: number;
22
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
23
+ message: import('../index.type').BubbleMessage<import('../index.type').ChatMessageContentItem[], Record<string, unknown>>;
24
+ contentIndex: number;
25
+ }> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLImageElement>;
26
+ Loading: import('vue').DefineComponent<{
27
+ message: import('../index.type').BubbleMessage<import('../index.type').ChatMessageContent, Record<string, unknown>>;
28
+ contentIndex: number;
29
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
30
+ message: import('../index.type').BubbleMessage<import('../index.type').ChatMessageContent, Record<string, unknown>>;
31
+ contentIndex: number;
32
+ }> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
33
+ Markdown: import('vue').DefineComponent<{
34
+ message: import('../index.type').BubbleMessage<import('../index.type').ChatMessageContent, Record<string, unknown>>;
35
+ contentIndex: number;
36
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
37
+ message: import('../index.type').BubbleMessage<import('../index.type').ChatMessageContent, Record<string, unknown>>;
38
+ contentIndex: number;
39
+ }> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
40
+ Reasoning: import('vue').DefineComponent<{
41
+ message: import('../index.type').BubbleMessage<import('../index.type').ChatMessageContent, {
42
+ thinking?: boolean;
43
+ open?: boolean;
44
+ }>;
45
+ contentIndex: number;
46
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
47
+ message: import('../index.type').BubbleMessage<import('../index.type').ChatMessageContent, {
48
+ thinking?: boolean;
49
+ open?: boolean;
50
+ }>;
51
+ contentIndex: number;
52
+ }> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
53
+ detailRef: HTMLParagraphElement;
54
+ }, any>;
55
+ Text: import('vue').DefineComponent<{
56
+ message: import('../index.type').BubbleMessage<import('../index.type').ChatMessageContent, Record<string, unknown>>;
57
+ contentIndex: number;
58
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
59
+ message: import('../index.type').BubbleMessage<import('../index.type').ChatMessageContent, Record<string, unknown>>;
60
+ contentIndex: number;
61
+ }> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
62
+ Tool: import('vue').DefineComponent<import('../index.type').BubbleContentRendererProps<import('../index.type').ChatMessageContent, {
63
+ toolCall?: Record<string, {
64
+ status?: import('../composables').ToolCallStatus;
65
+ open?: boolean;
66
+ }>;
67
+ }> & {
68
+ toolCallIndex: number;
69
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('../index.type').BubbleContentRendererProps<import('../index.type').ChatMessageContent, {
70
+ toolCall?: Record<string, {
71
+ status?: import('../composables').ToolCallStatus;
72
+ open?: boolean;
73
+ }>;
74
+ }> & {
75
+ toolCallIndex: number;
76
+ }> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
77
+ detailRef: HTMLDivElement;
78
+ }, HTMLDivElement>;
79
+ ToolRole: import('vue').DefineComponent<{
80
+ message: import('../index.type').BubbleMessage<string, Record<string, unknown>>;
81
+ contentIndex: number;
82
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
83
+ message: import('../index.type').BubbleMessage<string, Record<string, unknown>>;
84
+ contentIndex: number;
85
+ }> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
86
+ Tools: import('vue').DefineComponent<{
87
+ message: import('../index.type').BubbleMessage<import('../index.type').ChatMessageContent, Record<string, unknown>>;
88
+ contentIndex: number;
89
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
90
+ message: import('../index.type').BubbleMessage<import('../index.type').ChatMessageContent, Record<string, unknown>>;
91
+ contentIndex: number;
92
+ }> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
93
+ };
@@ -0,0 +1,27 @@
1
+ import { BubbleBoxRendererMatch, BubbleContentRendererMatch } from '../index.type';
2
+ export declare const defaultBoxRendererMatches: Array<BubbleBoxRendererMatch>;
3
+ export declare const defaultContentRendererMatches: Array<BubbleContentRendererMatch>;
4
+ export declare const defaultFallbackBoxRenderer: import('vue').Raw<{
5
+ new (...args: any[]): import('vue').CreateComponentPublicInstanceWithMixins<Readonly<import('../index.type').BubbleBoxRendererProps> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, import('vue').PublicProps, {}, false, {}, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, {}, HTMLDivElement, import('vue').ComponentProvideOptions, {
6
+ P: {};
7
+ B: {};
8
+ D: {};
9
+ C: {};
10
+ M: {};
11
+ Defaults: {};
12
+ }, Readonly<import('../index.type').BubbleBoxRendererProps> & Readonly<{}>, {}, {}, {}, {}, {}>;
13
+ __isFragment?: never;
14
+ __isTeleport?: never;
15
+ __isSuspense?: never;
16
+ } & import('vue').ComponentOptionsBase<Readonly<import('../index.type').BubbleBoxRendererProps> & Readonly<{}>, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, {}, {}, string, {}, import('vue').GlobalComponents, import('vue').GlobalDirectives, string, import('vue').ComponentProvideOptions> & import('vue').VNodeProps & import('vue').AllowedComponentProps & import('vue').ComponentCustomProps & (new () => {
17
+ $slots: {
18
+ default?(_: {}): any;
19
+ };
20
+ })>;
21
+ export declare const defaultFallbackContentRenderer: import('vue').Raw<import('vue').DefineComponent<{
22
+ message: import('../index.type').BubbleMessage<import('../index.type').ChatMessageContent, Record<string, unknown>>;
23
+ contentIndex: number;
24
+ }, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{
25
+ message: import('../index.type').BubbleMessage<import('../index.type').ChatMessageContent, Record<string, unknown>>;
26
+ contentIndex: number;
27
+ }> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>>;
@@ -0,0 +1,7 @@
1
+ import { default as DOMPurify } from 'dompurify';
2
+ import { default as MarkdownIt } from 'markdown-it';
3
+ export declare const getJsonrepair: () => Promise<typeof import("jsonrepair")>;
4
+ export declare const getMarkdownItAndDompurify: () => Promise<{
5
+ markdown: typeof MarkdownIt;
6
+ dompurify: typeof DOMPurify;
7
+ } | null>;