@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.
@@ -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
- 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 };
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 };