Launcher.js 826 Bytes
/**
 * Launcher 基类 — 管理 Agent CLI 的生命周期
 *
 * 职责:启动 / 停止 Agent CLI 进程或容器
 * 不关心通信方式,只返回 Transport 连接所需的 handle
 */

const { EventEmitter } = require('events');

class Launcher extends EventEmitter {
  constructor() {
    super();
  }

  /**
   * 启动 Agent CLI
   * @param {object} options - 启动选项
   * @returns {Promise<object>} 连接句柄,供 Transport 使用
   *   - ProcessLauncher: { process, stdin, stdout, stderr }
   *   - DockerLauncher:  { url }
   *   - NoneLauncher:    { url }
   */
  async start(options) {
    throw new Error('Launcher.start() must be implemented');
  }

  /**
   * 停止 Agent CLI
   */
  async stop() {
    throw new Error('Launcher.stop() must be implemented');
  }
}

module.exports = { Launcher };