diff --git a/package.json b/package.json index 267f81b..02519e8 100644 --- a/package.json +++ b/package.json @@ -77,6 +77,7 @@ "@types/cors": "^2.8.19", "@types/express": "^5.0.6", "@types/express-ws": "^3.0.6", + "@types/graphlib": "^2.1.12", "@types/jsonwebtoken": "^9.0.10", "@types/license-checker": "^25.0.6", "@types/lodash": "^4.17.24", diff --git a/scripts/main.ts b/scripts/main.ts index fff3566..07ee019 100644 --- a/scripts/main.ts +++ b/scripts/main.ts @@ -86,9 +86,8 @@ function createMainWindow(): void { frame: false, show: true, autoHideMenuBar: true, - titleBarStyle: "hidden", - titleBarOverlay: false, - roundedCorners: true + resizable: true, + thickFrame: true, }); mainWindow = win; win.setMenuBarVisibility(false); @@ -154,7 +153,7 @@ app.whenReady().then(async () => { return { ok: true }; }, windowclose: () => { - mainWindow?.close(); + app.exit(0); return { ok: true }; }, windowismaximized: () => ({ diff --git a/src/agents/productionAgent/tools.ts b/src/agents/productionAgent/tools.ts index 7d47d13..4a34d70 100644 --- a/src/agents/productionAgent/tools.ts +++ b/src/agents/productionAgent/tools.ts @@ -492,7 +492,6 @@ export default (resTool: ResTool, toolsNames?: string[]) => { resTool.systemMessage(`图片生成调度计划:共 ${levels.length} 层,${images.length} 张图片`); // --- 准备公共数据 --- - const skill = await useSkill("universal_agent.md"); const projectData = await u.db("o_project").where("id", resTool.data.projectId).select("videoRatio").first(); const imageModel = resTool.data.imageModel; @@ -514,7 +513,6 @@ export default (resTool: ResTool, toolsNames?: string[]) => { ]); const imageCls = await u.Ai.Image(imageModel?.modelId).run({ - systemPrompt: skill.prompt, prompt: item.prompt, imageBase64: [...assetsBase64, ...referenceBase64], size: imageModel?.quality, @@ -595,7 +593,6 @@ export default (resTool: ResTool, toolsNames?: string[]) => { ), }), execute: async ({ images }) => { - const skill = await useSkill("universal_agent.md"); console.log("[tools] generate_assets_images", images); //先获取到前端资产数据 const flowData: FlowData = await new Promise((resolve) => socket.emit("getFlowData", { key: "assets" }, (res: any) => resolve(res))); @@ -623,7 +620,6 @@ export default (resTool: ResTool, toolsNames?: string[]) => { }); u.Ai.Image(imageModel?.modelId) .run({ - // systemPrompt: skill.prompt, prompt: item.prompt, imageBase64: await getAssetsImageBase64(item.id ? [item.id] : []), size: imageModel?.quality, diff --git a/src/agents/scriptAgent/tools.ts b/src/agents/scriptAgent/tools.ts index f6dad91..e6fab26 100644 --- a/src/agents/scriptAgent/tools.ts +++ b/src/agents/scriptAgent/tools.ts @@ -94,37 +94,37 @@ export default (resTool: ResTool, toolsNames?: string[]) => { description: "将剧本内容插入sqlite数据库,供后续业务使用", inputSchema: z.object({ script: ScriptSchema, - assetsList: z.array(AssetSchema).describe("剧本所使用资产列表,注意不要包含剧本内容,仅为所使用到的 道具、人物、场景、素材"), + // assetsList: z.array(AssetSchema).describe("剧本所使用资产列表,注意不要包含剧本内容,仅为所使用到的 道具、人物、场景、素材"), }), - execute: async ({ assetsList, script }) => { + execute: async ({ script }) => { console.log("%c Line:103 🍷 script", "background:#42b983", script); - console.log("[tools] insert_script_to_sqlite", assetsList); + // console.log("[tools] insert_script_to_sqlite", assetsList); const [scriptId] = await u.db("o_script").insert({ name: script.name, content: script.content, projectId: resTool.data.projectId, createTime: Date.now(), }); - if (assetsList && assetsList.length) { - const assetId = []; - for (const i of assetsList) { - if (i.id) { - assetId.push(i.id); - continue; - } - const [id] = await u.db("o_assets").insert({ - name: i.name, - prompt: i.prompt, - type: i.type, - describe: i.desc, - projectId: resTool.data.projectId, - startTime: Date.now(), - }); - assetId.push(id); - } + // if (assetsList && assetsList.length) { + // const assetId = []; + // for (const i of assetsList) { + // if (i.id) { + // assetId.push(i.id); + // continue; + // } + // const [id] = await u.db("o_assets").insert({ + // name: i.name, + // prompt: i.prompt, + // type: i.type, + // describe: i.desc, + // projectId: resTool.data.projectId, + // startTime: Date.now(), + // }); + // assetId.push(id); + // } - await u.db("o_scriptAssets").insert(assetId.map((i) => ({ scriptId, assetId: i }))); - } + // await u.db("o_scriptAssets").insert(assetId.map((i) => ({ scriptId, assetId: i }))); + // } socket.emit("setPlanData", { key: "script", value: scriptId }); return true; }, diff --git a/src/router.ts b/src/router.ts index 1332528..72185e4 100644 --- a/src/router.ts +++ b/src/router.ts @@ -1,4 +1,4 @@ -// @routes-hash 758e343e27eb25780faf00eeab306216 +// @routes-hash 8097a5206252be753261d3f059243260 import { Express } from "express"; import route1 from "./routes/agents/clearMemory"; @@ -66,37 +66,38 @@ import route62 from "./routes/project/getProject"; import route63 from "./routes/script/addScript"; import route64 from "./routes/script/delScript"; import route65 from "./routes/script/exportScript"; -import route66 from "./routes/script/getScrptApi"; -import route67 from "./routes/script/updateScript"; -import route68 from "./routes/scriptAgent/getPlanData"; -import route69 from "./routes/scriptAgent/setPlanData"; -import route70 from "./routes/setting/agentDeploy/agentSetKey"; -import route71 from "./routes/setting/agentDeploy/deployAgentModel"; -import route72 from "./routes/setting/agentDeploy/getAgentDeploy"; -import route73 from "./routes/setting/dbConfig/clearData"; -import route74 from "./routes/setting/fileManagement/openFolder"; -import route75 from "./routes/setting/getTextModel"; -import route76 from "./routes/setting/loginConfig/getUser"; -import route77 from "./routes/setting/loginConfig/updateUserPwd"; -import route78 from "./routes/setting/memoryConfig/delAllMemory"; -import route79 from "./routes/setting/memoryConfig/getMemory"; -import route80 from "./routes/setting/memoryConfig/sureMemory"; -import route81 from "./routes/setting/skillManagement/addSkill"; -import route82 from "./routes/setting/skillManagement/deleteSkill"; -import route83 from "./routes/setting/skillManagement/embeddingSkill"; -import route84 from "./routes/setting/skillManagement/generateDescription"; -import route85 from "./routes/setting/skillManagement/getSkillList"; -import route86 from "./routes/setting/skillManagement/scanSkills"; -import route87 from "./routes/setting/skillManagement/updateSkill"; -import route88 from "./routes/setting/vendorConfig/addVendor"; -import route89 from "./routes/setting/vendorConfig/deleteVendor"; -import route90 from "./routes/setting/vendorConfig/getVendorList"; -import route91 from "./routes/setting/vendorConfig/modelTest"; -import route92 from "./routes/setting/vendorConfig/updateVendor"; -import route93 from "./routes/task/getTaskApi"; -import route94 from "./routes/task/getTaskCategories"; -import route95 from "./routes/task/taskDetails"; -import route96 from "./routes/test/test"; +import route66 from "./routes/script/extractAssets"; +import route67 from "./routes/script/getScrptApi"; +import route68 from "./routes/script/updateScript"; +import route69 from "./routes/scriptAgent/getPlanData"; +import route70 from "./routes/scriptAgent/setPlanData"; +import route71 from "./routes/setting/agentDeploy/agentSetKey"; +import route72 from "./routes/setting/agentDeploy/deployAgentModel"; +import route73 from "./routes/setting/agentDeploy/getAgentDeploy"; +import route74 from "./routes/setting/dbConfig/clearData"; +import route75 from "./routes/setting/fileManagement/openFolder"; +import route76 from "./routes/setting/getTextModel"; +import route77 from "./routes/setting/loginConfig/getUser"; +import route78 from "./routes/setting/loginConfig/updateUserPwd"; +import route79 from "./routes/setting/memoryConfig/delAllMemory"; +import route80 from "./routes/setting/memoryConfig/getMemory"; +import route81 from "./routes/setting/memoryConfig/sureMemory"; +import route82 from "./routes/setting/skillManagement/addSkill"; +import route83 from "./routes/setting/skillManagement/deleteSkill"; +import route84 from "./routes/setting/skillManagement/embeddingSkill"; +import route85 from "./routes/setting/skillManagement/generateDescription"; +import route86 from "./routes/setting/skillManagement/getSkillList"; +import route87 from "./routes/setting/skillManagement/scanSkills"; +import route88 from "./routes/setting/skillManagement/updateSkill"; +import route89 from "./routes/setting/vendorConfig/addVendor"; +import route90 from "./routes/setting/vendorConfig/deleteVendor"; +import route91 from "./routes/setting/vendorConfig/getVendorList"; +import route92 from "./routes/setting/vendorConfig/modelTest"; +import route93 from "./routes/setting/vendorConfig/updateVendor"; +import route94 from "./routes/task/getTaskApi"; +import route95 from "./routes/task/getTaskCategories"; +import route96 from "./routes/task/taskDetails"; +import route97 from "./routes/test/test"; export default async (app: Express) => { app.use("/api/agents/clearMemory", route1); @@ -164,35 +165,36 @@ export default async (app: Express) => { app.use("/api/script/addScript", route63); app.use("/api/script/delScript", route64); app.use("/api/script/exportScript", route65); - app.use("/api/script/getScrptApi", route66); - app.use("/api/script/updateScript", route67); - app.use("/api/scriptAgent/getPlanData", route68); - app.use("/api/scriptAgent/setPlanData", route69); - app.use("/api/setting/agentDeploy/agentSetKey", route70); - app.use("/api/setting/agentDeploy/deployAgentModel", route71); - app.use("/api/setting/agentDeploy/getAgentDeploy", route72); - app.use("/api/setting/dbConfig/clearData", route73); - app.use("/api/setting/fileManagement/openFolder", route74); - app.use("/api/setting/getTextModel", route75); - app.use("/api/setting/loginConfig/getUser", route76); - app.use("/api/setting/loginConfig/updateUserPwd", route77); - app.use("/api/setting/memoryConfig/delAllMemory", route78); - app.use("/api/setting/memoryConfig/getMemory", route79); - app.use("/api/setting/memoryConfig/sureMemory", route80); - app.use("/api/setting/skillManagement/addSkill", route81); - app.use("/api/setting/skillManagement/deleteSkill", route82); - app.use("/api/setting/skillManagement/embeddingSkill", route83); - app.use("/api/setting/skillManagement/generateDescription", route84); - app.use("/api/setting/skillManagement/getSkillList", route85); - app.use("/api/setting/skillManagement/scanSkills", route86); - app.use("/api/setting/skillManagement/updateSkill", route87); - app.use("/api/setting/vendorConfig/addVendor", route88); - app.use("/api/setting/vendorConfig/deleteVendor", route89); - app.use("/api/setting/vendorConfig/getVendorList", route90); - app.use("/api/setting/vendorConfig/modelTest", route91); - app.use("/api/setting/vendorConfig/updateVendor", route92); - app.use("/api/task/getTaskApi", route93); - app.use("/api/task/getTaskCategories", route94); - app.use("/api/task/taskDetails", route95); - app.use("/api/test/test", route96); + app.use("/api/script/extractAssets", route66); + app.use("/api/script/getScrptApi", route67); + app.use("/api/script/updateScript", route68); + app.use("/api/scriptAgent/getPlanData", route69); + app.use("/api/scriptAgent/setPlanData", route70); + app.use("/api/setting/agentDeploy/agentSetKey", route71); + app.use("/api/setting/agentDeploy/deployAgentModel", route72); + app.use("/api/setting/agentDeploy/getAgentDeploy", route73); + app.use("/api/setting/dbConfig/clearData", route74); + app.use("/api/setting/fileManagement/openFolder", route75); + app.use("/api/setting/getTextModel", route76); + app.use("/api/setting/loginConfig/getUser", route77); + app.use("/api/setting/loginConfig/updateUserPwd", route78); + app.use("/api/setting/memoryConfig/delAllMemory", route79); + app.use("/api/setting/memoryConfig/getMemory", route80); + app.use("/api/setting/memoryConfig/sureMemory", route81); + app.use("/api/setting/skillManagement/addSkill", route82); + app.use("/api/setting/skillManagement/deleteSkill", route83); + app.use("/api/setting/skillManagement/embeddingSkill", route84); + app.use("/api/setting/skillManagement/generateDescription", route85); + app.use("/api/setting/skillManagement/getSkillList", route86); + app.use("/api/setting/skillManagement/scanSkills", route87); + app.use("/api/setting/skillManagement/updateSkill", route88); + app.use("/api/setting/vendorConfig/addVendor", route89); + app.use("/api/setting/vendorConfig/deleteVendor", route90); + app.use("/api/setting/vendorConfig/getVendorList", route91); + app.use("/api/setting/vendorConfig/modelTest", route92); + app.use("/api/setting/vendorConfig/updateVendor", route93); + app.use("/api/task/getTaskApi", route94); + app.use("/api/task/getTaskCategories", route95); + app.use("/api/task/taskDetails", route96); + app.use("/api/test/test", route97); } diff --git a/src/routes/assets/delAssets.ts b/src/routes/assets/delAssets.ts index 38addd0..162e55b 100644 --- a/src/routes/assets/delAssets.ts +++ b/src/routes/assets/delAssets.ts @@ -12,7 +12,6 @@ export default router.post( }), async (req, res) => { const { id } = req.body; - console.log("%c Line:15 🍑 id", "background:#465975", id); const assetsData = await u.db("o_image").where("assetsId", id); await Promise.all(assetsData.map((i) => i.filePath && u.oss.deleteFile(i.filePath))); await u.db("o_assets").where({ id }).delete(); diff --git a/src/routes/assets/getMaterialData.ts b/src/routes/assets/getMaterialData.ts index 119bb3e..0623c2a 100644 --- a/src/routes/assets/getMaterialData.ts +++ b/src/routes/assets/getMaterialData.ts @@ -12,5 +12,21 @@ export default router.post("/", async (req, res) => { filePath: item.filePath ? await u.oss.getFileUrl(item.filePath) : "", })), ); - res.status(200).send(success(data)); + // 查询o_videoConfig表,拿到已选中的videoId + const configRows = await u.db("o_videoConfig").select("videoId"); + const selectedIds = new Set(configRows.map((row) => row.videoId)); + + // 查询o_video表 + const videoRows = await u.db("o_video").where("state", "生成成功").select("*"); + + // 处理并返回结果 + const video = await Promise.all( + videoRows.map(async (row) => ({ + id: row.id, + filePath: row.filePath ? await u.oss.getFileUrl(row.filePath) : "", + selected: selectedIds.has(row.id), + storyboard: row.storyboardId, + })), + ); + res.status(200).send(success({ data, video })); }); diff --git a/src/routes/production/editImage/generateFlowImage.ts b/src/routes/production/editImage/generateFlowImage.ts index 7a0291e..7f57afb 100644 --- a/src/routes/production/editImage/generateFlowImage.ts +++ b/src/routes/production/editImage/generateFlowImage.ts @@ -5,17 +5,6 @@ import { success } from "@/lib/responseFormat"; import { validateFields } from "@/middleware/middleware"; import axios from "axios"; const router = express.Router(); -async function getImageBase64ForId(imageId: string | number) { - const imagePath = await u - .db("o_image") - .select("filePath") - .where({ id: Number(imageId) }) - .first(); - - if (!imagePath || !imagePath.filePath) return ""; // 未找到图片路径 - const url = await u.oss.getFileUrl(imagePath.filePath); - return await urlToBase64(url); -} async function urlToBase64(imageUrl: string): Promise { const response = await axios.get(imageUrl, { responseType: "arraybuffer" }); @@ -23,57 +12,11 @@ async function urlToBase64(imageUrl: string): Promise { const base64 = Buffer.from(response.data, "binary").toString("base64"); return `data:${contentType};base64,${base64}`; } -// 将图片ID和指令转换为base64数组和替换后的指令 -async function convertDirectiveAndImages(images: Record, directive: string) { - // step1: 列出所有别名 - const aliasList = Object.keys(images); - // step2: 在指令中提取所有 @别名出现 - const aliasRegex = /@[\u4e00-\u9fa5\w]+/g; - const referencedAliases = directive.match(aliasRegex) || []; - // step3: 检查别名 - for (const alias of referencedAliases) { - if (!(alias in images)) { - throw new Error(`您引用了不存在的图片:${alias}`); - } - } - // step4: 构建别名与顺序编号映射 - const aliasToIndex: Record = {}; - aliasList.forEach((alias, i) => { - aliasToIndex[alias] = i + 1; - }); - // step5: 替换指令中的别名为"图N" - let prompt = directive; - for (const [alias, idx] of Object.entries(aliasToIndex)) { - // 转义alias可能含特殊字符 - const reg = new RegExp(alias.replace(/([.*+?^${}()|\[\]\/\\])/g, "\\$1"), "g"); - prompt = prompt.replace(reg, `图${idx}`); - } - // step6: 依次获取图片 base64 内容(区分id或者本身就是base64) - const base64Images: string[] = []; - - for (const imageVal of Object.values(images)) { - // 判断是否为base64串 - const isBase64 = typeof imageVal === "string" && /^data:image\//.test(imageVal); - if (isBase64) { - base64Images.push(imageVal); - } else if (typeof imageVal === "number") { - const base64 = await getImageBase64ForId(imageVal); - base64Images.push(base64); - } else if (imageVal.includes("http")) { - const base64 = await urlToBase64(imageVal); - base64Images.push(base64); - } - } - return { - prompt, - images: base64Images, - }; -} export default router.post( "/", validateFields({ model: z.string(), - references: z.object().optional(), + references: z.array(z.string()).optional(), quality: z.string(), ratio: z.string(), prompt: z.string(), @@ -81,12 +24,11 @@ export default router.post( type: z.enum(["role", "scene", "storyboard", "clip", "tool"]), }), async (req, res) => { - const { model, references = {}, quality, ratio, prompt, projectId, type } = req.body; - const { prompt: userPrompt, images: base64Images } = await convertDirectiveAndImages(references, prompt); - console.log("%c Line:86 🥒 base64Images", "background:#42b983", base64Images.map((s) => s.slice(0, 4))); + const { model, references = [], quality, ratio, prompt, projectId, type } = req.body; + const imageClass = await u.Ai.Image(model).run({ - prompt: userPrompt, - imageBase64: base64Images, + prompt: prompt, + imageBase64: references && references.length ? await Promise.all(references.map((url: string) => urlToBase64(url))) : [], size: quality, aspectRatio: ratio, taskClass: "分镜生成", diff --git a/src/routes/production/editImage/saveImageFlow.ts b/src/routes/production/editImage/saveImageFlow.ts index 73e959b..46fba9a 100644 --- a/src/routes/production/editImage/saveImageFlow.ts +++ b/src/routes/production/editImage/saveImageFlow.ts @@ -62,7 +62,7 @@ export default router.post( }); insertFlowId = storyboardId; } - } + } else insertFlowId = id; await u.db("o_imageFlow").insert({ flowData: JSON.stringify({ edges, nodes }), diff --git a/src/routes/production/workbench/videoPolling.ts b/src/routes/production/workbench/videoPolling.ts index 2d68b51..31241c2 100644 --- a/src/routes/production/workbench/videoPolling.ts +++ b/src/routes/production/workbench/videoPolling.ts @@ -14,6 +14,7 @@ export default router.post( async (req, res) => { const { scriptId, specifyIds } = req.body; const data = await u.db("o_video").where("scriptId", scriptId).whereIn("id", specifyIds).andWhere("state", "生成中").select("*"); + console.log("%c Line:17 🧀 data", "background:#93c0a4", data.length); res.status(200).send(success(data)); }, ); \ No newline at end of file diff --git a/src/routes/project/delProject.ts b/src/routes/project/delProject.ts index c80c1fa..4ceed7c 100644 --- a/src/routes/project/delProject.ts +++ b/src/routes/project/delProject.ts @@ -20,9 +20,6 @@ export default router.post( const assetsData = await u.db("o_assets").where("projectId", id).select("id"); const assetsIds = assetsData.map((item: any) => item.id); - const videoData = await u.db("o_video").whereIn("scriptId", scriptIds).select("id"); - const videoIds = videoData.map((item: any) => item.id); - await u.db("o_project").where("id", id).delete(); await u.db("o_novel").where("projectId", id).delete(); await u.db("o_outline").where("projectId", id).delete(); @@ -31,17 +28,9 @@ export default router.post( await u.db("o_script").where("projectId", id).delete(); await u.db("o_assets").where("projectId", id).delete(); - const tempAssetsQuery = u.db("o_image").where("projectId", id); if (assetsIds.length > 0) { - tempAssetsQuery.orWhereIn("assetsId", assetsIds); + await u.db("o_image").where("projectId", id).orWhereIn("assetsId", assetsIds).delete(); } - if (scriptIds.length > 0) { - tempAssetsQuery.orWhereIn("scriptId", scriptIds); - } - if (videoIds.length > 0) { - tempAssetsQuery.orWhereIn("videoId", videoIds); - } - await tempAssetsQuery.delete(); await u.db("o_video").whereIn("scriptId", scriptIds).delete(); diff --git a/src/routes/script/extractAssets.ts b/src/routes/script/extractAssets.ts new file mode 100644 index 0000000..f56430e --- /dev/null +++ b/src/routes/script/extractAssets.ts @@ -0,0 +1,34 @@ +import express from "express"; +import u from "@/utils"; +import { z } from "zod"; +import { error, success } from "@/lib/responseFormat"; +import compressing from "compressing"; +import { validateFields } from "@/middleware/middleware"; +import { useSkill } from "@/utils/agent/skillsTools"; + +const router = express.Router(); + +export default router.post( + "/", + validateFields({ + scriptIds: z.array(z.number()), + }), + async (req, res) => { + const { scriptIds } = req.body; + if (!scriptIds.length) return res.status(400).send(error("请先选择剧本")); + const scripts = await u.db("o_script").whereIn("id", scriptIds); + const intansce = u.Ai.Text("universalAgent"); + const skill = await useSkill("universal_agent.md"); + + const resData = await intansce.invoke({ + system: skill.prompt, + messages: [ + { + role: "user", + content: "请根据以下小说章节生成事件摘要:\n", + }, + ], + tools: skill.tools, + }); + }, +); diff --git a/src/types/database.d.ts b/src/types/database.d.ts index 70b079c..3e58c97 100644 --- a/src/types/database.d.ts +++ b/src/types/database.d.ts @@ -1,6 +1,25 @@ -// @db-hash d807205fbb27fc5ddb04cae060fb4430 +// @db-hash ce28b6d566911952421c2661e14bfde5 //该文件由脚本自动生成,请勿手动修改 +export interface _o_storyboard_old_20260325 { + 'camera'?: string | null; + 'createTime'?: number | null; + 'description'?: string | null; + 'duration'?: string | null; + 'filePath'?: string | null; + 'frameMode'?: string | null; + 'id'?: number; + 'lines'?: string | null; + 'mode'?: string | null; + 'model'?: string | null; + 'prompt'?: string | null; + 'reason'?: string | null; + 'resolution'?: string | null; + 'scriptId'?: number | null; + 'sound'?: string | null; + 'state'?: string | null; + 'title'?: string | null; +} export interface memories { 'content': string; 'createTime': number; @@ -108,13 +127,11 @@ export interface o_project { 'artStyle'?: string | null; 'createTime'?: number | null; 'id'?: number | null; - 'imageModel'?: string | null; 'intro'?: string | null; 'name'?: string | null; 'projectType'?: string | null; 'type'?: string | null; 'userId'?: number | null; - 'videoModel'?: string | null; 'videoRatio'?: string | null; } export interface o_script { @@ -220,6 +237,7 @@ export interface o_videoConfig { } export interface DB { + "_o_storyboard_old_20260325": _o_storyboard_old_20260325; "memories": memories; "o_agentDeploy": o_agentDeploy; "o_agentWorkData": o_agentWorkData; diff --git a/src/utils/ai.ts b/src/utils/ai.ts index bccc1cb..9ab1a75 100644 --- a/src/utils/ai.ts +++ b/src/utils/ai.ts @@ -118,6 +118,7 @@ interface VideoConfig { projectId: number; // 项目ID prompt: string; //视频提示词 imageBase64: string[]; //输入的图片提示词 + aspectRatio: `${number}:${number}`; // 长宽比 mode: string; //模式 duration: number; // 视频时长,单位秒 resolution: string; // 视频分辨率 @@ -136,6 +137,8 @@ class AiVideo { async run(input: VideoConfig) { return withTaskRecord(this.key, input.taskClass, input.describe, input.relatedObjects, input.projectId, async (modelName) => { const fn = await getVendorTemplateFn("videoRequest", modelName); + + console.log("%c Line:142 🎂 input", "background:#42b983", input); this.result = await fn(input); if (this.result.startsWith("http")) this.result = await urlToBase64(this.result); return this; diff --git a/yarn.lock b/yarn.lock index 63ef84e..dd924bd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -32,10 +32,17 @@ "@hono/node-server" "^1.13.7" hono "^4.6.14" +<<<<<<< HEAD "@ai-sdk/gateway@3.0.59": version "3.0.59" resolved "https://registry.npmmirror.com/@ai-sdk/gateway/-/gateway-3.0.59.tgz" integrity sha512-MbtheWHgEFV/8HL1Z6E3hOAsmP73zZlNFg0F0nJAD0Adnjp4J/plqNK00Y896d+dWTw+r0OXzyov9/2wCFjH0Q== +======= +"@ai-sdk/gateway@3.0.80": + version "3.0.80" + resolved "https://registry.npmmirror.com/@ai-sdk/gateway/-/gateway-3.0.80.tgz#fbd43e14395f013dea49f427020b882be8840af2" + integrity sha512-uM7kpZB5l977lW7+2X1+klBUxIZQ78+1a9jHlaHFEzcOcmmslTl3sdP0QqfuuBcO0YBM2gwOiqVdp8i4TRQYcw== +>>>>>>> 248dc724d4c0552222a2ddcec19980de82f88997 dependencies: "@ai-sdk/provider" "3.0.8" "@ai-sdk/provider-utils" "4.0.16" @@ -812,6 +819,11 @@ dependencies: "@types/node" "*" +"@types/graphlib@^2.1.12": + version "2.1.12" + resolved "https://registry.npmmirror.com/@types/graphlib/-/graphlib-2.1.12.tgz#089d1218bafe2277c98b12597abb24c3b73965aa" + integrity sha512-abRfQWMphT2qlXwppQa+CTCtUz/GqxBeozQcMjnOFD/WOKD6sRgxkfG8vq1yagV03447BBzCYhuJ0wiNb+/r+Q== + "@types/http-cache-semantics@*": version "4.2.0" resolved "https://registry.npmmirror.com/@types/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz" @@ -998,11 +1010,19 @@ agent-base@^7.1.0, agent-base@^7.1.2: integrity sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ== ai@^6.0.67: +<<<<<<< HEAD version "6.0.105" resolved "https://registry.npmmirror.com/ai/-/ai-6.0.105.tgz" integrity sha512-rp+exWtZS3J0DDvZIfetpKCIg7D3cCsvBPoFN3I67IDTs9aoBZDbpecoIkmNLT+U9RBkoEial3OGHRvme23HCw== dependencies: "@ai-sdk/gateway" "3.0.59" +======= + version "6.0.138" + resolved "https://registry.npmmirror.com/ai/-/ai-6.0.138.tgz#96bfa9ebdd9748bc72862d14d6c4fc8e28070f10" + integrity sha512-49OfPe0f5uxJ6jUdA5BBXjIinP6+ZdYfAtpF2aEH64GA5wPcxH2rf/TBUQQ0bbamBz/D+TLMV18xilZqOC+zaA== + dependencies: + "@ai-sdk/gateway" "3.0.80" +>>>>>>> 248dc724d4c0552222a2ddcec19980de82f88997 "@ai-sdk/provider" "3.0.8" "@ai-sdk/provider-utils" "4.0.16" "@opentelemetry/api" "1.9.0" @@ -1279,9 +1299,15 @@ brace-expansion@^2.0.1, brace-expansion@^2.0.2: balanced-match "^1.0.0" brace-expansion@^5.0.2: +<<<<<<< HEAD version "5.0.4" resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-5.0.4.tgz" integrity sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg== +======= + version "5.0.5" + resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-5.0.5.tgz#dcc3a37116b79f3e1b46db994ced5d570e930fdb" + integrity sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ== +>>>>>>> 248dc724d4c0552222a2ddcec19980de82f88997 dependencies: balanced-match "^4.0.2" @@ -1901,9 +1927,15 @@ electron-publish@26.8.1: mime "^2.5.2" electron@^40.0.0: +<<<<<<< HEAD version "40.6.1" resolved "https://registry.npmmirror.com/electron/-/electron-40.6.1.tgz" integrity sha512-u9YfoixttdauciHV9Ut9Zf3YipJoU093kR1GSYTTXTAXqhiXI0G1A0NnL/f0O2m2UULCXaXMf2W71PloR6V9pQ== +======= + version "40.8.4" + resolved "https://registry.npmmirror.com/electron/-/electron-40.8.4.tgz#91c0591e2ee7377e0a5c80e4fc4680cc26d84c33" + integrity sha512-7AoSakFr+g2CTukHDS79cqNiaWPoD8bQ4kIahwUUVv0O5fy4BfZawVCxOFLc61POq8xDvqMSDKPfeFXK/Coc5g== +>>>>>>> 248dc724d4c0552222a2ddcec19980de82f88997 dependencies: "@electron/get" "^2.0.0" "@types/node" "^24.9.0" @@ -2905,9 +2937,15 @@ keyv@^4.0.0: json-buffer "3.0.1" knex@^3.1.0, knex@^3.2.5: +<<<<<<< HEAD version "3.2.5" resolved "https://registry.npmmirror.com/knex/-/knex-3.2.5.tgz" integrity sha512-eY21Uwq0l0bFW6/+3ARO+NPjlUmcKsd72/Od+iHVFRhY6xwRVKn/nfeBEErtSnvJRVj0d0Jc20LzNnSgRQwMlQ== +======= + version "3.2.6" + resolved "https://registry.npmmirror.com/knex/-/knex-3.2.6.tgz#d6653ebf7961a83ae0014db1a7c56c75ce1ffa00" + integrity sha512-26I1Tvx0D9SOsFBF9jRWT/JdE3FPI52jAwYpXfREEtnoqgjGvAi8/ux8ktjaTC9IQcAVTCrREkOpa7lrjeAcow== +>>>>>>> 248dc724d4c0552222a2ddcec19980de82f88997 dependencies: colorette "2.0.19" commander "^10.0.0" @@ -3178,11 +3216,17 @@ minipass-fetch@^4.0.0: encoding "^0.1.13" minipass-flush@^1.0.5: +<<<<<<< HEAD version "1.0.5" resolved "https://registry.npmmirror.com/minipass-flush/-/minipass-flush-1.0.5.tgz" integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== +======= + version "1.0.6" + resolved "https://registry.npmmirror.com/minipass-flush/-/minipass-flush-1.0.6.tgz#a3f43e5d588f3bd5f1585cc68504a5f05ebd77a8" + integrity sha512-7Uf5gMJZ2kTkFisE3toGxT991s+cg+vMh42nbZGM2bNxfYVpkpqRudf1QrcOy72a3PwcL4JYqL+4NY7t0Hdd0A== +>>>>>>> 248dc724d4c0552222a2ddcec19980de82f88997 dependencies: - minipass "^3.0.0" + minipass "^7.1.3" minipass-pipeline@^1.2.4: version "1.2.4" @@ -3205,7 +3249,7 @@ minipass@^3.0.0: dependencies: yallist "^4.0.0" -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.2, minipass@^7.0.3, minipass@^7.0.4, minipass@^7.1.2: +"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.2, minipass@^7.0.3, minipass@^7.0.4, minipass@^7.1.2, minipass@^7.1.3: version "7.1.3" resolved "https://registry.npmmirror.com/minipass/-/minipass-7.1.3.tgz" integrity sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==