@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.
- package/dist/react/index.d.mts +168 -3
- package/dist/react/index.d.ts +168 -3
- package/dist/react/index.js +826 -273
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +811 -262
- package/dist/react/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/react/index.d.mts
CHANGED
|
@@ -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
|
-
|
|
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 };
|
package/dist/react/index.d.ts
CHANGED
|
@@ -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
|
-
|
|
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 };
|