@toimc/vue 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +374 -0
  3. package/dist/attachment/Attachment.vue.d.ts +5 -3
  4. package/dist/attachment/Attachment.vue.d.ts.map +1 -1
  5. package/dist/attachment/AttachmentEmpty.vue.d.ts +5 -3
  6. package/dist/attachment/AttachmentEmpty.vue.d.ts.map +1 -1
  7. package/dist/attachment/AttachmentInfo.vue.d.ts.map +1 -1
  8. package/dist/attachment/AttachmentRemove.vue.d.ts.map +1 -1
  9. package/dist/attachment/Attachments.vue.d.ts +6 -4
  10. package/dist/attachment/Attachments.vue.d.ts.map +1 -1
  11. package/dist/citation/InlineCitation.vue.d.ts +19 -0
  12. package/dist/citation/InlineCitation.vue.d.ts.map +1 -0
  13. package/dist/citation/Sources.vue.d.ts +40 -0
  14. package/dist/citation/Sources.vue.d.ts.map +1 -0
  15. package/dist/citation/index.d.ts +4 -0
  16. package/dist/citation/index.d.ts.map +1 -0
  17. package/dist/citation/url.d.ts +3 -0
  18. package/dist/citation/url.d.ts.map +1 -0
  19. package/dist/comparison/ComparisonMessage.vue.d.ts +15 -13
  20. package/dist/comparison/ComparisonMessage.vue.d.ts.map +1 -1
  21. package/dist/composables/useClipboard.d.ts +7 -0
  22. package/dist/composables/useClipboard.d.ts.map +1 -0
  23. package/dist/composables/useScrollAnchor.d.ts +2 -0
  24. package/dist/composables/useScrollAnchor.d.ts.map +1 -1
  25. package/dist/composables/useSpeechInput.d.ts +48 -0
  26. package/dist/composables/useSpeechInput.d.ts.map +1 -0
  27. package/dist/composables/useSpeechOutput.d.ts +31 -0
  28. package/dist/composables/useSpeechOutput.d.ts.map +1 -0
  29. package/dist/conversation/Conversation.vue.d.ts +5 -3
  30. package/dist/conversation/Conversation.vue.d.ts.map +1 -1
  31. package/dist/conversation/ConversationContent.vue.d.ts +5 -3
  32. package/dist/conversation/ConversationContent.vue.d.ts.map +1 -1
  33. package/dist/conversation/ConversationEmpty.vue.d.ts +7 -5
  34. package/dist/conversation/ConversationEmpty.vue.d.ts.map +1 -1
  35. package/dist/conversation/ConversationScrollBtn.vue.d.ts +5 -1
  36. package/dist/conversation/ConversationScrollBtn.vue.d.ts.map +1 -1
  37. package/dist/{MessageBubble.vue.d.ts → genui/GenUIRenderer.vue.d.ts} +8 -10
  38. package/dist/genui/GenUIRenderer.vue.d.ts.map +1 -0
  39. package/dist/genui/PlanActions.vue.d.ts +12 -0
  40. package/dist/genui/PlanActions.vue.d.ts.map +1 -0
  41. package/dist/genui/WeatherCard.vue.d.ts +13 -0
  42. package/dist/genui/WeatherCard.vue.d.ts.map +1 -0
  43. package/dist/genui/index.d.ts +8 -0
  44. package/dist/genui/index.d.ts.map +1 -0
  45. package/dist/genui/registry.d.ts +8 -0
  46. package/dist/genui/registry.d.ts.map +1 -0
  47. package/dist/genui/sanitize.d.ts +19 -0
  48. package/dist/genui/sanitize.d.ts.map +1 -0
  49. package/dist/genui/types.d.ts +7 -0
  50. package/dist/genui/types.d.ts.map +1 -0
  51. package/dist/index.cjs +5 -5
  52. package/dist/index.d.ts +25 -10
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.mjs +3679 -1552
  55. package/dist/locales/en-US.d.ts +115 -5
  56. package/dist/locales/en-US.d.ts.map +1 -1
  57. package/dist/locales/index.d.ts +460 -20
  58. package/dist/locales/index.d.ts.map +1 -1
  59. package/dist/locales/zh-CN.d.ts +115 -5
  60. package/dist/locales/zh-CN.d.ts.map +1 -1
  61. package/dist/message/BranchPicker.vue.d.ts +30 -0
  62. package/dist/message/BranchPicker.vue.d.ts.map +1 -0
  63. package/dist/message/Message.vue.d.ts +13 -11
  64. package/dist/message/Message.vue.d.ts.map +1 -1
  65. package/dist/message/MessageAction.vue.d.ts +5 -3
  66. package/dist/message/MessageAction.vue.d.ts.map +1 -1
  67. package/dist/message/MessageActions.vue.d.ts +5 -3
  68. package/dist/message/MessageActions.vue.d.ts.map +1 -1
  69. package/dist/message/MessageAttachments.vue.d.ts +5 -3
  70. package/dist/message/MessageAttachments.vue.d.ts.map +1 -1
  71. package/dist/message/MessageContent.vue.d.ts +12 -4
  72. package/dist/message/MessageContent.vue.d.ts.map +1 -1
  73. package/dist/message/MessageFeedback.vue.d.ts +19 -0
  74. package/dist/message/MessageFeedback.vue.d.ts.map +1 -0
  75. package/dist/message/actions/MessageActionCopy.vue.d.ts +10 -0
  76. package/dist/message/actions/MessageActionCopy.vue.d.ts.map +1 -0
  77. package/dist/message/actions/MessageActionEdit.vue.d.ts +16 -0
  78. package/dist/message/actions/MessageActionEdit.vue.d.ts.map +1 -0
  79. package/dist/message/actions/MessageActionFeedback.vue.d.ts +16 -0
  80. package/dist/message/actions/MessageActionFeedback.vue.d.ts.map +1 -0
  81. package/dist/message/actions/MessageActionRetry.vue.d.ts +14 -0
  82. package/dist/message/actions/MessageActionRetry.vue.d.ts.map +1 -0
  83. package/dist/message/actions/MessageActionSpeak.vue.d.ts +12 -0
  84. package/dist/message/actions/MessageActionSpeak.vue.d.ts.map +1 -0
  85. package/dist/message/actions/index.d.ts +6 -0
  86. package/dist/message/actions/index.d.ts.map +1 -0
  87. package/dist/message/index.d.ts +2 -0
  88. package/dist/message/index.d.ts.map +1 -1
  89. package/dist/preview/ImageLightbox.vue.d.ts.map +1 -1
  90. package/dist/prompt-input/PromptInput.vue.d.ts +10 -8
  91. package/dist/prompt-input/PromptInput.vue.d.ts.map +1 -1
  92. package/dist/prompt-input/PromptInputAttachments.vue.d.ts.map +1 -1
  93. package/dist/prompt-input/PromptInputBody.vue.d.ts +5 -3
  94. package/dist/prompt-input/PromptInputBody.vue.d.ts.map +1 -1
  95. package/dist/prompt-input/PromptInputButton.vue.d.ts +5 -3
  96. package/dist/prompt-input/PromptInputButton.vue.d.ts.map +1 -1
  97. package/dist/prompt-input/PromptInputFooter.vue.d.ts +7 -5
  98. package/dist/prompt-input/PromptInputFooter.vue.d.ts.map +1 -1
  99. package/dist/prompt-input/PromptInputHeader.vue.d.ts +5 -3
  100. package/dist/prompt-input/PromptInputHeader.vue.d.ts.map +1 -1
  101. package/dist/prompt-input/PromptInputMicButton.vue.d.ts +13 -0
  102. package/dist/prompt-input/PromptInputMicButton.vue.d.ts.map +1 -0
  103. package/dist/prompt-input/PromptInputSubmit.vue.d.ts +5 -3
  104. package/dist/prompt-input/PromptInputSubmit.vue.d.ts.map +1 -1
  105. package/dist/prompt-input/PromptInputSuggestion.vue.d.ts +23 -0
  106. package/dist/prompt-input/PromptInputSuggestion.vue.d.ts.map +1 -0
  107. package/dist/prompt-input/PromptInputTextarea.vue.d.ts.map +1 -1
  108. package/dist/prompt-input/PromptInputTools.vue.d.ts +5 -3
  109. package/dist/prompt-input/PromptInputTools.vue.d.ts.map +1 -1
  110. package/dist/prompt-input/PromptInputUploadButton.vue.d.ts +5 -3
  111. package/dist/prompt-input/PromptInputUploadButton.vue.d.ts.map +1 -1
  112. package/dist/prompt-input/index.d.ts +4 -0
  113. package/dist/prompt-input/index.d.ts.map +1 -1
  114. package/dist/prompt-input/suggestions.d.ts +38 -0
  115. package/dist/prompt-input/suggestions.d.ts.map +1 -0
  116. package/dist/provider/ProviderSettingsDialog.vue.d.ts +22 -0
  117. package/dist/provider/ProviderSettingsDialog.vue.d.ts.map +1 -0
  118. package/dist/provider/ProviderSettingsForm.vue.d.ts +17 -0
  119. package/dist/provider/ProviderSettingsForm.vue.d.ts.map +1 -0
  120. package/dist/provider/index.d.ts +3 -0
  121. package/dist/provider/index.d.ts.map +1 -0
  122. package/dist/provider/types.d.ts +20 -0
  123. package/dist/provider/types.d.ts.map +1 -0
  124. package/dist/shared/Button.vue.d.ts +7 -3
  125. package/dist/shared/Button.vue.d.ts.map +1 -1
  126. package/dist/shared/Input.vue.d.ts +28 -0
  127. package/dist/shared/Input.vue.d.ts.map +1 -0
  128. package/dist/shared/JsonDiffView.vue.d.ts +16 -0
  129. package/dist/shared/JsonDiffView.vue.d.ts.map +1 -0
  130. package/dist/shared/LanguageToggle.vue.d.ts +1 -1
  131. package/dist/shared/LanguageToggle.vue.d.ts.map +1 -1
  132. package/dist/shared/ModelIcon.vue.d.ts +28 -0
  133. package/dist/shared/ModelIcon.vue.d.ts.map +1 -0
  134. package/dist/shared/Radio.vue.d.ts +19 -0
  135. package/dist/shared/Radio.vue.d.ts.map +1 -0
  136. package/dist/shared/Select.vue.d.ts +32 -0
  137. package/dist/shared/Select.vue.d.ts.map +1 -0
  138. package/dist/shared/Shimmer.vue.d.ts +5 -3
  139. package/dist/shared/Shimmer.vue.d.ts.map +1 -1
  140. package/dist/shared/StreamText.vue.d.ts.map +1 -1
  141. package/dist/shared/Toast.vue.d.ts +1 -1
  142. package/dist/shared/Toast.vue.d.ts.map +1 -1
  143. package/dist/thinking/ThinkingBlock.vue.d.ts +5 -3
  144. package/dist/thinking/ThinkingBlock.vue.d.ts.map +1 -1
  145. package/dist/thinking/ThinkingChain.vue.d.ts +22 -0
  146. package/dist/thinking/ThinkingChain.vue.d.ts.map +1 -0
  147. package/dist/thinking/index.d.ts +2 -0
  148. package/dist/thinking/index.d.ts.map +1 -0
  149. package/dist/tool-call/ToolCall.vue.d.ts +12 -10
  150. package/dist/tool-call/ToolCall.vue.d.ts.map +1 -1
  151. package/dist/tool-call/ToolCallContent.vue.d.ts.map +1 -1
  152. package/dist/tool-call/ToolCallHeader.vue.d.ts.map +1 -1
  153. package/dist/tool-call/ToolCallInput.vue.d.ts.map +1 -1
  154. package/dist/tool-call/ToolCallOutput.vue.d.ts.map +1 -1
  155. package/dist/tool-call/ToolConfirmation.vue.d.ts +19 -0
  156. package/dist/tool-call/ToolConfirmation.vue.d.ts.map +1 -0
  157. package/dist/tool-call/index.d.ts +1 -0
  158. package/dist/tool-call/index.d.ts.map +1 -1
  159. package/dist/utils/compress-image.d.ts +21 -0
  160. package/dist/utils/compress-image.d.ts.map +1 -0
  161. package/dist/vue.css +1 -1
  162. package/dist/welcome/Prompts.vue.d.ts +33 -0
  163. package/dist/welcome/Prompts.vue.d.ts.map +1 -0
  164. package/dist/{ChatWindow.vue.d.ts → welcome/Welcome.vue.d.ts} +12 -7
  165. package/dist/welcome/Welcome.vue.d.ts.map +1 -0
  166. package/dist/welcome/index.d.ts +4 -0
  167. package/dist/welcome/index.d.ts.map +1 -0
  168. package/dist/welcome/types.d.ts +10 -0
  169. package/dist/welcome/types.d.ts.map +1 -0
  170. package/package.json +19 -14
  171. package/dist/ChatWindow.test.d.ts +0 -2
  172. package/dist/ChatWindow.test.d.ts.map +0 -1
  173. package/dist/ChatWindow.vue.d.ts.map +0 -1
  174. package/dist/InputArea.i18n.test.d.ts +0 -2
  175. package/dist/InputArea.i18n.test.d.ts.map +0 -1
  176. package/dist/InputArea.test.d.ts +0 -2
  177. package/dist/InputArea.test.d.ts.map +0 -1
  178. package/dist/InputArea.vue.d.ts +0 -24
  179. package/dist/InputArea.vue.d.ts.map +0 -1
  180. package/dist/MessageBubble.test.d.ts +0 -2
  181. package/dist/MessageBubble.test.d.ts.map +0 -1
  182. package/dist/MessageBubble.vue.d.ts.map +0 -1
  183. package/dist/MessageList.test.d.ts +0 -2
  184. package/dist/MessageList.test.d.ts.map +0 -1
  185. package/dist/MessageList.vue.d.ts +0 -20
  186. package/dist/MessageList.vue.d.ts.map +0 -1
  187. package/dist/attachment/Attachment.test.d.ts +0 -2
  188. package/dist/attachment/Attachment.test.d.ts.map +0 -1
  189. package/dist/attachment/AttachmentPreview.test.d.ts +0 -2
  190. package/dist/attachment/AttachmentPreview.test.d.ts.map +0 -1
  191. package/dist/attachment/Attachments.test.d.ts +0 -2
  192. package/dist/attachment/Attachments.test.d.ts.map +0 -1
  193. package/dist/comparison/ComparisonMessage.i18n.test.d.ts +0 -2
  194. package/dist/comparison/ComparisonMessage.i18n.test.d.ts.map +0 -1
  195. package/dist/comparison/ComparisonMessage.test.d.ts +0 -2
  196. package/dist/comparison/ComparisonMessage.test.d.ts.map +0 -1
  197. package/dist/composables/useLayoutConfig.test.d.ts +0 -2
  198. package/dist/composables/useLayoutConfig.test.d.ts.map +0 -1
  199. package/dist/composables/useMarkdownRenderer.test.d.ts +0 -2
  200. package/dist/composables/useMarkdownRenderer.test.d.ts.map +0 -1
  201. package/dist/composables/usePendingFiles.test.d.ts +0 -2
  202. package/dist/composables/usePendingFiles.test.d.ts.map +0 -1
  203. package/dist/composables/useScrollAnchor.test.d.ts +0 -2
  204. package/dist/composables/useScrollAnchor.test.d.ts.map +0 -1
  205. package/dist/composables/useTheme.test.d.ts +0 -2
  206. package/dist/composables/useTheme.test.d.ts.map +0 -1
  207. package/dist/composables/useThemePreset.test.d.ts +0 -2
  208. package/dist/composables/useThemePreset.test.d.ts.map +0 -1
  209. package/dist/conversation/Conversation.test.d.ts +0 -2
  210. package/dist/conversation/Conversation.test.d.ts.map +0 -1
  211. package/dist/conversation/ConversationContent.test.d.ts +0 -2
  212. package/dist/conversation/ConversationContent.test.d.ts.map +0 -1
  213. package/dist/conversation/ConversationEmpty.test.d.ts +0 -2
  214. package/dist/conversation/ConversationEmpty.test.d.ts.map +0 -1
  215. package/dist/conversation/ConversationScrollBtn.test.d.ts +0 -2
  216. package/dist/conversation/ConversationScrollBtn.test.d.ts.map +0 -1
  217. package/dist/integration/chat-flow.test.d.ts +0 -1
  218. package/dist/integration/chat-flow.test.d.ts.map +0 -1
  219. package/dist/locales/locales.test.d.ts +0 -2
  220. package/dist/locales/locales.test.d.ts.map +0 -1
  221. package/dist/message/Message.test.d.ts +0 -2
  222. package/dist/message/Message.test.d.ts.map +0 -1
  223. package/dist/message/MessageAction.test.d.ts +0 -2
  224. package/dist/message/MessageAction.test.d.ts.map +0 -1
  225. package/dist/message/MessageContent.test.d.ts +0 -2
  226. package/dist/message/MessageContent.test.d.ts.map +0 -1
  227. package/dist/preview/ImageLightbox.test.d.ts +0 -2
  228. package/dist/preview/ImageLightbox.test.d.ts.map +0 -1
  229. package/dist/prompt-input/PromptInput.i18n.test.d.ts +0 -2
  230. package/dist/prompt-input/PromptInput.i18n.test.d.ts.map +0 -1
  231. package/dist/prompt-input/PromptInput.test.d.ts +0 -2
  232. package/dist/prompt-input/PromptInput.test.d.ts.map +0 -1
  233. package/dist/prompt-input/PromptInputAttachments.test.d.ts +0 -2
  234. package/dist/prompt-input/PromptInputAttachments.test.d.ts.map +0 -1
  235. package/dist/prompt-input/PromptInputButton.test.d.ts +0 -2
  236. package/dist/prompt-input/PromptInputButton.test.d.ts.map +0 -1
  237. package/dist/prompt-input/PromptInputFooter.test.d.ts +0 -2
  238. package/dist/prompt-input/PromptInputFooter.test.d.ts.map +0 -1
  239. package/dist/prompt-input/PromptInputSubmit.test.d.ts +0 -2
  240. package/dist/prompt-input/PromptInputSubmit.test.d.ts.map +0 -1
  241. package/dist/prompt-input/PromptInputTextarea.test.d.ts +0 -2
  242. package/dist/prompt-input/PromptInputTextarea.test.d.ts.map +0 -1
  243. package/dist/prompt-input/PromptInputUploadButton.test.d.ts +0 -2
  244. package/dist/prompt-input/PromptInputUploadButton.test.d.ts.map +0 -1
  245. package/dist/shared/Button.test.d.ts +0 -2
  246. package/dist/shared/Button.test.d.ts.map +0 -1
  247. package/dist/shared/LanguageToggle.test.d.ts +0 -2
  248. package/dist/shared/LanguageToggle.test.d.ts.map +0 -1
  249. package/dist/shared/Shimmer.test.d.ts +0 -2
  250. package/dist/shared/Shimmer.test.d.ts.map +0 -1
  251. package/dist/shared/StreamText.test.d.ts +0 -2
  252. package/dist/shared/StreamText.test.d.ts.map +0 -1
  253. package/dist/shared/Toast.test.d.ts +0 -2
  254. package/dist/shared/Toast.test.d.ts.map +0 -1
  255. package/dist/theme/tokens-meta.test.d.ts +0 -2
  256. package/dist/theme/tokens-meta.test.d.ts.map +0 -1
  257. package/dist/thinking/ThinkingBlock.test.d.ts +0 -2
  258. package/dist/thinking/ThinkingBlock.test.d.ts.map +0 -1
  259. package/dist/tool-call/ToolCall.test.d.ts +0 -2
  260. package/dist/tool-call/ToolCall.test.d.ts.map +0 -1
  261. package/dist/utils/format.test.d.ts +0 -2
  262. package/dist/utils/format.test.d.ts.map +0 -1
  263. package/dist/utils/media.test.d.ts +0 -2
  264. package/dist/utils/media.test.d.ts.map +0 -1
