@gendive/chatllm 0.15.4 → 0.16.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 +288 -3
- package/dist/react/index.d.ts +288 -3
- package/dist/react/index.js +2140 -775
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +2131 -772
- package/dist/react/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/react/index.d.mts
CHANGED
|
@@ -75,6 +75,11 @@ interface MarkdownRendererProps {
|
|
|
75
75
|
* @Todo vibecode - true면 펼쳐진 상태로 표시 (기본: false)
|
|
76
76
|
*/
|
|
77
77
|
thinkingDefaultOpen?: boolean;
|
|
78
|
+
/**
|
|
79
|
+
* @description 인라인 소스 참조용 출처 목록
|
|
80
|
+
* @Todo vibecode - [1], [2] 패턴을 소스 URL 링크로 변환
|
|
81
|
+
*/
|
|
82
|
+
sources?: SourceItem[];
|
|
78
83
|
}
|
|
79
84
|
declare const MarkdownRenderer: React$1.FC<MarkdownRendererProps>;
|
|
80
85
|
|
|
@@ -302,6 +307,10 @@ interface ToolResultContentPart {
|
|
|
302
307
|
type: 'tool_result';
|
|
303
308
|
toolName: string;
|
|
304
309
|
result: ToolCallResult;
|
|
310
|
+
/** @Todo vibecode - UI 표시용 레이블 (예: '웹 검색', '이미지 생성') */
|
|
311
|
+
label?: string;
|
|
312
|
+
/** @Todo vibecode - UI 표시용 아이콘 (예: 'search', 'image') */
|
|
313
|
+
icon?: string;
|
|
305
314
|
}
|
|
306
315
|
/** @Todo vibecode - 에러 콘텐츠 파트 */
|
|
307
316
|
interface ErrorContentPart {
|
|
@@ -315,6 +324,41 @@ interface ToolCallResult {
|
|
|
315
324
|
type: 'text' | 'image' | 'file' | 'error';
|
|
316
325
|
content: string;
|
|
317
326
|
metadata?: Record<string, any>;
|
|
327
|
+
/** @Todo vibecode - 도구 결과에 포함된 출처 목록 (웹 검색 등) */
|
|
328
|
+
sources?: SourceItem[];
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* @description 프로젝트 파일 메타데이터 (실제 파일 저장은 호스트 앱에 위임)
|
|
332
|
+
* @Todo vibecode - 프로젝트 컨텍스트 파일 관리
|
|
333
|
+
*/
|
|
334
|
+
interface ProjectFile {
|
|
335
|
+
id: string;
|
|
336
|
+
name: string;
|
|
337
|
+
type: 'image' | 'pdf' | 'text' | 'code' | 'other';
|
|
338
|
+
url: string;
|
|
339
|
+
size?: number;
|
|
340
|
+
mimeType?: string;
|
|
341
|
+
description?: string;
|
|
342
|
+
uploadedAt: number;
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* @description 채팅 프로젝트 - 세션을 그룹화하는 작업 단위
|
|
346
|
+
* @Todo vibecode - 프로젝트별 지침, 파일 메타데이터, 메모리 스코프 관리
|
|
347
|
+
*/
|
|
348
|
+
interface ChatProject {
|
|
349
|
+
id: string;
|
|
350
|
+
title: string;
|
|
351
|
+
description?: string;
|
|
352
|
+
/** 프로젝트별 시스템 프롬프트 (세션 프롬프트에 자동 주입) */
|
|
353
|
+
instructions?: string;
|
|
354
|
+
/** 파일 메타데이터 목록 */
|
|
355
|
+
files: ProjectFile[];
|
|
356
|
+
createdAt: number;
|
|
357
|
+
updatedAt: number;
|
|
358
|
+
/** UI 표시용 색상 */
|
|
359
|
+
color?: string;
|
|
360
|
+
/** UI 표시용 아이콘 */
|
|
361
|
+
icon?: string;
|
|
318
362
|
}
|
|
319
363
|
/** @Todo vibecode - 채팅 입력 파일 첨부 */
|
|
320
364
|
interface ChatAttachment {
|
|
@@ -395,6 +439,11 @@ interface ChatSession {
|
|
|
395
439
|
summaryAfterIndex?: number;
|
|
396
440
|
/** 압축 상태 (점진적 압축용) */
|
|
397
441
|
compressionState?: CompressionState;
|
|
442
|
+
/**
|
|
443
|
+
* @description 소속 프로젝트 ID (enableProjects 시 할당)
|
|
444
|
+
* @Todo vibecode - optional로 하위호환성 유지, 런타임에서는 항상 할당
|
|
445
|
+
*/
|
|
446
|
+
projectId?: string;
|
|
398
447
|
}
|
|
399
448
|
interface ActionItem {
|
|
400
449
|
id: string;
|
|
@@ -519,7 +568,7 @@ interface PromptTemplate {
|
|
|
519
568
|
category: string;
|
|
520
569
|
icon?: string;
|
|
521
570
|
}
|
|
522
|
-
type SettingsTab = 'general' | 'personalization' | 'data' | 'memory' | 'api';
|
|
571
|
+
type SettingsTab = 'general' | 'personalization' | 'data' | 'memory' | 'project-memory' | 'api';
|
|
523
572
|
type ThemeMode = 'light' | 'dark' | 'system';
|
|
524
573
|
interface ThemeConfig {
|
|
525
574
|
mode: ThemeMode;
|
|
@@ -557,6 +606,10 @@ interface ChatUIProps {
|
|
|
557
606
|
showSidebar?: boolean;
|
|
558
607
|
/** @Todo vibecode - 사이드바 너비 (기본: 288px) */
|
|
559
608
|
sidebarWidth?: number | string;
|
|
609
|
+
/** @Todo vibecode - 새 채팅 버튼 아래, 세션 목록 위에 커스텀 콘텐츠 렌더링 */
|
|
610
|
+
sidebarRenderAfterHeader?: () => React.ReactNode;
|
|
611
|
+
/** @Todo vibecode - 세션 목록 아래, 사이드바 하단에 커스텀 콘텐츠 렌더링 */
|
|
612
|
+
sidebarRenderFooter?: () => React.ReactNode;
|
|
560
613
|
/** 설정 버튼 표시 여부 */
|
|
561
614
|
showSettings?: boolean;
|
|
562
615
|
/** 모델 선택기 표시 여부 */
|
|
@@ -632,6 +685,8 @@ interface ChatUIProps {
|
|
|
632
685
|
role: 'USER' | 'ASSISTANT' | 'user' | 'assistant';
|
|
633
686
|
message?: string;
|
|
634
687
|
content?: string;
|
|
688
|
+
/** @Todo vibecode - 멀티 콘텐츠 파트 (이미지/파일 등 복원용) */
|
|
689
|
+
contentParts?: MessageContentPart[];
|
|
635
690
|
created_at?: string;
|
|
636
691
|
}>;
|
|
637
692
|
memory_data?: object;
|
|
@@ -653,6 +708,7 @@ interface ChatUIProps {
|
|
|
653
708
|
onSaveMessages?: (sessionId: string, messages: {
|
|
654
709
|
role: 'user' | 'assistant';
|
|
655
710
|
message: string;
|
|
711
|
+
contentParts?: MessageContentPart[];
|
|
656
712
|
}[]) => Promise<void>;
|
|
657
713
|
/**
|
|
658
714
|
* @description Thinking 블록 표시 여부
|
|
@@ -685,6 +741,52 @@ interface ChatUIProps {
|
|
|
685
741
|
* @Todo vibecode - 라이브러리가 도구 호출 판단 후 호스트에 실행 위임
|
|
686
742
|
*/
|
|
687
743
|
onToolCall?: (name: string, params: Record<string, unknown>) => Promise<ToolCallResult>;
|
|
744
|
+
/**
|
|
745
|
+
* @description 프로젝트 기능 활성화 여부 (기본: false)
|
|
746
|
+
* @Todo vibecode - true 시 프로젝트 그룹핑, 지침, 메모리 계층 활성화
|
|
747
|
+
*/
|
|
748
|
+
enableProjects?: boolean;
|
|
749
|
+
/**
|
|
750
|
+
* @description 프로젝트 목록 로드 콜백
|
|
751
|
+
* @Todo vibecode - 외부 스토리지 사용 시 컴포넌트 마운트 시 호출
|
|
752
|
+
*/
|
|
753
|
+
onLoadProjects?: () => Promise<{
|
|
754
|
+
id: string;
|
|
755
|
+
title: string;
|
|
756
|
+
}[]>;
|
|
757
|
+
/**
|
|
758
|
+
* @description 프로젝트 생성 콜백
|
|
759
|
+
* @Todo vibecode - 새 프로젝트 생성 시 호출
|
|
760
|
+
*/
|
|
761
|
+
onCreateProject?: (data: Partial<ChatProject>) => Promise<{
|
|
762
|
+
id: string;
|
|
763
|
+
title: string;
|
|
764
|
+
}>;
|
|
765
|
+
/**
|
|
766
|
+
* @description 프로젝트 상세 로드 콜백 (lazy loading)
|
|
767
|
+
* @Todo vibecode - 프로젝트 선택 시 호출
|
|
768
|
+
*/
|
|
769
|
+
onLoadProject?: (projectId: string) => Promise<ChatProject>;
|
|
770
|
+
/**
|
|
771
|
+
* @description 프로젝트 수정 콜백
|
|
772
|
+
* @Todo vibecode - 프로젝트 정보 수정 시 호출
|
|
773
|
+
*/
|
|
774
|
+
onUpdateProject?: (projectId: string, data: Partial<ChatProject>) => Promise<void>;
|
|
775
|
+
/**
|
|
776
|
+
* @description 프로젝트 삭제 콜백
|
|
777
|
+
* @Todo vibecode - 프로젝트 삭제 시 소속 세션도 함께 삭제
|
|
778
|
+
*/
|
|
779
|
+
onDeleteProject?: (projectId: string) => Promise<void>;
|
|
780
|
+
/**
|
|
781
|
+
* @description 프로젝트 파일 추가 콜백 (호스트가 업로드 처리 후 메타데이터 반환)
|
|
782
|
+
* @Todo vibecode - 파일 저장은 호스트에 위임
|
|
783
|
+
*/
|
|
784
|
+
onAddProjectFile?: (projectId: string, file: File) => Promise<ProjectFile>;
|
|
785
|
+
/**
|
|
786
|
+
* @description 프로젝트 파일 삭제 콜백
|
|
787
|
+
* @Todo vibecode - 파일 삭제 시 호출
|
|
788
|
+
*/
|
|
789
|
+
onDeleteProjectFile?: (projectId: string, fileId: string) => Promise<void>;
|
|
688
790
|
}
|
|
689
791
|
interface SendMessageParams {
|
|
690
792
|
messages: {
|
|
@@ -735,6 +837,23 @@ interface SidebarProps {
|
|
|
735
837
|
width?: number | string;
|
|
736
838
|
/** @Todo vibecode - 테마 모드 (chatllm-root 밖에서 사용 시 CSS 변수 직접 적용) */
|
|
737
839
|
theme?: ThemeMode;
|
|
840
|
+
/**
|
|
841
|
+
* @description 프로젝트 목록 (enableProjects 시 표시)
|
|
842
|
+
* @Todo vibecode - 프로젝트 선택 드롭다운용
|
|
843
|
+
*/
|
|
844
|
+
projects?: ChatProject[];
|
|
845
|
+
/** @Todo vibecode - 현재 선택된 프로젝트 ID */
|
|
846
|
+
currentProjectId?: string | null;
|
|
847
|
+
/** @Todo vibecode - 프로젝트 선택 핸들러 */
|
|
848
|
+
onSelectProject?: (id: string) => void;
|
|
849
|
+
/** @Todo vibecode - 새 프로젝트 생성 핸들러 */
|
|
850
|
+
onNewProject?: () => void;
|
|
851
|
+
/** @Todo vibecode - 프로젝트 설정 열기 핸들러 */
|
|
852
|
+
onProjectSettings?: (id: string) => void;
|
|
853
|
+
/** @Todo vibecode - 새 채팅 버튼 아래, 세션 목록 위에 커스텀 콘텐츠 렌더링 */
|
|
854
|
+
renderAfterHeader?: () => React.ReactNode;
|
|
855
|
+
/** @Todo vibecode - 세션 목록 아래, 사이드바 하단에 커스텀 콘텐츠 렌더링 */
|
|
856
|
+
renderFooter?: () => React.ReactNode;
|
|
738
857
|
}
|
|
739
858
|
interface MessageListProps {
|
|
740
859
|
messages: ChatMessage[];
|
|
@@ -1020,6 +1139,41 @@ interface UseChatUIReturn {
|
|
|
1020
1139
|
* @Todo vibecode - 프리뷰에서 삭제 시 objectURL 해제 포함
|
|
1021
1140
|
*/
|
|
1022
1141
|
removeAttachment: (id: string) => void;
|
|
1142
|
+
/**
|
|
1143
|
+
* @description 프로젝트 목록
|
|
1144
|
+
* @Todo vibecode - enableProjects=false이면 빈 배열
|
|
1145
|
+
*/
|
|
1146
|
+
projects: ChatProject[];
|
|
1147
|
+
/** @Todo vibecode - 현재 선택된 프로젝트 ID */
|
|
1148
|
+
currentProjectId: string | null;
|
|
1149
|
+
/** @Todo vibecode - 현재 선택된 프로젝트 객체 */
|
|
1150
|
+
currentProject: ChatProject | null;
|
|
1151
|
+
/** @Todo vibecode - 프로젝트 목록 로딩 상태 */
|
|
1152
|
+
isProjectsLoading: boolean;
|
|
1153
|
+
/** @Todo vibecode - 프로젝트 생성 */
|
|
1154
|
+
createProject: (data: {
|
|
1155
|
+
title: string;
|
|
1156
|
+
description?: string;
|
|
1157
|
+
instructions?: string;
|
|
1158
|
+
}) => Promise<string>;
|
|
1159
|
+
/** @Todo vibecode - 프로젝트 선택 (세션 필터링 변경) */
|
|
1160
|
+
selectProject: (projectId: string) => Promise<void>;
|
|
1161
|
+
/** @Todo vibecode - 프로젝트 수정 */
|
|
1162
|
+
updateProject: (projectId: string, data: Partial<ChatProject>) => Promise<void>;
|
|
1163
|
+
/** @Todo vibecode - 프로젝트 삭제 (기본 프로젝트 삭제 불가) */
|
|
1164
|
+
deleteProject: (projectId: string) => Promise<void>;
|
|
1165
|
+
/** @Todo vibecode - 프로젝트 파일 추가 */
|
|
1166
|
+
addProjectFile: (projectId: string, file: File) => Promise<void>;
|
|
1167
|
+
/** @Todo vibecode - 프로젝트 파일 삭제 */
|
|
1168
|
+
deleteProjectFile: (projectId: string, fileId: string) => Promise<void>;
|
|
1169
|
+
/** @Todo vibecode - 프로젝트 설정 모달 열림 상태 */
|
|
1170
|
+
projectSettingsOpen: boolean;
|
|
1171
|
+
/** @Todo vibecode - 프로젝트 설정 모달 열기 */
|
|
1172
|
+
openProjectSettings: () => void;
|
|
1173
|
+
/** @Todo vibecode - 프로젝트 설정 모달 닫기 */
|
|
1174
|
+
closeProjectSettings: () => void;
|
|
1175
|
+
/** @Todo vibecode - 프로젝트 메모리 (계층형 3-tier 중 프로젝트 레벨) */
|
|
1176
|
+
projectMemory: UseGlobalMemoryReturn | null;
|
|
1023
1177
|
}
|
|
1024
1178
|
|
|
1025
1179
|
/**
|
|
@@ -1116,6 +1270,8 @@ interface UseChatUIOptions {
|
|
|
1116
1270
|
role: 'USER' | 'ASSISTANT' | 'user' | 'assistant';
|
|
1117
1271
|
message?: string;
|
|
1118
1272
|
content?: string;
|
|
1273
|
+
/** @Todo vibecode - 멀티 콘텐츠 파트 (이미지/파일 등 복원용) */
|
|
1274
|
+
contentParts?: MessageContentPart[];
|
|
1119
1275
|
created_at?: string;
|
|
1120
1276
|
}>;
|
|
1121
1277
|
memory_data?: object;
|
|
@@ -1132,11 +1288,12 @@ interface UseChatUIOptions {
|
|
|
1132
1288
|
onUpdateSessionTitle?: (sessionId: string, title: string) => Promise<void>;
|
|
1133
1289
|
/**
|
|
1134
1290
|
* @description 메시지 저장 콜백
|
|
1135
|
-
* @Todo vibecode - 메시지 전송 완료 후
|
|
1291
|
+
* @Todo vibecode - 메시지 전송 완료 후 호출, contentParts로 이미지/파일 등 저장
|
|
1136
1292
|
*/
|
|
1137
1293
|
onSaveMessages?: (sessionId: string, messages: {
|
|
1138
1294
|
role: 'user' | 'assistant';
|
|
1139
1295
|
message: string;
|
|
1296
|
+
contentParts?: MessageContentPart[];
|
|
1140
1297
|
}[]) => Promise<void>;
|
|
1141
1298
|
/**
|
|
1142
1299
|
* @description 심층연구 콜백 (onWebSearch 필수)
|
|
@@ -1163,6 +1320,31 @@ interface UseChatUIOptions {
|
|
|
1163
1320
|
* @Todo vibecode - 라이브러리가 도구 호출 판단 후 호스트에 실행 위임
|
|
1164
1321
|
*/
|
|
1165
1322
|
onToolCall?: (name: string, params: Record<string, unknown>) => Promise<ToolCallResult>;
|
|
1323
|
+
/**
|
|
1324
|
+
* @description 프로젝트 기능 활성화 여부 (기본: false)
|
|
1325
|
+
* @Todo vibecode - true 시 프로젝트 그룹핑, 지침, 메모리 계층 활성화
|
|
1326
|
+
*/
|
|
1327
|
+
enableProjects?: boolean;
|
|
1328
|
+
/** @Todo vibecode - 프로젝트 목록 로드 콜백 */
|
|
1329
|
+
onLoadProjects?: () => Promise<{
|
|
1330
|
+
id: string;
|
|
1331
|
+
title: string;
|
|
1332
|
+
}[]>;
|
|
1333
|
+
/** @Todo vibecode - 프로젝트 생성 콜백 */
|
|
1334
|
+
onCreateProject?: (data: Partial<ChatProject>) => Promise<{
|
|
1335
|
+
id: string;
|
|
1336
|
+
title: string;
|
|
1337
|
+
}>;
|
|
1338
|
+
/** @Todo vibecode - 프로젝트 상세 로드 콜백 */
|
|
1339
|
+
onLoadProject?: (projectId: string) => Promise<ChatProject>;
|
|
1340
|
+
/** @Todo vibecode - 프로젝트 수정 콜백 */
|
|
1341
|
+
onUpdateProject?: (projectId: string, data: Partial<ChatProject>) => Promise<void>;
|
|
1342
|
+
/** @Todo vibecode - 프로젝트 삭제 콜백 */
|
|
1343
|
+
onDeleteProject?: (projectId: string) => Promise<void>;
|
|
1344
|
+
/** @Todo vibecode - 프로젝트 파일 추가 콜백 */
|
|
1345
|
+
onAddProjectFile?: (projectId: string, file: File) => Promise<ProjectFile>;
|
|
1346
|
+
/** @Todo vibecode - 프로젝트 파일 삭제 콜백 */
|
|
1347
|
+
onDeleteProjectFile?: (projectId: string, fileId: string) => Promise<void>;
|
|
1166
1348
|
}
|
|
1167
1349
|
declare const useChatUI: (options: UseChatUIOptions) => UseChatUIReturn;
|
|
1168
1350
|
|
|
@@ -1263,6 +1445,52 @@ interface UseSkillsReturn {
|
|
|
1263
1445
|
}
|
|
1264
1446
|
declare const useSkills: (options: UseSkillsOptions) => UseSkillsReturn;
|
|
1265
1447
|
|
|
1448
|
+
/**
|
|
1449
|
+
* @description 프로젝트 관리 훅 - CRUD, lazy loading, 기본 프로젝트 관리
|
|
1450
|
+
* @Todo vibecode - useChatUI의 세션 관리 패턴을 따름
|
|
1451
|
+
*/
|
|
1452
|
+
|
|
1453
|
+
interface UseProjectOptions {
|
|
1454
|
+
/** @Todo vibecode - false이면 Hook 내부 로직 비활성 (Hook 규칙 준수용) */
|
|
1455
|
+
enabled?: boolean;
|
|
1456
|
+
/** 외부 스토리지 사용 여부 */
|
|
1457
|
+
useExternalStorage?: boolean;
|
|
1458
|
+
/** 스토리지 키 (localStorage 사용 시) */
|
|
1459
|
+
storageKey?: string;
|
|
1460
|
+
/** @Todo vibecode - 외부 스토리지 콜백들 */
|
|
1461
|
+
onLoadProjects?: () => Promise<{
|
|
1462
|
+
id: string;
|
|
1463
|
+
title: string;
|
|
1464
|
+
}[]>;
|
|
1465
|
+
onCreateProject?: (data: Partial<ChatProject>) => Promise<{
|
|
1466
|
+
id: string;
|
|
1467
|
+
title: string;
|
|
1468
|
+
}>;
|
|
1469
|
+
onLoadProject?: (projectId: string) => Promise<ChatProject>;
|
|
1470
|
+
onUpdateProject?: (projectId: string, data: Partial<ChatProject>) => Promise<void>;
|
|
1471
|
+
onDeleteProject?: (projectId: string) => Promise<void>;
|
|
1472
|
+
onAddProjectFile?: (projectId: string, file: File) => Promise<ProjectFile>;
|
|
1473
|
+
onDeleteProjectFile?: (projectId: string, fileId: string) => Promise<void>;
|
|
1474
|
+
onError?: (error: Error) => void;
|
|
1475
|
+
}
|
|
1476
|
+
interface UseProjectReturn {
|
|
1477
|
+
projects: ChatProject[];
|
|
1478
|
+
currentProjectId: string | null;
|
|
1479
|
+
currentProject: ChatProject | null;
|
|
1480
|
+
isProjectsLoading: boolean;
|
|
1481
|
+
createProject: (data: {
|
|
1482
|
+
title: string;
|
|
1483
|
+
description?: string;
|
|
1484
|
+
instructions?: string;
|
|
1485
|
+
}) => Promise<string>;
|
|
1486
|
+
selectProject: (projectId: string) => Promise<void>;
|
|
1487
|
+
updateProject: (projectId: string, data: Partial<ChatProject>) => Promise<void>;
|
|
1488
|
+
deleteProject: (projectId: string) => Promise<void>;
|
|
1489
|
+
addFile: (projectId: string, file: File) => Promise<void>;
|
|
1490
|
+
deleteFile: (projectId: string, fileId: string) => Promise<void>;
|
|
1491
|
+
}
|
|
1492
|
+
declare const useProject: (options: UseProjectOptions) => UseProjectReturn;
|
|
1493
|
+
|
|
1266
1494
|
/**
|
|
1267
1495
|
* @description 고급 딥리서치 스킬 생성기
|
|
1268
1496
|
* @Todo vibecode - useDeepResearch 4단계 파이프라인을 SkillConfig으로 통합
|
|
@@ -1472,6 +1700,16 @@ interface SettingsModalProps {
|
|
|
1472
1700
|
onClearMemory?: () => void;
|
|
1473
1701
|
/** @Todo vibecode - 개인화 설정 저장 핸들러 (저장 버튼 클릭 시) */
|
|
1474
1702
|
onSave?: () => void;
|
|
1703
|
+
/** @description 프로젝트 메모리 아이템 목록 @Todo vibecode */
|
|
1704
|
+
projectMemoryItems?: MemoryItem[];
|
|
1705
|
+
/** @description 프로젝트 메모리 항목 삭제 핸들러 @Todo vibecode */
|
|
1706
|
+
onDeleteProjectMemory?: (key: string) => void;
|
|
1707
|
+
/** @description 프로젝트 메모리 전체 삭제 핸들러 @Todo vibecode */
|
|
1708
|
+
onClearProjectMemory?: () => void;
|
|
1709
|
+
/** @description 프로젝트 기능 활성화 여부 @Todo vibecode */
|
|
1710
|
+
enableProjects?: boolean;
|
|
1711
|
+
/** @description 현재 프로젝트 이름 @Todo vibecode */
|
|
1712
|
+
currentProjectTitle?: string;
|
|
1475
1713
|
}
|
|
1476
1714
|
declare const SettingsModal: React$1.FC<SettingsModalProps>;
|
|
1477
1715
|
|
|
@@ -1540,6 +1778,7 @@ interface ContentPartRendererProps {
|
|
|
1540
1778
|
/**
|
|
1541
1779
|
* @description contentParts 배열을 타입별로 렌더링
|
|
1542
1780
|
* @Todo vibecode - text, image, file, search_result, tool_loading, tool_result, error 지원
|
|
1781
|
+
* tool_result → ToolStatusCard 기반 구조화 렌더링
|
|
1543
1782
|
*/
|
|
1544
1783
|
declare const ContentPartRenderer: React$1.FC<ContentPartRendererProps>;
|
|
1545
1784
|
|
|
@@ -1573,6 +1812,37 @@ interface FileContentCardProps {
|
|
|
1573
1812
|
*/
|
|
1574
1813
|
declare const FileContentCard: React$1.FC<FileContentCardProps>;
|
|
1575
1814
|
|
|
1815
|
+
/**
|
|
1816
|
+
* @description 프로젝트 선택 드롭다운 - 사이드바 상단에 배치
|
|
1817
|
+
* @Todo vibecode - 프로젝트 전환, 생성, 설정 접근
|
|
1818
|
+
*/
|
|
1819
|
+
|
|
1820
|
+
interface ProjectSelectorProps {
|
|
1821
|
+
projects: ChatProject[];
|
|
1822
|
+
currentProjectId: string | null;
|
|
1823
|
+
onSelectProject: (id: string) => void;
|
|
1824
|
+
onNewProject: () => void;
|
|
1825
|
+
onProjectSettings: (id: string) => void;
|
|
1826
|
+
}
|
|
1827
|
+
declare const ProjectSelector: React$1.FC<ProjectSelectorProps>;
|
|
1828
|
+
|
|
1829
|
+
/**
|
|
1830
|
+
* @description 프로젝트 설정 모달 - 일반/지침/파일 3탭 구조
|
|
1831
|
+
* @Todo vibecode - 프로젝트 정보 편집, Instructions, 파일 메타데이터 관리
|
|
1832
|
+
*/
|
|
1833
|
+
|
|
1834
|
+
interface ProjectSettingsModalProps {
|
|
1835
|
+
isOpen: boolean;
|
|
1836
|
+
project: ChatProject | null;
|
|
1837
|
+
onClose: () => void;
|
|
1838
|
+
onUpdateProject: (projectId: string, data: Partial<ChatProject>) => void;
|
|
1839
|
+
onAddFile: (projectId: string, file: File) => void;
|
|
1840
|
+
onDeleteFile: (projectId: string, fileId: string) => void;
|
|
1841
|
+
/** @Todo vibecode - 프로젝트 삭제 핸들러 (기본 프로젝트 삭제 불가) */
|
|
1842
|
+
onDeleteProject?: (projectId: string) => void;
|
|
1843
|
+
}
|
|
1844
|
+
declare const ProjectSettingsModal: React$1.FC<ProjectSettingsModalProps>;
|
|
1845
|
+
|
|
1576
1846
|
/**
|
|
1577
1847
|
* @description Tool → Skill 변환 어댑터
|
|
1578
1848
|
* @Todo vibecode - ChatToolDefinition을 SkillConfig로 변환하여 기존 Skills 인프라 재사용
|
|
@@ -1590,4 +1860,19 @@ declare const FileContentCard: React$1.FC<FileContentCardProps>;
|
|
|
1590
1860
|
*/
|
|
1591
1861
|
declare const convertToolsToSkills: (tools: ChatToolDefinition[], onToolCall: (name: string, params: Record<string, unknown>) => Promise<ToolCallResult>) => Record<string, SkillConfig>;
|
|
1592
1862
|
|
|
1593
|
-
|
|
1863
|
+
/**
|
|
1864
|
+
* @description localStorage 세션을 프로젝트 구조로 마이그레이션
|
|
1865
|
+
* @Todo vibecode - enableProjects 활성화 시 기존 세션에 projectId 할당
|
|
1866
|
+
*/
|
|
1867
|
+
|
|
1868
|
+
/** @Todo vibecode - 기본 프로젝트 ID 상수 */
|
|
1869
|
+
declare const DEFAULT_PROJECT_ID = "default";
|
|
1870
|
+
/** @Todo vibecode - 기본 프로젝트 제목 */
|
|
1871
|
+
declare const DEFAULT_PROJECT_TITLE = "\uAE30\uBCF8 \uD504\uB85C\uC81D\uD2B8";
|
|
1872
|
+
/**
|
|
1873
|
+
* @description localStorage 세션 데이터를 프로젝트 구조로 마이그레이션
|
|
1874
|
+
* @Todo vibecode - 기존 세션에 projectId: 'default' 할당, 기본 프로젝트 생성
|
|
1875
|
+
*/
|
|
1876
|
+
declare const migrateSessionsToProjects: (storageKey: string) => void;
|
|
1877
|
+
|
|
1878
|
+
export { type ActionItem, type ActionMenuProps, type AdvancedResearchOptions, type AlternativeResponse, type ChatAttachment, ChatHeader, ChatInput, type ChatMessage, type ChatProject, type ChatSession, ChatSidebar, type ChatToolDefinition, type ChatToolParameter, ChatUI, type ChatUIComponents, type ChatUIProps, ContentPartRenderer, type ContentPartRendererProps, DEFAULT_PROJECT_ID, DEFAULT_PROJECT_TITLE, 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 ProjectFile, ProjectSelector, type ProjectSelectorProps, ProjectSettingsModal, type ProjectSettingsModalProps, 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 UseProjectOptions, type UseProjectReturn, type UseSkillsOptions, type UseSkillsReturn, type UserProfile, convertToolsToSkills, createAdvancedResearchSkill, createDeepResearchSkill, migrateSessionsToProjects, useChatUI, useDeepResearch, useProject, useSkills };
|