#!/usr/bin/env node

/**
 * 获取账号专属模板文件的完整路径
 *
 * 用法：
 *   node get-template-path.js --account 军事账号 --type storyboard
 *   node get-template-path.js --account 军事账号 --type image
 *   node get-template-path.js --account 军事账号 --type video
 *
 * 输出：
 *   完整的绝对路径，可直接传给 Read 工具或 fs.readFileSync
 */

const fs = require('fs')
const path = require('path')

// 路径常量
const SCRIPTS_DIR = path.join(__dirname, '..')
const SKILLS_DIR = path.join(SCRIPTS_DIR, '..')
const PROJECT_ROOT = path.join(SKILLS_DIR, '..', '..')
const ACCOUNTS_DIR = path.join(PROJECT_ROOT, 'accounts')

function getTemplatePath(accountId, templateType) {
  // 1. 读取账号配置
  const accountPath = path.join(ACCOUNTS_DIR, accountId, 'account.json')
  if (!fs.existsSync(accountPath)) {
    throw new Error(`账号不存在: ${accountPath}`)
  }

  const account = JSON.parse(fs.readFileSync(accountPath, 'utf-8'))

  // 2. 映射模板类型到字段名
  const fieldMap = {
    storyboard: 'storyboardPrompt',
    image: 'imageStylePrompt',
    video: 'videoStylePrompt'
  }

  const fieldName = fieldMap[templateType]
  if (!fieldName) {
    throw new Error(`未知模板类型: ${templateType}，支持: storyboard, image, video`)
  }

  // 3. 获取相对路径
  const relativePath = account[fieldName]
  if (!relativePath) {
    throw new Error(`账号配置缺少字段: ${fieldName}`)
  }

  // 4. 判断是否为绝对路径
  let absolutePath
  if (path.isAbsolute(relativePath)) {
    // 已经是绝对路径，直接使用
    absolutePath = relativePath
  } else {
    // 相对路径，拼接账号目录（相对于账号目录）
    absolutePath = path.join(ACCOUNTS_DIR, accountId, relativePath)
  }

  // 5. 检查文件是否存在
  if (!fs.existsSync(absolutePath)) {
    throw new Error(`模板文件不存在: ${absolutePath}`)
  }

  // 6. 转换为相对于项目根目录的相对路径（子 Agent 友好）
  const relativeToProject = path.relative(PROJECT_ROOT, absolutePath)

  return relativeToProject
}

// ============================================================================
// CLI 入口
// ============================================================================

function main() {
  const args = process.argv.slice(2)

  const accountIndex = args.indexOf('--account')
  const typeIndex = args.indexOf('--type')

  if (accountIndex === -1 || typeIndex === -1) {
    console.error('用法：node get-template-path.js --account <账号ID> --type <storyboard|image|video>')
    process.exit(1)
  }

  const accountId = args[accountIndex + 1]
  const templateType = args[typeIndex + 1]

  try {
    const fullPath = getTemplatePath(accountId, templateType)
    console.log(fullPath)
  } catch (err) {
    console.error(`错误: ${err.message}`)
    process.exit(1)
  }
}

if (require.main === module) {
  main()
}

module.exports = { getTemplatePath }
