初始化模版工程

This commit is contained in:
Cloud Bot
2026-03-20 07:33:46 +00:00
commit 23717e0ecd
386 changed files with 51675 additions and 0 deletions

View File

@@ -0,0 +1,300 @@
/**
* Nova SDK Kit 组件类型定义
*/
import { useNovaService } from './hooks/useNovaService'
// 事件类型常量
export const EventType = {
UserInput: 'user_input',
Message: 'message',
ToolCall: 'tool_call',
TaskUpdate: 'task_update',
TaskEnd: 'task_end',
Error: 'error',
} as const
// 事件类型联合类型
export type EventType = typeof EventType[keyof typeof EventType]
// 任务状态常量(与接口 task_status 一致pending / in_progress / completed / stopped / paused / failed
export const TaskStatus = {
/** 等待开始 */
PENDING: 'pending',
/** 进行中 */
IN_PROGRESS: 'in_progress',
/** 已完成 */
COMPLETED: 'completed',
/** 已停止 */
STOPPED: 'stopped',
/** 暂停 */
PAUSED: 'paused',
/** 失败 */
FAILED: 'failed',
/** 已取消 */
CANCELLED: 'cancelled',
} as const
// 任务状态联合类型
export type TaskStatus = (typeof TaskStatus)[keyof typeof TaskStatus]
/** 终止态:遇到这些状态时关闭 loadingcompleted / stopped / failed / cancelled */
export const TERMINAL_TASK_STATUS: TaskStatus[] = [
TaskStatus.COMPLETED,
TaskStatus.STOPPED,
TaskStatus.FAILED,
TaskStatus.CANCELLED,
TaskStatus.PAUSED,
]
// 基础事件接口
export interface BaseEvent {
event_id: string
event_type: EventType | string
/** 规范化后的 action_type便于前端直接使用 */
action_type?: string
timestamp?: number
content?: {
text?: string
action_type?: string
metadata?: Record<string, unknown>
tool_name?: string
tool_input?: unknown
tool_output?: unknown
[key: string]: unknown
}
metadata?: {
isUserInput?: boolean
isTemp?: boolean
agent_id?: string
template_type?: string
template_id?: string
isTempSystemReply?: boolean
is_summary?: boolean
[key: string]: unknown
}
plan_step_state?: string
event_status?: string
stream?: boolean
}
// 消息内容
export interface MessageContent {
content?: string
text?: string
refer_content?: string
}
// Action 信息(工具调用/操作)
export interface ActionInfo {
name?: string
arguments?: string[]
action_type?: string
block?: boolean
tool_input?: unknown
tool_output?: unknown
}
// 操作
export interface Operation {
[key: string]: unknown
}
// MCP 内容
export interface McpContent {
[key: string]: unknown
}
// 计划配置
export interface PlanConfig {
steps?: Array<{
id: string
title: string
status?: string
[key: string]: unknown
}>
[key: string]: unknown
}
// Todo 列表配置
export interface TaskTodoConfig {
list: Array<{
id?: string
title?: string
status?: string
[key: string]: unknown
}>
}
// 用户交互(如选项、确认等)
export interface SlideQuestion {
question: string
type?: 'input' | 'single' | 'multiple'
options?: string[]
answer?: string
}
export interface UserInteraction {
type?: string
content?: string
/** 选项按钮choice 类型) */
choice_options?: Array<string | { label: string; disabled?: boolean; tooltip?: string }>
/** 幻灯片表单问题列表 */
questions?: SlideQuestion[]
/** 浏览器类型sandbox / local_browser */
browser_type?: string
/** 授权类型browser auth */
authorization_type?: string
tool_code?: string
event_id?: string
origin_text?: string
select_action?: string
[key: string]: unknown
}
// 附件
export interface Attachment {
file_name: string
file_type: string
file_url: string
path?: string
file_id?: string
}
// 图片附件
export interface ImageAttachment {
url: string
path?: string
file_name?: string
file_url?: string
}
// 上传文件
export interface UploadFile {
uid: string
name: string
type: string
byte_size?: number
url?: string
upload_file_id?: string
progress?: number
uploadStatus?: 'pending' | 'uploading' | 'success' | 'error'
}
// 消息项属性
export interface MessageItemProps {
base?: BaseEvent
content?: MessageContent
attachment?: Attachment[]
imageAttachment?: ImageAttachment[]
taskState?: TaskStatus
action?: ActionInfo
mcpContent?: McpContent
planConfig?: PlanConfig
taskTodoConfig?: TaskTodoConfig
operation?: Operation
userInteraction?: UserInteraction
}
// 扩展事件(用于渲染)
export interface ExtendedEvent extends BaseEvent {
renderProps?: MessageItemProps
}
/**
* API 原始事件类型 - 对应服务端 Event 结构(次于 next-agent-chat.type.ts 的 Event
* nova-sdk 内部以此类型处理原始事件流
*/
export interface ApiEvent {
event_id: string
event_type: string
event_status?: string
stream?: boolean
role?: string
task_id?: string
created_at?: string | number
timestamp?: string | number
plan_step_state?: string
is_display?: boolean
metadata?: Record<string, unknown>
content?: {
text?: string
content?: unknown
action_type?: string
tool_name?: string
action_name?: string
arguments?: unknown
tool_input?: unknown
tool_output?: unknown
tool_call_id?: string
metadata?: Record<string, unknown>
attachment_files?: Array<{
file_name?: string
file_type?: string
path?: string
[key: string]: unknown
}>
refer_content?: string
timestamp?: string | number
fast_mode?: boolean
[key: string]: unknown
}
}
// 发送消息的 Payload
export interface SendMessagePayload {
content: string
agent_id?: string
config?: {
label_ids?: string[]
search_custom_knowledge_enabled?: boolean
template_type?: string
template_id?: string
brand_id?: string
[key: string]: unknown
}
refer_content?: string
upload_file_ids?: string[]
}
// Artifact 类型
export interface TaskArtifact {
path: string
file_name: string
file_type: string
last_modified?: number
url?: string
content?: string
task_id?: string
// 工具调用相关
event_type?: string
/** 工具 action_type例如 skill_loader 等 */
action_type?: string
tool_name?: string
event_arguments?: unknown
tool_input?: unknown
tool_output?: unknown
from?: 'assistant' | 'user'
}
// Nova API 接口 - 从 useArtifactService 返回值自动推导
export type NovaAPI = ReturnType<typeof useNovaService>
// 消息列表 Provider 值
export interface NovaKitContextValue {
agentId?: string
agentName?: string
/** API 命名空间 */
api: NovaAPI
messageList: ExtendedEvent[][]
panelMode?: 'sidebar' | 'dialog'
taskStatus: TaskStatus
conversationId: string | null
isLoading: boolean
artifacts: TaskArtifact[]
setLoading: (loading: boolean) => void
loading: boolean
mode?: 'chat' | 'share'
}
export type HandleImageAttachmentClick = (image: ImageAttachment, from: 'assistant' | 'user') => void