/**
 * 日志标准化类型系统
 * 参考 vibe-kanban Rust 实现
 */
// 辅助函数：创建用户消息
export function createUserMessage(content, id) {
    return {
        id: id || crypto.randomUUID(),
        timestamp: Date.now(),
        entryType: 'user_message',
        content,
    };
}
// 辅助函数：创建助手消息
export function createAssistantMessage(content, id) {
    return {
        id: id || crypto.randomUUID(),
        timestamp: Date.now(),
        entryType: 'assistant_message',
        content,
    };
}
// 辅助函数：创建思考消息
export function createThinking(content, id) {
    return {
        id: id || crypto.randomUUID(),
        timestamp: Date.now(),
        entryType: 'thinking',
        content,
    };
}
// 辅助函数：创建系统消息
export function createSystemMessage(content, id) {
    return {
        id: id || crypto.randomUUID(),
        timestamp: Date.now(),
        entryType: 'system_message',
        content,
    };
}
// 辅助函数：创建错误消息
export function createErrorMessage(content, error, id) {
    return {
        id: id || crypto.randomUUID(),
        timestamp: Date.now(),
        entryType: 'error_message',
        content,
        metadata: error ? { error } : undefined,
    };
}
// 辅助函数：创建工具使用条目
export function createToolUse(toolName, content, action, toolId, id, extras) {
    return {
        id: id || crypto.randomUUID(),
        timestamp: Date.now(),
        entryType: 'tool_use',
        content,
        metadata: {
            action,
            toolName,
            status: 'created',
            ...(toolId ? { toolId } : {}),
            ...(extras?.todos ? { todos: extras.todos } : {}),
            ...(extras?.todoOperation ? { todoOperation: extras.todoOperation } : {}),
        },
    };
}
// 辅助函数：创建 token 使用信息
export function createTokenUsageInfo(totalTokens, modelContextWindow, id) {
    return {
        id: id || crypto.randomUUID(),
        timestamp: Date.now(),
        entryType: 'token_usage_info',
        content: `Tokens: ${totalTokens}${modelContextWindow ? ` / ${modelContextWindow}` : ''}`,
        metadata: {
            tokenUsage: {
                totalTokens,
                ...(modelContextWindow != null ? { modelContextWindow } : {}),
            },
        },
    };
}
// 辅助函数：更新工具状态（不可变）
export function withToolStatus(entry, status) {
    return {
        ...entry,
        metadata: {
            ...entry.metadata,
            status,
        },
    };
}
//# sourceMappingURL=types.js.map