package com.gzzm.lobster.tool;

/**
 * SideEffectLevel —— 工具副作用等级 / Tool side-effect classification.
 *
 * <p>与现有 {@link com.gzzm.lobster.common.ToolRiskLevel ToolRiskLevel} 的区别：
 * <ul>
 *   <li>{@code ToolRiskLevel} 描述<b>破坏性</b>，用于速率限制（READ_ONLY / WRITE / BATCH_WRITE / DESTRUCTIVE）</li>
 *   <li>{@code SideEffectLevel} 描述<b>外部可见性</b>，用于审批 / 审计 / 事务策略</li>
 * </ul>
 *
 * <p>Claude Code 风格：不引入幂等键、不引入补偿事务，只分三档决定工具包一层：
 * <ul>
 *   <li>{@link #READ} —— 只读或内部查询；不落 ToolExecutionRecord，不走审批</li>
 *   <li>{@link #WRITE_LOCAL} —— 修改本系统内部状态（workspace / thread / plan / memory）；
 *       落审计；不默认审批</li>
 *   <li>{@link #WRITE_EXTERNAL} —— 调外部系统（OA 发消息 / 第三方 API / 发通知）；
 *       默认 {@code requiresConfirmation=true} 走 PendingRequest 审批流</li>
 * </ul>
 */
public enum SideEffectLevel {
    READ,
    WRITE_LOCAL,
    WRITE_EXTERNAL
}
