@gendive/chatllm 0.16.1 → 0.17.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.
- package/dist/react/index.d.mts +76 -1
- package/dist/react/index.d.ts +76 -1
- package/dist/react/index.js +296 -67
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +296 -67
- package/dist/react/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/react/index.d.mts
CHANGED
|
@@ -386,6 +386,21 @@ interface ChatToolDefinition {
|
|
|
386
386
|
label?: string;
|
|
387
387
|
/** @Todo vibecode - UI 표시용 아이콘 ('image', 'search', 'code', 'file') */
|
|
388
388
|
icon?: string;
|
|
389
|
+
/**
|
|
390
|
+
* @description 트리거 방식 (기본: 'both')
|
|
391
|
+
* @Todo vibecode - 'attachment' 시 파일 첨부 자동 실행
|
|
392
|
+
*/
|
|
393
|
+
trigger?: 'both' | 'attachment';
|
|
394
|
+
/**
|
|
395
|
+
* @description 허용 파일 타입 (attachment trigger 전용)
|
|
396
|
+
* @Todo vibecode - MIME 와일드카드 ('image/*'), 확장자 ('.pdf') 지원
|
|
397
|
+
*/
|
|
398
|
+
acceptedTypes?: string[];
|
|
399
|
+
/**
|
|
400
|
+
* @description 파일 첨부 시 File 객체를 base64 문자열로 자동 변환
|
|
401
|
+
* @Todo vibecode - true 시 execute()에 { name, mimeType, base64, size } 형태로 전달
|
|
402
|
+
*/
|
|
403
|
+
autoConvertBase64?: boolean;
|
|
389
404
|
}
|
|
390
405
|
interface ChatMessage {
|
|
391
406
|
id: string;
|
|
@@ -457,8 +472,9 @@ interface ActionItem {
|
|
|
457
472
|
* auto: AI가 <skill_use> 태그로 자동 호출
|
|
458
473
|
* manual: 사용자가 UI에서 직접 선택
|
|
459
474
|
* both: 양쪽 모두 가능
|
|
475
|
+
* attachment: 파일 첨부 시 자동 실행 (AI 호출 불가, UI 메뉴 미표시)
|
|
460
476
|
*/
|
|
461
|
-
type SkillTrigger = 'auto' | 'manual' | 'both';
|
|
477
|
+
type SkillTrigger = 'auto' | 'manual' | 'both' | 'attachment';
|
|
462
478
|
/**
|
|
463
479
|
* @description 스킬 실행 결과
|
|
464
480
|
*/
|
|
@@ -524,6 +540,17 @@ interface SkillConfig<TParams = Record<string, unknown>> {
|
|
|
524
540
|
label: string;
|
|
525
541
|
/** 비활성화 여부 */
|
|
526
542
|
disabled?: boolean;
|
|
543
|
+
/**
|
|
544
|
+
* @description 허용 파일 타입 (attachment trigger 전용)
|
|
545
|
+
* @Todo vibecode - MIME 와일드카드 ('image/*'), 확장자 ('.pdf') 지원
|
|
546
|
+
* @example ['image/*', 'application/pdf', '.docx']
|
|
547
|
+
*/
|
|
548
|
+
acceptedTypes?: string[];
|
|
549
|
+
/**
|
|
550
|
+
* @description 파일 첨부 시 File 객체를 base64 문자열로 자동 변환
|
|
551
|
+
* @Todo vibecode - true 시 execute()에 { name, mimeType, base64, size } 형태로 전달
|
|
552
|
+
*/
|
|
553
|
+
autoConvertBase64?: boolean;
|
|
527
554
|
}
|
|
528
555
|
/**
|
|
529
556
|
* @description 스킬 실행 상태 (메시지에 첨부)
|
|
@@ -559,6 +586,14 @@ interface ModelConfig {
|
|
|
559
586
|
name: string;
|
|
560
587
|
provider: ProviderType;
|
|
561
588
|
description?: string;
|
|
589
|
+
/** @Todo vibecode - UI 표시용 아이콘 (URL 또는 아이콘 이름) */
|
|
590
|
+
icon?: string;
|
|
591
|
+
/** @Todo vibecode - 최대 출력 토큰 수 */
|
|
592
|
+
maxTokens?: number;
|
|
593
|
+
/** @Todo vibecode - 컨텍스트 윈도우 크기 (토큰) */
|
|
594
|
+
contextWindow?: number;
|
|
595
|
+
/** @Todo vibecode - 호스트 커스텀 필드 허용 */
|
|
596
|
+
[key: string]: unknown;
|
|
562
597
|
}
|
|
563
598
|
interface PromptTemplate {
|
|
564
599
|
id: string;
|
|
@@ -741,6 +776,21 @@ interface ChatUIProps {
|
|
|
741
776
|
* @Todo vibecode - 라이브러리가 도구 호출 판단 후 호스트에 실행 위임
|
|
742
777
|
*/
|
|
743
778
|
onToolCall?: (name: string, params: Record<string, unknown>) => Promise<ToolCallResult>;
|
|
779
|
+
/**
|
|
780
|
+
* @description 도구/스킬 실행 후 AI 후속 스트리밍 계속 여부 (기본: true)
|
|
781
|
+
* @Todo vibecode - false 시 도구 결과만 표시하고 AI 후속 응답 생략
|
|
782
|
+
*/
|
|
783
|
+
continueAfterToolResult?: boolean;
|
|
784
|
+
/**
|
|
785
|
+
* @description 스킬 실행 완료 시 콜백 (개별 스킬별 제어)
|
|
786
|
+
* @Todo vibecode - 'continue' 반환 시 AI 후속 응답, 'stop' 반환 시 중단
|
|
787
|
+
*/
|
|
788
|
+
onSkillComplete?: (skillName: string, result: SkillExecutionResult) => 'continue' | 'stop';
|
|
789
|
+
/**
|
|
790
|
+
* @description 모델 목록 비동기 로드 콜백
|
|
791
|
+
* @Todo vibecode - 마운트 시 호출, 반환된 모델 목록이 models prop을 대체
|
|
792
|
+
*/
|
|
793
|
+
onLoadModels?: () => Promise<ModelConfig[]>;
|
|
744
794
|
/**
|
|
745
795
|
* @description 프로젝트 기능 활성화 여부 (기본: false)
|
|
746
796
|
* @Todo vibecode - true 시 프로젝트 그룹핑, 지침, 메모리 계층 활성화
|
|
@@ -854,6 +904,11 @@ interface SidebarProps {
|
|
|
854
904
|
renderAfterHeader?: () => React.ReactNode;
|
|
855
905
|
/** @Todo vibecode - 세션 목록 아래, 사이드바 하단에 커스텀 콘텐츠 렌더링 */
|
|
856
906
|
renderFooter?: () => React.ReactNode;
|
|
907
|
+
/**
|
|
908
|
+
* @description 세션 목록 로딩 상태
|
|
909
|
+
* @Todo vibecode - true 시 스켈레톤 UI 표시
|
|
910
|
+
*/
|
|
911
|
+
isLoading?: boolean;
|
|
857
912
|
}
|
|
858
913
|
interface MessageListProps {
|
|
859
914
|
messages: ChatMessage[];
|
|
@@ -1089,6 +1144,11 @@ interface UseChatUIReturn {
|
|
|
1089
1144
|
* @Todo vibecode - 외부 스토리지 사용 시 세션 상세 로드 중
|
|
1090
1145
|
*/
|
|
1091
1146
|
isSessionLoading: boolean;
|
|
1147
|
+
/**
|
|
1148
|
+
* @description 모델 목록 로딩 상태
|
|
1149
|
+
* @Todo vibecode - onLoadModels 실행 중
|
|
1150
|
+
*/
|
|
1151
|
+
isModelsLoading: boolean;
|
|
1092
1152
|
/**
|
|
1093
1153
|
* @description 심층연구 모드 활성화 여부
|
|
1094
1154
|
* @Todo vibecode - 심층연구 버튼 토글 상태
|
|
@@ -1345,6 +1405,21 @@ interface UseChatUIOptions {
|
|
|
1345
1405
|
onAddProjectFile?: (projectId: string, file: File) => Promise<ProjectFile>;
|
|
1346
1406
|
/** @Todo vibecode - 프로젝트 파일 삭제 콜백 */
|
|
1347
1407
|
onDeleteProjectFile?: (projectId: string, fileId: string) => Promise<void>;
|
|
1408
|
+
/**
|
|
1409
|
+
* @description 도구 실행 후 AI 스트리밍 계속 여부 (기본: true, 하위호환)
|
|
1410
|
+
* @Todo vibecode - false 시 도구 결과만 표시하고 AI 후속 응답 생략
|
|
1411
|
+
*/
|
|
1412
|
+
continueAfterToolResult?: boolean;
|
|
1413
|
+
/**
|
|
1414
|
+
* @description 스킬 완료 시 콜백 (스트림 제어)
|
|
1415
|
+
* @Todo vibecode - 'continue' 반환 시 AI 응답 생성, 'stop' 반환 시 중단
|
|
1416
|
+
*/
|
|
1417
|
+
onSkillComplete?: (skillName: string, result: SkillExecutionResult) => 'continue' | 'stop';
|
|
1418
|
+
/**
|
|
1419
|
+
* @description 모델 목록 비동기 로드 콜백
|
|
1420
|
+
* @Todo vibecode - 제공 시 마운트 시 호출, 완료 전까지 models prop 사용
|
|
1421
|
+
*/
|
|
1422
|
+
onLoadModels?: () => Promise<ModelConfig[]>;
|
|
1348
1423
|
}
|
|
1349
1424
|
declare const useChatUI: (options: UseChatUIOptions) => UseChatUIReturn;
|
|
1350
1425
|
|
package/dist/react/index.d.ts
CHANGED
|
@@ -386,6 +386,21 @@ interface ChatToolDefinition {
|
|
|
386
386
|
label?: string;
|
|
387
387
|
/** @Todo vibecode - UI 표시용 아이콘 ('image', 'search', 'code', 'file') */
|
|
388
388
|
icon?: string;
|
|
389
|
+
/**
|
|
390
|
+
* @description 트리거 방식 (기본: 'both')
|
|
391
|
+
* @Todo vibecode - 'attachment' 시 파일 첨부 자동 실행
|
|
392
|
+
*/
|
|
393
|
+
trigger?: 'both' | 'attachment';
|
|
394
|
+
/**
|
|
395
|
+
* @description 허용 파일 타입 (attachment trigger 전용)
|
|
396
|
+
* @Todo vibecode - MIME 와일드카드 ('image/*'), 확장자 ('.pdf') 지원
|
|
397
|
+
*/
|
|
398
|
+
acceptedTypes?: string[];
|
|
399
|
+
/**
|
|
400
|
+
* @description 파일 첨부 시 File 객체를 base64 문자열로 자동 변환
|
|
401
|
+
* @Todo vibecode - true 시 execute()에 { name, mimeType, base64, size } 형태로 전달
|
|
402
|
+
*/
|
|
403
|
+
autoConvertBase64?: boolean;
|
|
389
404
|
}
|
|
390
405
|
interface ChatMessage {
|
|
391
406
|
id: string;
|
|
@@ -457,8 +472,9 @@ interface ActionItem {
|
|
|
457
472
|
* auto: AI가 <skill_use> 태그로 자동 호출
|
|
458
473
|
* manual: 사용자가 UI에서 직접 선택
|
|
459
474
|
* both: 양쪽 모두 가능
|
|
475
|
+
* attachment: 파일 첨부 시 자동 실행 (AI 호출 불가, UI 메뉴 미표시)
|
|
460
476
|
*/
|
|
461
|
-
type SkillTrigger = 'auto' | 'manual' | 'both';
|
|
477
|
+
type SkillTrigger = 'auto' | 'manual' | 'both' | 'attachment';
|
|
462
478
|
/**
|
|
463
479
|
* @description 스킬 실행 결과
|
|
464
480
|
*/
|
|
@@ -524,6 +540,17 @@ interface SkillConfig<TParams = Record<string, unknown>> {
|
|
|
524
540
|
label: string;
|
|
525
541
|
/** 비활성화 여부 */
|
|
526
542
|
disabled?: boolean;
|
|
543
|
+
/**
|
|
544
|
+
* @description 허용 파일 타입 (attachment trigger 전용)
|
|
545
|
+
* @Todo vibecode - MIME 와일드카드 ('image/*'), 확장자 ('.pdf') 지원
|
|
546
|
+
* @example ['image/*', 'application/pdf', '.docx']
|
|
547
|
+
*/
|
|
548
|
+
acceptedTypes?: string[];
|
|
549
|
+
/**
|
|
550
|
+
* @description 파일 첨부 시 File 객체를 base64 문자열로 자동 변환
|
|
551
|
+
* @Todo vibecode - true 시 execute()에 { name, mimeType, base64, size } 형태로 전달
|
|
552
|
+
*/
|
|
553
|
+
autoConvertBase64?: boolean;
|
|
527
554
|
}
|
|
528
555
|
/**
|
|
529
556
|
* @description 스킬 실행 상태 (메시지에 첨부)
|
|
@@ -559,6 +586,14 @@ interface ModelConfig {
|
|
|
559
586
|
name: string;
|
|
560
587
|
provider: ProviderType;
|
|
561
588
|
description?: string;
|
|
589
|
+
/** @Todo vibecode - UI 표시용 아이콘 (URL 또는 아이콘 이름) */
|
|
590
|
+
icon?: string;
|
|
591
|
+
/** @Todo vibecode - 최대 출력 토큰 수 */
|
|
592
|
+
maxTokens?: number;
|
|
593
|
+
/** @Todo vibecode - 컨텍스트 윈도우 크기 (토큰) */
|
|
594
|
+
contextWindow?: number;
|
|
595
|
+
/** @Todo vibecode - 호스트 커스텀 필드 허용 */
|
|
596
|
+
[key: string]: unknown;
|
|
562
597
|
}
|
|
563
598
|
interface PromptTemplate {
|
|
564
599
|
id: string;
|
|
@@ -741,6 +776,21 @@ interface ChatUIProps {
|
|
|
741
776
|
* @Todo vibecode - 라이브러리가 도구 호출 판단 후 호스트에 실행 위임
|
|
742
777
|
*/
|
|
743
778
|
onToolCall?: (name: string, params: Record<string, unknown>) => Promise<ToolCallResult>;
|
|
779
|
+
/**
|
|
780
|
+
* @description 도구/스킬 실행 후 AI 후속 스트리밍 계속 여부 (기본: true)
|
|
781
|
+
* @Todo vibecode - false 시 도구 결과만 표시하고 AI 후속 응답 생략
|
|
782
|
+
*/
|
|
783
|
+
continueAfterToolResult?: boolean;
|
|
784
|
+
/**
|
|
785
|
+
* @description 스킬 실행 완료 시 콜백 (개별 스킬별 제어)
|
|
786
|
+
* @Todo vibecode - 'continue' 반환 시 AI 후속 응답, 'stop' 반환 시 중단
|
|
787
|
+
*/
|
|
788
|
+
onSkillComplete?: (skillName: string, result: SkillExecutionResult) => 'continue' | 'stop';
|
|
789
|
+
/**
|
|
790
|
+
* @description 모델 목록 비동기 로드 콜백
|
|
791
|
+
* @Todo vibecode - 마운트 시 호출, 반환된 모델 목록이 models prop을 대체
|
|
792
|
+
*/
|
|
793
|
+
onLoadModels?: () => Promise<ModelConfig[]>;
|
|
744
794
|
/**
|
|
745
795
|
* @description 프로젝트 기능 활성화 여부 (기본: false)
|
|
746
796
|
* @Todo vibecode - true 시 프로젝트 그룹핑, 지침, 메모리 계층 활성화
|
|
@@ -854,6 +904,11 @@ interface SidebarProps {
|
|
|
854
904
|
renderAfterHeader?: () => React.ReactNode;
|
|
855
905
|
/** @Todo vibecode - 세션 목록 아래, 사이드바 하단에 커스텀 콘텐츠 렌더링 */
|
|
856
906
|
renderFooter?: () => React.ReactNode;
|
|
907
|
+
/**
|
|
908
|
+
* @description 세션 목록 로딩 상태
|
|
909
|
+
* @Todo vibecode - true 시 스켈레톤 UI 표시
|
|
910
|
+
*/
|
|
911
|
+
isLoading?: boolean;
|
|
857
912
|
}
|
|
858
913
|
interface MessageListProps {
|
|
859
914
|
messages: ChatMessage[];
|
|
@@ -1089,6 +1144,11 @@ interface UseChatUIReturn {
|
|
|
1089
1144
|
* @Todo vibecode - 외부 스토리지 사용 시 세션 상세 로드 중
|
|
1090
1145
|
*/
|
|
1091
1146
|
isSessionLoading: boolean;
|
|
1147
|
+
/**
|
|
1148
|
+
* @description 모델 목록 로딩 상태
|
|
1149
|
+
* @Todo vibecode - onLoadModels 실행 중
|
|
1150
|
+
*/
|
|
1151
|
+
isModelsLoading: boolean;
|
|
1092
1152
|
/**
|
|
1093
1153
|
* @description 심층연구 모드 활성화 여부
|
|
1094
1154
|
* @Todo vibecode - 심층연구 버튼 토글 상태
|
|
@@ -1345,6 +1405,21 @@ interface UseChatUIOptions {
|
|
|
1345
1405
|
onAddProjectFile?: (projectId: string, file: File) => Promise<ProjectFile>;
|
|
1346
1406
|
/** @Todo vibecode - 프로젝트 파일 삭제 콜백 */
|
|
1347
1407
|
onDeleteProjectFile?: (projectId: string, fileId: string) => Promise<void>;
|
|
1408
|
+
/**
|
|
1409
|
+
* @description 도구 실행 후 AI 스트리밍 계속 여부 (기본: true, 하위호환)
|
|
1410
|
+
* @Todo vibecode - false 시 도구 결과만 표시하고 AI 후속 응답 생략
|
|
1411
|
+
*/
|
|
1412
|
+
continueAfterToolResult?: boolean;
|
|
1413
|
+
/**
|
|
1414
|
+
* @description 스킬 완료 시 콜백 (스트림 제어)
|
|
1415
|
+
* @Todo vibecode - 'continue' 반환 시 AI 응답 생성, 'stop' 반환 시 중단
|
|
1416
|
+
*/
|
|
1417
|
+
onSkillComplete?: (skillName: string, result: SkillExecutionResult) => 'continue' | 'stop';
|
|
1418
|
+
/**
|
|
1419
|
+
* @description 모델 목록 비동기 로드 콜백
|
|
1420
|
+
* @Todo vibecode - 제공 시 마운트 시 호출, 완료 전까지 models prop 사용
|
|
1421
|
+
*/
|
|
1422
|
+
onLoadModels?: () => Promise<ModelConfig[]>;
|
|
1348
1423
|
}
|
|
1349
1424
|
declare const useChatUI: (options: UseChatUIOptions) => UseChatUIReturn;
|
|
1350
1425
|
|