@@ -0,0 +1,48 @@
1
+ import { Ref, ComputedRef } from 'vue';
2
+ /** 语音输入状态机:idle 未开始 / recording 录音采集 / recognizing 已停止采集、等待最终识别结果 */
3
+ export type SpeechInputStatus = 'idle' | 'recording' | 'recognizing';
4
+ export interface UseSpeechInputOptions {
5
+ /** 识别语言(BCP-47),默认 'zh-CN' */
6
+ lang?: string;
7
+ }
8
+ /** SpeechRecognition 事件的最小结构(results 按序累积,每项取 [0].transcript) */
9
+ export interface SpeechRecognitionEventLike {
10
+ results: ArrayLike<ArrayLike<{
11
+ transcript: string;
12
+ }>>;
13
+ }
14
+ /** Web Speech API 识别实例的最小结构:DOM lib 类型覆盖不全且 webkit 前缀无类型,按用到的成员声明 */
15
+ export interface SpeechRecognitionLike {
16
+ lang: string;
17
+ continuous: boolean;
18
+ interimResults: boolean;
19
+ onresult: ((event: SpeechRecognitionEventLike) => void) | null;
20
+ onerror: ((event: {
21
+ error: string;
22
+ }) => void) | null;
23
+ onend: (() => void) | null;
24
+ start(): void;
25
+ stop(): void;
26
+ abort(): void;
27
+ }
28
+ export interface UseSpeechInputReturn {
29
+ /** 特性检测结果:Chrome/Edge 为 true,Firefox 等不支持时为 false(驱动按钮显隐) */
30
+ supported: boolean;
31
+ /** 状态机当前值,onend 后回 idle */
32
+ status: Ref<SpeechInputStatus>;
33
+ /** status !== 'idle' 的派生值,点击切换式录音按钮直接消费 */
34
+ isRecording: ComputedRef<boolean>;
35
+ /** 实时识别文本(已定稿与中间结果的拼接),start 时清空、onend 后保留供调用方落进输入框 */
36
+ interimText: Ref<string>;
37
+ /** 最近一次错误码('unsupported' 或浏览器原生错误如 'no-speech'/'not-allowed'),start 时清空 */
38
+ error: Ref<string>;
39
+ /** 开始录音:不支持时置 error 为 'unsupported';重复调用会丢弃上一会话再新开 */
40
+ start: () => void;
41
+ /** 停止采集进入 recognizing,等最终结果与 onend */
42
+ stop: () => void;
43
+ /** 点击切换式:idle 时 start,录音中 stop */
44
+ toggle: () => void;
45
+ }
46
+ /** Web Speech API 语音输入:单句模式(continuous=false),说完自动停;识别文本进输入框确认再发送 */
47
+ export declare function useSpeechInput(options?: UseSpeechInputOptions): UseSpeechInputReturn;
48
+ //# sourceMappingURL=useSpeechInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSpeechInput.d.ts","sourceRoot":"","sources":["../../src/composables/useSpeechInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,GAAG,EACR,KAAK,WAAW,EACjB,MAAM,KAAK,CAAA;AAEZ,qEAAqE;AACrE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,WAAW,GAAG,aAAa,CAAA;AAEpE,MAAM,WAAW,qBAAqB;IACpC,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,iEAAiE;AACjE,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,SAAS,CAAC,SAAS,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAA;CACtD;AAED,qEAAqE;AACrE,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,OAAO,CAAA;IACnB,cAAc,EAAE,OAAO,CAAA;IACvB,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,0BAA0B,KAAK,IAAI,CAAC,GAAG,IAAI,CAAA;IAC9D,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC,GAAG,IAAI,CAAA;IACpD,KAAK,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAA;IAC1B,KAAK,IAAI,IAAI,CAAA;IACb,IAAI,IAAI,IAAI,CAAA;IACZ,KAAK,IAAI,IAAI,CAAA;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,SAAS,EAAE,OAAO,CAAA;IAClB,2BAA2B;IAC3B,MAAM,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAA;IAC9B,2CAA2C;IAC3C,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;IACjC,uDAAuD;IACvD,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACxB,2EAA2E;IAC3E,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAClB,sDAAsD;IACtD,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,sCAAsC;IACtC,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,kCAAkC;IAClC,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB;AAaD,qEAAqE;AACrE,wBAAgB,cAAc,CAC5B,OAAO,CAAC,EAAE,qBAAqB,GAC9B,oBAAoB,CA+EtB"}
@@ -0,0 +1,31 @@
1
+ import { Ref } from 'vue';
2
+ /** 句子级切分结果 */
3
+ export interface SentenceSplitResult {
4
+ /** 已凑满句末标点(。?!或换行)的完整句,标点保留在句尾,空白句已剔除 */
5
+ complete: string[];
6
+ /** 尾部未凑满句末标点的剩余文本,留待后续 chunk 拼接 */
7
+ rest: string;
8
+ }
9
+ /** 流式缓冲的句子切分纯函数:凑满一句出一句(含以句末标点收尾的尾句),未凑满的留缓冲 */
10
+ export declare function splitSentences(buffer: string): SentenceSplitResult;
11
+ export interface UseSpeechOutputOptions {
12
+ /** 朗读语言(BCP-47),默认 'zh-CN';主子标签同时用作 voice 匹配前缀 */
13
+ lang?: string;
14
+ }
15
+ export interface UseSpeechOutputReturn {
16
+ /** 自动朗读开关:默认关闭,读写 localStorage 持久化;仅约束 feedChunk,不约束手动 speak */
17
+ enabled: Ref<boolean>;
18
+ /** 是否有本实例入队的朗读正在进行(含排队中的句子),全部读完或 stop 后为 false */
19
+ speaking: Ref<boolean>;
20
+ /** 流式 chunk 喂入:凑满一句入朗读队列;enabled 为 false 时直接丢弃 */
21
+ feedChunk: (text: string) => void;
22
+ /** 整段文本朗读:先打断旧朗读,再按句入队,尾部无标点的残句也会朗读 */
23
+ speak: (text: string) => void;
24
+ /** 打断:清空缓冲区并 cancel 朗读队列 */
25
+ stop: () => void;
26
+ /** 切换自动朗读开关并持久化(不打断已入队的朗读) */
27
+ toggle: () => void;
28
+ }
29
+ /** speechSynthesis 句子级朗读:流式文本凑满一句读一句,边生成边读 */
30
+ export declare function useSpeechOutput(options?: UseSpeechOutputOptions): UseSpeechOutputReturn;
31
+ //# sourceMappingURL=useSpeechOutput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSpeechOutput.d.ts","sourceRoot":"","sources":["../../src/composables/useSpeechOutput.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+C,KAAK,GAAG,EAAE,MAAM,KAAK,CAAA;AAE3E,cAAc;AACd,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAA;CACb;AAMD,gDAAgD;AAChD,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAUlE;AAED,MAAM,WAAW,sBAAsB;IACrC,kDAAkD;IAClD,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,gEAAgE;IAChE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;IACrB,mDAAmD;IACnD,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAA;IACtB,kDAAkD;IAClD,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,uCAAuC;IACvC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,4BAA4B;IAC5B,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,8BAA8B;IAC9B,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB;AAsBD,8CAA8C;AAC9C,wBAAgB,eAAe,CAC7B,OAAO,CAAC,EAAE,sBAAsB,GAC/B,qBAAqB,CA8EvB"}
@@ -8,10 +8,12 @@ type __VLS_Props = {
8
8
  layout?: MessageLayout;
9
9
  messageAlign?: MessageAlign;
10
10
  };
