package com.easyagents.agent.runtime.tool.asynctool;

import com.easyagents.agent.runtime.tool.AgentToolContext;

import java.util.Map;

/**
 * 调用方实现的异步业务子工具集合。
 */
public interface AsyncSubTools {

    /**
     * 提交异步任务。
     *
     * @param arguments 模型传入的业务参数
     * @param context 工具调用上下文
     * @return 提交结果
     */
    AsyncToolSubmitResult submit(Map<String, Object> arguments, AgentToolContext context);

    /**
     * 非阻塞观察任务状态和增量事件。
     *
     * @param request 观察请求
     * @param context 工具调用上下文
     * @return 当前任务视图
     */
    AsyncToolTaskView observe(AsyncToolObserveRequest request, AgentToolContext context);

    /**
     * 获取任务结果，未完成时返回当前观察态。
     *
     * @param request 结果请求
     * @param context 工具调用上下文
     * @return 当前任务视图
     */
    AsyncToolTaskView result(AsyncToolResultRequest request, AgentToolContext context);

    /**
     * 请求取消任务。
     *
     * @param request 取消请求
     * @param context 工具调用上下文
     * @return 取消结果
     */
    AsyncToolCancelResult cancel(AsyncToolCancelRequest request, AgentToolContext context);

    /**
     * 查询当前上下文可见的任务列表。
     *
     * @param request 列表请求
     * @param context 工具调用上下文
     * @return 任务列表
     */
    AsyncToolTaskListResult list(AsyncToolListRequest request, AgentToolContext context);
}
