'use strict'; const fs = require('fs'); const path = require('path'); const mime = require('mime-types'); const { getContainerContext, resolveContainerPath } = require('./container_bridge'); function resolvePath(workspace, p) { if (path.isAbsolute(p)) return p; return path.join(workspace, p); } function readMediafileTool(workspace, args) { const ctx = getContainerContext(); let target = resolvePath(workspace, args.path); let displayPath = target; if (ctx) { const resolved = resolveContainerPath(workspace, args.path || '.', ctx); if (resolved.error) return { success: false, error: resolved.error }; target = resolved.hostPath; displayPath = resolved.containerPath; } try { const stat = fs.statSync(target); if (!stat.isFile()) return { success: false, error: '不是文件' }; const mt = mime.lookup(target); if (!mt) return { success: false, error: '无法识别文件类型' }; if (!mt.startsWith('image/') && !mt.startsWith('video/')) { return { success: false, error: '禁止的文件类型' }; } const data = fs.readFileSync(target); const b64 = data.toString('base64'); const type = mt.startsWith('image/') ? 'image' : 'video'; return { success: true, path: displayPath, mime: mt, type, b64 }; } catch (err) { return { success: false, error: err.message || String(err) }; } } module.exports = { readMediafileTool };