11
- declare var __VLS_1: {};
12
- type __VLS_Slots = {} & {
13
- default?: (props: typeof __VLS_1) => any;
11
+ declare const __VLS_template: () => {
12
+ __VLS_Slots: {
13
+ default?: (props: {}) => any;
14
+ };
14
15
  };
16
+ type __VLS_Slots = ReturnType<typeof __VLS_template>['__VLS_Slots'];
15
17
  declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
16
18
  autoScroll: boolean;
17
19
  darkMode: boolean | "auto";
@@ -1 +1 @@
1
- {"version":3,"file":"Conversation.vue.d.ts","sourceRoot":"","sources":["../../src/conversation/Conversation.vue"],"names":[],"mappings":"AAyFA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,6BAA6B,CAAA;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEjD,KAAK,WAAW,GAAG;IACf,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAC3B,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,CAAC;AAyEJ,QAAA,IAAI,OAAO,IAAW,CAAE;AACxB,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,CAAC;AAO/C,QAAA,MAAM,UAAU;gBAxFC,OAAO;cAGT,OAAO,GAAG,MAAM;YAClB,aAAa;kBACP,YAAY;6EAsF7B,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AAWzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"Conversation.vue.d.ts","sourceRoot":"","sources":["../../src/conversation/Conversation.vue"],"names":[],"mappings":"AAyFA,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,YAAY,EAClB,MAAM,6BAA6B,CAAA;AACpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAIjD,KAAK,WAAW,GAAG;IACf,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACpC,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAC3B,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,CAAC;AA4DJ,QAAA,MAAM,cAAc;;kBAWN,CAAC,KAAK,IAAgB,KAAK,GAAG;;CAM3C,CAAC;AACF,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,aAAa,CAAC,CAAC;AAEpE,QAAA,MAAM,UAAU;;;;;6EAGd,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AAWzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
@@ -1,7 +1,9 @@
1
- declare var __VLS_1: {};
2
- type __VLS_Slots = {} & {
3
- default?: (props: typeof __VLS_1) => any;
1
+ declare const __VLS_template: () => {
2
+ __VLS_Slots: {
3
+ default?: (props: {}) => any;
4
+ };
4
5
  };
6
+ type __VLS_Slots = ReturnType<typeof __VLS_template>['__VLS_Slots'];
5
7
  declare const __VLS_base: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
6
8
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
7
9
  declare const _default: typeof __VLS_export;
@@ -1 +1 @@
1
- {"version":3,"file":"ConversationContent.vue.d.ts","sourceRoot":"","sources":["../../src/conversation/ConversationContent.vue"],"names":[],"mappings":"AAiHA,QAAA,IAAI,OAAO,IAAW,CAAE;AACxB,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,CAAC;AAK/C,QAAA,MAAM,UAAU,+QACd,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AACzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"ConversationContent.vue.d.ts","sourceRoot":"","sources":["../../src/conversation/ConversationContent.vue"],"names":[],"mappings":"AAmGA,QAAA,MAAM,cAAc;;kBAeN,CAAC,KAAK,IAAgB,KAAK,GAAG;;CAI3C,CAAC;AACF,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,aAAa,CAAC,CAAC;AAEpE,QAAA,MAAM,UAAU,+QACd,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AACzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
@@ -4,12 +4,14 @@ type __VLS_Props = {
4
4
  title?: string;
5
5
  description?: string;
6
6
  };
7
- declare var __VLS_1: {}, __VLS_8: {};
8
- type __VLS_Slots = {} & {
9
- icon?: (props: typeof __VLS_1) => any;
10
- } & {
11
- suggestions?: (props: typeof __VLS_8) => any;
7
+ declare const __VLS_template: () => {
8
+ __VLS_Slots: {
9
+ icon?: (props: {}) => any;
10
+ } & {
11
+ suggestions?: (props: {}) => any;
12
+ };
12
13
  };
14
+ type __VLS_Slots = ReturnType<typeof __VLS_template>['__VLS_Slots'];
13
15
  declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
14
16
  icon: Component;
15
17
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"ConversationEmpty.vue.d.ts","sourceRoot":"","sources":["../../src/conversation/ConversationEmpty.vue"],"names":[],"mappings":"AA0GA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,KAAK,CAAA;AAG9C,KAAK,WAAW,GAAG;IACf,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAC;AA+EJ,QAAA,IAAI,OAAO,IAAU,EAAE,OAAO,IAAW,CAAE;AAC3C,KAAK,WAAW,GAAG,EAAE,GACnB;IAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,GACzC;IAAE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,OAAO,KAAK,GAAG,CAAA;CAAE,CAAC;AAKnD,QAAA,MAAM,UAAU;UA1FL,SAAS;6EA6FlB,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AAWzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
1
+ {"version":3,"file":"ConversationEmpty.vue.d.ts","sourceRoot":"","sources":["../../src/conversation/ConversationEmpty.vue"],"names":[],"mappings":"AA0GA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,KAAK,CAAA;AAK9C,KAAK,WAAW,GAAG;IACf,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAC;AA0BJ,QAAA,MAAM,cAAc;;eAmDT,CAAC,KAAK,IAAgB,KAAK,GAAG;;sBACvB,CAAC,KAAK,IAAgB,KAAK,GAAG;;CAM/C,CAAC;AACF,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,aAAa,CAAC,CAAC;AAEpE,QAAA,MAAM,UAAU;;6EAGd,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AAWzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
@@ -1,4 +1,8 @@
1
- declare const __VLS_export: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
1
+ type __VLS_Props = {
2
+ /** 显示未读角标;缺省走 inject 的 unreadCount */
3
+ badge?: number;
4
+ };
5
+ declare const __VLS_export: 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>;
2
6
  declare const _default: typeof __VLS_export;
3
7
  export default _default;
4
8
  //# sourceMappingURL=ConversationScrollBtn.vue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConversationScrollBtn.vue.d.ts","sourceRoot":"","sources":["../../src/conversation/ConversationScrollBtn.vue"],"names":[],"mappings":"AA8GA,QAAA,MAAM,YAAY,+QAChB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
1
+ {"version":3,"file":"ConversationScrollBtn.vue.d.ts","sourceRoot":"","sources":["../../src/conversation/ConversationScrollBtn.vue"],"names":[],"mappings":"AAmGA,KAAK,WAAW,GAAG;IACjB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAC;AAoEF,QAAA,MAAM,YAAY,kSAEhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -1,15 +1,13 @@
1
- import { Message } from '@toimc/core';
2
1
  type __VLS_Props = {
3
- message: Message;
2
+ /** 待渲染的 schema(通常取自 message.toolCalls[i].result.ui);非法值走 fallback */
3
+ schema: unknown;
4
4
  };
5
- declare var __VLS_1: {}, __VLS_3: {}, __VLS_5: {};
6
- type __VLS_Slots = {} & {
7
- avatar?: (props: typeof __VLS_1) => any;
8
- } & {
9
- default?: (props: typeof __VLS_3) => any;
10
- } & {
11
- actions?: (props: typeof __VLS_5) => any;
5
+ declare const __VLS_template: () => {
6
+ __VLS_Slots: {
7
+ fallback?: (props: {}) => any;
8
+ };
12
9
  };
10
+ type __VLS_Slots = ReturnType<typeof __VLS_template>['__VLS_Slots'];
13
11
  declare const __VLS_base: 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>;
14
12
  declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
15
13
  declare const _default: typeof __VLS_export;
@@ -19,4 +17,4 @@ type __VLS_WithSlots<T, S> = T & {
19
17
  $slots: S;
20
18
  };
21
19
  };
22
- //# sourceMappingURL=MessageBubble.vue.d.ts.map
20
+ //# sourceMappingURL=GenUIRenderer.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenUIRenderer.vue.d.ts","sourceRoot":"","sources":["../../src/genui/GenUIRenderer.vue"],"names":[],"mappings":"AAgEA,KAAK,WAAW,GAAG;IACjB,qEAAqE;IACrE,MAAM,EAAE,OAAO,CAAA;CAChB,CAAC;AA2BF,QAAA,MAAM,cAAc;;mBA6BL,CAAC,KAAK,IAAgB,KAAK,GAAG;;CAM5C,CAAC;AACF,KAAK,WAAW,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,aAAa,CAAC,CAAC;AAEpE,QAAA,MAAM,UAAU,kSAEd,CAAC;AACH,QAAA,MAAM,YAAY,EAAS,eAAe,CAAC,OAAO,UAAU,EAAE,WAAW,CAAC,CAAC;wBACtD,OAAO,YAAY;AAAxC,wBAAyC;AACzC,KAAK,eAAe,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG;IAChC,QAAO;QACN,MAAM,EAAE,CAAC,CAAC;KACV,CAAA;CACD,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { GenuiPlan } from './types';
2
+ type __VLS_Props = {
3
+ plans: GenuiPlan[];
4
+ };
5
+ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
6
+ adopt: (planId: string) => any;
7
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
8
+ onAdopt?: ((planId: string) => any) | undefined;
9
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
10
+ declare const _default: typeof __VLS_export;
11
+ export default _default;
12
+ //# sourceMappingURL=PlanActions.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlanActions.vue.d.ts","sourceRoot":"","sources":["../../src/genui/PlanActions.vue"],"names":[],"mappings":"AAuFA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAMxC,KAAK,WAAW,GAAG;IAAE,KAAK,EAAE,SAAS,EAAE,CAAA;CAAE,CAAC;AAmE1C,QAAA,MAAM,YAAY;;;;kFAGhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -0,0 +1,13 @@
1
+ interface Props {
2
+ city: string;
3
+ temperatureC: number;
4
+ description: string;
5
+ }
6
+ declare const __VLS_export: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
7
+ detail: (city: string) => any;
8
+ }, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
9
+ onDetail?: ((city: string) => any) | undefined;
10
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
11
+ declare const _default: typeof __VLS_export;
12
+ export default _default;
13
+ //# sourceMappingURL=WeatherCard.vue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WeatherCard.vue.d.ts","sourceRoot":"","sources":["../../src/genui/WeatherCard.vue"],"names":[],"mappings":"AA4DA,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;CACpB;AAuDD,QAAA,MAAM,YAAY;;;;kFAGhB,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -0,0 +1,8 @@
1
+ export { registerGenuiComponent, resolveGenuiComponent, unregisterGenuiComponent, } from './registry';
2
+ export { sanitizeGenuiProps } from './sanitize';
3
+ export type { GenuiPropValue } from './sanitize';
4
+ export type { GenuiPlan } from './types';
5
+ export { default as GenUIRenderer } from './GenUIRenderer.vue';
6
+ export { default as WeatherCard } from './WeatherCard.vue';
7
+ export { default as PlanActions } from './PlanActions.vue';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/genui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { Component } from 'vue';
2
+ /** 注册 GenUI 组件;空白 type 静默忽略(isUISchema 也不会放行空 type) */
3
+ export declare function registerGenuiComponent(type: string, component: Component): void;
4
+ /** 按 type 解析已注册组件;未注册返回 undefined(渲染器走 fallback) */
5
+ export declare function resolveGenuiComponent(type: string): Component | undefined;
6
+ /** 注销(测试隔离 / 宿主卸载动态面板时使用) */
7
+ export declare function unregisterGenuiComponent(type: string): void;
8
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/genui/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,KAAK,CAAA;AAWpC,uDAAuD;AACvD,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,GACnB,IAAI,CAGN;AAED,oDAAoD;AACpD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAEzE;AAED,6BAA6B;AAC7B,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE3D"}
@@ -0,0 +1,19 @@
1
+ /** 消毒后的 GenUI prop 值域:递归的 JSON 安全形态 */
2
+ export type GenuiPropValue = string | number | boolean | null | GenuiPropValue[] | {
3
+ [key: string]: GenuiPropValue;
4
+ };
5
+ /**
6
+ * GenUI props 消毒(纯函数,不修改入参)。
7
+ *
8
+ * 规则(逐值递归):
9
+ * - function / symbol / undefined / 非 finite number(NaN、±Infinity)→ 丢弃该键
10
+ * - boolean / null → 原样保留
11
+ * - URL 形态字符串(`scheme:...`)→ 仅放行 http(s) 与 blob:,其余协议(javascript: 等)丢弃
12
+ * - 纯数字字符串(`-?\d+(\.\d+)?`)→ Number() 收窄为 number
13
+ * - 数组 → 逐元素消毒,被丢弃的元素剔除;plain object → 逐键消毒
14
+ * - Date/Map/Set 等非 plain object → 丢弃
15
+ *
16
+ * 注:URL 白名单不含 `data:image`(附件校验允许),GenUI 渲染面更窄,从严。
17
+ */
18
+ export declare function sanitizeGenuiProps(props: Record<string, unknown>): Record<string, GenuiPropValue>;
19
+ //# sourceMappingURL=sanitize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/genui/sanitize.ts"],"names":[],"mappings":"AAEA,uCAAuC;AACvC,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,cAAc,EAAE,GAChB;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAAA;CAAE,CAAA;AA4DrC;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAOhC"}
@@ -0,0 +1,7 @@
1
+ /** PlanActions 的推荐方案条目(宿主构造 `ui.props.plans` 时的类型提示) */
2
+ export interface GenuiPlan {
3
+ id: string;
4
+ title: string;
5
+ summary: string;
6
+ }
7
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/genui/types.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB"}