@huyooo/ai-chat-frontend-react 0.2.44 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/dist/adapter.d.ts +58 -0
  2. package/dist/adapter.d.ts.map +1 -0
  3. package/dist/components/ChatPanel.d.ts +71 -0
  4. package/dist/components/ChatPanel.d.ts.map +1 -0
  5. package/dist/components/common/ConfirmDialog.d.ts +27 -0
  6. package/dist/components/common/ConfirmDialog.d.ts.map +1 -0
  7. package/dist/components/common/CopyButton.d.ts +15 -0
  8. package/dist/components/common/CopyButton.d.ts.map +1 -0
  9. package/dist/components/common/IndexingSettings.d.ts +3 -0
  10. package/dist/components/common/IndexingSettings.d.ts.map +1 -0
  11. package/dist/components/common/Toast.d.ts +12 -0
  12. package/dist/components/common/Toast.d.ts.map +1 -0
  13. package/dist/components/common/ToggleSwitch.d.ts +9 -0
  14. package/dist/components/common/ToggleSwitch.d.ts.map +1 -0
  15. package/dist/components/header/ChatHeader.d.ts +42 -0
  16. package/dist/components/header/ChatHeader.d.ts.map +1 -0
  17. package/dist/components/input/AtFilePicker.d.ts +16 -0
  18. package/dist/components/input/AtFilePicker.d.ts.map +1 -0
  19. package/dist/components/input/ChatInput.d.ts +49 -0
  20. package/dist/components/input/ChatInput.d.ts.map +1 -0
  21. package/dist/components/input/DropdownSelector.d.ts +46 -0
  22. package/dist/components/input/DropdownSelector.d.ts.map +1 -0
  23. package/dist/components/input/ImagePreviewModal.d.ts +11 -0
  24. package/dist/components/input/ImagePreviewModal.d.ts.map +1 -0
  25. package/dist/components/input/QueuedMessageList.d.ts +11 -0
  26. package/dist/components/input/QueuedMessageList.d.ts.map +1 -0
  27. package/dist/components/input/at-views/AtChatsView.d.ts +17 -0
  28. package/dist/components/input/at-views/AtChatsView.d.ts.map +1 -0
  29. package/dist/components/input/at-views/AtDocsView.d.ts +17 -0
  30. package/dist/components/input/at-views/AtDocsView.d.ts.map +1 -0
  31. package/dist/components/input/at-views/AtFilesView.d.ts +26 -0
  32. package/dist/components/input/at-views/AtFilesView.d.ts.map +1 -0
  33. package/dist/components/input/at-views/AtTerminalsView.d.ts +17 -0
  34. package/dist/components/input/at-views/AtTerminalsView.d.ts.map +1 -0
  35. package/dist/components/input/at-views/index.d.ts +9 -0
  36. package/dist/components/input/at-views/index.d.ts.map +1 -0
  37. package/dist/components/input/at-views/useAtViewTooltip.d.ts +12 -0
  38. package/dist/components/input/at-views/useAtViewTooltip.d.ts.map +1 -0
  39. package/dist/components/input/atContextItems.d.ts +9 -0
  40. package/dist/components/input/atContextItems.d.ts.map +1 -0
  41. package/dist/components/input/atContextToolHints.d.ts +2 -0
  42. package/dist/components/input/atContextToolHints.d.ts.map +1 -0
  43. package/dist/components/message/MessageBubble.d.ts +69 -0
  44. package/dist/components/message/MessageBubble.d.ts.map +1 -0
  45. package/dist/components/message/PartsRenderer.d.ts +22 -0
  46. package/dist/components/message/PartsRenderer.d.ts.map +1 -0
  47. package/dist/components/message/WelcomeMessage.d.ts +16 -0
  48. package/dist/components/message/WelcomeMessage.d.ts.map +1 -0
  49. package/dist/components/message/parts/CollapsibleCard.d.ts +29 -0
  50. package/dist/components/message/parts/CollapsibleCard.d.ts.map +1 -0
  51. package/dist/components/message/parts/CompactPart.d.ts +14 -0
  52. package/dist/components/message/parts/CompactPart.d.ts.map +1 -0
  53. package/dist/components/message/parts/ContentCompressPart.d.ts +13 -0
  54. package/dist/components/message/parts/ContentCompressPart.d.ts.map +1 -0
  55. package/dist/components/message/parts/ErrorPart.d.ts +10 -0
  56. package/dist/components/message/parts/ErrorPart.d.ts.map +1 -0
  57. package/dist/components/message/parts/ExtensionPartHost.d.ts +15 -0
  58. package/dist/components/message/parts/ExtensionPartHost.d.ts.map +1 -0
  59. package/dist/components/message/parts/ImagePart.d.ts +9 -0
  60. package/dist/components/message/parts/ImagePart.d.ts.map +1 -0
  61. package/dist/components/message/parts/PlanPart.d.ts +11 -0
  62. package/dist/components/message/parts/PlanPart.d.ts.map +1 -0
  63. package/dist/components/message/parts/TavilySearchPart.d.ts +18 -0
  64. package/dist/components/message/parts/TavilySearchPart.d.ts.map +1 -0
  65. package/dist/components/message/parts/TextPart.d.ts +9 -0
  66. package/dist/components/message/parts/TextPart.d.ts.map +1 -0
  67. package/dist/components/message/parts/ThinkingPart.d.ts +12 -0
  68. package/dist/components/message/parts/ThinkingPart.d.ts.map +1 -0
  69. package/dist/components/message/parts/ToolCallPart.d.ts +35 -0
  70. package/dist/components/message/parts/ToolCallPart.d.ts.map +1 -0
  71. package/dist/components/message/parts/ZhipuSearchPart.d.ts +20 -0
  72. package/dist/components/message/parts/ZhipuSearchPart.d.ts.map +1 -0
  73. package/dist/components/message/parts/index.d.ts +20 -0
  74. package/dist/components/message/parts/index.d.ts.map +1 -0
  75. package/dist/components/message/parts/tool-call-display.d.ts +26 -0
  76. package/dist/components/message/parts/tool-call-display.d.ts.map +1 -0
  77. package/dist/components/message/parts/visual-predicate.d.ts +7 -0
  78. package/dist/components/message/parts/visual-predicate.d.ts.map +1 -0
  79. package/dist/components/message/parts/visual-render.d.ts +2 -0
  80. package/dist/components/message/parts/visual-render.d.ts.map +1 -0
  81. package/dist/components/message/parts/visual.d.ts +3 -0
  82. package/dist/components/message/parts/visual.d.ts.map +1 -0
  83. package/dist/components/message/welcome-types.d.ts +28 -0
  84. package/dist/components/message/welcome-types.d.ts.map +1 -0
  85. package/dist/context/AutoRunConfigContext.d.ts +8 -0
  86. package/dist/context/AutoRunConfigContext.d.ts.map +1 -0
  87. package/dist/context/ChatAdapterContext.d.ts +4 -0
  88. package/dist/context/ChatAdapterContext.d.ts.map +1 -0
  89. package/dist/context/ChatInputContext.d.ts +51 -0
  90. package/dist/context/ChatInputContext.d.ts.map +1 -0
  91. package/dist/context/PartLoaderContext.d.ts +25 -0
  92. package/dist/context/PartLoaderContext.d.ts.map +1 -0
  93. package/dist/context/RenderersContext.d.ts +22 -0
  94. package/dist/context/RenderersContext.d.ts.map +1 -0
  95. package/dist/hooks/chat/types.d.ts +109 -0
  96. package/dist/hooks/chat/types.d.ts.map +1 -0
  97. package/dist/hooks/chat/useCapabilityConfig.d.ts +35 -0
  98. package/dist/hooks/chat/useCapabilityConfig.d.ts.map +1 -0
  99. package/dist/hooks/chat/useMessageActions.d.ts +13 -0
  100. package/dist/hooks/chat/useMessageActions.d.ts.map +1 -0
  101. package/dist/hooks/chat/useMessageSender.d.ts +15 -0
  102. package/dist/hooks/chat/useMessageSender.d.ts.map +1 -0
  103. package/dist/hooks/chat/useSessionManager.d.ts +18 -0
  104. package/dist/hooks/chat/useSessionManager.d.ts.map +1 -0
  105. package/dist/hooks/chat/utils.d.ts +20 -0
  106. package/dist/hooks/chat/utils.d.ts.map +1 -0
  107. package/dist/hooks/useChat.d.ts +105 -0
  108. package/dist/hooks/useChat.d.ts.map +1 -0
  109. package/dist/hooks/useImageUpload.d.ts +56 -0
  110. package/dist/hooks/useImageUpload.d.ts.map +1 -0
  111. package/dist/hooks/useVoiceInput.d.ts +26 -0
  112. package/dist/hooks/useVoiceInput.d.ts.map +1 -0
  113. package/dist/hooks/useVoiceToTextInput.d.ts +22 -0
  114. package/dist/hooks/useVoiceToTextInput.d.ts.map +1 -0
  115. package/dist/icons.d.ts +2 -0
  116. package/dist/icons.d.ts.map +1 -0
  117. package/dist/index.d.ts +55 -684
  118. package/dist/index.d.ts.map +1 -0
  119. package/dist/index.js +34 -1
  120. package/dist/style.css +103 -0
  121. package/dist/types/index.d.ts +251 -0
  122. package/dist/types/index.d.ts.map +1 -0
  123. package/dist/utils/applyToolCallResult.d.ts +8 -0
  124. package/dist/utils/applyToolCallResult.d.ts.map +1 -0
  125. package/dist/utils/applyToolCallResult.test.d.ts +2 -0
  126. package/dist/utils/applyToolCallResult.test.d.ts.map +1 -0
  127. package/package.json +19 -11
  128. package/dist/KaTeX_AMS-Regular-CYEKBG2K.woff +0 -0
  129. package/dist/KaTeX_AMS-Regular-JKX5W2C4.ttf +0 -0
  130. package/dist/KaTeX_AMS-Regular-U6PRYMIZ.woff2 +0 -0
  131. package/dist/KaTeX_Caligraphic-Bold-5QL5CMTE.woff2 +0 -0
  132. package/dist/KaTeX_Caligraphic-Bold-WZ3QSGD3.woff +0 -0
  133. package/dist/KaTeX_Caligraphic-Bold-ZTS3R3HK.ttf +0 -0
  134. package/dist/KaTeX_Caligraphic-Regular-3LKEU76G.woff +0 -0
  135. package/dist/KaTeX_Caligraphic-Regular-A7XRTZ5Q.ttf +0 -0
  136. package/dist/KaTeX_Caligraphic-Regular-KX5MEWCF.woff2 +0 -0
  137. package/dist/KaTeX_Fraktur-Bold-2QVFK6NQ.woff2 +0 -0
  138. package/dist/KaTeX_Fraktur-Bold-T4SWXBMT.woff +0 -0
  139. package/dist/KaTeX_Fraktur-Bold-WGHVTYOR.ttf +0 -0
  140. package/dist/KaTeX_Fraktur-Regular-2PEIFJSJ.woff2 +0 -0
  141. package/dist/KaTeX_Fraktur-Regular-5U4OPH2X.ttf +0 -0
  142. package/dist/KaTeX_Fraktur-Regular-PQMHCIK6.woff +0 -0
  143. package/dist/KaTeX_Main-Bold-2GA4IZIN.woff +0 -0
  144. package/dist/KaTeX_Main-Bold-W5FBVCZM.ttf +0 -0
  145. package/dist/KaTeX_Main-Bold-YP5VVQRP.woff2 +0 -0
  146. package/dist/KaTeX_Main-BoldItalic-4P4C7HJH.woff +0 -0
  147. package/dist/KaTeX_Main-BoldItalic-N4V3DX7S.woff2 +0 -0
  148. package/dist/KaTeX_Main-BoldItalic-ODMLBJJQ.ttf +0 -0
  149. package/dist/KaTeX_Main-Italic-I43T2HSR.ttf +0 -0
  150. package/dist/KaTeX_Main-Italic-RELBIK7M.woff2 +0 -0
  151. package/dist/KaTeX_Main-Italic-SASNQFN2.woff +0 -0
  152. package/dist/KaTeX_Main-Regular-ARRPAO67.woff2 +0 -0
  153. package/dist/KaTeX_Main-Regular-P5I74A2A.woff +0 -0
  154. package/dist/KaTeX_Main-Regular-W74P5G27.ttf +0 -0
  155. package/dist/KaTeX_Math-BoldItalic-6EBV3DK5.woff +0 -0
  156. package/dist/KaTeX_Math-BoldItalic-K4WTGH3J.woff2 +0 -0
  157. package/dist/KaTeX_Math-BoldItalic-VB447A4D.ttf +0 -0
  158. package/dist/KaTeX_Math-Italic-6KGCHLFN.woff2 +0 -0
  159. package/dist/KaTeX_Math-Italic-KKK3USB2.woff +0 -0
  160. package/dist/KaTeX_Math-Italic-SON4MRCA.ttf +0 -0
  161. package/dist/KaTeX_SansSerif-Bold-RRNVJFFW.woff2 +0 -0
  162. package/dist/KaTeX_SansSerif-Bold-STQ6RXC7.ttf +0 -0
  163. package/dist/KaTeX_SansSerif-Bold-X5M5EMOD.woff +0 -0
  164. package/dist/KaTeX_SansSerif-Italic-HMPFTM52.woff2 +0 -0
  165. package/dist/KaTeX_SansSerif-Italic-PSN4QKYX.woff +0 -0
  166. package/dist/KaTeX_SansSerif-Italic-WTBAZBGY.ttf +0 -0
  167. package/dist/KaTeX_SansSerif-Regular-2TL3USAE.ttf +0 -0
  168. package/dist/KaTeX_SansSerif-Regular-OQCII6EP.woff +0 -0
  169. package/dist/KaTeX_SansSerif-Regular-XIQ62X4E.woff2 +0 -0
  170. package/dist/KaTeX_Script-Regular-72OLXYNA.ttf +0 -0
  171. package/dist/KaTeX_Script-Regular-A5IFOEBS.woff +0 -0
  172. package/dist/KaTeX_Script-Regular-APUWIHLP.woff2 +0 -0
  173. package/dist/KaTeX_Size1-Regular-4HRHTS65.woff +0 -0
  174. package/dist/KaTeX_Size1-Regular-5LRUTBFT.woff2 +0 -0
  175. package/dist/KaTeX_Size1-Regular-7K6AASVL.ttf +0 -0
  176. package/dist/KaTeX_Size2-Regular-222HN3GT.ttf +0 -0
  177. package/dist/KaTeX_Size2-Regular-K5ZHAIS6.woff +0 -0
  178. package/dist/KaTeX_Size2-Regular-LELKET5D.woff2 +0 -0
  179. package/dist/KaTeX_Size3-Regular-TLFPAHDE.woff +0 -0
  180. package/dist/KaTeX_Size3-Regular-UFCO6WCA.ttf +0 -0
  181. package/dist/KaTeX_Size3-Regular-WQRQ47UD.woff2 +0 -0
  182. package/dist/KaTeX_Size4-Regular-7PGNVPQK.ttf +0 -0
  183. package/dist/KaTeX_Size4-Regular-CDMV7U5C.woff2 +0 -0
  184. package/dist/KaTeX_Size4-Regular-PKMWZHNC.woff +0 -0
  185. package/dist/KaTeX_Typewriter-Regular-3F5K6SQ6.ttf +0 -0
  186. package/dist/KaTeX_Typewriter-Regular-MJMFSK64.woff +0 -0
  187. package/dist/KaTeX_Typewriter-Regular-VBYJ4NRC.woff2 +0 -0
  188. package/dist/index.css +0 -4017
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Chat Adapter 辅助类型和工具
3
+ * 核心 ChatAdapter 接口从 bridge-electron 导入
4
+ */
5
+ import type { ChatAdapter, ChatMode, ThinkingMode, FileInfo, MessagePartInput } from '@huyooo/ai-chat-bridge-electron/renderer';
6
+ /**
7
+ * 重新导出 ChatAdapter 类型供内部组件使用
8
+ */
9
+ export type { ChatAdapter, FileInfo };
10
+ /** 思考数据 */
11
+ export interface ThinkingData {
12
+ content: string;
13
+ isComplete: boolean;
14
+ }
15
+ /** 工具调用数据 */
16
+ export interface ToolCallData {
17
+ name: string;
18
+ args: Record<string, unknown>;
19
+ }
20
+ /** 工具结果数据 */
21
+ export interface ToolResultData {
22
+ name: string;
23
+ result: string;
24
+ }
25
+ /** 图片数据 */
26
+ export interface ImageData {
27
+ base64: string;
28
+ mimeType: string;
29
+ }
30
+ /** 发送消息选项 */
31
+ export interface SendMessageOptions {
32
+ mode: ChatMode;
33
+ model: string;
34
+ enableWebSearch: boolean;
35
+ /** 深度思考开关(每个 provider 内部使用最优参数) */
36
+ thinkingMode: ThinkingMode;
37
+ }
38
+ /** 创建会话选项 */
39
+ export interface CreateSessionOptions {
40
+ title: string;
41
+ model: string;
42
+ mode: ChatMode;
43
+ }
44
+ /** 更新会话选项 */
45
+ export interface UpdateSessionOptions {
46
+ title?: string;
47
+ model?: string;
48
+ mode?: ChatMode;
49
+ }
50
+ /** 保存消息选项 */
51
+ export interface SaveMessageOptions {
52
+ sessionId: string;
53
+ role: 'user' | 'assistant';
54
+ content: string;
55
+ parts?: MessagePartInput[];
56
+ operationIds?: string;
57
+ }
58
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAA;AAE/H;;GAEG;AACH,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAA;AAErC,WAAW;AACX,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,OAAO,CAAA;CACpB;AAED,aAAa;AACb,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B;AAED,aAAa;AACb,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACf;AAED,WAAW;AACX,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,aAAa;AACb,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,QAAQ,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,eAAe,EAAE,OAAO,CAAA;IACxB,mCAAmC;IACnC,YAAY,EAAE,YAAY,CAAA;CAC3B;AAED,aAAa;AACb,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,QAAQ,CAAA;CACf;AAED,aAAa;AACb,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,QAAQ,CAAA;CAChB;AAED,aAAa;AACb,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,GAAG,WAAW,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * ChatPanel Component
3
+ * 与 Vue 版本 ChatPanel.vue 保持一致
4
+ */
5
+ import { type ChatRuntime, type ToolCompleteEvent } from '../hooks/useChat';
6
+ import type { ChatAdapter, ModelOption, ChatMode } from '@huyooo/ai-chat-bridge-electron/renderer';
7
+ import type { WelcomeConfig } from './message/welcome-types';
8
+ import { type PartRenderers } from '../context/RenderersContext';
9
+ /** ChatPanel 暴露给外部的方法 */
10
+ export interface ChatPanelHandle {
11
+ /** 设置输入框内容 */
12
+ setInputText: (text: string) => void;
13
+ /** 在当前光标位置插入文本 */
14
+ insertInputText: (text: string) => void;
15
+ /** 聚焦输入框 */
16
+ focusInput: () => void;
17
+ /** 发送消息 */
18
+ sendMessage: (text: string) => void;
19
+ /** 设置当前工作目录 */
20
+ setCwd: (dir: string) => void;
21
+ /** 重新加载聊天能力快照 */
22
+ loadCapabilities: () => Promise<void>;
23
+ /** 重新从宿主拉取聊天能力与偏好 */
24
+ reloadCapabilities: () => Promise<void>;
25
+ }
26
+ interface ChatPanelProps {
27
+ /** Adapter 实例 */
28
+ adapter: ChatAdapter;
29
+ /** 外部持久化聊天运行时;未传入时组件内部自行创建 */
30
+ runtime?: ChatRuntime;
31
+ /** 默认模型 */
32
+ defaultModel?: string;
33
+ /** 默认模式 */
34
+ defaultMode?: ChatMode;
35
+ /** 可用模型列表 */
36
+ models?: ModelOption[];
37
+ /** 隐藏标题栏 */
38
+ hideHeader?: boolean;
39
+ /** 面板当前是否可见 */
40
+ visible?: boolean;
41
+ /** 关闭回调(有此属性时显示关闭按钮) */
42
+ onClose?: () => void;
43
+ /** 工具执行完成回调 */
44
+ onToolComplete?: (event: ToolCompleteEvent) => void;
45
+ /** 显示会话审计入口 */
46
+ showAuditAction?: boolean;
47
+ /** 点击审计入口 */
48
+ onAuditSession?: (sessionId: string) => void;
49
+ /** 自定义类名 */
50
+ className?: string;
51
+ /** 欢迎页配置 */
52
+ welcomeConfig?: Partial<WelcomeConfig>;
53
+ /** 自定义 Part 渲染器 - 根据 part.type 选择渲染组件(如 weather, stock 等) */
54
+ partRenderers?: PartRenderers;
55
+ /**
56
+ * 执行步骤折叠模式
57
+ * - 'open': 始终展开
58
+ * - 'close': 始终折叠
59
+ * - 'auto': 执行时展开,完成后折叠
60
+ */
61
+ stepsExpandedType?: 'open' | 'close' | 'auto';
62
+ /** 打开 Skills 目录回调(宿主应用处理) */
63
+ onOpenSkillsDir?: () => void;
64
+ /** 当前浏览目录(用于 @ 文件面板默认定位) */
65
+ currentPath?: string;
66
+ /** @ 文件面板的回退根目录 */
67
+ rootDir?: string;
68
+ }
69
+ export declare const ChatPanel: import("react").ForwardRefExoticComponent<ChatPanelProps & import("react").RefAttributes<ChatPanelHandle>>;
70
+ export {};
71
+ //# sourceMappingURL=ChatPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatPanel.d.ts","sourceRoot":"","sources":["../../src/components/ChatPanel.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAW,KAAK,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEpF,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,0CAA0C,CAAA;AAIlG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAI5D,OAAO,EAAyB,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAKvF,yBAAyB;AACzB,MAAM,WAAW,eAAe;IAC9B,cAAc;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,kBAAkB;IAClB,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,YAAY;IACZ,UAAU,EAAE,MAAM,IAAI,CAAA;IACtB,WAAW;IACX,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,eAAe;IACf,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,iBAAiB;IACjB,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,qBAAqB;IACrB,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACxC;AAED,UAAU,cAAc;IACtB,iBAAiB;IACjB,OAAO,EAAE,WAAW,CAAA;IACpB,8BAA8B;IAC9B,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,WAAW;IACX,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW;IACX,WAAW,CAAC,EAAE,QAAQ,CAAA;IACtB,aAAa;IACb,MAAM,CAAC,EAAE,WAAW,EAAE,CAAA;IACtB,YAAY;IACZ,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,eAAe;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,eAAe;IACf,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAA;IACnD,eAAe;IACf,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,aAAa;IACb,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,YAAY;IACZ,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY;IACZ,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IACtC,6DAA6D;IAC7D,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;IAC7C,6BAA6B;IAC7B,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;IAC5B,4BAA4B;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mBAAmB;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,eAAO,MAAM,SAAS,4GAyjBpB,CAAA"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * ConfirmDialog Component
3
+ * 自定义确认弹窗组件
4
+ */
5
+ import { type FC } from 'react';
6
+ import './ConfirmDialog.css';
7
+ interface ConfirmDialogProps {
8
+ /** 是否显示 */
9
+ visible: boolean;
10
+ /** 标题 */
11
+ title?: string;
12
+ /** 消息内容 */
13
+ message: string;
14
+ /** 类型:info | warning | danger */
15
+ type?: 'info' | 'warning' | 'danger';
16
+ /** 确认按钮文字 */
17
+ confirmText?: string;
18
+ /** 取消按钮文字 */
19
+ cancelText?: string;
20
+ /** 确认回调 */
21
+ onConfirm?: () => void;
22
+ /** 取消回调 */
23
+ onCancel?: () => void;
24
+ }
25
+ export declare const ConfirmDialog: FC<ConfirmDialogProps>;
26
+ export {};
27
+ //# sourceMappingURL=ConfirmDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfirmDialog.d.ts","sourceRoot":"","sources":["../../../src/components/common/ConfirmDialog.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,EAAa,MAAM,OAAO,CAAA;AAG1C,OAAO,qBAAqB,CAAA;AAE5B,UAAU,kBAAkB;IAC1B,WAAW;IACX,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS;IACT,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW;IACX,OAAO,EAAE,MAAM,CAAA;IACf,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAA;IACpC,aAAa;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,aAAa;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW;IACX,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,WAAW;IACX,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AAED,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,kBAAkB,CA6DhD,CAAA"}
@@ -0,0 +1,15 @@
1
+ import { FC } from 'react';
2
+ import './CopyButton.css';
3
+ interface CopyButtonProps {
4
+ /** 要复制的文本 */
5
+ text: string;
6
+ /** 按钮标题 */
7
+ title?: string;
8
+ /** 图标大小 */
9
+ size?: number;
10
+ /** 复制成功回调 */
11
+ onCopy?: (text: string) => void;
12
+ }
13
+ export declare const CopyButton: FC<CopyButtonProps>;
14
+ export {};
15
+ //# sourceMappingURL=CopyButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CopyButton.d.ts","sourceRoot":"","sources":["../../../src/components/common/CopyButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAyB,MAAM,OAAO,CAAA;AAEjD,OAAO,kBAAkB,CAAA;AAEzB,UAAU,eAAe;IACvB,aAAa;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW;IACX,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,aAAa;IACb,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAChC;AAED,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CA6B1C,CAAA"}
@@ -0,0 +1,3 @@
1
+ import './IndexingSettings.css';
2
+ export declare function IndexingSettings(): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=IndexingSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexingSettings.d.ts","sourceRoot":"","sources":["../../../src/components/common/IndexingSettings.tsx"],"names":[],"mappings":"AAGA,OAAO,wBAAwB,CAAA;AAE/B,wBAAgB,gBAAgB,4CAuY/B"}
@@ -0,0 +1,12 @@
1
+ import { FC } from 'react';
2
+ import './Toast.css';
3
+ interface ToastProps {
4
+ visible: boolean;
5
+ message: string;
6
+ type?: 'info' | 'success' | 'warning' | 'error';
7
+ duration?: number;
8
+ onClose: () => void;
9
+ }
10
+ export declare const Toast: FC<ToastProps>;
11
+ export {};
12
+ //# sourceMappingURL=Toast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../src/components/common/Toast.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAa,MAAM,OAAO,CAAA;AAErC,OAAO,aAAa,CAAA;AAEpB,UAAU,UAAU;IAClB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,eAAO,MAAM,KAAK,EAAE,EAAE,CAAC,UAAU,CAyBhC,CAAA"}
@@ -0,0 +1,9 @@
1
+ import type { FC } from 'react';
2
+ import './ToggleSwitch.css';
3
+ interface ToggleSwitchProps {
4
+ checked?: boolean;
5
+ onChange: (value: boolean) => void;
6
+ }
7
+ export declare const ToggleSwitch: FC<ToggleSwitchProps>;
8
+ export {};
9
+ //# sourceMappingURL=ToggleSwitch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToggleSwitch.d.ts","sourceRoot":"","sources":["../../../src/components/common/ToggleSwitch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAA;AAC/B,OAAO,oBAAoB,CAAA;AAE3B,UAAU,iBAAiB;IACzB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CACnC;AAED,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,iBAAiB,CAW9C,CAAA"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * ChatHeader Component
3
+ * 与 Vue 版本 ChatHeader.vue 保持一致
4
+ */
5
+ import { type FC } from 'react';
6
+ import './ChatHeader.css';
7
+ import type { SessionRecord } from '../../types';
8
+ interface ChatHeaderProps {
9
+ /** 当前会话列表 */
10
+ sessions: SessionRecord[];
11
+ /** 当前会话 ID */
12
+ currentSessionId?: string | null;
13
+ /** 是否显示关闭按钮 */
14
+ showClose?: boolean;
15
+ /** 是否显示审计入口 */
16
+ showAudit?: boolean;
17
+ /** 创建新会话 */
18
+ onNewSession?: () => void;
19
+ /** 切换会话 */
20
+ onSwitchSession?: (sessionId: string) => void;
21
+ /** 删除会话 */
22
+ onDeleteSession?: (sessionId: string) => void;
23
+ /** 隐藏/显示会话(在 tab 栏关闭但不删除) */
24
+ onHideSession?: (sessionId: string, hidden: boolean) => void;
25
+ /** 关闭面板 */
26
+ onClose?: () => void;
27
+ /** 清空所有对话 */
28
+ onClearAll?: () => void;
29
+ /** 关闭其他对话 */
30
+ onCloseOthers?: () => void;
31
+ /** 导出对话 */
32
+ onExport?: () => void;
33
+ /** 复制会话 ID */
34
+ onCopyId?: () => void;
35
+ /** 打开会话审计 */
36
+ onAudit?: () => void;
37
+ /** 反馈 */
38
+ onFeedback?: () => void;
39
+ }
40
+ export declare const ChatHeader: FC<ChatHeaderProps>;
41
+ export {};
42
+ //# sourceMappingURL=ChatHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatHeader.d.ts","sourceRoot":"","sources":["../../../src/components/header/ChatHeader.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAqD,KAAK,EAAE,EAAE,MAAM,OAAO,CAAA;AAClF,OAAO,kBAAkB,CAAA;AAEzB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,UAAU,eAAe;IACvB,aAAa;IACb,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,cAAc;IACd,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,eAAe;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,eAAe;IACf,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,YAAY;IACZ,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,WAAW;IACX,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,WAAW;IACX,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,6BAA6B;IAC7B,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IAC5D,WAAW;IACX,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,aAAa;IACb,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IACvB,aAAa;IACb,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,WAAW;IACX,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,cAAc;IACd,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,aAAa;IACb,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,SAAS;IACT,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;CACxB;AA4DD,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CAma1C,CAAA"}
@@ -0,0 +1,16 @@
1
+ import type { ChatAdapter } from '../../adapter';
2
+ import type { AtContextItem } from '@huyooo/ai-chat-types';
3
+ import './AtFilePicker.css';
4
+ export interface AtFilePickerProps {
5
+ visible: boolean;
6
+ adapter: ChatAdapter;
7
+ initialDir?: string;
8
+ rootDir?: string;
9
+ selectedMentions?: string[];
10
+ /** 锚点元素(用于定位下拉面板) */
11
+ anchorEl?: HTMLElement | null;
12
+ onClose: () => void;
13
+ onSelect: (item: AtContextItem) => void;
14
+ }
15
+ export declare function AtFilePicker({ visible, adapter, initialDir, rootDir, selectedMentions, anchorEl, onClose, onSelect, }: AtFilePickerProps): import("react").ReactPortal | null;
16
+ //# sourceMappingURL=AtFilePicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AtFilePicker.d.ts","sourceRoot":"","sources":["../../../src/components/input/AtFilePicker.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,KAAK,EACV,aAAa,EAMd,MAAM,uBAAuB,CAAA;AAO9B,OAAO,oBAAoB,CAAA;AAE3B,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,WAAW,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,qBAAqB;IACrB,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;IAC7B,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAA;CACxC;AA0ED,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,OAAO,EACP,UAAU,EACV,OAAO,EACP,gBAAgB,EAChB,QAAQ,EACR,OAAO,EACP,QAAQ,GACT,EAAE,iBAAiB,sCAu+BnB"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * ChatInput Component
3
+ * 与 Vue 版本 ChatInput.vue 保持一致
4
+ */
5
+ import './ChatInput.css';
6
+ import type { ChatMode, ModelOption } from '../../types';
7
+ import type { ImageData } from '../../adapter';
8
+ import type { AtContextItem } from '@huyooo/ai-chat-types';
9
+ /** ChatInput 暴露给外部的方法 */
10
+ export interface ChatInputHandle {
11
+ /** 设置输入框内容 */
12
+ setText: (text: string) => void;
13
+ /** 聚焦输入框 */
14
+ focus: () => void;
15
+ /** 清空输入框 */
16
+ clear: () => void;
17
+ /** 在当前光标位置插入文本 */
18
+ insertText: (text: string) => void;
19
+ /** 添加图片 */
20
+ addImages: (files: File[]) => void;
21
+ }
22
+ interface ChatInputProps {
23
+ /** 变体模式:input-底部输入框,message-历史消息 */
24
+ variant?: 'input' | 'message';
25
+ /** 受控值(用于历史消息编辑) */
26
+ value?: string;
27
+ /** 受控提及资源(用于历史消息编辑) */
28
+ atContextItems?: AtContextItem[];
29
+ /** 图片数据(用于历史消息编辑) */
30
+ images?: string[];
31
+ isLoading?: boolean;
32
+ currentPath?: string;
33
+ rootDir?: string;
34
+ mode?: ChatMode;
35
+ model?: string;
36
+ /** 模型列表(tooltip 由后端下发,前端仅透传渲染) */
37
+ models?: ModelOption[];
38
+ webSearchEnabled?: boolean;
39
+ thinkingEnabled?: boolean;
40
+ onSend?: (text: string, images?: ImageData[], atContextItems?: AtContextItem[]) => void;
41
+ onCancel?: () => void;
42
+ onModeChange?: (mode: ChatMode) => void;
43
+ onModelChange?: (model: string) => void;
44
+ onWebSearchChange?: (enabled: boolean) => void;
45
+ onThinkingChange?: (enabled: boolean) => void;
46
+ }
47
+ export declare const ChatInput: import("react").ForwardRefExoticComponent<ChatInputProps & import("react").RefAttributes<ChatInputHandle>>;
48
+ export {};
49
+ //# sourceMappingURL=ChatInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatInput.d.ts","sourceRoot":"","sources":["../../../src/components/input/ChatInput.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAQzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAI3D,yBAAyB;AACzB,MAAM,WAAW,eAAe;IAC9B,cAAc;IACd,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,YAAY;IACZ,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,YAAY;IACZ,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,kBAAkB;IAClB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW;IACX,SAAS,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;CACpC;AAED,UAAU,cAAc;IACtB,oCAAoC;IACpC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,qBAAqB;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,cAAc,CAAC,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;IACxF,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;IACxC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAC/C;AAmBD,eAAO,MAAM,SAAS,4GA+oBrB,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * DropdownSelector Component
3
+ * 与 Vue 版本 DropdownSelector.vue 保持一致
4
+ * 前端只负责渲染,分组数据由后端提供
5
+ */
6
+ import './DropdownSelector.css';
7
+ /** 下拉选项 */
8
+ export interface DropdownOption {
9
+ value: string;
10
+ label: string;
11
+ icon?: string;
12
+ /** 分组名称(由后端决定,前端只负责渲染) */
13
+ group?: string;
14
+ /** 模型特性信息(用于 hover 提示) */
15
+ tooltip?: {
16
+ /** 可用功能列表 */
17
+ features?: string[];
18
+ /** 开销信息(数组,分行显示) */
19
+ cost?: string[];
20
+ /** 其他描述信息 */
21
+ description?: string;
22
+ };
23
+ }
24
+ /** 分组后的选项(由后端提供) */
25
+ export interface GroupedOptions {
26
+ [groupName: string]: DropdownOption[];
27
+ }
28
+ interface DropdownSelectorProps {
29
+ /** 当前选中的值 */
30
+ value: string;
31
+ /** 选项列表(扁平列表) */
32
+ options?: DropdownOption[];
33
+ /** 分组后的选项(优先级高于 options,由后端提供) */
34
+ groupedOptions?: GroupedOptions;
35
+ /** 占位符文本 */
36
+ placeholder?: string;
37
+ /** 选择回调 */
38
+ onSelect?: (value: string) => void;
39
+ /** 是否禁用 */
40
+ disabled?: boolean;
41
+ /** 下拉菜单对齐方式 */
42
+ align?: 'left' | 'right';
43
+ }
44
+ export declare function DropdownSelector({ value, options, groupedOptions, placeholder, onSelect, disabled, align, }: DropdownSelectorProps): import("react/jsx-runtime").JSX.Element;
45
+ export {};
46
+ //# sourceMappingURL=DropdownSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DropdownSelector.d.ts","sourceRoot":"","sources":["../../../src/components/input/DropdownSelector.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,wBAAwB,CAAC;AAEhC,WAAW;AACX,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,OAAO,CAAC,EAAE;QACR,aAAa;QACb,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,oBAAoB;QACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,aAAa;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,oBAAoB;AACpB,MAAM,WAAW,cAAc;IAC7B,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,EAAE,CAAC;CACvC;AAED,UAAU,qBAAqB;IAC7B,aAAa;IACb,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB;IACjB,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;IAC3B,kCAAkC;IAClC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,YAAY;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW;IACX,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,OAAO,EACP,cAAc,EACd,WAAmB,EACnB,QAAQ,EACR,QAAgB,EAChB,KAAc,GACf,EAAE,qBAAqB,2CA8RvB"}
@@ -0,0 +1,11 @@
1
+ import './ImagePreviewModal.css';
2
+ interface ImagePreviewModalProps {
3
+ visible: boolean;
4
+ images: string[];
5
+ initialIndex?: number;
6
+ onClose: () => void;
7
+ onIndexChange?: (index: number) => void;
8
+ }
9
+ export declare function ImagePreviewModal({ visible, images, initialIndex, onClose, onIndexChange, }: ImagePreviewModalProps): import("react").ReactPortal | null;
10
+ export {};
11
+ //# sourceMappingURL=ImagePreviewModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImagePreviewModal.d.ts","sourceRoot":"","sources":["../../../src/components/input/ImagePreviewModal.tsx"],"names":[],"mappings":"AAGA,OAAO,yBAAyB,CAAA;AAEhC,UAAU,sBAAsB;IAC9B,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACxC;AAED,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,MAAM,EACN,YAAgB,EAChB,OAAO,EACP,aAAa,GACd,EAAE,sBAAsB,sCAkGxB"}
@@ -0,0 +1,11 @@
1
+ import type { QueuedMessage } from '../../hooks/useChat';
2
+ import './QueuedMessageList.css';
3
+ interface QueuedMessageListProps {
4
+ messages: QueuedMessage[];
5
+ onRemove: (id: string) => void;
6
+ onEdit: (id: string, text: string) => void;
7
+ onClear: () => void;
8
+ }
9
+ export declare function QueuedMessageList({ messages, onRemove, onEdit, onClear }: QueuedMessageListProps): import("react/jsx-runtime").JSX.Element | null;
10
+ export {};
11
+ //# sourceMappingURL=QueuedMessageList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QueuedMessageList.d.ts","sourceRoot":"","sources":["../../../src/components/input/QueuedMessageList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,yBAAyB,CAAA;AAEhC,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC1C,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,sBAAsB,kDA8FhG"}
@@ -0,0 +1,17 @@
1
+ import type { ChatAdapter } from '../../../adapter';
2
+ import type { AtContextItem } from '@huyooo/ai-chat-types';
3
+ import './AtViewStyles.css';
4
+ export interface AtChatsViewProps {
5
+ adapter: ChatAdapter;
6
+ query: string;
7
+ activeIndex: number;
8
+ onSelect: (item: AtContextItem) => void;
9
+ onSetActive: (index: number) => void;
10
+ onUpdateCount: (count: number) => void;
11
+ }
12
+ export interface AtChatsViewHandle {
13
+ getActivePath: () => string | null;
14
+ confirmActive: () => void;
15
+ }
16
+ export declare const AtChatsView: import("react").ForwardRefExoticComponent<AtChatsViewProps & import("react").RefAttributes<AtChatsViewHandle>>;
17
+ //# sourceMappingURL=AtChatsView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AtChatsView.d.ts","sourceRoot":"","sources":["../../../../src/components/input/at-views/AtChatsView.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,EAAqB,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAI7E,OAAO,oBAAoB,CAAA;AAE3B,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,WAAW,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAA;IACvC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACvC;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IAClC,aAAa,EAAE,MAAM,IAAI,CAAA;CAC1B;AAED,eAAO,MAAM,WAAW,gHAwGtB,CAAA"}
@@ -0,0 +1,17 @@
1
+ import type { ChatAdapter } from '../../../adapter';
2
+ import './AtViewStyles.css';
3
+ import type { AtContextItem } from '@huyooo/ai-chat-types';
4
+ export interface AtDocsViewProps {
5
+ adapter: ChatAdapter;
6
+ query: string;
7
+ activeIndex: number;
8
+ onSelect: (item: AtContextItem) => void;
9
+ onSetActive: (index: number) => void;
10
+ onUpdateCount: (count: number) => void;
11
+ }
12
+ export interface AtResourceViewHandle {
13
+ getActivePath: () => string | null;
14
+ confirmActive: () => void;
15
+ }
16
+ export declare const AtDocsView: import("react").ForwardRefExoticComponent<AtDocsViewProps & import("react").RefAttributes<AtResourceViewHandle>>;
17
+ //# sourceMappingURL=AtDocsView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AtDocsView.d.ts","sourceRoot":"","sources":["../../../../src/components/input/at-views/AtDocsView.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAKnD,OAAO,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAE1D,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,WAAW,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAA;IACvC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACvC;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IAClC,aAAa,EAAE,MAAM,IAAI,CAAA;CAC1B;AAOD,eAAO,MAAM,UAAU,kHAwNrB,CAAA"}
@@ -0,0 +1,26 @@
1
+ import type { ChatAdapter } from '../../../adapter';
2
+ import type { AtFileContextItem } from '@huyooo/ai-chat-types';
3
+ import './AtViewStyles.css';
4
+ export interface AtFilesViewProps {
5
+ adapter: ChatAdapter;
6
+ initialDir?: string;
7
+ rootDir?: string;
8
+ selectedMentions?: string[];
9
+ query: string;
10
+ activeIndex: number;
11
+ onSelect: (item: AtFileContextItem) => void;
12
+ onSetActive: (index: number) => void;
13
+ onUpdateCount: (count: number) => void;
14
+ onFocusSearch?: () => void;
15
+ }
16
+ export interface AtFilesViewHandle {
17
+ getActivePath: () => string | null;
18
+ confirmActive: (options?: {
19
+ selectDirectory?: boolean;
20
+ }) => void;
21
+ goToParentDir: () => Promise<boolean | void>;
22
+ syncToInitialDir: () => Promise<void>;
23
+ enterActiveDirectory: () => void;
24
+ }
25
+ export declare const AtFilesView: import("react").ForwardRefExoticComponent<AtFilesViewProps & import("react").RefAttributes<AtFilesViewHandle>>;
26
+ //# sourceMappingURL=AtFilesView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AtFilesView.d.ts","sourceRoot":"","sources":["../../../../src/components/input/at-views/AtFilesView.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,EAAE,iBAAiB,EAAY,MAAM,uBAAuB,CAAA;AAUxE,OAAO,oBAAoB,CAAA;AAI3B,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,WAAW,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,IAAI,CAAA;IAC3C,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IAClC,aAAa,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAA;IAChE,aAAa,EAAE,MAAM,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;IAC5C,gBAAgB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,oBAAoB,EAAE,MAAM,IAAI,CAAA;CACjC;AAED,eAAO,MAAM,WAAW,gHAsZtB,CAAA"}
@@ -0,0 +1,17 @@
1
+ import type { ChatAdapter } from '../../../adapter';
2
+ import type { AtContextItem } from '@huyooo/ai-chat-types';
3
+ import './AtViewStyles.css';
4
+ export interface AtTerminalsViewProps {
5
+ adapter: ChatAdapter;
6
+ query: string;
7
+ activeIndex: number;
8
+ onSelect: (item: AtContextItem) => void;
9
+ onSetActive: (index: number) => void;
10
+ onUpdateCount: (count: number) => void;
11
+ }
12
+ export interface AtTerminalsViewHandle {
13
+ getActivePath: () => string | null;
14
+ confirmActive: () => void;
15
+ }
16
+ export declare const AtTerminalsView: import("react").ForwardRefExoticComponent<AtTerminalsViewProps & import("react").RefAttributes<AtTerminalsViewHandle>>;
17
+ //# sourceMappingURL=AtTerminalsView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AtTerminalsView.d.ts","sourceRoot":"","sources":["../../../../src/components/input/at-views/AtTerminalsView.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,EAAE,aAAa,EAAyB,MAAM,uBAAuB,CAAA;AAIjF,OAAO,oBAAoB,CAAA;AAE3B,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,WAAW,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAA;IACvC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACpC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACvC;AAED,MAAM,WAAW,qBAAqB;IACpC,aAAa,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IAClC,aAAa,EAAE,MAAM,IAAI,CAAA;CAC1B;AAED,eAAO,MAAM,eAAe,wHAwG1B,CAAA"}
@@ -0,0 +1,9 @@
1
+ export { AtFilesView } from './AtFilesView';
2
+ export type { AtFilesViewProps, AtFilesViewHandle } from './AtFilesView';
3
+ export { AtDocsView } from './AtDocsView';
4
+ export type { AtDocsViewProps, AtResourceViewHandle } from './AtDocsView';
5
+ export { AtTerminalsView } from './AtTerminalsView';
6
+ export type { AtTerminalsViewProps, AtTerminalsViewHandle } from './AtTerminalsView';
7
+ export { AtChatsView } from './AtChatsView';
8
+ export type { AtChatsViewProps, AtChatsViewHandle } from './AtChatsView';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/input/at-views/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAExE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,12 @@
1
+ export declare function useAtViewTooltip(): {
2
+ tooltipRef: import("react").RefObject<HTMLDivElement>;
3
+ tooltipText: string | null;
4
+ tooltipPosition: {
5
+ top: number;
6
+ left: number;
7
+ };
8
+ tooltipSide: "left" | "right";
9
+ hideTooltip: () => void;
10
+ showTooltip: (event: React.MouseEvent<HTMLElement>, text: string) => void;
11
+ };
12
+ //# sourceMappingURL=useAtViewTooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAtViewTooltip.d.ts","sourceRoot":"","sources":["../../../../src/components/input/at-views/useAtViewTooltip.ts"],"names":[],"mappings":"AAEA,wBAAgB,gBAAgB;;;;;;;;;yBAmCU,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,MAAM;EAgBpF"}
@@ -0,0 +1,9 @@
1
+ import type { AtContextItem } from '@huyooo/ai-chat-types';
2
+ export declare function uniqueAtContextItems(items: AtContextItem[]): AtContextItem[];
3
+ export declare function extractAtContextItems(text: string): AtContextItem[];
4
+ export declare function extractAtContextState(text: string): {
5
+ items: AtContextItem[];
6
+ cleanedText: string;
7
+ };
8
+ export declare function removeAtContextMention(text: string, item: AtContextItem): string;
9
+ //# sourceMappingURL=atContextItems.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atContextItems.d.ts","sourceRoot":"","sources":["../../../src/components/input/atContextItems.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAiE1D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,EAAE,mBAS1D;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,mBAMjD;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM;;;EASjD;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,UAOvE"}
@@ -0,0 +1,2 @@
1
+ export { formatAtContextToolAliases, getAtContextToolAliases, } from '@huyooo/ai-chat-shared';
2
+ //# sourceMappingURL=atContextToolHints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"atContextToolHints.d.ts","sourceRoot":"","sources":["../../../src/components/input/atContextToolHints.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,wBAAwB,CAAA"}