@gendive/chatllm 0.22.0 → 0.23.1

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.
@@ -709,6 +709,26 @@ interface ChatSession {
709
709
  * @Todo vibecode - 압축 후에도 유지되는 참조 데이터
710
710
  */
711
711
  sessionContext?: SessionContext;
712
+ /**
713
+ * @description 세션별 토큰 사용량 누적 통계
714
+ * @Todo vibecode - Phase 2 토큰 추적
715
+ */
716
+ tokenStats?: SessionTokenStats;
717
+ }
718
+ /** API 응답 1회의 토큰 사용량 */
719
+ interface TokenUsage {
720
+ promptTokens: number;
721
+ completionTokens: number;
722
+ totalTokens: number;
723
+ }
724
+ /** 세션별 누적 토큰 통계 */
725
+ interface SessionTokenStats {
726
+ totalPromptTokens: number;
727
+ totalCompletionTokens: number;
728
+ totalTokens: number;
729
+ /** 토큰이 기록된 메시지 수 */
730
+ messageCount: number;
731
+ lastUpdated: number;
712
732
  }
713
733
  interface ActionItem {
714
734
  id: string;
@@ -1598,6 +1618,11 @@ interface UseChatUIReturn {
1598
1618
  compressionState: CompressionState | null;
1599
1619
  /** 수동으로 정보 추출 트리거 */
1600
1620
  extractUserInfo: () => Promise<void>;
1621
+ /**
1622
+ * @description 세션별 토큰 사용량 통계 조회
1623
+ * @Todo vibecode - Phase 2 토큰 추적
1624
+ */
1625
+ getTokenStats: (sessionId: string) => SessionTokenStats | null;
1601
1626
  /**
1602
1627
  * @description 세션 목록 로딩 상태
1603
1628
  * @Todo vibecode - 외부 스토리지 사용 시 세션 목록 로드 중
@@ -1895,6 +1920,30 @@ declare const ChatUI: React__default.FC<ChatUIProps>;
1895
1920
  */
1896
1921
  declare const ChatFloatingWidget: React__default.FC<ChatFloatingWidgetProps>;
1897
1922
 
1923
+ /**
1924
+ * @description 재시도 유틸리티 — exponential backoff + jitter
1925
+ * @Todo vibecode - Phase 1 non-streaming 재시도 지원
1926
+ */
1927
+ /** 재시도 설정 */
1928
+ interface RetryConfig {
1929
+ /** 최대 재시도 횟수 (기본: 3) */
1930
+ maxRetries: number;
1931
+ /** 초기 대기 시간 ms (기본: 1000) */
1932
+ initialDelayMs: number;
1933
+ /** 최대 대기 시간 ms (기본: 30000) */
1934
+ maxDelayMs: number;
1935
+ /** 백오프 배수 (기본: 2) */
1936
+ backoffMultiplier: number;
1937
+ }
1938
+ declare const DEFAULT_RETRY_CONFIG: RetryConfig;
1939
+ /**
1940
+ * @description 재시도 래퍼 — retryable 에러만 재시도, AbortSignal 존중
1941
+ * @param fn 실행할 비동기 함수
1942
+ * @param config 재시도 설정 (Partial 허용, DEFAULT_RETRY_CONFIG와 병합)
1943
+ * @param signal 중단 시그널
1944
+ */
1945
+ declare const withRetry: <T>(fn: () => Promise<T>, config?: Partial<RetryConfig>, signal?: AbortSignal) => Promise<T>;
1946
+
1898
1947
  interface UseChatUIOptions {
1899
1948
  /** 사용 가능한 모델 목록 */
1900
1949
  models: ModelConfig[];
@@ -1928,8 +1977,38 @@ interface UseChatUIOptions {
1928
1977
  onResponseHeaders?: (headers: Record<string, string>) => void;
1929
1978
  /** 세션 변경 핸들러 */
1930
1979
  onSessionChange?: (session: ChatSession | null) => void;
1931
- /** 에러 핸들러 */
1980
+ /** 에러 핸들러 (ChatError extends Error — 하위 호환) */
1932
1981
  onError?: (error: Error) => void;
1982
+ /**
1983
+ * @description 스트리밍 chunk 타임아웃 ms (기본: 30000)
1984
+ * @Todo vibecode - reader.read() 무한 대기 방지
1985
+ */
1986
+ streamChunkTimeout?: number;
1987
+ /**
1988
+ * @description non-streaming 요청 재시도 설정 (false로 비활성화)
1989
+ * @Todo vibecode - 스트리밍은 재시도하지 않음 (부분 응답 중복 위험)
1990
+ */
1991
+ retry?: Partial<RetryConfig> | false;
1992
+ /**
1993
+ * @description 사용자 중단 시 부분 콘텐츠 콜백
1994
+ * @Todo vibecode - abort 시 누적된 partial content 보존
1995
+ */
1996
+ onAbort?: (sessionId: string, partialContent: string) => void;
1997
+ /**
1998
+ * @description 토큰 사용량 콜백 (API 응답마다 호출)
1999
+ * @Todo vibecode - Phase 2 토큰 추적
2000
+ */
2001
+ onTokenUsage?: (sessionId: string, usage: TokenUsage) => void;
2002
+ /**
2003
+ * @description 도구/스킬 재귀 호출 최대 깊이 (기본: 5)
2004
+ * @Todo vibecode - Phase 3 무한 루프 방지
2005
+ */
2006
+ maxToolCallDepth?: number;
2007
+ /**
2008
+ * @description 도구 결과 최대 문자 수 (기본: 10000)
2009
+ * @Todo vibecode - Phase 3 과대 결과 truncation
2010
+ */
2011
+ maxToolResultSize?: number;
1933
2012
  /** @Todo vibecode - 세션 제목 변경 핸들러 */
1934
2013
  onTitleChange?: (sessionId: string, newTitle: string) => void;
1935
2014
  /**
@@ -2320,6 +2399,205 @@ interface UseProjectReturn {
2320
2399
  }
2321
2400
  declare const useProject: (options: UseProjectOptions) => UseProjectReturn;
2322
2401
 
2402
+ /** SSE 파싱된 청크 데이터 */
2403
+ interface SSEChunk {
2404
+ /** 텍스트 콘텐츠 (delta) */
2405
+ content: string;
2406
+ /** thinking 모델의 reasoning 콘텐츠 */
2407
+ thinking: string;
2408
+ /** OpenAI finish_reason */
2409
+ finishReason: string | null;
2410
+ /** OpenAI delta 원본 (tool_calls 등) */
2411
+ delta: Record<string, unknown> | null;
2412
+ /** 토큰 사용량 (마지막 chunk에서 제공) */
2413
+ usage: TokenUsage | null;
2414
+ /** 파싱된 원본 JSON */
2415
+ raw: Record<string, unknown>;
2416
+ }
2417
+ /** 스트리밍 옵션 */
2418
+ interface StreamingFetchOptions {
2419
+ /** chunk 타임아웃 ms (기본: 30000) */
2420
+ chunkTimeout?: number;
2421
+ }
2422
+ /** fetch + 스트리밍 실행 옵션 */
2423
+ interface FetchSSEOptions {
2424
+ url: string;
2425
+ body: Record<string, unknown>;
2426
+ signal?: AbortSignal;
2427
+ /** 헤더 수신 콜백 */
2428
+ onHeaders?: (response: Response) => void;
2429
+ }
2430
+ /**
2431
+ * @description SSE/NDJSON 라인을 파싱하여 SSEChunk로 변환
2432
+ * @Todo vibecode - OpenAI SSE + Ollama NDJSON 호환
2433
+ */
2434
+ declare const parseSSELine: (line: string) => SSEChunk | null;
2435
+ /**
2436
+ * @description SSE Response에서 텍스트만 추출 (내부 LLM 호출용)
2437
+ * @Todo vibecode - callInternalLLM에서 사용
2438
+ */
2439
+ declare const parseSSEResponse: (response: Response) => Promise<string>;
2440
+ /**
2441
+ * @description SSE 스트리밍 fetch 훅 — fetch + reader + 타임아웃 + 파싱을 캡슐화
2442
+ * @Todo vibecode - Phase 4 스트리밍 로직 분리
2443
+ */
2444
+ declare const useStreamingFetch: (options?: StreamingFetchOptions) => {
2445
+ abortControllers: React$1.MutableRefObject<Map<string, AbortController>>;
2446
+ createAbortController: (sessionId: string) => AbortController;
2447
+ abort: (sessionId: string) => void;
2448
+ cleanup: (sessionId: string) => void;
2449
+ getSignal: (sessionId: string) => AbortSignal | undefined;
2450
+ readWithTimeout: (reader: ReadableStreamDefaultReader<Uint8Array>) => Promise<ReadableStreamReadResult<Uint8Array>>;
2451
+ streamResponse: (response: Response, onChunk: (chunk: SSEChunk) => void | "break", streamOptions?: {
2452
+ noTimeout?: boolean;
2453
+ }) => Promise<{
2454
+ usage: TokenUsage | null;
2455
+ }>;
2456
+ fetchAndStream: (fetchOptions: FetchSSEOptions, onChunk: (chunk: SSEChunk) => void | "break") => Promise<{
2457
+ usage: TokenUsage | null;
2458
+ }>;
2459
+ parseSSELine: (line: string) => SSEChunk | null;
2460
+ };
2461
+
2462
+ /**
2463
+ * @description 체크리스트 실행 로직 훅
2464
+ * @Todo vibecode - useChatUI에서 체크리스트 관련 로직을 분리한 독립 훅
2465
+ *
2466
+ * AI가 <checklist> 태그로 생성한 단계별 실행 계획을 관리:
2467
+ * - activeChecklistRef: 현재 실행 중인 체크리스트 상태 추적
2468
+ * - pendingChecklistRef: 유저 승인 대기 중인 체크리스트 (autoExecuteChecklist=false)
2469
+ * - 수동 실행 시작 / 중단 / 재시도 / 건너뛰기 핸들러
2470
+ */
2471
+
2472
+ /** @Todo vibecode - 체크리스트 항목 실행 정보 (타입에서 UI 불필요 필드 제외) */
2473
+ interface ActiveChecklistItem {
2474
+ id: string;
2475
+ title: string;
2476
+ skill?: string;
2477
+ fileIndex?: number;
2478
+ fileType?: string;
2479
+ refImage?: string;
2480
+ refStep?: number;
2481
+ }
2482
+ /** @Todo vibecode - 활성 체크리스트 실행 상태 */
2483
+ interface ActiveChecklist {
2484
+ messageId: string;
2485
+ sessionId: string;
2486
+ items: ActiveChecklistItem[];
2487
+ currentStep: number;
2488
+ stepResults: string[];
2489
+ /** @Todo vibecode - poll 감지 시 사용자 입력 대기 플래그 */
2490
+ waitingForPoll?: boolean;
2491
+ }
2492
+ /** @Todo vibecode - 대기 중인 체크리스트 (autoExecuteChecklist=false 모드) */
2493
+ interface PendingChecklist {
2494
+ messageId: string;
2495
+ sessionId: string;
2496
+ }
2497
+ /** @Todo vibecode - sendMessage 옵션 타입 */
2498
+ interface ChecklistSendMessageOptions {
2499
+ hiddenUserMessage: boolean;
2500
+ isChecklistExecution: boolean;
2501
+ checklistStep?: {
2502
+ index: number;
2503
+ title: string;
2504
+ };
2505
+ }
2506
+ /** @Todo vibecode - 첨부파일 데이터 형태 */
2507
+ interface AttachmentData {
2508
+ name: string;
2509
+ mimeType: string;
2510
+ base64: string;
2511
+ size: number;
2512
+ url?: string;
2513
+ }
2514
+ interface UseChecklistParams {
2515
+ /** @Todo vibecode - 세션 데이터 읽기용 ref */
2516
+ sessionsRef: React.RefObject<ChatSession[]>;
2517
+ /** @Todo vibecode - useMemo 의존성용 세션 state (ref만으로는 재계산 불가) */
2518
+ sessions: ChatSession[];
2519
+ /** @Todo vibecode - 세션 상태 업데이트 */
2520
+ setSessions: React.Dispatch<React.SetStateAction<ChatSession[]>>;
2521
+ /** @Todo vibecode - 체크리스트 단계 실행 시 hidden 메시지 전송 */
2522
+ sendMessage: (content: string, options: ChecklistSendMessageOptions) => Promise<void>;
2523
+ /** @Todo vibecode - 실행 중단 시 abort controller 접근 */
2524
+ abortControllers: React.RefObject<Map<string, AbortController>>;
2525
+ /** @Todo vibecode - 세션 로딩 상태 제거 */
2526
+ removeLoadingSession: (sessionId: string) => void;
2527
+ /** @Todo vibecode - ref_image 해석 결과를 __attachedImages__로 스킬에 전달 */
2528
+ pendingAttachmentDataRef: React.MutableRefObject<AttachmentData[] | null>;
2529
+ /** @Todo vibecode - 행동 패턴: 체크리스트 스킵 추적 */
2530
+ trackChecklistSkip: () => void;
2531
+ /** @Todo vibecode - ref_image/ref_step 참조를 실제 URL로 해석 */
2532
+ resolveChecklistRefImage: (item: {
2533
+ refImage?: string;
2534
+ refStep?: number;
2535
+ }, messageId: string, sessionId: string) => string | null;
2536
+ /** @Todo vibecode - 단계 실행 프롬프트 생성 */
2537
+ buildChecklistStepPrompt: (stepIndex: number, totalSteps: number, item: {
2538
+ title: string;
2539
+ skill?: string;
2540
+ fileIndex?: number;
2541
+ fileType?: string;
2542
+ refImage?: string;
2543
+ refStep?: number;
2544
+ }, isFirst: boolean, refUrl?: string | null) => string;
2545
+ }
2546
+ interface UseChecklistReturn {
2547
+ /** @Todo vibecode - 현재 실행 중인 체크리스트 상태 */
2548
+ activeChecklistRef: React.MutableRefObject<ActiveChecklist | null>;
2549
+ /** @Todo vibecode - 유저 승인 대기 중인 체크리스트 */
2550
+ pendingChecklistRef: React.MutableRefObject<PendingChecklist | null>;
2551
+ /** @Todo vibecode - 다음 AI 응답에서 checklist 파싱 스킵 */
2552
+ skipNextChecklistParsingRef: React.MutableRefObject<boolean>;
2553
+ /** @Todo vibecode - 수동 실행 시작 (autoExecuteChecklist=false 시) */
2554
+ handleChecklistStart: (messageId: string) => void;
2555
+ /** @Todo vibecode - 실행 중단 */
2556
+ handleChecklistAbort: () => void;
2557
+ /** @Todo vibecode - error 항목 재시도 */
2558
+ handleChecklistRetry: (messageId: string, stepIndex: number) => void;
2559
+ /** @Todo vibecode - pending 항목 건너뛰기 */
2560
+ handleChecklistSkip: (messageId: string, stepIndex: number) => void;
2561
+ /** @Todo vibecode - 활성 체크리스트가 포함된 메시지 (패널 자동 열기 트리거용) */
2562
+ activeChecklistMessage: ChatMessage | null;
2563
+ }
2564
+ /**
2565
+ * @description 체크리스트 실행 로직 훅
2566
+ * @Todo vibecode - 수동 시작 / 중단 / 재시도 / 건너뛰기 + ref 상태 관리
2567
+ */
2568
+ declare const useChecklist: ({ sessionsRef, sessions, setSessions, sendMessage, abortControllers, removeLoadingSession, pendingAttachmentDataRef, trackChecklistSkip, resolveChecklistRefImage, buildChecklistStepPrompt, }: UseChecklistParams) => UseChecklistReturn;
2569
+
2570
+ /**
2571
+ * @description 콘텐츠 파싱 훅 — AI 응답 후처리 로직을 useChatUI에서 분리
2572
+ * @Todo vibecode - poll, checklist, artifact, ref_context 파싱을 세션 반영 로직과 함께 제공
2573
+ *
2574
+ * 순수 로직 추출 훅: 자체 상태를 소유하지 않으며, sessions/setSessions를 주입받아 동작합니다.
2575
+ */
2576
+
2577
+ interface UseContentParsersOptions {
2578
+ sessionsRef: React.RefObject<ChatSession[]>;
2579
+ setSessions: React.Dispatch<React.SetStateAction<ChatSession[]>>;
2580
+ }
2581
+ interface UseContentParsersReturn {
2582
+ /** AI 응답에서 poll 블록 파싱 + 세션에 반영 */
2583
+ applyPollParsing: (sessionId: string, messageId: string, content: string, skipParsing: boolean) => PollBlock | null;
2584
+ /** AI 응답에서 checklist 블록 파싱 + 세션에 반영 */
2585
+ applyChecklistParsing: (sessionId: string, messageId: string, content: string, skipParsing: boolean) => ChecklistBlock | null;
2586
+ /** AI 응답에서 artifact 파싱 + contentParts에 반영 */
2587
+ applyArtifactParsing: (sessionId: string, messageId: string, content: string) => boolean;
2588
+ /** AI 응답에서 ref_context 태그 파싱 */
2589
+ parseContextReferences: (content: string, sessionContext?: SessionContext) => {
2590
+ refs: string[];
2591
+ cleanContent: string;
2592
+ refContents: string | null;
2593
+ };
2594
+ }
2595
+ /**
2596
+ * @description AI 응답 콘텐츠에서 구조화된 블록(poll, checklist, artifact, ref_context)을 파싱하는 훅
2597
+ * @Todo vibecode - useChatUI에서 파싱 로직을 분리하여 재사용성 확보
2598
+ */
2599
+ declare const useContentParsers: ({ sessionsRef, setSessions, }: UseContentParsersOptions) => UseContentParsersReturn;
2600
+
2323
2601
  /**
2324
2602
  * @description FAB 드래그 이동 + 패널 방향 자동 전환 + 패널 리사이즈 hook
2325
2603
  * @Todo vibecode - document-level PointerEvent 기반, 외부 라이브러리 없이 구현
@@ -3113,4 +3391,33 @@ declare const DEFAULT_PROJECT_TITLE = "\uAE30\uBCF8 \uD504\uB85C\uC81D\uD2B8";
3113
3391
  */
3114
3392
  declare const migrateSessionsToProjects: (storageKey: string) => void;
3115
3393
 
3116
- export { type ActionItem, type ActionMenuProps, type AdvancedResearchOptions, type AlternativeResponse, ArtifactCard, type ArtifactCardProps, type ArtifactContentPart, type ChatAttachment, ChatFloatingWidget, type ChatFloatingWidgetProps, ChatHeader, ChatInput, type ChatMessage, type ChatProject, type ChatSession, ChatSidebar, type ChatToolDefinition, type ChatToolParameter, ChatUI, type ChatUIComponents, type ChatUIProps, type ChecklistBlock, ChecklistCard, type ChecklistCardProps, type ChecklistItem, ChecklistMiniIndicator, type ChecklistMiniIndicatorProps, ChecklistPanel, type ChecklistPanelProps, CompactChatView, type CompactChatViewProps, ContentPartRenderer, type ContentPartRendererProps, type ConversationSearchOptions, type ConversationSearchSkillOptions, type ConversationSnippet, DEFAULT_PROJECT_ID, DEFAULT_PROJECT_TITLE, type DeepResearchCallbacks, type DeepResearchProgress, DeepResearchProgressUI, DevDiveAvatar, type DevDiveAvatarProps, DevDiveFabCharacter, type DevDiveFabCharacterProps, EmptyState, type EmptyStateProps, type ErrorContentPart, FileContentCard, type FileContentCardProps, type FileContentPart, FloatingFab, type FloatingFabProps, type FloatingNotification, FloatingPanel, type FloatingPanelProps, type FloatingPosition, FloatingTabBar, type FloatingTabBarProps, type FloatingTabItem, type FloatingWidgetTab, type HeaderProps, Icon, type IconName, type IconProps, IconSvg, ImageContentCard, type ImageContentCardProps, type ImageContentPart, ImageErrorContext, type ImageErrorHandler, 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 OpenAITool, type PatternAnalysisResult, 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 ResizeEdge, ResizeHandles, type ResizeHandlesProps, type ResponseStyle, type SearchResult, type SearchResultContentPart, type SendMessageParams, type SendMessageResponse, type SendMessageResponseBase, type SendMessageResponseWithHeaders, type SessionContext, type SessionContextItem, 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 SuggestedPrompt, type SystemPromptControl, type TextContentPart, type ThemeConfig, type ThemeMode, type ToolCallAccumulator, type ToolCallResult, type ToolLoadingContentPart, type ToolResultContentPart, type UseChatUIOptions, type UseChatUIReturn, type UseDeepResearchOptions, type UseDragResizeOptions, type UseDragResizeReturn, type UseFloatingWidgetOptions, type UseFloatingWidgetReturn, type UseObserverOptions, type UseObserverReturn, type UseProjectOptions, type UseProjectReturn, type UseSkillsOptions, type UseSkillsReturn, type UserProfile, type WorkflowSuggestion, convertSkillsToOpenAITools, convertToolsToSkills, createAdvancedResearchSkill, createConversationSearchSkill, createDeepResearchSkill, migrateSessionsToProjects, useChatUI, useDeepResearch, useDragResize, useFloatingWidget, useImageError, useObserver, useProject, useSkills };
3394
+ /**
3395
+ * @description 에러 분류 유틸리티 — fetch 에러를 구조화된 ChatError로 변환
3396
+ * @Todo vibecode - Phase 1 에러 분류 체계
3397
+ */
3398
+ /** 에러 코드 분류 */
3399
+ type ChatErrorCode = 'NETWORK' | 'AUTH' | 'RATE_LIMIT' | 'TIMEOUT' | 'API' | 'ABORT' | 'UNKNOWN';
3400
+ /**
3401
+ * @description 구조화된 에러 — Error를 extend하여 기존 onError 콜백과 하위 호환
3402
+ */
3403
+ declare class ChatError extends Error {
3404
+ readonly code: ChatErrorCode;
3405
+ readonly retryable: boolean;
3406
+ readonly statusCode?: number;
3407
+ readonly originalError?: unknown;
3408
+ constructor(code: ChatErrorCode, message: string, options?: {
3409
+ statusCode?: number;
3410
+ originalError?: unknown;
3411
+ retryable?: boolean;
3412
+ });
3413
+ }
3414
+ /**
3415
+ * @description fetch 에러 또는 Response를 ChatError로 변환
3416
+ */
3417
+ declare const classifyFetchError: (error: unknown, response?: Response | null) => ChatError;
3418
+ /**
3419
+ * @description 스트리밍 chunk 타임아웃 에러 생성
3420
+ */
3421
+ declare const createTimeoutError: (timeoutMs: number) => ChatError;
3422
+
3423
+ export { type ActionItem, type ActionMenuProps, type ActiveChecklist, type AdvancedResearchOptions, type AlternativeResponse, ArtifactCard, type ArtifactCardProps, type ArtifactContentPart, type ChatAttachment, ChatError, type ChatErrorCode, ChatFloatingWidget, type ChatFloatingWidgetProps, ChatHeader, ChatInput, type ChatMessage, type ChatProject, type ChatSession, ChatSidebar, type ChatToolDefinition, type ChatToolParameter, ChatUI, type ChatUIComponents, type ChatUIProps, type ChecklistBlock, ChecklistCard, type ChecklistCardProps, type ChecklistItem, ChecklistMiniIndicator, type ChecklistMiniIndicatorProps, ChecklistPanel, type ChecklistPanelProps, CompactChatView, type CompactChatViewProps, ContentPartRenderer, type ContentPartRendererProps, type ConversationSearchOptions, type ConversationSearchSkillOptions, type ConversationSnippet, DEFAULT_PROJECT_ID, DEFAULT_PROJECT_TITLE, DEFAULT_RETRY_CONFIG, type DeepResearchCallbacks, type DeepResearchProgress, DeepResearchProgressUI, DevDiveAvatar, type DevDiveAvatarProps, DevDiveFabCharacter, type DevDiveFabCharacterProps, EmptyState, type EmptyStateProps, type ErrorContentPart, type FetchSSEOptions, FileContentCard, type FileContentCardProps, type FileContentPart, FloatingFab, type FloatingFabProps, type FloatingNotification, FloatingPanel, type FloatingPanelProps, type FloatingPosition, FloatingTabBar, type FloatingTabBarProps, type FloatingTabItem, type FloatingWidgetTab, type HeaderProps, Icon, type IconName, type IconProps, IconSvg, ImageContentCard, type ImageContentCardProps, type ImageContentPart, ImageErrorContext, type ImageErrorHandler, 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 OpenAITool, type PatternAnalysisResult, 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 ResizeEdge, ResizeHandles, type ResizeHandlesProps, type ResponseStyle, type RetryConfig, type SSEChunk, type SearchResult, type SearchResultContentPart, type SendMessageParams, type SendMessageResponse, type SendMessageResponseBase, type SendMessageResponseWithHeaders, type SessionContext, type SessionContextItem, type SessionTokenStats, 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 StreamingFetchOptions, type SubAgentProgress, type SuggestedPrompt, type SystemPromptControl, type TextContentPart, type ThemeConfig, type ThemeMode, type TokenUsage, type ToolCallAccumulator, type ToolCallResult, type ToolLoadingContentPart, type ToolResultContentPart, type UseChatUIOptions, type UseChatUIReturn, type UseChecklistParams, type UseChecklistReturn, type UseContentParsersOptions, type UseContentParsersReturn, type UseDeepResearchOptions, type UseDragResizeOptions, type UseDragResizeReturn, type UseFloatingWidgetOptions, type UseFloatingWidgetReturn, type UseObserverOptions, type UseObserverReturn, type UseProjectOptions, type UseProjectReturn, type UseSkillsOptions, type UseSkillsReturn, type UserProfile, type WorkflowSuggestion, classifyFetchError, convertSkillsToOpenAITools, convertToolsToSkills, createAdvancedResearchSkill, createConversationSearchSkill, createDeepResearchSkill, createTimeoutError, migrateSessionsToProjects, parseSSELine, parseSSEResponse, useChatUI, useChecklist, useContentParsers, useDeepResearch, useDragResize, useFloatingWidget, useImageError, useObserver, useProject, useSkills, useStreamingFetch, withRetry };