/**
 * 网站适配器接口
 * 每个网站可以实现自己的adapter来集成所需的工具和业务逻辑
 */

export interface ISiteAdapter {
  /**
   * 适配器名称
   */
  readonly name: string;

  /**
   * 初始化适配器（加载工具、连接数据库等）
   */
  initialize(context: any): Promise<void>;

  /**
   * 在workflow执行前调用
   */
  beforeWorkflow?(context: any): Promise<void>;

  /**
   * 在workflow执行后调用
   */
  afterWorkflow?(context: any, result: any): Promise<void>;

  /**
   * 获取所有custom action handlers
   * 返回一个对象，key是handler名称，value是处理函数
   */
  getHandlers(): Record<string, (...args: any[]) => Promise<any>>;

  /**
   * 清理资源
   */
  cleanup?(): Promise<void>;
}

/**
 * 空适配器（默认实现）
 * 用于没有特殊需求的网站
 */
export class EmptyAdapter implements ISiteAdapter {
  readonly name = 'empty';

  async initialize(context: any): Promise<void> {
    // 空实现
  }

  getHandlers(): Record<string, (...args: any[]) => Promise<any>> {
    return {};
  }
}
