package com.easyagents.agent.runtime.agentscope;

import com.easyagents.agent.runtime.event.AgentRuntimeObservationManager;
import io.agentscope.core.hook.Hook;
import io.agentscope.core.hook.HookEvent;
import reactor.core.publisher.Mono;

/**
 * AgentScope Hook 的统一入口。
 */
public class AgentScopeRuntimeHook implements Hook {

    private final AgentRuntimeObservationManager observationManager;

    /**
     * 创建统一 Hook 入口。
     *
     * @param observationManager 观察和干预调度器
     */
    public AgentScopeRuntimeHook(AgentRuntimeObservationManager observationManager) {
        this.observationManager = observationManager == null
                ? AgentRuntimeObservationManager.empty()
                : observationManager;
    }

    /**
     * 处理 AgentScope Hook 事件。
     *
     * @param event Hook 事件
     * @param <T> Hook 事件类型
     * @return 处理后的 Hook 事件
     */
    @Override
    public <T extends HookEvent> Mono<T> onEvent(T event) {
        return observationManager.handle(event);
    }
}
