@gendive/chatllm 0.16.0 → 0.17.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 +58 -1
- package/dist/react/index.d.ts +58 -1
- package/dist/react/index.js +301 -90
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.mjs +301 -90
- package/dist/react/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/react/index.d.mts
CHANGED
|
@@ -386,6 +386,16 @@ 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[];
|
|
389
399
|
}
|
|
390
400
|
interface ChatMessage {
|
|
391
401
|
id: string;
|
|
@@ -457,8 +467,9 @@ interface ActionItem {
|
|
|
457
467
|
* auto: AI가 <skill_use> 태그로 자동 호출
|
|
458
468
|
* manual: 사용자가 UI에서 직접 선택
|
|
459
469
|
* both: 양쪽 모두 가능
|
|
470
|
+
* attachment: 파일 첨부 시 자동 실행 (AI 호출 불가, UI 메뉴 미표시)
|
|
460
471
|
*/
|
|
461
|
-
type SkillTrigger = 'auto' | 'manual' | 'both';
|
|
472
|
+
type SkillTrigger = 'auto' | 'manual' | 'both' | 'attachment';
|
|
462
473
|
/**
|
|
463
474
|
* @description 스킬 실행 결과
|
|
464
475
|
*/
|
|
@@ -524,6 +535,12 @@ interface SkillConfig<TParams = Record<string, unknown>> {
|
|
|
524
535
|
label: string;
|
|
525
536
|
/** 비활성화 여부 */
|
|
526
537
|
disabled?: boolean;
|
|
538
|
+
/**
|
|
539
|
+
* @description 허용 파일 타입 (attachment trigger 전용)
|
|
540
|
+
* @Todo vibecode - MIME 와일드카드 ('image/*'), 확장자 ('.pdf') 지원
|
|
541
|
+
* @example ['image/*', 'application/pdf', '.docx']
|
|
542
|
+
*/
|
|
543
|
+
acceptedTypes?: string[];
|
|
527
544
|
}
|
|
528
545
|
/**
|
|
529
546
|
* @description 스킬 실행 상태 (메시지에 첨부)
|
|
@@ -741,6 +758,21 @@ interface ChatUIProps {
|
|
|
741
758
|
* @Todo vibecode - 라이브러리가 도구 호출 판단 후 호스트에 실행 위임
|
|
742
759
|
*/
|
|
743
760
|
onToolCall?: (name: string, params: Record<string, unknown>) => Promise<ToolCallResult>;
|
|
761
|
+
/**
|
|
762
|
+
* @description 도구/스킬 실행 후 AI 후속 스트리밍 계속 여부 (기본: true)
|
|
763
|
+
* @Todo vibecode - false 시 도구 결과만 표시하고 AI 후속 응답 생략
|
|
764
|
+
*/
|
|
765
|
+
continueAfterToolResult?: boolean;
|
|
766
|
+
/**
|
|
767
|
+
* @description 스킬 실행 완료 시 콜백 (개별 스킬별 제어)
|
|
768
|
+
* @Todo vibecode - 'continue' 반환 시 AI 후속 응답, 'stop' 반환 시 중단
|
|
769
|
+
*/
|
|
770
|
+
onSkillComplete?: (skillName: string, result: SkillExecutionResult) => 'continue' | 'stop';
|
|
771
|
+
/**
|
|
772
|
+
* @description 모델 목록 비동기 로드 콜백
|
|
773
|
+
* @Todo vibecode - 마운트 시 호출, 반환된 모델 목록이 models prop을 대체
|
|
774
|
+
*/
|
|
775
|
+
onLoadModels?: () => Promise<ModelConfig[]>;
|
|
744
776
|
/**
|
|
745
777
|
* @description 프로젝트 기능 활성화 여부 (기본: false)
|
|
746
778
|
* @Todo vibecode - true 시 프로젝트 그룹핑, 지침, 메모리 계층 활성화
|
|
@@ -854,6 +886,11 @@ interface SidebarProps {
|
|
|
854
886
|
renderAfterHeader?: () => React.ReactNode;
|
|
855
887
|
/** @Todo vibecode - 세션 목록 아래, 사이드바 하단에 커스텀 콘텐츠 렌더링 */
|
|
856
888
|
renderFooter?: () => React.ReactNode;
|
|
889
|
+
/**
|
|
890
|
+
* @description 세션 목록 로딩 상태
|
|
891
|
+
* @Todo vibecode - true 시 스켈레톤 UI 표시
|
|
892
|
+
*/
|
|
893
|
+
isLoading?: boolean;
|
|
857
894
|
}
|
|
858
895
|
interface MessageListProps {
|
|
859
896
|
messages: ChatMessage[];
|
|
@@ -1089,6 +1126,11 @@ interface UseChatUIReturn {
|
|
|
1089
1126
|
* @Todo vibecode - 외부 스토리지 사용 시 세션 상세 로드 중
|
|
1090
1127
|
*/
|
|
1091
1128
|
isSessionLoading: boolean;
|
|
1129
|
+
/**
|
|
1130
|
+
* @description 모델 목록 로딩 상태
|
|
1131
|
+
* @Todo vibecode - onLoadModels 실행 중
|
|
1132
|
+
*/
|
|
1133
|
+
isModelsLoading: boolean;
|
|
1092
1134
|
/**
|
|
1093
1135
|
* @description 심층연구 모드 활성화 여부
|
|
1094
1136
|
* @Todo vibecode - 심층연구 버튼 토글 상태
|
|
@@ -1345,6 +1387,21 @@ interface UseChatUIOptions {
|
|
|
1345
1387
|
onAddProjectFile?: (projectId: string, file: File) => Promise<ProjectFile>;
|
|
1346
1388
|
/** @Todo vibecode - 프로젝트 파일 삭제 콜백 */
|
|
1347
1389
|
onDeleteProjectFile?: (projectId: string, fileId: string) => Promise<void>;
|
|
1390
|
+
/**
|
|
1391
|
+
* @description 도구 실행 후 AI 스트리밍 계속 여부 (기본: true, 하위호환)
|
|
1392
|
+
* @Todo vibecode - false 시 도구 결과만 표시하고 AI 후속 응답 생략
|
|
1393
|
+
*/
|
|
1394
|
+
continueAfterToolResult?: boolean;
|
|
1395
|
+
/**
|
|
1396
|
+
* @description 스킬 완료 시 콜백 (스트림 제어)
|
|
1397
|
+
* @Todo vibecode - 'continue' 반환 시 AI 응답 생성, 'stop' 반환 시 중단
|
|
1398
|
+
*/
|
|
1399
|
+
onSkillComplete?: (skillName: string, result: SkillExecutionResult) => 'continue' | 'stop';
|
|
1400
|
+
/**
|
|
1401
|
+
* @description 모델 목록 비동기 로드 콜백
|
|
1402
|
+
* @Todo vibecode - 제공 시 마운트 시 호출, 완료 전까지 models prop 사용
|
|
1403
|
+
*/
|
|
1404
|
+
onLoadModels?: () => Promise<ModelConfig[]>;
|
|
1348
1405
|
}
|
|
1349
1406
|
declare const useChatUI: (options: UseChatUIOptions) => UseChatUIReturn;
|
|
1350
1407
|
|
package/dist/react/index.d.ts
CHANGED
|
@@ -386,6 +386,16 @@ 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[];
|
|
389
399
|
}
|
|
390
400
|
interface ChatMessage {
|
|
391
401
|
id: string;
|
|
@@ -457,8 +467,9 @@ interface ActionItem {
|
|
|
457
467
|
* auto: AI가 <skill_use> 태그로 자동 호출
|
|
458
468
|
* manual: 사용자가 UI에서 직접 선택
|
|
459
469
|
* both: 양쪽 모두 가능
|
|
470
|
+
* attachment: 파일 첨부 시 자동 실행 (AI 호출 불가, UI 메뉴 미표시)
|
|
460
471
|
*/
|
|
461
|
-
type SkillTrigger = 'auto' | 'manual' | 'both';
|
|
472
|
+
type SkillTrigger = 'auto' | 'manual' | 'both' | 'attachment';
|
|
462
473
|
/**
|
|
463
474
|
* @description 스킬 실행 결과
|
|
464
475
|
*/
|
|
@@ -524,6 +535,12 @@ interface SkillConfig<TParams = Record<string, unknown>> {
|
|
|
524
535
|
label: string;
|
|
525
536
|
/** 비활성화 여부 */
|
|
526
537
|
disabled?: boolean;
|
|
538
|
+
/**
|
|
539
|
+
* @description 허용 파일 타입 (attachment trigger 전용)
|
|
540
|
+
* @Todo vibecode - MIME 와일드카드 ('image/*'), 확장자 ('.pdf') 지원
|
|
541
|
+
* @example ['image/*', 'application/pdf', '.docx']
|
|
542
|
+
*/
|
|
543
|
+
acceptedTypes?: string[];
|
|
527
544
|
}
|
|
528
545
|
/**
|
|
529
546
|
* @description 스킬 실행 상태 (메시지에 첨부)
|
|
@@ -741,6 +758,21 @@ interface ChatUIProps {
|
|
|
741
758
|
* @Todo vibecode - 라이브러리가 도구 호출 판단 후 호스트에 실행 위임
|
|
742
759
|
*/
|
|
743
760
|
onToolCall?: (name: string, params: Record<string, unknown>) => Promise<ToolCallResult>;
|
|
761
|
+
/**
|
|
762
|
+
* @description 도구/스킬 실행 후 AI 후속 스트리밍 계속 여부 (기본: true)
|
|
763
|
+
* @Todo vibecode - false 시 도구 결과만 표시하고 AI 후속 응답 생략
|
|
764
|
+
*/
|
|
765
|
+
continueAfterToolResult?: boolean;
|
|
766
|
+
/**
|
|
767
|
+
* @description 스킬 실행 완료 시 콜백 (개별 스킬별 제어)
|
|
768
|
+
* @Todo vibecode - 'continue' 반환 시 AI 후속 응답, 'stop' 반환 시 중단
|
|
769
|
+
*/
|
|
770
|
+
onSkillComplete?: (skillName: string, result: SkillExecutionResult) => 'continue' | 'stop';
|
|
771
|
+
/**
|
|
772
|
+
* @description 모델 목록 비동기 로드 콜백
|
|
773
|
+
* @Todo vibecode - 마운트 시 호출, 반환된 모델 목록이 models prop을 대체
|
|
774
|
+
*/
|
|
775
|
+
onLoadModels?: () => Promise<ModelConfig[]>;
|
|
744
776
|
/**
|
|
745
777
|
* @description 프로젝트 기능 활성화 여부 (기본: false)
|
|
746
778
|
* @Todo vibecode - true 시 프로젝트 그룹핑, 지침, 메모리 계층 활성화
|
|
@@ -854,6 +886,11 @@ interface SidebarProps {
|
|
|
854
886
|
renderAfterHeader?: () => React.ReactNode;
|
|
855
887
|
/** @Todo vibecode - 세션 목록 아래, 사이드바 하단에 커스텀 콘텐츠 렌더링 */
|
|
856
888
|
renderFooter?: () => React.ReactNode;
|
|
889
|
+
/**
|
|
890
|
+
* @description 세션 목록 로딩 상태
|
|
891
|
+
* @Todo vibecode - true 시 스켈레톤 UI 표시
|
|
892
|
+
*/
|
|
893
|
+
isLoading?: boolean;
|
|
857
894
|
}
|
|
858
895
|
interface MessageListProps {
|
|
859
896
|
messages: ChatMessage[];
|
|
@@ -1089,6 +1126,11 @@ interface UseChatUIReturn {
|
|
|
1089
1126
|
* @Todo vibecode - 외부 스토리지 사용 시 세션 상세 로드 중
|
|
1090
1127
|
*/
|
|
1091
1128
|
isSessionLoading: boolean;
|
|
1129
|
+
/**
|
|
1130
|
+
* @description 모델 목록 로딩 상태
|
|
1131
|
+
* @Todo vibecode - onLoadModels 실행 중
|
|
1132
|
+
*/
|
|
1133
|
+
isModelsLoading: boolean;
|
|
1092
1134
|
/**
|
|
1093
1135
|
* @description 심층연구 모드 활성화 여부
|
|
1094
1136
|
* @Todo vibecode - 심층연구 버튼 토글 상태
|
|
@@ -1345,6 +1387,21 @@ interface UseChatUIOptions {
|
|
|
1345
1387
|
onAddProjectFile?: (projectId: string, file: File) => Promise<ProjectFile>;
|
|
1346
1388
|
/** @Todo vibecode - 프로젝트 파일 삭제 콜백 */
|
|
1347
1389
|
onDeleteProjectFile?: (projectId: string, fileId: string) => Promise<void>;
|
|
1390
|
+
/**
|
|
1391
|
+
* @description 도구 실행 후 AI 스트리밍 계속 여부 (기본: true, 하위호환)
|
|
1392
|
+
* @Todo vibecode - false 시 도구 결과만 표시하고 AI 후속 응답 생략
|
|
1393
|
+
*/
|
|
1394
|
+
continueAfterToolResult?: boolean;
|
|
1395
|
+
/**
|
|
1396
|
+
* @description 스킬 완료 시 콜백 (스트림 제어)
|
|
1397
|
+
* @Todo vibecode - 'continue' 반환 시 AI 응답 생성, 'stop' 반환 시 중단
|
|
1398
|
+
*/
|
|
1399
|
+
onSkillComplete?: (skillName: string, result: SkillExecutionResult) => 'continue' | 'stop';
|
|
1400
|
+
/**
|
|
1401
|
+
* @description 모델 목록 비동기 로드 콜백
|
|
1402
|
+
* @Todo vibecode - 제공 시 마운트 시 호출, 완료 전까지 models prop 사용
|
|
1403
|
+
*/
|
|
1404
|
+
onLoadModels?: () => Promise<ModelConfig[]>;
|
|
1348
1405
|
}
|
|
1349
1406
|
declare const useChatUI: (options: UseChatUIOptions) => UseChatUIReturn;
|
|
1350
1407
|
|