import { execSync } from 'node:child_process' import { copyFileSync, mkdirSync, rmSync, statSync } from 'node:fs' import { resolve } from 'node:path' const root = resolve(import.meta.dirname, '..') const skillName = 'cook' const skillDir = resolve(root, 'skills', skillName) const skillsDir = resolve(root, 'skills') const outputPath = resolve(skillsDir, `${skillName}.zip`) // 需要打包的数据文件(供 Fallback 使用,CLI 不可用时 AI 直接读取) const dataFiles = [ 'recipe.csv', 'incompatible-foods.csv', ] const dataSourceDir = resolve(root, 'app/data') const dataTargetDir = resolve(skillDir, 'data') // 1. 复制数据文件到 skills/cook/data/ mkdirSync(dataTargetDir, { recursive: true }) for (const file of dataFiles) { copyFileSync(resolve(dataSourceDir, file), resolve(dataTargetDir, file)) } // 2. 打包(保留目录结构) mkdirSync(skillsDir, { recursive: true }) execSync(`zip -r "${outputPath}" ${skillName}`, { cwd: skillsDir, stdio: 'ignore' }) // 3. 清理临时复制的数据目录 rmSync(dataTargetDir, { recursive: true, force: true }) const size = (statSync(outputPath).size / 1024).toFixed(1) console.log(`✅ Packed skills/${skillName}/ → skills/${skillName}.zip (${size} KB)`)