@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.
- package/LICENSE +21 -0
- package/README.md +374 -0
- package/dist/attachment/Attachment.vue.d.ts +5 -3
- package/dist/attachment/Attachment.vue.d.ts.map +1 -1
- package/dist/attachment/AttachmentEmpty.vue.d.ts +5 -3
- package/dist/attachment/AttachmentEmpty.vue.d.ts.map +1 -1
- package/dist/attachment/AttachmentInfo.vue.d.ts.map +1 -1
- package/dist/attachment/AttachmentRemove.vue.d.ts.map +1 -1
- package/dist/attachment/Attachments.vue.d.ts +6 -4
- package/dist/attachment/Attachments.vue.d.ts.map +1 -1
- package/dist/citation/InlineCitation.vue.d.ts +19 -0
- package/dist/citation/InlineCitation.vue.d.ts.map +1 -0
- package/dist/citation/Sources.vue.d.ts +40 -0
- package/dist/citation/Sources.vue.d.ts.map +1 -0
- package/dist/citation/index.d.ts +4 -0
- package/dist/citation/index.d.ts.map +1 -0
- package/dist/citation/url.d.ts +3 -0
- package/dist/citation/url.d.ts.map +1 -0
- package/dist/comparison/ComparisonMessage.vue.d.ts +15 -13
- package/dist/comparison/ComparisonMessage.vue.d.ts.map +1 -1
- package/dist/composables/useClipboard.d.ts +7 -0
- package/dist/composables/useClipboard.d.ts.map +1 -0
- package/dist/composables/useScrollAnchor.d.ts +2 -0
- package/dist/composables/useScrollAnchor.d.ts.map +1 -1
- package/dist/composables/useSpeechInput.d.ts +48 -0
- package/dist/composables/useSpeechInput.d.ts.map +1 -0
- package/dist/composables/useSpeechOutput.d.ts +31 -0
- package/dist/composables/useSpeechOutput.d.ts.map +1 -0
- package/dist/conversation/Conversation.vue.d.ts +5 -3
- package/dist/conversation/Conversation.vue.d.ts.map +1 -1
- package/dist/conversation/ConversationContent.vue.d.ts +5 -3
- package/dist/conversation/ConversationContent.vue.d.ts.map +1 -1
- package/dist/conversation/ConversationEmpty.vue.d.ts +7 -5
- package/dist/conversation/ConversationEmpty.vue.d.ts.map +1 -1
- package/dist/conversation/ConversationScrollBtn.vue.d.ts +5 -1
- package/dist/conversation/ConversationScrollBtn.vue.d.ts.map +1 -1
- package/dist/{MessageBubble.vue.d.ts → genui/GenUIRenderer.vue.d.ts} +8 -10
- package/dist/genui/GenUIRenderer.vue.d.ts.map +1 -0
- package/dist/genui/PlanActions.vue.d.ts +12 -0
- package/dist/genui/PlanActions.vue.d.ts.map +1 -0
- package/dist/genui/WeatherCard.vue.d.ts +13 -0
- package/dist/genui/WeatherCard.vue.d.ts.map +1 -0
- package/dist/genui/index.d.ts +8 -0
- package/dist/genui/index.d.ts.map +1 -0
- package/dist/genui/registry.d.ts +8 -0
- package/dist/genui/registry.d.ts.map +1 -0
- package/dist/genui/sanitize.d.ts +19 -0
- package/dist/genui/sanitize.d.ts.map +1 -0
- package/dist/genui/types.d.ts +7 -0
- package/dist/genui/types.d.ts.map +1 -0
- package/dist/index.cjs +5 -5
- package/dist/index.d.ts +25 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +3679 -1552
- package/dist/locales/en-US.d.ts +115 -5
- package/dist/locales/en-US.d.ts.map +1 -1
- package/dist/locales/index.d.ts +460 -20
- package/dist/locales/index.d.ts.map +1 -1
- package/dist/locales/zh-CN.d.ts +115 -5
- package/dist/locales/zh-CN.d.ts.map +1 -1
- package/dist/message/BranchPicker.vue.d.ts +30 -0
- package/dist/message/BranchPicker.vue.d.ts.map +1 -0
- package/dist/message/Message.vue.d.ts +13 -11
- package/dist/message/Message.vue.d.ts.map +1 -1
- package/dist/message/MessageAction.vue.d.ts +5 -3
- package/dist/message/MessageAction.vue.d.ts.map +1 -1
- package/dist/message/MessageActions.vue.d.ts +5 -3
- package/dist/message/MessageActions.vue.d.ts.map +1 -1
- package/dist/message/MessageAttachments.vue.d.ts +5 -3
- package/dist/message/MessageAttachments.vue.d.ts.map +1 -1
- package/dist/message/MessageContent.vue.d.ts +12 -4
- package/dist/message/MessageContent.vue.d.ts.map +1 -1
- package/dist/message/MessageFeedback.vue.d.ts +19 -0
- package/dist/message/MessageFeedback.vue.d.ts.map +1 -0
- package/dist/message/actions/MessageActionCopy.vue.d.ts +10 -0
- package/dist/message/actions/MessageActionCopy.vue.d.ts.map +1 -0
- package/dist/message/actions/MessageActionEdit.vue.d.ts +16 -0
- package/dist/message/actions/MessageActionEdit.vue.d.ts.map +1 -0
- package/dist/message/actions/MessageActionFeedback.vue.d.ts +16 -0
- package/dist/message/actions/MessageActionFeedback.vue.d.ts.map +1 -0
- package/dist/message/actions/MessageActionRetry.vue.d.ts +14 -0
- package/dist/message/actions/MessageActionRetry.vue.d.ts.map +1 -0
- package/dist/message/actions/MessageActionSpeak.vue.d.ts +12 -0
- package/dist/message/actions/MessageActionSpeak.vue.d.ts.map +1 -0
- package/dist/message/actions/index.d.ts +6 -0
- package/dist/message/actions/index.d.ts.map +1 -0
- package/dist/message/index.d.ts +2 -0
- package/dist/message/index.d.ts.map +1 -1
- package/dist/preview/ImageLightbox.vue.d.ts.map +1 -1
- package/dist/prompt-input/PromptInput.vue.d.ts +10 -8
- package/dist/prompt-input/PromptInput.vue.d.ts.map +1 -1
- package/dist/prompt-input/PromptInputAttachments.vue.d.ts.map +1 -1
- package/dist/prompt-input/PromptInputBody.vue.d.ts +5 -3
- package/dist/prompt-input/PromptInputBody.vue.d.ts.map +1 -1
- package/dist/prompt-input/PromptInputButton.vue.d.ts +5 -3
- package/dist/prompt-input/PromptInputButton.vue.d.ts.map +1 -1
- package/dist/prompt-input/PromptInputFooter.vue.d.ts +7 -5
- package/dist/prompt-input/PromptInputFooter.vue.d.ts.map +1 -1
- package/dist/prompt-input/PromptInputHeader.vue.d.ts +5 -3
- package/dist/prompt-input/PromptInputHeader.vue.d.ts.map +1 -1
- package/dist/prompt-input/PromptInputMicButton.vue.d.ts +13 -0
- package/dist/prompt-input/PromptInputMicButton.vue.d.ts.map +1 -0
- package/dist/prompt-input/PromptInputSubmit.vue.d.ts +5 -3
- package/dist/prompt-input/PromptInputSubmit.vue.d.ts.map +1 -1
- package/dist/prompt-input/PromptInputSuggestion.vue.d.ts +23 -0
- package/dist/prompt-input/PromptInputSuggestion.vue.d.ts.map +1 -0
- package/dist/prompt-input/PromptInputTextarea.vue.d.ts.map +1 -1
- package/dist/prompt-input/PromptInputTools.vue.d.ts +5 -3
- package/dist/prompt-input/PromptInputTools.vue.d.ts.map +1 -1
- package/dist/prompt-input/PromptInputUploadButton.vue.d.ts +5 -3
- package/dist/prompt-input/PromptInputUploadButton.vue.d.ts.map +1 -1
- package/dist/prompt-input/index.d.ts +4 -0
- package/dist/prompt-input/index.d.ts.map +1 -1
- package/dist/prompt-input/suggestions.d.ts +38 -0
- package/dist/prompt-input/suggestions.d.ts.map +1 -0
- package/dist/provider/ProviderSettingsDialog.vue.d.ts +22 -0
- package/dist/provider/ProviderSettingsDialog.vue.d.ts.map +1 -0
- package/dist/provider/ProviderSettingsForm.vue.d.ts +17 -0
- package/dist/provider/ProviderSettingsForm.vue.d.ts.map +1 -0
- package/dist/provider/index.d.ts +3 -0
- package/dist/provider/index.d.ts.map +1 -0
- package/dist/provider/types.d.ts +20 -0
- package/dist/provider/types.d.ts.map +1 -0
- package/dist/shared/Button.vue.d.ts +7 -3
- package/dist/shared/Button.vue.d.ts.map +1 -1
- package/dist/shared/Input.vue.d.ts +28 -0
- package/dist/shared/Input.vue.d.ts.map +1 -0
- package/dist/shared/JsonDiffView.vue.d.ts +16 -0
- package/dist/shared/JsonDiffView.vue.d.ts.map +1 -0
- package/dist/shared/LanguageToggle.vue.d.ts +1 -1
- package/dist/shared/LanguageToggle.vue.d.ts.map +1 -1
- package/dist/shared/ModelIcon.vue.d.ts +28 -0
- package/dist/shared/ModelIcon.vue.d.ts.map +1 -0
- package/dist/shared/Radio.vue.d.ts +19 -0
- package/dist/shared/Radio.vue.d.ts.map +1 -0
- package/dist/shared/Select.vue.d.ts +32 -0
- package/dist/shared/Select.vue.d.ts.map +1 -0
- package/dist/shared/Shimmer.vue.d.ts +5 -3
- package/dist/shared/Shimmer.vue.d.ts.map +1 -1
- package/dist/shared/StreamText.vue.d.ts.map +1 -1
- package/dist/shared/Toast.vue.d.ts +1 -1
- package/dist/shared/Toast.vue.d.ts.map +1 -1
- package/dist/thinking/ThinkingBlock.vue.d.ts +5 -3
- package/dist/thinking/ThinkingBlock.vue.d.ts.map +1 -1
- package/dist/thinking/ThinkingChain.vue.d.ts +22 -0
- package/dist/thinking/ThinkingChain.vue.d.ts.map +1 -0
- package/dist/thinking/index.d.ts +2 -0
- package/dist/thinking/index.d.ts.map +1 -0
- package/dist/tool-call/ToolCall.vue.d.ts +12 -10
- package/dist/tool-call/ToolCall.vue.d.ts.map +1 -1
- package/dist/tool-call/ToolCallContent.vue.d.ts.map +1 -1
- package/dist/tool-call/ToolCallHeader.vue.d.ts.map +1 -1
- package/dist/tool-call/ToolCallInput.vue.d.ts.map +1 -1
- package/dist/tool-call/ToolCallOutput.vue.d.ts.map +1 -1
- package/dist/tool-call/ToolConfirmation.vue.d.ts +19 -0
- package/dist/tool-call/ToolConfirmation.vue.d.ts.map +1 -0
- package/dist/tool-call/index.d.ts +1 -0
- package/dist/tool-call/index.d.ts.map +1 -1
- package/dist/utils/compress-image.d.ts +21 -0
- package/dist/utils/compress-image.d.ts.map +1 -0
- package/dist/vue.css +1 -1
- package/dist/welcome/Prompts.vue.d.ts +33 -0
- package/dist/welcome/Prompts.vue.d.ts.map +1 -0
- package/dist/{ChatWindow.vue.d.ts → welcome/Welcome.vue.d.ts} +12 -7
- package/dist/welcome/Welcome.vue.d.ts.map +1 -0
- package/dist/welcome/index.d.ts +4 -0
- package/dist/welcome/index.d.ts.map +1 -0
- package/dist/welcome/types.d.ts +10 -0
- package/dist/welcome/types.d.ts.map +1 -0
- package/package.json +19 -14
- package/dist/ChatWindow.test.d.ts +0 -2
- package/dist/ChatWindow.test.d.ts.map +0 -1
- package/dist/ChatWindow.vue.d.ts.map +0 -1
- package/dist/InputArea.i18n.test.d.ts +0 -2
- package/dist/InputArea.i18n.test.d.ts.map +0 -1
- package/dist/InputArea.test.d.ts +0 -2
- package/dist/InputArea.test.d.ts.map +0 -1
- package/dist/InputArea.vue.d.ts +0 -24
- package/dist/InputArea.vue.d.ts.map +0 -1
- package/dist/MessageBubble.test.d.ts +0 -2
- package/dist/MessageBubble.test.d.ts.map +0 -1
- package/dist/MessageBubble.vue.d.ts.map +0 -1
- package/dist/MessageList.test.d.ts +0 -2
- package/dist/MessageList.test.d.ts.map +0 -1
- package/dist/MessageList.vue.d.ts +0 -20
- package/dist/MessageList.vue.d.ts.map +0 -1
- package/dist/attachment/Attachment.test.d.ts +0 -2
- package/dist/attachment/Attachment.test.d.ts.map +0 -1
- package/dist/attachment/AttachmentPreview.test.d.ts +0 -2
- package/dist/attachment/AttachmentPreview.test.d.ts.map +0 -1
- package/dist/attachment/Attachments.test.d.ts +0 -2
- package/dist/attachment/Attachments.test.d.ts.map +0 -1
- package/dist/comparison/ComparisonMessage.i18n.test.d.ts +0 -2
- package/dist/comparison/ComparisonMessage.i18n.test.d.ts.map +0 -1
- package/dist/comparison/ComparisonMessage.test.d.ts +0 -2
- package/dist/comparison/ComparisonMessage.test.d.ts.map +0 -1
- package/dist/composables/useLayoutConfig.test.d.ts +0 -2
- package/dist/composables/useLayoutConfig.test.d.ts.map +0 -1
- package/dist/composables/useMarkdownRenderer.test.d.ts +0 -2
- package/dist/composables/useMarkdownRenderer.test.d.ts.map +0 -1
- package/dist/composables/usePendingFiles.test.d.ts +0 -2
- package/dist/composables/usePendingFiles.test.d.ts.map +0 -1
- package/dist/composables/useScrollAnchor.test.d.ts +0 -2
- package/dist/composables/useScrollAnchor.test.d.ts.map +0 -1
- package/dist/composables/useTheme.test.d.ts +0 -2
- package/dist/composables/useTheme.test.d.ts.map +0 -1
- package/dist/composables/useThemePreset.test.d.ts +0 -2
- package/dist/composables/useThemePreset.test.d.ts.map +0 -1
- package/dist/conversation/Conversation.test.d.ts +0 -2
- package/dist/conversation/Conversation.test.d.ts.map +0 -1
- package/dist/conversation/ConversationContent.test.d.ts +0 -2
- package/dist/conversation/ConversationContent.test.d.ts.map +0 -1
- package/dist/conversation/ConversationEmpty.test.d.ts +0 -2
- package/dist/conversation/ConversationEmpty.test.d.ts.map +0 -1
- package/dist/conversation/ConversationScrollBtn.test.d.ts +0 -2
- package/dist/conversation/ConversationScrollBtn.test.d.ts.map +0 -1
- package/dist/integration/chat-flow.test.d.ts +0 -1
- package/dist/integration/chat-flow.test.d.ts.map +0 -1
- package/dist/locales/locales.test.d.ts +0 -2
- package/dist/locales/locales.test.d.ts.map +0 -1
- package/dist/message/Message.test.d.ts +0 -2
- package/dist/message/Message.test.d.ts.map +0 -1
- package/dist/message/MessageAction.test.d.ts +0 -2
- package/dist/message/MessageAction.test.d.ts.map +0 -1
- package/dist/message/MessageContent.test.d.ts +0 -2
- package/dist/message/MessageContent.test.d.ts.map +0 -1
- package/dist/preview/ImageLightbox.test.d.ts +0 -2
- package/dist/preview/ImageLightbox.test.d.ts.map +0 -1
- package/dist/prompt-input/PromptInput.i18n.test.d.ts +0 -2
- package/dist/prompt-input/PromptInput.i18n.test.d.ts.map +0 -1
- package/dist/prompt-input/PromptInput.test.d.ts +0 -2
- package/dist/prompt-input/PromptInput.test.d.ts.map +0 -1
- package/dist/prompt-input/PromptInputAttachments.test.d.ts +0 -2
- package/dist/prompt-input/PromptInputAttachments.test.d.ts.map +0 -1
- package/dist/prompt-input/PromptInputButton.test.d.ts +0 -2
- package/dist/prompt-input/PromptInputButton.test.d.ts.map +0 -1
- package/dist/prompt-input/PromptInputFooter.test.d.ts +0 -2
- package/dist/prompt-input/PromptInputFooter.test.d.ts.map +0 -1
- package/dist/prompt-input/PromptInputSubmit.test.d.ts +0 -2
- package/dist/prompt-input/PromptInputSubmit.test.d.ts.map +0 -1
- package/dist/prompt-input/PromptInputTextarea.test.d.ts +0 -2
- package/dist/prompt-input/PromptInputTextarea.test.d.ts.map +0 -1
- package/dist/prompt-input/PromptInputUploadButton.test.d.ts +0 -2
- package/dist/prompt-input/PromptInputUploadButton.test.d.ts.map +0 -1
- package/dist/shared/Button.test.d.ts +0 -2
- package/dist/shared/Button.test.d.ts.map +0 -1
- package/dist/shared/LanguageToggle.test.d.ts +0 -2
- package/dist/shared/LanguageToggle.test.d.ts.map +0 -1
- package/dist/shared/Shimmer.test.d.ts +0 -2
- package/dist/shared/Shimmer.test.d.ts.map +0 -1
- package/dist/shared/StreamText.test.d.ts +0 -2
- package/dist/shared/StreamText.test.d.ts.map +0 -1
- package/dist/shared/Toast.test.d.ts +0 -2
- package/dist/shared/Toast.test.d.ts.map +0 -1
- package/dist/theme/tokens-meta.test.d.ts +0 -2
- package/dist/theme/tokens-meta.test.d.ts.map +0 -1
- package/dist/thinking/ThinkingBlock.test.d.ts +0 -2
- package/dist/thinking/ThinkingBlock.test.d.ts.map +0 -1
- package/dist/tool-call/ToolCall.test.d.ts +0 -2
- package/dist/tool-call/ToolCall.test.d.ts.map +0 -1
- package/dist/utils/format.test.d.ts +0 -2
- package/dist/utils/format.test.d.ts.map +0 -1
- package/dist/utils/media.test.d.ts +0 -2
- 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
|
|
12
|
-
|
|
13
|
-
|
|
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;
|
|
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
|
|
2
|
-
|
|
3
|
-
|
|
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":"
|
|
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
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
} & {
|
|
11
|
-
|
|
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;
|
|
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
|
-
|
|
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":"
|
|
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
|
|
2
|
+
/** 待渲染的 schema(通常取自 message.toolCalls[i].result.ui);非法值走 fallback */
|
|
3
|
+
schema: unknown;
|
|
4
4
|
};
|
|
5
|
-
declare
|
|
6
|
-
|
|
7
|
-
|
|
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=
|
|
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 @@
|
|
|
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"}
|