From cd35dc717be863592a788cf85059a75ab07c639f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?ACT=E4=B8=B6=E6=B5=81=E6=98=9F=E9=9B=A8?= <1340145680@qq.com> Date: Tue, 31 Mar 2026 23:23:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=8F=90=E7=A4=BA=E8=AF=8D?= =?UTF-8?q?=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/agents/scriptAgent/index.ts | 36 ++- src/agents/scriptAgent/tools.ts | 50 ++-- src/router.ts | 216 +++++++++--------- .../production/workbench/getGenerateData.ts | 51 +++++ src/types/database.d.ts | 19 +- yarn.lock | 40 ++-- 6 files changed, 244 insertions(+), 168 deletions(-) create mode 100644 src/routes/production/workbench/getGenerateData.ts diff --git a/src/agents/scriptAgent/index.ts b/src/agents/scriptAgent/index.ts index b0b1c5a..b0cb807 100644 --- a/src/agents/scriptAgent/index.ts +++ b/src/agents/scriptAgent/index.ts @@ -46,7 +46,6 @@ export async function decisionAI(ctx: AgentContext) { const mem = buildMemPrompt(await memory.get(text)); const projectData = await u.db("o_project").where("id", resTool.data.projectId).first(); - const novelData = await u.db("o_novel").where("projectId", resTool.data.projectId).select("id", "chapterIndex as index"); const projectInfo = [ "## 项目信息", @@ -57,12 +56,10 @@ export async function decisionAI(ctx: AgentContext) { `目标改编视频画幅:${projectData?.videoRatio ?? "16:9"}`, ].join("\n"); - const projectPrompt = `${projectInfo}\n\n## 章节ID映射表\n${novelData.map((i: any) => `- 章节ID:${i.id}: 第${i.index}章`).join("\n")}\n\n`; - const { textStream } = await u.Ai.Text("scriptAgent").stream({ messages: [ { role: "system", content: prompt }, - { role: "assistant", content: projectPrompt + mem }, + { role: "assistant", content: projectInfo + mem }, { role: "user", content: text }, ], abortSignal, @@ -72,7 +69,7 @@ export async function decisionAI(ctx: AgentContext) { ...createSubAgent(ctx), }, onFinish: async (completion) => { - await memory.add("assistant:decision", completion.text); + await memory.add("assistant:decision", removeAllXmlTags(completion.text)); }, }); @@ -89,12 +86,14 @@ function createSubAgent(parentCtx: AgentContext) { name, memoryKey, tools: extraTools, + messages, }: { prompt: string; system: string; name: string; memoryKey: string; tools?: Record; + messages?: { role: "user" | "assistant" | "system"; content: string }[]; }) { parentCtx.msg.complete(); const subMsg = resTool.newMessage("assistant", name); @@ -103,7 +102,7 @@ function createSubAgent(parentCtx: AgentContext) { const { textStream } = await u.Ai.Text("scriptAgent").stream({ system, - messages: [{ role: "user", content: prompt }], + messages: messages ?? [{ role: "user", content: prompt }], abortSignal, tools: { ...extraTools, ...useTools({ resTool, msg: subMsg }) }, }); @@ -122,13 +121,13 @@ function createSubAgent(parentCtx: AgentContext) { } if (fullResponse.trim()) { - await memory.add(memoryKey, fullResponse, { + await memory.add(memoryKey, removeAllXmlTags(fullResponse), { name, createTime: new Date(subMsg.datetime).getTime(), }); } - parentCtx.msg = resTool.newMessage("assistant", "统筹"); + parentCtx.msg = resTool.newMessage("assistant", "视频策划"); return fullResponse; } @@ -172,11 +171,25 @@ function createSubAgent(parentCtx: AgentContext) { execute: async ({ prompt }) => { const skill = path.join(u.getPath("skills"), "script_execution_script.md"); const systemPrompt = await fs.promises.readFile(skill, "utf-8"); + + const scriptList = await u.db("o_script").where("projectId", resTool.data.projectId).select("id", "name"); + const scriptPrompt = ["## 可用剧本(ID:名称)", scriptList.map((s: any) => `${s.id}:${(s.name || "").replace(/[,:]/g, "")}`).join(","), ""].join( + "\n", + ); + + const novelData = await u.db("o_novel").where("projectId", resTool.data.projectId).select("id", "chapterIndex as index"); + + const projectPrompt = ["## 章节ID映射(ID:章序)", novelData.map((i: any) => `${i.id}:${i.index}`).join(","), ""].join("\n"); + return runAgent({ prompt, system: systemPrompt + `\n你必须使用如下XML格式写入工作区:\nXML不得添加任何额外标签剧本内容剧本内容剧本内容`, + messages: [ + { role: "assistant", content: projectPrompt + "\n" + scriptPrompt }, + { role: "user", content: prompt }, + ], name: "编剧", memoryKey: "assistant:execution:script", }); @@ -206,3 +219,10 @@ function createSubAgent(parentCtx: AgentContext) { run_supervision_agent, }; } + +function removeAllXmlTags(text: string): string { + text = text.replace(/<([a-zA-Z][\w-]*)(\s+[^>]*)?>([\s\S]*?)<\/\1>/g, ""); + text = text.replace(/<([a-zA-Z][\w-]*)(\s+[^>]*)?\/>/g, ""); + text = text.replace(/<\/?[a-zA-Z][\w-]*(\s+[^>]*)?>/g, ""); + return text.trim(); +} diff --git a/src/agents/scriptAgent/tools.ts b/src/agents/scriptAgent/tools.ts index 2a267e4..7a4c8d7 100644 --- a/src/agents/scriptAgent/tools.ts +++ b/src/agents/scriptAgent/tools.ts @@ -30,6 +30,23 @@ export default (toolCpnfig: ToolConfig) => { const { resTool, toolsNames, msg } = toolCpnfig; const { socket } = resTool; const tools: Record = { + get_planData: tool({ + description: "获取工作区数据", + inputSchema: z.object({ + key: keySchema.describe("数据key"), + }), + execute: async ({ key }) => { + console.log("[tools] get_planData", key); + const thinking = msg.thinking(`正在获取${planDataKeyLabels[key]}工作区数据...`); + const planData: planData = await new Promise((resolve) => socket.emit("getPlanData", { key }, (res: any) => resolve(res))); + const value = planData[key]; + const valueStr = typeof value === "object" ? JSON.stringify(value, null, 2) : String(value ?? ""); + thinking.appendText(`获取到${planDataKeyLabels[key]}:\n` + valueStr); + thinking.updateTitle(`获取${planDataKeyLabels[key]}完成`); + thinking.complete(); + return valueStr || "无数据"; + }, + }), get_novel_events: tool({ description: "获取章节事件", inputSchema: z.object({ @@ -51,23 +68,6 @@ export default (toolCpnfig: ToolConfig) => { return eventString ?? "无数据"; }, }), - get_planData: tool({ - description: "获取工作区数据", - inputSchema: z.object({ - key: keySchema.describe("数据key"), - }), - execute: async ({ key }) => { - console.log("[tools] get_planData", key); - const thinking = msg.thinking(`正在获取${planDataKeyLabels[key]}工作区数据...`); - const planData: planData = await new Promise((resolve) => socket.emit("getPlanData", { key }, (res: any) => resolve(res))); - const value = planData[key]; - const valueStr = typeof value === "object" ? JSON.stringify(value, null, 2) : String(value ?? ""); - thinking.appendText(`获取到${planDataKeyLabels[key]}:\n` + valueStr); - thinking.updateTitle(`获取${planDataKeyLabels[key]}完成`); - thinking.complete(); - return valueStr || "无数据"; - }, - }), get_novel_text: tool({ description: "获取小说章节原始文本内容", inputSchema: z.object({ @@ -84,6 +84,22 @@ export default (toolCpnfig: ToolConfig) => { return text ?? "无数据"; }, }), + get_script_content: tool({ + description: "获取剧本本内容", + inputSchema: z.object({ + ids: z.array(z.string()).describe("脚本id"), + }), + execute: async ({ ids }) => { + console.log("[tools] get_script_content", "[tools] get_script_content", ids); + const thinking = msg.thinking(`正在获取脚本内容...`); + const data = await u.db("o_script").whereIn("id", ids).select("content", "name"); + const text = data && data.length ? data.map((d) => `${d.content}`).join("\n") : ""; + thinking.appendText(`获取到脚本内容:\n` + text); + thinking.updateTitle(`获取脚本内容完成`); + thinking.complete(); + return text ?? "无数据"; + }, + }), }; return toolsNames ? Object.fromEntries(Object.entries(tools).filter(([n]) => toolsNames.includes(n))) : tools; }; diff --git a/src/router.ts b/src/router.ts index bcc3560..5274e57 100644 --- a/src/router.ts +++ b/src/router.ts @@ -1,4 +1,4 @@ -// @routes-hash 4bd2ce809f84bc7049bfcf3accb58805 +// @routes-hash 0253aa6854e0abb4ff28e37f2593105e import { Express } from "express"; import route1 from "./routes/agents/clearMemory"; @@ -70,59 +70,60 @@ import route66 from "./routes/production/workbench/confirmSelection"; import route67 from "./routes/production/workbench/delVideo"; import route68 from "./routes/production/workbench/generateVideo"; import route69 from "./routes/production/workbench/generateVideoPrompt"; -import route70 from "./routes/production/workbench/getVideoModelDetail"; -import route71 from "./routes/production/workbench/videoPolling"; -import route72 from "./routes/project/addProject"; -import route73 from "./routes/project/addVisual"; -import route74 from "./routes/project/addVisualManual"; -import route75 from "./routes/project/deleteVisualManual"; -import route76 from "./routes/project/delProject"; -import route77 from "./routes/project/editProject"; -import route78 from "./routes/project/editVisualManual"; -import route79 from "./routes/project/getProject"; -import route80 from "./routes/project/getVisualManual"; -import route81 from "./routes/project/visualManual"; -import route82 from "./routes/script/addScript"; -import route83 from "./routes/script/delScript"; -import route84 from "./routes/script/exportScript"; -import route85 from "./routes/script/extractAssets"; -import route86 from "./routes/script/getScrptApi"; -import route87 from "./routes/script/pollScriptAssets"; -import route88 from "./routes/script/updateScript"; -import route89 from "./routes/scriptAgent/getPlanData"; -import route90 from "./routes/scriptAgent/setPlanData"; -import route91 from "./routes/scriptAgent/updateData"; -import route92 from "./routes/setting/about/checkUpdate"; -import route93 from "./routes/setting/about/downloadApp"; -import route94 from "./routes/setting/agentDeploy/agentSetKey"; -import route95 from "./routes/setting/agentDeploy/deployAgentModel"; -import route96 from "./routes/setting/agentDeploy/getAgentDeploy"; -import route97 from "./routes/setting/dbConfig/clearData"; -import route98 from "./routes/setting/dev/getSwitchAiDevTool"; -import route99 from "./routes/setting/dev/updateSwitchAiDevTool"; -import route100 from "./routes/setting/fileManagement/openFolder"; -import route101 from "./routes/setting/getTextModel"; -import route102 from "./routes/setting/loginConfig/getUser"; -import route103 from "./routes/setting/loginConfig/updateUserPwd"; -import route104 from "./routes/setting/memoryConfig/delAllMemory"; -import route105 from "./routes/setting/memoryConfig/getMemory"; -import route106 from "./routes/setting/memoryConfig/sureMemory"; -import route107 from "./routes/setting/promptManage/getPrompt"; -import route108 from "./routes/setting/promptManage/updatePrompt"; -import route109 from "./routes/setting/skillManagement/getSkillContent"; -import route110 from "./routes/setting/skillManagement/getSkillList"; -import route111 from "./routes/setting/skillManagement/saveSkillContent"; -import route112 from "./routes/setting/vendorConfig/addVendor"; -import route113 from "./routes/setting/vendorConfig/deleteVendor"; -import route114 from "./routes/setting/vendorConfig/getVendorList"; -import route115 from "./routes/setting/vendorConfig/modelTest"; -import route116 from "./routes/setting/vendorConfig/updateCode"; -import route117 from "./routes/setting/vendorConfig/updateVendor"; -import route118 from "./routes/task/getProject"; -import route119 from "./routes/task/getTaskApi"; -import route120 from "./routes/task/getTaskCategories"; -import route121 from "./routes/task/taskDetails"; -import route122 from "./routes/test/test"; +import route70 from "./routes/production/workbench/getGenerateData"; +import route71 from "./routes/production/workbench/getVideoModelDetail"; +import route72 from "./routes/production/workbench/videoPolling"; +import route73 from "./routes/project/addProject"; +import route74 from "./routes/project/addVisual"; +import route75 from "./routes/project/addVisualManual"; +import route76 from "./routes/project/deleteVisualManual"; +import route77 from "./routes/project/delProject"; +import route78 from "./routes/project/editProject"; +import route79 from "./routes/project/editVisualManual"; +import route80 from "./routes/project/getProject"; +import route81 from "./routes/project/getVisualManual"; +import route82 from "./routes/project/visualManual"; +import route83 from "./routes/script/addScript"; +import route84 from "./routes/script/delScript"; +import route85 from "./routes/script/exportScript"; +import route86 from "./routes/script/extractAssets"; +import route87 from "./routes/script/getScrptApi"; +import route88 from "./routes/script/pollScriptAssets"; +import route89 from "./routes/script/updateScript"; +import route90 from "./routes/scriptAgent/getPlanData"; +import route91 from "./routes/scriptAgent/setPlanData"; +import route92 from "./routes/scriptAgent/updateData"; +import route93 from "./routes/setting/about/checkUpdate"; +import route94 from "./routes/setting/about/downloadApp"; +import route95 from "./routes/setting/agentDeploy/agentSetKey"; +import route96 from "./routes/setting/agentDeploy/deployAgentModel"; +import route97 from "./routes/setting/agentDeploy/getAgentDeploy"; +import route98 from "./routes/setting/dbConfig/clearData"; +import route99 from "./routes/setting/dev/getSwitchAiDevTool"; +import route100 from "./routes/setting/dev/updateSwitchAiDevTool"; +import route101 from "./routes/setting/fileManagement/openFolder"; +import route102 from "./routes/setting/getTextModel"; +import route103 from "./routes/setting/loginConfig/getUser"; +import route104 from "./routes/setting/loginConfig/updateUserPwd"; +import route105 from "./routes/setting/memoryConfig/delAllMemory"; +import route106 from "./routes/setting/memoryConfig/getMemory"; +import route107 from "./routes/setting/memoryConfig/sureMemory"; +import route108 from "./routes/setting/promptManage/getPrompt"; +import route109 from "./routes/setting/promptManage/updatePrompt"; +import route110 from "./routes/setting/skillManagement/getSkillContent"; +import route111 from "./routes/setting/skillManagement/getSkillList"; +import route112 from "./routes/setting/skillManagement/saveSkillContent"; +import route113 from "./routes/setting/vendorConfig/addVendor"; +import route114 from "./routes/setting/vendorConfig/deleteVendor"; +import route115 from "./routes/setting/vendorConfig/getVendorList"; +import route116 from "./routes/setting/vendorConfig/modelTest"; +import route117 from "./routes/setting/vendorConfig/updateCode"; +import route118 from "./routes/setting/vendorConfig/updateVendor"; +import route119 from "./routes/task/getProject"; +import route120 from "./routes/task/getTaskApi"; +import route121 from "./routes/task/getTaskCategories"; +import route122 from "./routes/task/taskDetails"; +import route123 from "./routes/test/test"; export default async (app: Express) => { app.use("/api/agents/clearMemory", route1); @@ -194,57 +195,58 @@ export default async (app: Express) => { app.use("/api/production/workbench/delVideo", route67); app.use("/api/production/workbench/generateVideo", route68); app.use("/api/production/workbench/generateVideoPrompt", route69); - app.use("/api/production/workbench/getVideoModelDetail", route70); - app.use("/api/production/workbench/videoPolling", route71); - app.use("/api/project/addProject", route72); - app.use("/api/project/addVisual", route73); - app.use("/api/project/addVisualManual", route74); - app.use("/api/project/deleteVisualManual", route75); - app.use("/api/project/delProject", route76); - app.use("/api/project/editProject", route77); - app.use("/api/project/editVisualManual", route78); - app.use("/api/project/getProject", route79); - app.use("/api/project/getVisualManual", route80); - app.use("/api/project/visualManual", route81); - app.use("/api/script/addScript", route82); - app.use("/api/script/delScript", route83); - app.use("/api/script/exportScript", route84); - app.use("/api/script/extractAssets", route85); - app.use("/api/script/getScrptApi", route86); - app.use("/api/script/pollScriptAssets", route87); - app.use("/api/script/updateScript", route88); - app.use("/api/scriptAgent/getPlanData", route89); - app.use("/api/scriptAgent/setPlanData", route90); - app.use("/api/scriptAgent/updateData", route91); - app.use("/api/setting/about/checkUpdate", route92); - app.use("/api/setting/about/downloadApp", route93); - app.use("/api/setting/agentDeploy/agentSetKey", route94); - app.use("/api/setting/agentDeploy/deployAgentModel", route95); - app.use("/api/setting/agentDeploy/getAgentDeploy", route96); - app.use("/api/setting/dbConfig/clearData", route97); - app.use("/api/setting/dev/getSwitchAiDevTool", route98); - app.use("/api/setting/dev/updateSwitchAiDevTool", route99); - app.use("/api/setting/fileManagement/openFolder", route100); - app.use("/api/setting/getTextModel", route101); - app.use("/api/setting/loginConfig/getUser", route102); - app.use("/api/setting/loginConfig/updateUserPwd", route103); - app.use("/api/setting/memoryConfig/delAllMemory", route104); - app.use("/api/setting/memoryConfig/getMemory", route105); - app.use("/api/setting/memoryConfig/sureMemory", route106); - app.use("/api/setting/promptManage/getPrompt", route107); - app.use("/api/setting/promptManage/updatePrompt", route108); - app.use("/api/setting/skillManagement/getSkillContent", route109); - app.use("/api/setting/skillManagement/getSkillList", route110); - app.use("/api/setting/skillManagement/saveSkillContent", route111); - app.use("/api/setting/vendorConfig/addVendor", route112); - app.use("/api/setting/vendorConfig/deleteVendor", route113); - app.use("/api/setting/vendorConfig/getVendorList", route114); - app.use("/api/setting/vendorConfig/modelTest", route115); - app.use("/api/setting/vendorConfig/updateCode", route116); - app.use("/api/setting/vendorConfig/updateVendor", route117); - app.use("/api/task/getProject", route118); - app.use("/api/task/getTaskApi", route119); - app.use("/api/task/getTaskCategories", route120); - app.use("/api/task/taskDetails", route121); - app.use("/api/test/test", route122); + app.use("/api/production/workbench/getGenerateData", route70); + app.use("/api/production/workbench/getVideoModelDetail", route71); + app.use("/api/production/workbench/videoPolling", route72); + app.use("/api/project/addProject", route73); + app.use("/api/project/addVisual", route74); + app.use("/api/project/addVisualManual", route75); + app.use("/api/project/deleteVisualManual", route76); + app.use("/api/project/delProject", route77); + app.use("/api/project/editProject", route78); + app.use("/api/project/editVisualManual", route79); + app.use("/api/project/getProject", route80); + app.use("/api/project/getVisualManual", route81); + app.use("/api/project/visualManual", route82); + app.use("/api/script/addScript", route83); + app.use("/api/script/delScript", route84); + app.use("/api/script/exportScript", route85); + app.use("/api/script/extractAssets", route86); + app.use("/api/script/getScrptApi", route87); + app.use("/api/script/pollScriptAssets", route88); + app.use("/api/script/updateScript", route89); + app.use("/api/scriptAgent/getPlanData", route90); + app.use("/api/scriptAgent/setPlanData", route91); + app.use("/api/scriptAgent/updateData", route92); + app.use("/api/setting/about/checkUpdate", route93); + app.use("/api/setting/about/downloadApp", route94); + app.use("/api/setting/agentDeploy/agentSetKey", route95); + app.use("/api/setting/agentDeploy/deployAgentModel", route96); + app.use("/api/setting/agentDeploy/getAgentDeploy", route97); + app.use("/api/setting/dbConfig/clearData", route98); + app.use("/api/setting/dev/getSwitchAiDevTool", route99); + app.use("/api/setting/dev/updateSwitchAiDevTool", route100); + app.use("/api/setting/fileManagement/openFolder", route101); + app.use("/api/setting/getTextModel", route102); + app.use("/api/setting/loginConfig/getUser", route103); + app.use("/api/setting/loginConfig/updateUserPwd", route104); + app.use("/api/setting/memoryConfig/delAllMemory", route105); + app.use("/api/setting/memoryConfig/getMemory", route106); + app.use("/api/setting/memoryConfig/sureMemory", route107); + app.use("/api/setting/promptManage/getPrompt", route108); + app.use("/api/setting/promptManage/updatePrompt", route109); + app.use("/api/setting/skillManagement/getSkillContent", route110); + app.use("/api/setting/skillManagement/getSkillList", route111); + app.use("/api/setting/skillManagement/saveSkillContent", route112); + app.use("/api/setting/vendorConfig/addVendor", route113); + app.use("/api/setting/vendorConfig/deleteVendor", route114); + app.use("/api/setting/vendorConfig/getVendorList", route115); + app.use("/api/setting/vendorConfig/modelTest", route116); + app.use("/api/setting/vendorConfig/updateCode", route117); + app.use("/api/setting/vendorConfig/updateVendor", route118); + app.use("/api/task/getProject", route119); + app.use("/api/task/getTaskApi", route120); + app.use("/api/task/getTaskCategories", route121); + app.use("/api/task/taskDetails", route122); + app.use("/api/test/test", route123); } diff --git a/src/routes/production/workbench/getGenerateData.ts b/src/routes/production/workbench/getGenerateData.ts new file mode 100644 index 0000000..b24195d --- /dev/null +++ b/src/routes/production/workbench/getGenerateData.ts @@ -0,0 +1,51 @@ +import express from "express"; +import u from "@/utils"; +import { z } from "zod"; +import { success } from "@/lib/responseFormat"; +import { validateFields } from "@/middleware/middleware"; +const router = express.Router(); + +interface VideoItem { + id: number; + src: string; + state: "未生成" | "生成中" | "已完成" | "生成失败"; +} + +interface TrackMedia { + src: string; + id?: number; + fileType: "image" | "video" | "audio"; +} + +interface TrackItem { + id?: number; + medias: TrackMedia[]; + videoList: VideoItem[]; +} + +export default router.post( + "/", + validateFields({ + projectId: z.number(), + scriptId: z.number(), + }), + async (req, res) => { + const { projectId, scriptId } = req.body; + // const data = await u.db("o_videoTrack").where({ projectId, scriptId }); + const storyboardList = await u.db("o_storyboard").where({ scriptId }).orderBy("index", "asc"); + console.log("%c Line:17 🥝 storyboardList", "background:#ea7e5c", storyboardList); + // const data = await u.db("o_video").where({ projectId, scriptId }); + const trackList: TrackItem[] = [ + { + id: 1, + medias: [{ src: "https://example.com/image1.jpg", fileType: "image", id: 1 }], + videoList: [ + { id: 1, src: "https://example.com/video1.mp4", state: "已完成" }, + { id: 2, src: "https://example.com/video2.mp4", state: "生成中" }, + ], + }, + ]; + + res.status(200).send(success(trackList)); + }, +); diff --git a/src/types/database.d.ts b/src/types/database.d.ts index 9c19252..6635502 100644 --- a/src/types/database.d.ts +++ b/src/types/database.d.ts @@ -1,20 +1,6 @@ -// @db-hash b1210691844e077e9df7dc16c802ce5a +// @db-hash c2029b55b7dcdcf64788dafc34799fea //该文件由脚本自动生成,请勿手动修改 -export interface _o_project_old_20260331 { - 'artStyle'?: string | null; - 'createTime'?: number | null; - 'id'?: number | null; - 'imageModel'?: string | null; - 'imageQuality'?: 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 memories { 'content': string; 'createTime': number; @@ -87,6 +73,7 @@ export interface o_image { 'filePath'?: string | null; 'id'?: number; 'model'?: string | null; + 'reason'?: string | null; 'resolution'?: string | null; 'state'?: string | null; 'type'?: string | null; @@ -181,6 +168,7 @@ export interface o_storyboard { 'duration'?: string | null; 'filePath'?: string | null; 'frameMode'?: string | null; + 'group'?: string | null; 'id'?: number; 'index'?: number | null; 'lines'?: string | null; @@ -241,7 +229,6 @@ export interface o_videoTrack { } export interface DB { - "_o_project_old_20260331": _o_project_old_20260331; "memories": memories; "o_agentDeploy": o_agentDeploy; "o_agentWorkData": o_agentWorkData; diff --git a/yarn.lock b/yarn.lock index 3513455..537a199 100644 --- a/yarn.lock +++ b/yarn.lock @@ -50,9 +50,9 @@ "@vercel/oidc" "3.1.0" "@ai-sdk/google@^3.0.20": - version "3.0.53" - resolved "https://registry.npmmirror.com/@ai-sdk/google/-/google-3.0.53.tgz#3dc30808593e774d8068b46f6ac2ab4ff15e88f8" - integrity sha512-uz8tIlkDgQJG9Js2Wh9JHzd4kI9+hYJqf9XXJLx60vyN5mRIqhr49iwR5zGP5Gl8odp2PeR3Gh2k+5bh3Z1HHw== + version "3.0.54" + resolved "https://registry.npmmirror.com/@ai-sdk/google/-/google-3.0.54.tgz#648cfb5ddd38e4931811fdd94c8c291cc6aa4c21" + integrity sha512-EgYYdA2LpHZefLDU/FIpmeTlL5Hi4WKQZY3nACMh0wVhrS1fAvlfrdwnD1G4ISCOKWMWrMcRZX9ubs3NM/KHfA== dependencies: "@ai-sdk/provider" "3.0.8" "@ai-sdk/provider-utils" "4.0.21" @@ -66,9 +66,9 @@ "@ai-sdk/provider-utils" "4.0.21" "@ai-sdk/openai@^3.0.25": - version "3.0.48" - resolved "https://registry.npmmirror.com/@ai-sdk/openai/-/openai-3.0.48.tgz#38d4690648929703b78672add7e3e21628715d57" - integrity sha512-ALmj/53EXpcRqMbGpPJPP4UOSWw0q4VGpnDo7YctvsynjkrKDmoneDG/1a7VQnSPYHnJp6tTRMf5ZdxZ5whulg== + version "3.0.49" + resolved "https://registry.npmmirror.com/@ai-sdk/openai/-/openai-3.0.49.tgz#88d7de4cf4d42b3e541645ca1338fee41ba58951" + integrity sha512-U2f0pCyNn/jQH3wjgxr8o9VvCkuDFTtXbIhbFFtgXqCzMbed6rBnvzQcAMEK0/Pa44byL9zfcvCOFOflvkRA8w== dependencies: "@ai-sdk/provider" "3.0.8" "@ai-sdk/provider-utils" "4.0.21" @@ -145,9 +145,9 @@ json-schema "^0.4.0" "@ai-sdk/xai@^3.0.47": - version "3.0.74" - resolved "https://registry.npmmirror.com/@ai-sdk/xai/-/xai-3.0.74.tgz#5afe79fc2c97f4920a17b83d2163aee2ea93c4ee" - integrity sha512-HDDLsT+QrzE3c2QZLRV/HKAwMtXDb0PMDdk1PYUXLJ3r9Qv76zGKGyvJLX7Pu6c8TOHD1mwLrOVYrsTpC/eTMw== + version "3.0.75" + resolved "https://registry.npmmirror.com/@ai-sdk/xai/-/xai-3.0.75.tgz#f5986414ace266f4ac94137d4e2740fe4abf589a" + integrity sha512-V8UKK4fNpI9cnrtsZBvUp9O9J6Y9fTKBRoSLyEaNGPirACewixmLDbXsSgAeownPVWiWpK34bFysd+XouI5Ywg== dependencies: "@ai-sdk/openai-compatible" "2.0.37" "@ai-sdk/provider" "3.0.8" @@ -1410,7 +1410,7 @@ brace-expansion@^2.0.1, brace-expansion@^2.0.2: dependencies: balanced-match "^1.0.0" -brace-expansion@^5.0.2: +brace-expansion@^5.0.5: 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== @@ -3212,9 +3212,9 @@ keyv@^4.0.0: json-buffer "3.0.1" knex@^3.1.0, knex@^3.2.5: - version "3.2.7" - resolved "https://registry.npmmirror.com/knex/-/knex-3.2.7.tgz#53bc16470217f12fef516a7a649794a405d3473d" - integrity sha512-VxdDE72x7Tc08E5yCu8HqYoeOm0HOjAraOtYiGSAUJTYkydwfSGBOpQqYHrzM5vjLNzw2JDL2vDH8m7DjIjtgA== + version "3.2.8" + resolved "https://registry.npmmirror.com/knex/-/knex-3.2.8.tgz#1bfb9caa8419db2c65512259a83a7896912db42e" + integrity sha512-ElXXxu9Nq+5hWYdBUddYIWIT5yKKs5KNCsmKGbJSHPyaMpAABp3xs4L55GgdQoAs6QQ7dv72ai3M4pxYQ8utEg== dependencies: colorette "2.0.19" commander "^10.0.0" @@ -3493,11 +3493,11 @@ mimic-response@^3.1.0: integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== minimatch@^10.0.3, minimatch@^10.2.1, minimatch@^10.2.2: - version "10.2.4" - resolved "https://registry.npmmirror.com/minimatch/-/minimatch-10.2.4.tgz#465b3accbd0218b8281f5301e27cedc697f96fde" - integrity sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg== + version "10.2.5" + resolved "https://registry.npmmirror.com/minimatch/-/minimatch-10.2.5.tgz#bd48687a0be38ed2961399105600f832095861d1" + integrity sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg== dependencies: - brace-expansion "^5.0.2" + brace-expansion "^5.0.5" minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1: version "3.1.5" @@ -4083,9 +4083,9 @@ path-scurry@^2.0.2: minipass "^7.1.2" path-to-regexp@^8.0.0: - version "8.4.0" - resolved "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-8.4.0.tgz#8e98fcd94826aff01a90c544ef74ffbaca3a78ed" - integrity sha512-PuseHIvAnz3bjrM2rGJtSgo1zjgxapTLZ7x2pjhzWwlp4SJQgK3f3iZIQwkpEnBaKz6seKBADpM4B4ySkuYypg== + version "8.4.1" + resolved "https://registry.npmmirror.com/path-to-regexp/-/path-to-regexp-8.4.1.tgz#1dbe9c340367a44340e5bc114f515b56c7210f19" + integrity sha512-fvU78fIjZ+SBM9YwCknCvKOUKkLVqtWDVctl0s7xIqfmfb38t2TT4ZU2gHm+Z8xGwgW+QWEU3oQSAzIbo89Ggw== pe-library@^0.4.1: version "0.4.1"