@gendive/chatllm 0.15.3 → 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 +333 -3
- package/dist/react/index.d.ts +333 -3
- package/dist/react/index.js +2748 -1126
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +2751 -1135
- 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,51 @@ 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;
|
|
362
|
+
}
|
|
363
|
+
/** @Todo vibecode - 채팅 입력 파일 첨부 */
|
|
364
|
+
interface ChatAttachment {
|
|
365
|
+
id: string;
|
|
366
|
+
file: File;
|
|
367
|
+
name: string;
|
|
368
|
+
type: 'image' | 'file';
|
|
369
|
+
previewUrl?: string;
|
|
370
|
+
mimeType: string;
|
|
371
|
+
size: number;
|
|
318
372
|
}
|
|
319
373
|
/** @Todo vibecode - 도구 파라미터 정의 */
|
|
320
374
|
interface ChatToolParameter {
|
|
@@ -385,6 +439,11 @@ interface ChatSession {
|
|
|
385
439
|
summaryAfterIndex?: number;
|
|
386
440
|
/** 압축 상태 (점진적 압축용) */
|
|
387
441
|
compressionState?: CompressionState;
|
|
442
|
+
/**
|
|
443
|
+
* @description 소속 프로젝트 ID (enableProjects 시 할당)
|
|
444
|
+
* @Todo vibecode - optional로 하위호환성 유지, 런타임에서는 항상 할당
|
|
445
|
+
*/
|
|
446
|
+
projectId?: string;
|
|
388
447
|
}
|
|
389
448
|
interface ActionItem {
|
|
390
449
|
id: string;
|
|
@@ -509,7 +568,7 @@ interface PromptTemplate {
|
|
|
509
568
|
category: string;
|
|
510
569
|
icon?: string;
|
|
511
570
|
}
|
|
512
|
-
type SettingsTab = 'general' | 'personalization' | 'data' | 'memory' | 'api';
|
|
571
|
+
type SettingsTab = 'general' | 'personalization' | 'data' | 'memory' | 'project-memory' | 'api';
|
|
513
572
|
type ThemeMode = 'light' | 'dark' | 'system';
|
|
514
573
|
interface ThemeConfig {
|
|
515
574
|
mode: ThemeMode;
|
|
@@ -547,6 +606,10 @@ interface ChatUIProps {
|
|
|
547
606
|
showSidebar?: boolean;
|
|
548
607
|
/** @Todo vibecode - 사이드바 너비 (기본: 288px) */
|
|
549
608
|
sidebarWidth?: number | string;
|
|
609
|
+
/** @Todo vibecode - 새 채팅 버튼 아래, 세션 목록 위에 커스텀 콘텐츠 렌더링 */
|
|
610
|
+
sidebarRenderAfterHeader?: () => React.ReactNode;
|
|
611
|
+
/** @Todo vibecode - 세션 목록 아래, 사이드바 하단에 커스텀 콘텐츠 렌더링 */
|
|
612
|
+
sidebarRenderFooter?: () => React.ReactNode;
|
|
550
613
|
/** 설정 버튼 표시 여부 */
|
|
551
614
|
showSettings?: boolean;
|
|
552
615
|
/** 모델 선택기 표시 여부 */
|
|
@@ -622,6 +685,8 @@ interface ChatUIProps {
|
|
|
622
685
|
role: 'USER' | 'ASSISTANT' | 'user' | 'assistant';
|
|
623
686
|
message?: string;
|
|
624
687
|
content?: string;
|
|
688
|
+
/** @Todo vibecode - 멀티 콘텐츠 파트 (이미지/파일 등 복원용) */
|
|
689
|
+
contentParts?: MessageContentPart[];
|
|
625
690
|
created_at?: string;
|
|
626
691
|
}>;
|
|
627
692
|
memory_data?: object;
|
|
@@ -643,6 +708,7 @@ interface ChatUIProps {
|
|
|
643
708
|
onSaveMessages?: (sessionId: string, messages: {
|
|
644
709
|
role: 'user' | 'assistant';
|
|
645
710
|
message: string;
|
|
711
|
+
contentParts?: MessageContentPart[];
|
|
646
712
|
}[]) => Promise<void>;
|
|
647
713
|
/**
|
|
648
714
|
* @description Thinking 블록 표시 여부
|
|
@@ -675,6 +741,52 @@ interface ChatUIProps {
|
|
|
675
741
|
* @Todo vibecode - 라이브러리가 도구 호출 판단 후 호스트에 실행 위임
|
|
676
742
|
*/
|
|
677
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>;
|
|
678
790
|
}
|
|
679
791
|
interface SendMessageParams {
|
|
680
792
|
messages: {
|
|
@@ -725,6 +837,23 @@ interface SidebarProps {
|
|
|
725
837
|
width?: number | string;
|
|
726
838
|
/** @Todo vibecode - 테마 모드 (chatllm-root 밖에서 사용 시 CSS 변수 직접 적용) */
|
|
727
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;
|
|
728
857
|
}
|
|
729
858
|
interface MessageListProps {
|
|
730
859
|
messages: ChatMessage[];
|
|
@@ -842,6 +971,26 @@ interface InputProps {
|
|
|
842
971
|
* @Todo vibecode - 입력창 상단 진행 상태 칩
|
|
843
972
|
*/
|
|
844
973
|
activeSkillExecution?: SkillExecution | null;
|
|
974
|
+
/**
|
|
975
|
+
* @description 첨부 파일 목록
|
|
976
|
+
* @Todo vibecode - 입력창 프리뷰 영역에 표시
|
|
977
|
+
*/
|
|
978
|
+
attachments?: ChatAttachment[];
|
|
979
|
+
/**
|
|
980
|
+
* @description 파일 첨부 핸들러 (붙여넣기, 드래그앤드롭, 파일선택 공통)
|
|
981
|
+
* @Todo vibecode - File[] → ChatAttachment 변환 후 상태 추가
|
|
982
|
+
*/
|
|
983
|
+
onFileAttach?: (files: File[]) => void;
|
|
984
|
+
/**
|
|
985
|
+
* @description 첨부 파일 제거 핸들러
|
|
986
|
+
* @Todo vibecode - 프리뷰에서 X 버튼 클릭 시
|
|
987
|
+
*/
|
|
988
|
+
onRemoveAttachment?: (id: string) => void;
|
|
989
|
+
/**
|
|
990
|
+
* @description 허용 파일 타입
|
|
991
|
+
* @Todo vibecode - accept 속성 ('image/*', 'application/pdf' 등)
|
|
992
|
+
*/
|
|
993
|
+
acceptedFileTypes?: string[];
|
|
845
994
|
}
|
|
846
995
|
interface HeaderProps {
|
|
847
996
|
title: string;
|
|
@@ -975,6 +1124,56 @@ interface UseChatUIReturn {
|
|
|
975
1124
|
* @Todo vibecode - 사용자가 UI에서 스킬 선택 시 호출
|
|
976
1125
|
*/
|
|
977
1126
|
executeManualSkill: (skillName: string) => void;
|
|
1127
|
+
/**
|
|
1128
|
+
* @description 첨부 파일 목록
|
|
1129
|
+
* @Todo vibecode - 입력창 프리뷰 표시 + 전송 시 contentParts 변환
|
|
1130
|
+
*/
|
|
1131
|
+
attachments: ChatAttachment[];
|
|
1132
|
+
/**
|
|
1133
|
+
* @description 파일 첨부 핸들러
|
|
1134
|
+
* @Todo vibecode - File[] → ChatAttachment 변환 후 상태 추가
|
|
1135
|
+
*/
|
|
1136
|
+
addAttachments: (files: File[]) => void;
|
|
1137
|
+
/**
|
|
1138
|
+
* @description 첨부 파일 제거
|
|
1139
|
+
* @Todo vibecode - 프리뷰에서 삭제 시 objectURL 해제 포함
|
|
1140
|
+
*/
|
|
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;
|
|
978
1177
|
}
|
|
979
1178
|
|
|
980
1179
|
/**
|
|
@@ -1071,6 +1270,8 @@ interface UseChatUIOptions {
|
|
|
1071
1270
|
role: 'USER' | 'ASSISTANT' | 'user' | 'assistant';
|
|
1072
1271
|
message?: string;
|
|
1073
1272
|
content?: string;
|
|
1273
|
+
/** @Todo vibecode - 멀티 콘텐츠 파트 (이미지/파일 등 복원용) */
|
|
1274
|
+
contentParts?: MessageContentPart[];
|
|
1074
1275
|
created_at?: string;
|
|
1075
1276
|
}>;
|
|
1076
1277
|
memory_data?: object;
|
|
@@ -1087,11 +1288,12 @@ interface UseChatUIOptions {
|
|
|
1087
1288
|
onUpdateSessionTitle?: (sessionId: string, title: string) => Promise<void>;
|
|
1088
1289
|
/**
|
|
1089
1290
|
* @description 메시지 저장 콜백
|
|
1090
|
-
* @Todo vibecode - 메시지 전송 완료 후
|
|
1291
|
+
* @Todo vibecode - 메시지 전송 완료 후 호출, contentParts로 이미지/파일 등 저장
|
|
1091
1292
|
*/
|
|
1092
1293
|
onSaveMessages?: (sessionId: string, messages: {
|
|
1093
1294
|
role: 'user' | 'assistant';
|
|
1094
1295
|
message: string;
|
|
1296
|
+
contentParts?: MessageContentPart[];
|
|
1095
1297
|
}[]) => Promise<void>;
|
|
1096
1298
|
/**
|
|
1097
1299
|
* @description 심층연구 콜백 (onWebSearch 필수)
|
|
@@ -1118,6 +1320,31 @@ interface UseChatUIOptions {
|
|
|
1118
1320
|
* @Todo vibecode - 라이브러리가 도구 호출 판단 후 호스트에 실행 위임
|
|
1119
1321
|
*/
|
|
1120
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>;
|
|
1121
1348
|
}
|
|
1122
1349
|
declare const useChatUI: (options: UseChatUIOptions) => UseChatUIReturn;
|
|
1123
1350
|
|
|
@@ -1218,6 +1445,52 @@ interface UseSkillsReturn {
|
|
|
1218
1445
|
}
|
|
1219
1446
|
declare const useSkills: (options: UseSkillsOptions) => UseSkillsReturn;
|
|
1220
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
|
+
|
|
1221
1494
|
/**
|
|
1222
1495
|
* @description 고급 딥리서치 스킬 생성기
|
|
1223
1496
|
* @Todo vibecode - useDeepResearch 4단계 파이프라인을 SkillConfig으로 통합
|
|
@@ -1427,6 +1700,16 @@ interface SettingsModalProps {
|
|
|
1427
1700
|
onClearMemory?: () => void;
|
|
1428
1701
|
/** @Todo vibecode - 개인화 설정 저장 핸들러 (저장 버튼 클릭 시) */
|
|
1429
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;
|
|
1430
1713
|
}
|
|
1431
1714
|
declare const SettingsModal: React$1.FC<SettingsModalProps>;
|
|
1432
1715
|
|
|
@@ -1495,6 +1778,7 @@ interface ContentPartRendererProps {
|
|
|
1495
1778
|
/**
|
|
1496
1779
|
* @description contentParts 배열을 타입별로 렌더링
|
|
1497
1780
|
* @Todo vibecode - text, image, file, search_result, tool_loading, tool_result, error 지원
|
|
1781
|
+
* tool_result → ToolStatusCard 기반 구조화 렌더링
|
|
1498
1782
|
*/
|
|
1499
1783
|
declare const ContentPartRenderer: React$1.FC<ContentPartRendererProps>;
|
|
1500
1784
|
|
|
@@ -1528,6 +1812,37 @@ interface FileContentCardProps {
|
|
|
1528
1812
|
*/
|
|
1529
1813
|
declare const FileContentCard: React$1.FC<FileContentCardProps>;
|
|
1530
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
|
+
|
|
1531
1846
|
/**
|
|
1532
1847
|
* @description Tool → Skill 변환 어댑터
|
|
1533
1848
|
* @Todo vibecode - ChatToolDefinition을 SkillConfig로 변환하여 기존 Skills 인프라 재사용
|
|
@@ -1545,4 +1860,19 @@ declare const FileContentCard: React$1.FC<FileContentCardProps>;
|
|
|
1545
1860
|
*/
|
|
1546
1861
|
declare const convertToolsToSkills: (tools: ChatToolDefinition[], onToolCall: (name: string, params: Record<string, unknown>) => Promise<ToolCallResult>) => Record<string, SkillConfig>;
|
|
1547
1862
|
|
|
1548
|
-
|
|
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 };
|