media-proxy 是视频广告流程中处理付费媒体的基础能力。它解决此前引擎脚本直接调用 FAL/ElevenLabs 导致计费到错误账户的鉴权路径冲突:所有付费调用改为经由 <api_base>/api/internal/{fal-proxy,elevenlabs-proxy} 并携带 ?token=&agent_id=,从而计费到 Ads agent。
主要能力:崩溃续传,避免丢失或重复计费付费渲染。包含两项内置保护:Poll-through-outage,_fal_run 的轮询循环在连接被拒或超时时重新连接同一状态/结果 URL 而非崩溃;Persist + resume,每次提交的 request_id 与轮询 URL 写入 ~/.gooseworks/pending-fal-jobs/,若轮询仍失败,使用 resume_fal(request_id) 在 Python 中重连而非重新触发(重触发会重复计费),或使用 CLI:resume.py --list 列出可续传任务,resume.py --request-id <id> --out final.mp4 轮询至完成并下载。resume_fal 从不重新提交,因此不会重复收费。
使用方式:从 media_proxy 导入 fal_generate、fal_generate_video、eleven_music、download。图像生成输入须为公开 URL;视频 i2v 与音乐生成同理调用。
关键约束:token 与 agent_id 来自 ~/.gooseworks/credentials.json,缺失时运行 gooseworks login。FAL 队列 URL 会被替换为主机代理基址,不可直接轮询 queue.fal.run(会 401 并消耗额度)。本地文件输入须转为公开 URL,由 orchestrator 通过 MCP presigned URL 托管后传入,本模块不处理 MCP 上传。只有最终的 *.fal.media URL 是真实公开 URL。相关使用者包括 create-image-fal、create-video-fal、create-music-elevenlabs;goose-video orchestrator 在调用前托管本地输入。