/**
 * Parser 注册表 — 根据供应商/provider 名称返回对应的 Parser 实例
 *
 * 当前支持：
 *  - volcengine → JsonActionParser
 *  - volces-uitars → JsonActionParser（UITarsParser 留 Layer 2 实现）
 *  - 未知 provider → JsonActionParser（默认兜底）
 */
import type { Parser } from './parser.js';
import { JsonActionParser } from './json_action_parser.js';

/** 供应商到 Parser 的映射表 */
const PARSERS = new Map<string, Parser>();

/**
 * 懒初始化：首次调用时注册默认 parser
 */
function ensureRegistered(): void {
  if (PARSERS.size > 0) return;
  const json = new JsonActionParser();
  // 火山引擎豆包视觉模型
  PARSERS.set('volcengine', json);
  // volces UITars — Layer 2 将替换为专用 UITarsParser
  PARSERS.set('volces-uitars', json);
}

/**
 * 根据供应商/provider 名称获取对应的 Parser
 * 未注册的 key 返回 JsonActionParser 作为默认兜底
 */
export function getParser(supplierOrProvider: string): Parser {
  ensureRegistered();
  return PARSERS.get(supplierOrProvider) ?? new JsonActionParser();
}

/**
 * 注册或覆盖某个 provider 的 Parser（主要用于测试注入 mock）
 */
export function registerParser(key: string, parser: Parser): void {
  ensureRegistered();
  PARSERS.set(key, parser);
}
