package com.easyagents.agent.runtime.event;

import io.agentscope.core.hook.HookEvent;
import reactor.core.publisher.Mono;

/**
 * AgentScope Hook 事件的旁路观察器。对接 AgentScope 的原生生命周期hook
 *
 * <p>观察器只做监察和旁路事件发射，不允许修改 AgentScope HookEvent。
 * 如果能力需要影响主线路，例如修改输入消息、暂停 agent 或替换工具结果，应实现
 * {@link AgentRuntimeInterceptor}。</p>
 */
public interface AgentRuntimeObserver {

    /**
     * 观察 AgentScope Hook 事件。
     *
     * @param event AgentScope Hook 事件
     * @return 完成信号
     */
    Mono<Void> observe(HookEvent event);

    /**
     * 获取观察器执行优先级。
     *
     * @return 优先级，数值越小越先执行
     */
    default int priority() {
        return 100;
    }
}
