@gendive/chatllm 0.14.0 → 0.15.0

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.
@@ -265,6 +265,70 @@ interface PollState {
265
265
  /** 완료 여부 */
266
266
  isCompleted: boolean;
267
267
  }
268
+ /** @Todo vibecode - 텍스트 콘텐츠 파트 */
269
+ interface TextContentPart {
270
+ type: 'text';
271
+ content: string;
272
+ }
273
+ /** @Todo vibecode - 이미지 콘텐츠 파트 */
274
+ interface ImageContentPart {
275
+ type: 'image';
276
+ url: string;
277
+ alt?: string;
278
+ width?: number;
279
+ height?: number;
280
+ }
281
+ /** @Todo vibecode - 파일 콘텐츠 파트 */
282
+ interface FileContentPart {
283
+ type: 'file';
284
+ name: string;
285
+ url: string;
286
+ mimeType?: string;
287
+ size?: number;
288
+ }
289
+ /** @Todo vibecode - 검색 결과 콘텐츠 파트 */
290
+ interface SearchResultContentPart {
291
+ type: 'search_result';
292
+ results: SourceItem[];
293
+ }
294
+ /** @Todo vibecode - 도구 로딩 콘텐츠 파트 */
295
+ interface ToolLoadingContentPart {
296
+ type: 'tool_loading';
297
+ toolName: string;
298
+ label?: string;
299
+ }
300
+ /** @Todo vibecode - 도구 결과 콘텐츠 파트 */
301
+ interface ToolResultContentPart {
302
+ type: 'tool_result';
303
+ toolName: string;
304
+ result: ToolCallResult;
305
+ }
306
+ /** @Todo vibecode - 에러 콘텐츠 파트 */
307
+ interface ErrorContentPart {
308
+ type: 'error';
309
+ message: string;
310
+ }
311
+ /** @Todo vibecode - 메시지 콘텐츠 파트 유니온 타입 */
312
+ type MessageContentPart = TextContentPart | ImageContentPart | FileContentPart | SearchResultContentPart | ToolLoadingContentPart | ToolResultContentPart | ErrorContentPart;
313
+ /** @Todo vibecode - 도구 호출 결과 */
314
+ interface ToolCallResult {
315
+ type: 'text' | 'image' | 'file' | 'error';
316
+ content: string;
317
+ metadata?: Record<string, any>;
318
+ }
319
+ /** @Todo vibecode - 도구 파라미터 정의 */
320
+ interface ChatToolParameter {
321
+ type: string;
322
+ description?: string;
323
+ enum?: string[];
324
+ required?: boolean;
325
+ }
326
+ /** @Todo vibecode - 도구 정의 (호스트가 제공) */
327
+ interface ChatToolDefinition {
328
+ name: string;
329
+ description: string;
330
+ parameters: Record<string, ChatToolParameter>;
331
+ }
268
332
  interface ChatMessage {
269
333
  id: string;
270
334
  role: 'user' | 'assistant' | 'system';
@@ -298,6 +362,11 @@ interface ChatMessage {
298
362
  * @Todo vibecode - 스킬 실행 중/완료 상태 표시
299
363
  */
300
364
  skillExecution?: SkillExecution;
365
+ /**
366
+ * @description 멀티 콘텐츠 파트 (텍스트 + 이미지 + 파일 등 혼합)
367
+ * @Todo vibecode - contentParts가 있으면 content 대신 렌더링
368
+ */
369
+ contentParts?: MessageContentPart[];
301
370
  }
302
371
  interface ChatSession {
303
372
  id: string;
@@ -458,8 +527,10 @@ interface ChatUIProps {
458
527
  templates?: PromptTemplate[];
459
528
  /** 개인화 설정 */
460
529
  personalization?: Partial<PersonalizationConfig>;
461
- /** @Todo vibecode - 개인화 설정 변경 콜백 (백엔드 저장용) */
530
+ /** @Todo vibecode - 개인화 설정 변경 콜백 (실시간 UI 반영용) */
462
531
  onPersonalizationChange?: (config: PersonalizationConfig) => void;
532
+ /** @Todo vibecode - 개인화 설정 저장 콜백 (저장 버튼 클릭 시 백엔드 저장용) */
533
+ onPersonalizationSave?: (config: PersonalizationConfig) => void;
463
534
  /** API 키 (DevDive 등 외부 프로바이더용) */
464
535
  apiKey?: string;
465
536
  /** API 키 변경 핸들러 */
@@ -590,6 +661,16 @@ interface ChatUIProps {
590
661
  * @Todo vibecode - AI가 자동/수동으로 활용하는 스킬 시스템
591
662
  */
592
663
  skills?: Record<string, SkillConfig>;
664
+ /**
665
+ * @description 도구 정의 목록 (호스트가 제공)
666
+ * @Todo vibecode - AI가 자동으로 호출할 수 있는 도구 등록
667
+ */
668
+ tools?: ChatToolDefinition[];
669
+ /**
670
+ * @description 도구 실행 콜백 (호스트가 구현)
671
+ * @Todo vibecode - 라이브러리가 도구 호출 판단 후 호스트에 실행 위임
672
+ */
673
+ onToolCall?: (name: string, params: Record<string, unknown>) => Promise<ToolCallResult>;
593
674
  }
594
675
  interface SendMessageParams {
595
676
  messages: {
@@ -836,6 +917,8 @@ interface UseChatUIReturn {
836
917
  setActiveAlternative: (assistantMessageId: string, index: number) => void;
837
918
  getActiveAlternative: (assistantMessageId: string) => number;
838
919
  updatePersonalization: (config: Partial<PersonalizationConfig>) => void;
920
+ /** @Todo vibecode - 개인화 설정 저장 (저장 버튼 클릭 시) */
921
+ savePersonalization: () => void;
839
922
  models: ModelConfig[];
840
923
  /** 글로벌 메모리 상태 */
841
924
  globalMemory: UseGlobalMemoryReturn | null;
@@ -913,8 +996,10 @@ interface UseChatUIOptions {
913
996
  actions?: ActionItem[];
914
997
  /** 초기 개인화 설정 */
915
998
  initialPersonalization?: Partial<PersonalizationConfig>;
916
- /** @Todo vibecode - 개인화 설정 변경 콜백 (백엔드 저장용) */
999
+ /** @Todo vibecode - 개인화 설정 변경 콜백 (실시간 UI 반영용) */
917
1000
  onPersonalizationChange?: (config: PersonalizationConfig) => void;
1001
+ /** @Todo vibecode - 개인화 설정 저장 콜백 (저장 버튼 클릭 시 백엔드 저장용) */
1002
+ onPersonalizationSave?: (config: PersonalizationConfig) => void;
918
1003
  /** @Todo vibecode - 초기 선택 세션 ID (미제공 시 sessions[0] 자동 선택) */
919
1004
  initialSessionId?: string;
920
1005
  /** API 키 */
@@ -1019,6 +1104,16 @@ interface UseChatUIOptions {
1019
1104
  * @Todo vibecode - AI가 자동/수동으로 활용하는 스킬 시스템
1020
1105
  */
1021
1106
  skills?: Record<string, SkillConfig>;
1107
+ /**
1108
+ * @description 도구 정의 목록 (호스트가 제공)
1109
+ * @Todo vibecode - AI가 자동으로 호출할 수 있는 도구 등록
1110
+ */
1111
+ tools?: ChatToolDefinition[];
1112
+ /**
1113
+ * @description 도구 실행 콜백 (호스트가 구현)
1114
+ * @Todo vibecode - 라이브러리가 도구 호출 판단 후 호스트에 실행 위임
1115
+ */
1116
+ onToolCall?: (name: string, params: Record<string, unknown>) => Promise<ToolCallResult>;
1022
1117
  }
1023
1118
  declare const useChatUI: (options: UseChatUIOptions) => UseChatUIReturn;
1024
1119
 
@@ -1326,6 +1421,8 @@ interface SettingsModalProps {
1326
1421
  onDeleteMemory?: (key: string) => void;
1327
1422
  /** @description 메모리 전체 삭제 핸들러 @Todo vibecode */
1328
1423
  onClearMemory?: () => void;
1424
+ /** @Todo vibecode - 개인화 설정 저장 핸들러 (저장 버튼 클릭 시) */
1425
+ onSave?: () => void;
1329
1426
  }
1330
1427
  declare const SettingsModal: React$1.FC<SettingsModalProps>;
1331
1428
 
@@ -1376,4 +1473,72 @@ interface SkillProgressUIProps {
1376
1473
  }
1377
1474
  declare const SkillProgressUI: React$1.FC<SkillProgressUIProps>;
1378
1475
 
1379
- export { type ActionItem, type ActionMenuProps, type AdvancedResearchOptions, type AlternativeResponse, ChatHeader, ChatInput, type ChatMessage, type ChatSession, ChatSidebar, ChatUI, type ChatUIComponents, type ChatUIProps, type DeepResearchCallbacks, type DeepResearchProgress, DeepResearchProgressUI, EmptyState, type EmptyStateProps, type HeaderProps, Icon, type IconName, type IconProps, IconSvg, type InputProps, LinkChip, type LinkChipProps, type ManualSkillItem, MarkdownRenderer, type MarkdownRendererProps, type MemoryItem, MemoryPanel, type MemoryPanelProps, MessageBubble, type MessageBubbleProps, MessageList, type MessageListProps, type ModelConfig, type ModelSelectorProps, type PersonalizationConfig, type PollBlock, PollCard, type PollCardProps, type PollOption, type PollQuestion, type PollResponse, type PollState, type PromptTemplate, type ProviderType, type ResponseStyle, type SearchResult, type SendMessageParams, type SendMessageResponse, SettingsModal, type SettingsModalProps, type SettingsTab, type SidebarProps, type SkillConfig, type SkillExecuteCallbacks, type SkillExecution, type SkillExecutionResult, type SkillProgress, SkillProgressUI, type SkillProgressUIProps, type SkillTrigger, type SourceItem, type SubAgentProgress, type ThemeConfig, type ThemeMode, type UseChatUIOptions, type UseChatUIReturn, type UseDeepResearchOptions, type UseSkillsOptions, type UseSkillsReturn, type UserProfile, createAdvancedResearchSkill, createDeepResearchSkill, useChatUI, useDeepResearch, useSkills };
1476
+ /**
1477
+ * @description 멀티 콘텐츠 파트 렌더러
1478
+ * @Todo vibecode - contentParts 배열을 순서대로 렌더링
1479
+ */
1480
+
1481
+ interface ContentPartRendererProps {
1482
+ /** 콘텐츠 파트 배열 */
1483
+ parts: MessageContentPart[];
1484
+ /** 선택지 클릭 핸들러 */
1485
+ onChoiceClick?: (choice: ChoiceOption) => void;
1486
+ /** Thinking 블록 표시 여부 */
1487
+ showThinking?: boolean;
1488
+ /** Thinking 블록 기본 펼침 상태 */
1489
+ thinkingDefaultOpen?: boolean;
1490
+ }
1491
+ /**
1492
+ * @description contentParts 배열을 타입별로 렌더링
1493
+ * @Todo vibecode - text, image, file, search_result, tool_loading, tool_result, error 지원
1494
+ */
1495
+ declare const ContentPartRenderer: React$1.FC<ContentPartRendererProps>;
1496
+
1497
+ /**
1498
+ * @description 이미지 콘텐츠 카드 컴포넌트
1499
+ * @Todo vibecode - 멀티 콘텐츠 메시지에서 이미지 인라인 표시
1500
+ */
1501
+
1502
+ interface ImageContentCardProps {
1503
+ /** 이미지 콘텐츠 파트 */
1504
+ part: ImageContentPart;
1505
+ }
1506
+ /**
1507
+ * @description 이미지 카드 렌더러 (확대 모달 + 다운로드)
1508
+ * @Todo vibecode - 인라인 이미지 표시, 클릭 시 확대
1509
+ */
1510
+ declare const ImageContentCard: React$1.FC<ImageContentCardProps>;
1511
+
1512
+ /**
1513
+ * @description 파일 콘텐츠 카드 컴포넌트
1514
+ * @Todo vibecode - 멀티 콘텐츠 메시지에서 파일 첨부 표시
1515
+ */
1516
+
1517
+ interface FileContentCardProps {
1518
+ /** 파일 콘텐츠 파트 */
1519
+ part: FileContentPart;
1520
+ }
1521
+ /**
1522
+ * @description 파일 카드 렌더러 (파일명 + 아이콘 + 다운로드)
1523
+ * @Todo vibecode - 파일 첨부 인라인 표시
1524
+ */
1525
+ declare const FileContentCard: React$1.FC<FileContentCardProps>;
1526
+
1527
+ /**
1528
+ * @description Tool → Skill 변환 어댑터
1529
+ * @Todo vibecode - ChatToolDefinition을 SkillConfig로 변환하여 기존 Skills 인프라 재사용
1530
+ */
1531
+
1532
+ /**
1533
+ * @description 도구 정의 배열을 스킬 레코드로 변환
1534
+ * @Todo vibecode - 각 tool을 trigger: 'auto' SkillConfig로 변환
1535
+ *
1536
+ * 변환 규칙:
1537
+ * - skill name = tool.name (접두사 없음)
1538
+ * - trigger: 'auto' (AI가 자동 호출)
1539
+ * - execute: onToolCall 호출 → SkillExecutionResult 반환
1540
+ * - metadata.__toolResult__: true (도구 결과 식별용)
1541
+ */
1542
+ declare const convertToolsToSkills: (tools: ChatToolDefinition[], onToolCall: (name: string, params: Record<string, unknown>) => Promise<ToolCallResult>) => Record<string, SkillConfig>;
1543
+
1544
+ export { type ActionItem, type ActionMenuProps, type AdvancedResearchOptions, type AlternativeResponse, ChatHeader, ChatInput, type ChatMessage, type ChatSession, ChatSidebar, type ChatToolDefinition, type ChatToolParameter, ChatUI, type ChatUIComponents, type ChatUIProps, ContentPartRenderer, type ContentPartRendererProps, type DeepResearchCallbacks, type DeepResearchProgress, DeepResearchProgressUI, EmptyState, type EmptyStateProps, type ErrorContentPart, FileContentCard, type FileContentCardProps, type FileContentPart, type HeaderProps, Icon, type IconName, type IconProps, IconSvg, ImageContentCard, type ImageContentCardProps, type ImageContentPart, type InputProps, LinkChip, type LinkChipProps, type ManualSkillItem, MarkdownRenderer, type MarkdownRendererProps, type MemoryItem, MemoryPanel, type MemoryPanelProps, MessageBubble, type MessageBubbleProps, type MessageContentPart, MessageList, type MessageListProps, type ModelConfig, type ModelSelectorProps, type PersonalizationConfig, type PollBlock, PollCard, type PollCardProps, type PollOption, type PollQuestion, type PollResponse, type PollState, type PromptTemplate, type ProviderType, type ResponseStyle, type SearchResult, type SearchResultContentPart, type SendMessageParams, type SendMessageResponse, SettingsModal, type SettingsModalProps, type SettingsTab, type SidebarProps, type SkillConfig, type SkillExecuteCallbacks, type SkillExecution, type SkillExecutionResult, type SkillProgress, SkillProgressUI, type SkillProgressUIProps, type SkillTrigger, type SourceItem, type SubAgentProgress, type TextContentPart, type ThemeConfig, type ThemeMode, type ToolCallResult, type ToolLoadingContentPart, type ToolResultContentPart, type UseChatUIOptions, type UseChatUIReturn, type UseDeepResearchOptions, type UseSkillsOptions, type UseSkillsReturn, type UserProfile, convertToolsToSkills, createAdvancedResearchSkill, createDeepResearchSkill, useChatUI, useDeepResearch, useSkills };
@@ -265,6 +265,70 @@ interface PollState {
265
265
  /** 완료 여부 */
266
266
  isCompleted: boolean;
267
267
  }
268
+ /** @Todo vibecode - 텍스트 콘텐츠 파트 */
269
+ interface TextContentPart {
270
+ type: 'text';
271
+ content: string;
272
+ }
273
+ /** @Todo vibecode - 이미지 콘텐츠 파트 */
274
+ interface ImageContentPart {
275
+ type: 'image';
276
+ url: string;
277
+ alt?: string;
278
+ width?: number;
279
+ height?: number;
280
+ }
281
+ /** @Todo vibecode - 파일 콘텐츠 파트 */
282
+ interface FileContentPart {
283
+ type: 'file';
284
+ name: string;
285
+ url: string;
286
+ mimeType?: string;
287
+ size?: number;
288
+ }
289
+ /** @Todo vibecode - 검색 결과 콘텐츠 파트 */
290
+ interface SearchResultContentPart {
291
+ type: 'search_result';
292
+ results: SourceItem[];
293
+ }
294
+ /** @Todo vibecode - 도구 로딩 콘텐츠 파트 */
295
+ interface ToolLoadingContentPart {
296
+ type: 'tool_loading';
297
+ toolName: string;
298
+ label?: string;
299
+ }
300
+ /** @Todo vibecode - 도구 결과 콘텐츠 파트 */
301
+ interface ToolResultContentPart {
302
+ type: 'tool_result';
303
+ toolName: string;
304
+ result: ToolCallResult;
305
+ }
306
+ /** @Todo vibecode - 에러 콘텐츠 파트 */
307
+ interface ErrorContentPart {
308
+ type: 'error';
309
+ message: string;
310
+ }
311
+ /** @Todo vibecode - 메시지 콘텐츠 파트 유니온 타입 */
312
+ type MessageContentPart = TextContentPart | ImageContentPart | FileContentPart | SearchResultContentPart | ToolLoadingContentPart | ToolResultContentPart | ErrorContentPart;
313
+ /** @Todo vibecode - 도구 호출 결과 */
314
+ interface ToolCallResult {
315
+ type: 'text' | 'image' | 'file' | 'error';
316
+ content: string;
317
+ metadata?: Record<string, any>;
318
+ }
319
+ /** @Todo vibecode - 도구 파라미터 정의 */
320
+ interface ChatToolParameter {
321
+ type: string;
322
+ description?: string;
323
+ enum?: string[];
324
+ required?: boolean;
325
+ }
326
+ /** @Todo vibecode - 도구 정의 (호스트가 제공) */
327
+ interface ChatToolDefinition {
328
+ name: string;
329
+ description: string;
330
+ parameters: Record<string, ChatToolParameter>;
331
+ }
268
332
  interface ChatMessage {
269
333
  id: string;
270
334
  role: 'user' | 'assistant' | 'system';
@@ -298,6 +362,11 @@ interface ChatMessage {
298
362
  * @Todo vibecode - 스킬 실행 중/완료 상태 표시
299
363
  */
300
364
  skillExecution?: SkillExecution;
365
+ /**
366
+ * @description 멀티 콘텐츠 파트 (텍스트 + 이미지 + 파일 등 혼합)
367
+ * @Todo vibecode - contentParts가 있으면 content 대신 렌더링
368
+ */
369
+ contentParts?: MessageContentPart[];
301
370
  }
302
371
  interface ChatSession {
303
372
  id: string;
@@ -458,8 +527,10 @@ interface ChatUIProps {
458
527
  templates?: PromptTemplate[];
459
528
  /** 개인화 설정 */
460
529
  personalization?: Partial<PersonalizationConfig>;
461
- /** @Todo vibecode - 개인화 설정 변경 콜백 (백엔드 저장용) */
530
+ /** @Todo vibecode - 개인화 설정 변경 콜백 (실시간 UI 반영용) */
462
531
  onPersonalizationChange?: (config: PersonalizationConfig) => void;
532
+ /** @Todo vibecode - 개인화 설정 저장 콜백 (저장 버튼 클릭 시 백엔드 저장용) */
533
+ onPersonalizationSave?: (config: PersonalizationConfig) => void;
463
534
  /** API 키 (DevDive 등 외부 프로바이더용) */
464
535
  apiKey?: string;
465
536
  /** API 키 변경 핸들러 */
@@ -590,6 +661,16 @@ interface ChatUIProps {
590
661
  * @Todo vibecode - AI가 자동/수동으로 활용하는 스킬 시스템
591
662
  */
592
663
  skills?: Record<string, SkillConfig>;
664
+ /**
665
+ * @description 도구 정의 목록 (호스트가 제공)
666
+ * @Todo vibecode - AI가 자동으로 호출할 수 있는 도구 등록
667
+ */
668
+ tools?: ChatToolDefinition[];
669
+ /**
670
+ * @description 도구 실행 콜백 (호스트가 구현)
671
+ * @Todo vibecode - 라이브러리가 도구 호출 판단 후 호스트에 실행 위임
672
+ */
673
+ onToolCall?: (name: string, params: Record<string, unknown>) => Promise<ToolCallResult>;
593
674
  }
594
675
  interface SendMessageParams {
595
676
  messages: {
@@ -836,6 +917,8 @@ interface UseChatUIReturn {
836
917
  setActiveAlternative: (assistantMessageId: string, index: number) => void;
837
918
  getActiveAlternative: (assistantMessageId: string) => number;
838
919
  updatePersonalization: (config: Partial<PersonalizationConfig>) => void;
920
+ /** @Todo vibecode - 개인화 설정 저장 (저장 버튼 클릭 시) */
921
+ savePersonalization: () => void;
839
922
  models: ModelConfig[];
840
923
  /** 글로벌 메모리 상태 */
841
924
  globalMemory: UseGlobalMemoryReturn | null;
@@ -913,8 +996,10 @@ interface UseChatUIOptions {
913
996
  actions?: ActionItem[];
914
997
  /** 초기 개인화 설정 */
915
998
  initialPersonalization?: Partial<PersonalizationConfig>;
916
- /** @Todo vibecode - 개인화 설정 변경 콜백 (백엔드 저장용) */
999
+ /** @Todo vibecode - 개인화 설정 변경 콜백 (실시간 UI 반영용) */
917
1000
  onPersonalizationChange?: (config: PersonalizationConfig) => void;
1001
+ /** @Todo vibecode - 개인화 설정 저장 콜백 (저장 버튼 클릭 시 백엔드 저장용) */
1002
+ onPersonalizationSave?: (config: PersonalizationConfig) => void;
918
1003
  /** @Todo vibecode - 초기 선택 세션 ID (미제공 시 sessions[0] 자동 선택) */
919
1004
  initialSessionId?: string;
920
1005
  /** API 키 */
@@ -1019,6 +1104,16 @@ interface UseChatUIOptions {
1019
1104
  * @Todo vibecode - AI가 자동/수동으로 활용하는 스킬 시스템
1020
1105
  */
1021
1106
  skills?: Record<string, SkillConfig>;
1107
+ /**
1108
+ * @description 도구 정의 목록 (호스트가 제공)
1109
+ * @Todo vibecode - AI가 자동으로 호출할 수 있는 도구 등록
1110
+ */
1111
+ tools?: ChatToolDefinition[];
1112
+ /**
1113
+ * @description 도구 실행 콜백 (호스트가 구현)
1114
+ * @Todo vibecode - 라이브러리가 도구 호출 판단 후 호스트에 실행 위임
1115
+ */
1116
+ onToolCall?: (name: string, params: Record<string, unknown>) => Promise<ToolCallResult>;
1022
1117
  }
1023
1118
  declare const useChatUI: (options: UseChatUIOptions) => UseChatUIReturn;
1024
1119
 
@@ -1326,6 +1421,8 @@ interface SettingsModalProps {
1326
1421
  onDeleteMemory?: (key: string) => void;
1327
1422
  /** @description 메모리 전체 삭제 핸들러 @Todo vibecode */
1328
1423
  onClearMemory?: () => void;
1424
+ /** @Todo vibecode - 개인화 설정 저장 핸들러 (저장 버튼 클릭 시) */
1425
+ onSave?: () => void;
1329
1426
  }
1330
1427
  declare const SettingsModal: React$1.FC<SettingsModalProps>;
1331
1428
 
@@ -1376,4 +1473,72 @@ interface SkillProgressUIProps {
1376
1473
  }
1377
1474
  declare const SkillProgressUI: React$1.FC<SkillProgressUIProps>;
1378
1475
 
1379
- export { type ActionItem, type ActionMenuProps, type AdvancedResearchOptions, type AlternativeResponse, ChatHeader, ChatInput, type ChatMessage, type ChatSession, ChatSidebar, ChatUI, type ChatUIComponents, type ChatUIProps, type DeepResearchCallbacks, type DeepResearchProgress, DeepResearchProgressUI, EmptyState, type EmptyStateProps, type HeaderProps, Icon, type IconName, type IconProps, IconSvg, type InputProps, LinkChip, type LinkChipProps, type ManualSkillItem, MarkdownRenderer, type MarkdownRendererProps, type MemoryItem, MemoryPanel, type MemoryPanelProps, MessageBubble, type MessageBubbleProps, MessageList, type MessageListProps, type ModelConfig, type ModelSelectorProps, type PersonalizationConfig, type PollBlock, PollCard, type PollCardProps, type PollOption, type PollQuestion, type PollResponse, type PollState, type PromptTemplate, type ProviderType, type ResponseStyle, type SearchResult, type SendMessageParams, type SendMessageResponse, SettingsModal, type SettingsModalProps, type SettingsTab, type SidebarProps, type SkillConfig, type SkillExecuteCallbacks, type SkillExecution, type SkillExecutionResult, type SkillProgress, SkillProgressUI, type SkillProgressUIProps, type SkillTrigger, type SourceItem, type SubAgentProgress, type ThemeConfig, type ThemeMode, type UseChatUIOptions, type UseChatUIReturn, type UseDeepResearchOptions, type UseSkillsOptions, type UseSkillsReturn, type UserProfile, createAdvancedResearchSkill, createDeepResearchSkill, useChatUI, useDeepResearch, useSkills };
1476
+ /**
1477
+ * @description 멀티 콘텐츠 파트 렌더러
1478
+ * @Todo vibecode - contentParts 배열을 순서대로 렌더링
1479
+ */
1480
+
1481
+ interface ContentPartRendererProps {
1482
+ /** 콘텐츠 파트 배열 */
1483
+ parts: MessageContentPart[];
1484
+ /** 선택지 클릭 핸들러 */
1485
+ onChoiceClick?: (choice: ChoiceOption) => void;
1486
+ /** Thinking 블록 표시 여부 */
1487
+ showThinking?: boolean;
1488
+ /** Thinking 블록 기본 펼침 상태 */
1489
+ thinkingDefaultOpen?: boolean;
1490
+ }
1491
+ /**
1492
+ * @description contentParts 배열을 타입별로 렌더링
1493
+ * @Todo vibecode - text, image, file, search_result, tool_loading, tool_result, error 지원
1494
+ */
1495
+ declare const ContentPartRenderer: React$1.FC<ContentPartRendererProps>;
1496
+
1497
+ /**
1498
+ * @description 이미지 콘텐츠 카드 컴포넌트
1499
+ * @Todo vibecode - 멀티 콘텐츠 메시지에서 이미지 인라인 표시
1500
+ */
1501
+
1502
+ interface ImageContentCardProps {
1503
+ /** 이미지 콘텐츠 파트 */
1504
+ part: ImageContentPart;
1505
+ }
1506
+ /**
1507
+ * @description 이미지 카드 렌더러 (확대 모달 + 다운로드)
1508
+ * @Todo vibecode - 인라인 이미지 표시, 클릭 시 확대
1509
+ */
1510
+ declare const ImageContentCard: React$1.FC<ImageContentCardProps>;
1511
+
1512
+ /**
1513
+ * @description 파일 콘텐츠 카드 컴포넌트
1514
+ * @Todo vibecode - 멀티 콘텐츠 메시지에서 파일 첨부 표시
1515
+ */
1516
+
1517
+ interface FileContentCardProps {
1518
+ /** 파일 콘텐츠 파트 */
1519
+ part: FileContentPart;
1520
+ }
1521
+ /**
1522
+ * @description 파일 카드 렌더러 (파일명 + 아이콘 + 다운로드)
1523
+ * @Todo vibecode - 파일 첨부 인라인 표시
1524
+ */
1525
+ declare const FileContentCard: React$1.FC<FileContentCardProps>;
1526
+
1527
+ /**
1528
+ * @description Tool → Skill 변환 어댑터
1529
+ * @Todo vibecode - ChatToolDefinition을 SkillConfig로 변환하여 기존 Skills 인프라 재사용
1530
+ */
1531
+
1532
+ /**
1533
+ * @description 도구 정의 배열을 스킬 레코드로 변환
1534
+ * @Todo vibecode - 각 tool을 trigger: 'auto' SkillConfig로 변환
1535
+ *
1536
+ * 변환 규칙:
1537
+ * - skill name = tool.name (접두사 없음)
1538
+ * - trigger: 'auto' (AI가 자동 호출)
1539
+ * - execute: onToolCall 호출 → SkillExecutionResult 반환
1540
+ * - metadata.__toolResult__: true (도구 결과 식별용)
1541
+ */
1542
+ declare const convertToolsToSkills: (tools: ChatToolDefinition[], onToolCall: (name: string, params: Record<string, unknown>) => Promise<ToolCallResult>) => Record<string, SkillConfig>;
1543
+
1544
+ export { type ActionItem, type ActionMenuProps, type AdvancedResearchOptions, type AlternativeResponse, ChatHeader, ChatInput, type ChatMessage, type ChatSession, ChatSidebar, type ChatToolDefinition, type ChatToolParameter, ChatUI, type ChatUIComponents, type ChatUIProps, ContentPartRenderer, type ContentPartRendererProps, type DeepResearchCallbacks, type DeepResearchProgress, DeepResearchProgressUI, EmptyState, type EmptyStateProps, type ErrorContentPart, FileContentCard, type FileContentCardProps, type FileContentPart, type HeaderProps, Icon, type IconName, type IconProps, IconSvg, ImageContentCard, type ImageContentCardProps, type ImageContentPart, type InputProps, LinkChip, type LinkChipProps, type ManualSkillItem, MarkdownRenderer, type MarkdownRendererProps, type MemoryItem, MemoryPanel, type MemoryPanelProps, MessageBubble, type MessageBubbleProps, type MessageContentPart, MessageList, type MessageListProps, type ModelConfig, type ModelSelectorProps, type PersonalizationConfig, type PollBlock, PollCard, type PollCardProps, type PollOption, type PollQuestion, type PollResponse, type PollState, type PromptTemplate, type ProviderType, type ResponseStyle, type SearchResult, type SearchResultContentPart, type SendMessageParams, type SendMessageResponse, SettingsModal, type SettingsModalProps, type SettingsTab, type SidebarProps, type SkillConfig, type SkillExecuteCallbacks, type SkillExecution, type SkillExecutionResult, type SkillProgress, SkillProgressUI, type SkillProgressUIProps, type SkillTrigger, type SourceItem, type SubAgentProgress, type TextContentPart, type ThemeConfig, type ThemeMode, type ToolCallResult, type ToolLoadingContentPart, type ToolResultContentPart, type UseChatUIOptions, type UseChatUIReturn, type UseDeepResearchOptions, type UseSkillsOptions, type UseSkillsReturn, type UserProfile, convertToolsToSkills, createAdvancedResearchSkill, createDeepResearchSkill, useChatUI, useDeepResearch, useSkills };