aitu-app 0.6.76 → 0.6.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/assets/CanvasAudioPlayer-DutgwdiU.js +2 -0
- package/assets/ChatDrawer-E6Fog16I.js +11 -0
- package/assets/{ChatMessagesArea-CZkiRzmW.js → ChatMessagesArea-Bgwiz_XP.js} +3 -3
- package/assets/DeferredAIInputBar-CPkD8Cv9.js +8 -0
- package/assets/DeferredAIInputBar-szBPHiNW.css +1 -0
- package/assets/DrawnixDeferredFeatures-Cul76-88.js +2 -0
- package/assets/{KnowledgeBaseContent-Dan2DUqY.js → KnowledgeBaseContent-DcX5Jofx.js} +6 -6
- package/assets/{MVCreator-Dzjl2fXA.js → MVCreator-DllHozYg.js} +8 -8
- package/assets/{ModelBenchmarkWorkbench-oy2wue1u.js → ModelBenchmarkWorkbench-Dv9SNYTi.js} +2 -2
- package/assets/MusicAnalyzer-CHcQ5t4P.js +1 -0
- package/assets/{MusicAnalyzer-BO44f-db.js → MusicAnalyzer-DDeT6g3c.js} +2 -2
- package/assets/ResizableDivider-CaG9JQbJ.js +1 -0
- package/assets/TaskQueuePanel-BNhNzGp5.js +1 -0
- package/assets/{VideoAnalyzer-iiJpoWb6.js → VideoAnalyzer-BSLz1FaI.js} +2 -2
- package/assets/ai-generation-preferences-service-BF7QkuJp.js +1 -0
- package/assets/arc-BU2KKCa_.js +1 -0
- package/assets/arc-DmGoDCEL.js +1 -0
- package/assets/{batch-image-generation-B2R0hJW_.js → batch-image-generation-Bg68r_Ql.js} +5 -5
- package/assets/{blockDiagram-38ab4fdb-BmWPnNuS.js → blockDiagram-38ab4fdb-BCGEnMME.js} +1 -1
- package/assets/{blockDiagram-38ab4fdb-trArAOFP.js → blockDiagram-38ab4fdb-CsZR5uC5.js} +1 -1
- package/assets/board-utils-CpAtoKn2.js +1 -0
- package/assets/{browser-Dya3c6_X.js → browser-DpICcNby.js} +1 -1
- package/assets/{c4Diagram-3d4e48cf-Cvj3RMOv.js → c4Diagram-3d4e48cf-9fuiuFdV.js} +1 -1
- package/assets/{c4Diagram-3d4e48cf-CqJrO4Za.js → c4Diagram-3d4e48cf-WM4wd_GR.js} +1 -1
- package/assets/{canvas-insertion-Dq3gR9Nw.js → canvas-insertion-CdUQF7IV.js} +3 -3
- package/assets/channel-CZjE-WNp.js +1 -0
- package/assets/channel-SXZD6bG3.js +1 -0
- package/assets/classDiagram-70f12bd4-CBVHTwQu.js +2 -0
- package/assets/{classDiagram-70f12bd4-DvrRZ41d.js → classDiagram-70f12bd4-DcYDedz1.js} +2 -2
- package/assets/classDiagram-v2-f2320105-CsxWGkSy.js +2 -0
- package/assets/classDiagram-v2-f2320105-jpCwaHEd.js +2 -0
- package/assets/{clipper-B4i11tN1.js → clipper-jvd5rF5a.js} +1 -1
- package/assets/clone-C4mvvMDb.js +1 -0
- package/assets/{createText-2e5e7dd3-D7dXlVes.js → createText-2e5e7dd3-CkXS3l7I.js} +2 -2
- package/assets/{createText-2e5e7dd3-B8gnT5hD.js → createText-2e5e7dd3-x5lOIwut.js} +1 -1
- package/assets/edges-e0da2a9e-CbrF4nbD.js +4 -0
- package/assets/{edges-e0da2a9e-CyRAzEMi.js → edges-e0da2a9e-Ch6PBwWs.js} +2 -2
- package/assets/{erDiagram-9861fffd-D8yYsjoN.js → erDiagram-9861fffd-Bq07elcI.js} +3 -3
- package/assets/{erDiagram-9861fffd-BHbAa_Ka.js → erDiagram-9861fffd-DSlNVuAZ.js} +4 -4
- package/assets/{flowDb-956e92f1-DAqb8wjP.js → flowDb-956e92f1-BqPCJlZp.js} +3 -3
- package/assets/{flowDb-956e92f1-f30uG4pp.js → flowDb-956e92f1-Ti5YC4Vv.js} +3 -3
- package/assets/{flowDiagram-66a62f08-C4Gz9mOM.js → flowDiagram-66a62f08-CPDuG3rY.js} +3 -3
- package/assets/{flowDiagram-66a62f08-CBXypoEi.js → flowDiagram-66a62f08-D3GSABFi.js} +1 -1
- package/assets/flowDiagram-v2-96b9c2cf-BCcJ-cre.js +1 -0
- package/assets/flowDiagram-v2-96b9c2cf-DCVaFEgV.js +1 -0
- package/assets/{flowchart-elk-definition-4a651766-CSm5diF6.js → flowchart-elk-definition-4a651766-BH09NeLA.js} +1 -1
- package/assets/{flowchart-elk-definition-4a651766-BHB7pRxm.js → flowchart-elk-definition-4a651766-BLaLPCDV.js} +1 -1
- package/assets/{ganttDiagram-c361ad54-CU9a9DsJ.js → ganttDiagram-c361ad54-DL9ZeaEc.js} +4 -4
- package/assets/ganttDiagram-c361ad54-Sp9M1KHP.js +257 -0
- package/assets/{gitGraphDiagram-72cf32ee-B2zj8Xnu.js → gitGraphDiagram-72cf32ee-BSf1fsDV.js} +1 -1
- package/assets/{gitGraphDiagram-72cf32ee-BWOgrFeh.js → gitGraphDiagram-72cf32ee-BWwmRKo-.js} +1 -1
- package/assets/{graph-Bnmq4jgf.js → graph--nPw8zXQ.js} +1 -1
- package/assets/graph-g-2U7grQ.js +1 -0
- package/assets/{index-3862675e-CQLKy6RO.js → index-3862675e-BXwbZ2pz.js} +1 -1
- package/assets/{index-3862675e-BSxxidV_.js → index-3862675e-D6Zy95zZ.js} +1 -1
- package/assets/index-3eqA7Bag.js +1 -0
- package/assets/{index-D1ORCZqJ.js → index-7Q-aiwln.js} +2 -2
- package/assets/index-B2dttXd7.js +1 -0
- package/assets/index-B7V7-Vxz.js +1 -0
- package/assets/index-BHPTfCZM.js +1 -0
- package/assets/{index-vvV37Q1S.js → index-BP77pG9S.js} +4 -4
- package/assets/index-BPR_DyGD.js +1 -0
- package/assets/index-BWrcsh8u.js +1 -0
- package/assets/{index-D4qm_1m5.js → index-BXzGHPXz.js} +1 -1
- package/assets/index-BaCHOxhI.js +1 -0
- package/assets/{index-BoglETHF.js → index-Bq8mPedC.js} +2 -2
- package/assets/index-BqHZCcen.js +2 -0
- package/assets/index-Bti3m-iW.js +1 -0
- package/assets/{index-sPNG1_UN.js → index-BwSnJN93.js} +5 -5
- package/assets/{index-D5qxbeGT.js → index-C3qD42ws.js} +1 -1
- package/assets/{index-VzDb_AHs.js → index-C5eu4uSl.js} +5 -5
- package/assets/index-CLJUfzvO.js +1 -0
- package/assets/index-CfgvFFx3.js +271 -0
- package/assets/index-CmyOpFTN.js +1 -0
- package/assets/index-D4pIkh3S.js +1 -0
- package/assets/index-D7b5fX1d.js +1 -0
- package/assets/index-DH12_HTj.js +13 -0
- package/assets/index-DI0OV6F8.js +7 -0
- package/assets/index-DIiIUyb-.js +1 -0
- package/assets/index-DcZrElEK.js +2 -0
- package/assets/index-DllL1sx1.js +1 -0
- package/assets/index-DqMndQiP.js +1 -0
- package/assets/index-Dz8sghkK.js +1 -0
- package/assets/index-QkP3EC02.js +1 -0
- package/assets/index-TkfyNewx.js +1 -0
- package/assets/index-ZrVeQUWo.js +1 -0
- package/assets/index-eZfwJ9bV.js +3 -0
- package/assets/{index-VarwiJlL.js → index-gQ7LgvSv.js} +1 -1
- package/assets/{infoDiagram-f8f76790-d-BYTW2w.js → infoDiagram-f8f76790-DpFqCCNv.js} +3 -3
- package/assets/{infoDiagram-f8f76790-BMsVq8O_.js → infoDiagram-f8f76790-G2JpJJP7.js} +3 -3
- package/assets/{journeyDiagram-49397b02-DCtCkoaC.js → journeyDiagram-49397b02-BdESGMrv.js} +1 -1
- package/assets/{journeyDiagram-49397b02-CBqb8-ml.js → journeyDiagram-49397b02-DLLTobRM.js} +1 -1
- package/assets/{layout-DKqEkE_W.js → layout-CVkuImk4.js} +1 -1
- package/assets/layout-WSR0vNPO.js +1 -0
- package/assets/line-D3bnG227.js +1 -0
- package/assets/line-DQuMJveY.js +1 -0
- package/assets/{linear-C6OQYT56.js → linear-CciP-97N.js} +1 -1
- package/assets/linear-Z6vFvuwc.js +1 -0
- package/assets/{main-i0s2IJTn.css → main-8DNjLY6L.css} +1 -1
- package/assets/main-BFEkxCOK.js +56 -0
- package/assets/{mermaid.core-CI-VJEiw.js → mermaid.core-CwZQb0ud.js} +5 -5
- package/assets/{mindmap-definition-fc14e90a-k_RSypuP.js → mindmap-definition-fc14e90a-BnJ8OOTI.js} +1 -1
- package/assets/{mindmap-definition-fc14e90a-DrtlQLES.js → mindmap-definition-fc14e90a-CxQMydCW.js} +1 -1
- package/assets/model-benchmark-launcher-Ct3lYXVq.js +1 -0
- package/assets/photo-wall-splitter-BZ88W5Zy.js +1 -0
- package/assets/{pieDiagram-8a3498a8-CdknGxKY.js → pieDiagram-8a3498a8-BSDdkTeu.js} +5 -5
- package/assets/{pieDiagram-8a3498a8-Bpr5V3o5.js → pieDiagram-8a3498a8-D6VtAoja.js} +4 -4
- package/assets/ppt-generation-FzjP_rp0.js +48 -0
- package/assets/{quadrantDiagram-120e2f19-Dx3qoKDx.js → quadrantDiagram-120e2f19-BbFV0VXY.js} +3 -3
- package/assets/{quadrantDiagram-120e2f19-pVIXp9i6.js → quadrantDiagram-120e2f19-C8k2xuBd.js} +3 -3
- package/assets/{requirementDiagram-deff3bca-hM4oekUG.js → requirementDiagram-deff3bca-C3xMdzJV.js} +1 -1
- package/assets/{requirementDiagram-deff3bca-DD6NY75P.js → requirementDiagram-deff3bca-CpjqKjYZ.js} +1 -1
- package/assets/{sankeyDiagram-04a897e0-BsvEG71N.js → sankeyDiagram-04a897e0-BBJJgsFv.js} +5 -5
- package/assets/{sankeyDiagram-04a897e0-C9uf1jU5.js → sankeyDiagram-04a897e0-Bjvig9bW.js} +4 -4
- package/assets/{sequenceDiagram-704730f1-CNEBmz1G.js → sequenceDiagram-704730f1-DX1MmBN_.js} +4 -4
- package/assets/{sequenceDiagram-704730f1-Bpg54z74.js → sequenceDiagram-704730f1-PFC_9IFI.js} +4 -4
- package/assets/settings-dialog-CQM4v791.js +1 -0
- package/assets/{skill-dsl-parser-DS3VOBFI.js → skill-dsl-parser-syNWYxFu.js} +10 -10
- package/assets/{stateDiagram-587899a1-BN2ZP-3x.js → stateDiagram-587899a1-Dc3mI_B_.js} +1 -1
- package/assets/stateDiagram-587899a1-SFMUVAam.js +1 -0
- package/assets/{stateDiagram-v2-d93cdb3a-BtV1Ziy9.js → stateDiagram-v2-d93cdb3a-DmnBjHpC.js} +1 -1
- package/assets/{stateDiagram-v2-d93cdb3a-BLwIM8s1.js → stateDiagram-v2-d93cdb3a-P4Yt2p_j.js} +1 -1
- package/assets/{styles-6aaf32cf-aFVlX_lA.js → styles-6aaf32cf-C3jnr3hV.js} +1 -1
- package/assets/{styles-6aaf32cf-CGp3i5qu.js → styles-6aaf32cf-b6AdP7fu.js} +1 -1
- package/assets/{styles-9a916d00-BK7pejCH.js → styles-9a916d00-BUiD9iBe.js} +4 -4
- package/assets/{styles-9a916d00-CSwFWVnr.js → styles-9a916d00-ii0XTdIm.js} +1 -1
- package/assets/styles-c10674c1-Bt89Yy8Q.js +116 -0
- package/assets/styles-c10674c1-DbTSpy3W.js +116 -0
- package/assets/{svgDrawCommon-08f97a94-Cr4rWU-W.js → svgDrawCommon-08f97a94-BK6lD4D6.js} +1 -1
- package/assets/{svgDrawCommon-08f97a94-DypvMDvH.js → svgDrawCommon-08f97a94-D4gIV05W.js} +1 -1
- package/assets/{timeline-definition-85554ec2-D3-lXEL5.js → timeline-definition-85554ec2-Bl2y548G.js} +1 -1
- package/assets/{timeline-definition-85554ec2-DIwHE15c.js → timeline-definition-85554ec2-CWKg_JxG.js} +3 -3
- package/assets/{tool-windows-B-a9r3G3.css → tool-windows-CUNbW1Tz.css} +1 -1
- package/assets/tool-windows-DOIu9TAD.js +2975 -0
- package/assets/ttd-dialog-DI4kQSg8.js +99 -0
- package/assets/{useCharacters-DsZ779l-.js → useCharacters-Chv4Ky7x.js} +3 -3
- package/assets/useWorkflowSubmission-BizuDmuw.js +70 -0
- package/assets/video-analyze-6v3Y-rUE.js +1 -0
- package/assets/{video-generation-C7qCz-ZF.js → video-generation-DnmTlWnm.js} +2 -2
- package/assets/video-recovery-service-BeRoh0s2.js +1 -0
- package/assets/workflow-generation-utils-me381Cax.js +3 -0
- package/assets/workflow-submission-service-YOpo7g37.js +4 -0
- package/assets/{xychartDiagram-e933f94c-B17Evxfw.js → xychartDiagram-e933f94c-CJX9_9WF.js} +4 -4
- package/assets/{xychartDiagram-e933f94c-Dln5PJtU.js → xychartDiagram-e933f94c-Cep8CQEH.js} +3 -3
- package/changelog.json +50 -0
- package/idle-prefetch-manifest.json +300 -316
- package/manifest.json +3 -3
- package/package.json +1 -1
- package/precache-manifest.json +8 -8
- package/sw.js +5 -5
- package/version.json +19 -3
- package/assets/CanvasAudioPlayer-DwM6PU4W.js +0 -2
- package/assets/ChatDrawer-BQTaa6r6.js +0 -11
- package/assets/DeferredAIInputBar-BmPgFhXr.css +0 -1
- package/assets/DeferredAIInputBar-ObyfJQ0O.js +0 -7
- package/assets/DrawnixDeferredFeatures-CFHVLxc5.js +0 -2
- package/assets/ModelDropdown-CQTTHEI7.css +0 -1
- package/assets/ModelDropdown-DjvIvi8O.js +0 -1
- package/assets/MusicAnalyzer-BU5l2wPR.js +0 -1
- package/assets/ResizableDivider-CBgTphcS.js +0 -1
- package/assets/TaskQueuePanel-CTDuSScf.js +0 -1
- package/assets/ai-generation-preferences-service-CqwXb9Cs.js +0 -5
- package/assets/arc-BBE0LXa1.js +0 -1
- package/assets/arc-h476db6P.js +0 -1
- package/assets/channel-DMTz1UNN.js +0 -1
- package/assets/channel-DQOY3XLe.js +0 -1
- package/assets/classDiagram-70f12bd4-5ACx619h.js +0 -2
- package/assets/classDiagram-v2-f2320105-4zQ4jrwi.js +0 -2
- package/assets/classDiagram-v2-f2320105-CB4rof84.js +0 -2
- package/assets/clone-fuaXEdc-.js +0 -1
- package/assets/edges-e0da2a9e-DZalSm7f.js +0 -4
- package/assets/flowDiagram-v2-96b9c2cf-C-DFFh54.js +0 -1
- package/assets/flowDiagram-v2-96b9c2cf-CWjydvHB.js +0 -1
- package/assets/ganttDiagram-c361ad54-DDnbMkWm.js +0 -257
- package/assets/graph-BsYIlc-B.js +0 -1
- package/assets/index-B10kMZoq.js +0 -1
- package/assets/index-B2_XRj3U.js +0 -1
- package/assets/index-B4lLv-Sz.js +0 -1
- package/assets/index-BFZNUUCR.js +0 -1
- package/assets/index-BTSYG2Vy.js +0 -1
- package/assets/index-BY5Kvjqg.js +0 -1
- package/assets/index-Blf7J5yW.js +0 -1
- package/assets/index-BoQA7VaE.js +0 -3
- package/assets/index-BzqQ69oU.js +0 -1
- package/assets/index-CD2D1BYc.js +0 -2
- package/assets/index-CLRs5cWt.js +0 -1
- package/assets/index-CLU4LJjR.js +0 -1
- package/assets/index-CPDfMZkS.js +0 -1
- package/assets/index-CPfhqyDz.js +0 -316
- package/assets/index-CU4ySaQE.js +0 -1
- package/assets/index-CsCwwmYY.js +0 -1
- package/assets/index-Cyz_w8KS.js +0 -7
- package/assets/index-D489cJtb.js +0 -1
- package/assets/index-D6DebbcI.js +0 -1
- package/assets/index-DDtPG6Km.js +0 -1
- package/assets/index-DKhTnUBU.js +0 -1
- package/assets/index-DMIwLDS8.js +0 -13
- package/assets/index-DgsUJgRJ.js +0 -1
- package/assets/index-oT8mbA3U.js +0 -2
- package/assets/layout-B1ePJO5V.js +0 -1
- package/assets/line-C_jmJ6v1.js +0 -1
- package/assets/line-DfhCgsyz.js +0 -1
- package/assets/linear-ChY5Iu43.js +0 -1
- package/assets/main-LCg1nQGB.js +0 -69
- package/assets/model-benchmark-launcher-B2MsZXmV.js +0 -1
- package/assets/model-benchmark-service-CkIRp-Sq.js +0 -1
- package/assets/model-selection-BvdXmVGX.js +0 -1
- package/assets/photo-wall-splitter-CVrfkWnh.js +0 -1
- package/assets/prompt-optimize-dialog-DLdL2_a1.css +0 -1
- package/assets/settings-dialog-CAhU3cfG.js +0 -1
- package/assets/stateDiagram-587899a1-CMylUAYu.js +0 -1
- package/assets/styles-c10674c1-KfJINP7I.js +0 -116
- package/assets/styles-c10674c1-cccyjRUz.js +0 -116
- package/assets/tool-windows-CtLXQDGF.js +0 -2847
- package/assets/ttd-dialog-BRg3XE5k.js +0 -99
- package/assets/use-runtime-models-BH9r4Yc1.js +0 -1
- package/assets/use-runtime-models-BgWWl4Ng.css +0 -1
- package/assets/useWorkflowSubmission-BeJQ3BuO.js +0 -70
- package/assets/video-analyze-aDVIfgUi.js +0 -1
- package/assets/video-recovery-service-Dy0xiPr8.js +0 -1
- package/assets/workflow-generation-utils-CpMilOwA.js +0 -3
- package/assets/workflow-submission-service-CmBBMIis.js +0 -4
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{aj as t,b_ as as,a4 as Ne,ai as s,fo as rs,bz as P,T as y,fp as is,fq as ns,fr as us,aH as cs,fs as ls,ft as os,fu as ds,fv as ms,cf as fs,fw as ps,cg as hs,fx as Ns,fy as xs,bI as gs,fz as bs,fA as ke,bU as Ye,bV as De,fa as ks,aX as vs,aY as ys,aO as ne,fB as Q,fC as js,fD as qs,ao as re,bD as Ts,fE as ws,aP as Es,fF as Ds,fG as Je,bm as _s,aU as ye,fH as Us,fI as Vs,bh as Is,fJ as je,fK as se,fL as qe,cb as Te}from"./tool-windows-DOIu9TAD.js";/* empty css */const Cs=({className:e,style:a})=>s.jsxDEV("div",{className:e,style:{...a,background:"linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%)",backgroundSize:"200% 100%",animation:"shimmer 1.5s infinite",borderRadius:"8px",minHeight:"100px",width:"100%"},children:s.jsxDEV("style",{children:`
|
|
2
2
|
@keyframes shimmer {
|
|
3
3
|
0% { background-position: 200% 0; }
|
|
4
4
|
100% { background-position: -200% 0; }
|
|
5
5
|
}
|
|
6
|
-
`},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/retry-image.tsx",lineNumber:60,columnNumber:5},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/retry-image.tsx",lineNumber:48,columnNumber:3},void 0);function Ss(e){if(e.startsWith("data:")||e.startsWith("blob:"))return e;try{const a=new URL(e,window.location.origin);return a.searchParams.has("bypass_sw")||a.searchParams.set("bypass_sw","1"),a.toString()}catch{const a=e.includes("?")?"&":"?";return`${e}${a}bypass_sw=1`}}function Rs(e){return e.startsWith("data:")||e.startsWith("blob:")||e.includes("/__aitu_cache__/")||e.includes("/asset-library/")||e.includes("thumbnail=")}function we(e){return e.startsWith("/__aitu_cache__/")||e.startsWith("/asset-library/")}function Ls(){return typeof navigator<"u"&&"serviceWorker"in navigator&&!!navigator.serviceWorker.controller}const Ee=({src:e,alt:a,maxRetries:N=5,initialRetryDelay:
|
|
7
|
-
${C.expiresHint}`:""}`:"",A=E?0:((Oe=(Me=e.result)==null?void 0:Me.urls)==null?void 0:Oe.length)||((ze=e.result)!=null&&ze.url?1:0),G=t.useMemo(()=>JSON.stringify({taskId:e.id,taskType:e.type,taskStatus:e.status,hasMultipleResults:A>1}),[A,e.id,e.status,e.type]),L=O?E||(Pe=e.result)==null?void 0:Pe.previewImageUrl:n,M=xs(L,e.type===y.IMAGE?"image":void 0,"small");t.useEffect(()=>{if(p&&L&&e.type===y.IMAGE){const x=new Image;x.onload=()=>{i({width:x.naturalWidth,height:x.naturalHeight})},x.onerror=()=>{i(null)},x.src=L}},[p,L,e.type]);const pe=x=>{const ie=x.target;ie.closest("button")||ie.closest(".t-checkbox")||ie.closest("a")||ie.closest(".task-item__preview")||(a?u==null||u(e.id,!N):p&&n&&_&&(d==null||d()))},de=x=>{x.stopPropagation(),p&&n&&_&&(d==null||d())};return s.jsxDEV("div",{ref:f,className:`task-item ${a?"task-item--selection-mode":""} ${N?"task-item--selected":""} ${I?"task-item--compact":"task-item--wide"} task-item--${e.status.toLowerCase()}`,onClick:pe,children:[a&&s.jsxDEV("div",{className:"task-item__checkbox",children:s.jsxDEV(ks,{checked:N,onChange:x=>u==null?void 0:u(e.id,x)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:516,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:515,columnNumber:11},void 0),(p||v||e.status===P.PROCESSING)&&(L||w||B||e.type===y.VIDEO||e.type===y.IMAGE||e.type===y.AUDIO)&&s.jsxDEV("div",{className:"task-item__preview-wrapper",children:s.jsxDEV("div",{className:"task-item__preview","data-track":"task_click_preview",onClick:de,children:v?s.jsxDEV("div",{className:"task-item__preview-failed",children:[s.jsxDEV(gs,{size:"24px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:542,columnNumber:21},void 0),s.jsxDEV("span",{children:"生成失败"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:543,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:541,columnNumber:19},void 0):e.status===P.PROCESSING?B?s.jsxDEV("div",{className:"task-item__preview-placeholder",children:s.jsxDEV("span",{children:ce==="analyze"?`视频分析中 ${Math.round(e.progress??0)}%`:ce==="rewrite"?`脚本改编中 ${Math.round(e.progress??0)}%`:"生成文本中"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:548,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:547,columnNumber:21},void 0):s.jsxDEV(As,{taskType:e.type,taskStatus:e.status,realProgress:e.progress,startedAt:e.startedAt,mediaUrl:L},e.startedAt,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:558,columnNumber:21},void 0):s.jsxDEV(s.Fragment,{children:[e.type===y.IMAGE&&n?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(Ee,{src:M||n,alt:"Generated",maxRetries:5,fallback:s.jsxDEV("div",{className:"task-item__preview-placeholder",children:s.jsxDEV("span",{children:"图片加载失败"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:578,columnNumber:31},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:577,columnNumber:29},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:572,columnNumber:25},void 0),A>1&&s.jsxDEV("span",{className:"task-item__multi-badge",children:[A,"张"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:583,columnNumber:27},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:571,columnNumber:23},void 0):O&&L?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(Ee,{src:L,alt:Z||"音频封面",maxRetries:3,fallback:s.jsxDEV("div",{className:"task-item__preview-placeholder",children:[s.jsxDEV(be,{size:"24px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:596,columnNumber:31},void 0),s.jsxDEV("span",{children:"音频封面"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:597,columnNumber:31},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:595,columnNumber:29},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:590,columnNumber:25},void 0),s.jsxDEV("div",{className:"task-item__video-play-overlay",children:s.jsxDEV(be,{size:"28px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:602,columnNumber:27},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:601,columnNumber:25},void 0),A>1&&s.jsxDEV("span",{className:"task-item__multi-badge",children:[A,"首"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:605,columnNumber:27},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:589,columnNumber:23},void 0):E?s.jsxDEV("div",{className:"task-item__preview-placeholder",children:[s.jsxDEV(Ye,{size:"24px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:612,columnNumber:25},void 0),s.jsxDEV("span",{children:"歌词"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:613,columnNumber:25},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:611,columnNumber:23},void 0):B?s.jsxDEV("div",{className:"task-item__preview-placeholder",children:s.jsxDEV("span",{children:"文本"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:617,columnNumber:25},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:616,columnNumber:23},void 0):w&&(($e=e.result)!=null&&$e.characterProfileUrl)?s.jsxDEV("div",{className:"task-item__character-preview",children:s.jsxDEV(Ee,{src:e.result.characterProfileUrl,alt:`@${e.result.characterUsername}`,maxRetries:5,fallback:s.jsxDEV("div",{className:"task-item__character-fallback",children:s.jsxDEV(De,{size:"32px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:627,columnNumber:31},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:626,columnNumber:29},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:621,columnNumber:25},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:620,columnNumber:23},void 0):n?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(bs,{src:n,poster:(He=e.result)==null?void 0:He.previewImageUrl,alt:Z||"视频预览",thumbnailSize:"small",videoProps:{muted:!0,playsInline:!0,preload:"metadata"}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:634,columnNumber:25},void 0),s.jsxDEV("div",{className:"task-item__video-play-overlay",children:s.jsxDEV(be,{size:"32px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:647,columnNumber:27},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:646,columnNumber:25},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:633,columnNumber:23},void 0):s.jsxDEV("div",{className:"task-item__preview-placeholder",children:e.type===y.IMAGE?s.jsxDEV(vs,{size:"24px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:653,columnNumber:27},void 0):e.type===y.VIDEO?s.jsxDEV(ys,{size:"24px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:655,columnNumber:27},void 0):s.jsxDEV(s.Fragment,{children:[s.jsxDEV(be,{size:"24px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:658,columnNumber:29},void 0),s.jsxDEV("span",{children:"音频"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:659,columnNumber:29},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:657,columnNumber:27},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:651,columnNumber:23},void 0),C&&s.jsxDEV(ne,{content:ee,showArrow:!1,children:s.jsxDEV("span",{className:"task-item__cache-warning-badge",children:"需下载"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:666,columnNumber:25},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:665,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:568,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:534,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:533,columnNumber:13},void 0),s.jsxDEV("div",{className:"task-item__body",children:[s.jsxDEV("div",{className:"task-item__prompt-area",children:[s.jsxDEV(ne,{content:e.params.prompt,showArrow:!1,children:s.jsxDEV("div",{className:"task-item__prompt",children:Z},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:680,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:679,columnNumber:13},void 0),B&&Q&&s.jsxDEV(ne,{content:Q,showArrow:!1,children:s.jsxDEV("div",{className:"task-item__subtitle",children:Q},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:684,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:683,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:678,columnNumber:11},void 0),s.jsxDEV("div",{className:"task-item__info-area",children:[s.jsxDEV("div",{className:"task-item__content-row",children:[s.jsxDEV("div",{className:"task-item__meta",children:[s.jsxDEV("div",{className:"task-item__tags",children:[s.jsxDEV(J,{theme:Gs(e.status),variant:"light",className:"task-item__status-tag",children:Fs(e.status)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:695,columnNumber:19},void 0),e.params.model&&s.jsxDEV(J,{variant:"outline",className:"task-item__model-tag",children:e.params.model},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:705,columnNumber:21},void 0),B&&me&&s.jsxDEV(J,{variant:"outline",children:me},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:710,columnNumber:21},void 0),D&&z&&s.jsxDEV(J,{variant:"outline",children:z},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:713,columnNumber:21},void 0),D&&S&&s.jsxDEV(J,{variant:"outline",children:S},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:716,columnNumber:21},void 0),D&&oe&&s.jsxDEV(J,{variant:"outline",children:oe},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:719,columnNumber:21},void 0),e.type===y.VIDEO&&e.params.seconds&&s.jsxDEV(J,{variant:"outline",children:[e.params.seconds,"s"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:724,columnNumber:21},void 0),e.type===y.VIDEO&&e.params.size&&s.jsxDEV(J,{variant:"outline",children:e.params.size},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:727,columnNumber:21},void 0),c&&s.jsxDEV(J,{variant:"outline",children:c},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:730,columnNumber:21},void 0),e.type===y.AUDIO&&e.params.mv&&!E&&s.jsxDEV(J,{variant:"outline",children:e.params.mv},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:735,columnNumber:23},void 0),e.type===y.AUDIO&&e.params.tags&&!E&&s.jsxDEV(J,{variant:"outline",children:((We=String(e.params.tags).split(",")[0])==null?void 0:We.trim())||"音频"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:740,columnNumber:23},void 0),E&&s.jsxDEV(J,{variant:"outline",children:"歌词"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:745,columnNumber:36},void 0),E&&ue[0]&&s.jsxDEV(J,{variant:"outline",children:ue[0]},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:747,columnNumber:21},void 0),e.params.batchId&&typeof e.params.batchIndex=="number"&&typeof e.params.batchTotal=="number"&&s.jsxDEV(J,{variant:"outline",children:["批量 ",e.params.batchIndex+1,"/",e.params.batchTotal]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:752,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:693,columnNumber:17},void 0),s.jsxDEV("div",{className:"task-item__details",children:[s.jsxDEV("span",{className:"task-item__time",children:js(e.createdAt)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:760,columnNumber:19},void 0),e.startedAt&&s.jsxDEV("span",{className:"task-item__duration",children:["·"," ",qs((e.completedAt||Date.now())-e.startedAt)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:764,columnNumber:21},void 0),(()=>{var ke,ge;const x=(r==null?void 0:r.width)||((ke=e.result)==null?void 0:ke.width)||e.params.width,ie=(r==null?void 0:r.height)||((ge=e.result)==null?void 0:ge.height)||e.params.height;return x&&ie?s.jsxDEV("span",{className:"task-item__size",children:[" ","· ",x,"x",ie]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:782,columnNumber:25},void 0):null})(),c&&s.jsxDEV("span",{className:"task-item__size",children:[" · ",c]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:791,columnNumber:21},void 0),p&&((Ge=e.result)==null?void 0:Ge.url)&&!E&&s.jsxDEV("a",{href:e.result.url,target:"_blank",rel:"noopener noreferrer",className:"task-item__link","data-track":"task_click_open_link",onClick:x=>x.stopPropagation(),children:"· 打开链接"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:797,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:759,columnNumber:17},void 0),(e.type===y.VIDEO||e.type===y.AUDIO||e.type===y.CHAT&&typeof e.progress=="number")&&e.status===P.PROCESSING&&s.jsxDEV("div",{className:"task-item__progress-container",children:s.jsxDEV("div",{className:"task-item__progress-bar",children:s.jsxDEV("div",{className:`task-item__progress-fill task-item__progress-fill--${e.status}`,style:{width:`${e.progress??0}%`}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:818,columnNumber:25},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:817,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:816,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:692,columnNumber:15},void 0),s.jsxDEV("div",{className:"task-item__actions",children:[s.jsxDEV("div",{className:"task-item__secondary-actions",children:[p&&((Fe=e.result)==null?void 0:Fe.url)&&!w&&s.jsxDEV(ne,{content:"下载",children:s.jsxDEV(re,{size:"small",variant:"text",icon:s.jsxDEV(Ts,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:835,columnNumber:31},void 0),"data-track":"task_click_download","data-track-params":G,onClick:x=>{x.stopPropagation(),q==null||q(e.id)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:832,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:831,columnNumber:21},void 0),p&&E&&H&&s.jsxDEV(ne,{content:"复制歌词",children:s.jsxDEV(re,{size:"small",variant:"text",icon:s.jsxDEV(Ye,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:851,columnNumber:31},void 0),onClick:x=>{x.stopPropagation(),R==null||R(e.id)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:848,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:847,columnNumber:21},void 0),!w&&!O&&!B&&s.jsxDEV(ne,{content:"编辑",children:s.jsxDEV(re,{size:"small",variant:"text",icon:s.jsxDEV(ws,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:865,columnNumber:31},void 0),onClick:x=>{x.stopPropagation(),m==null||m(e.id)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:862,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:861,columnNumber:21},void 0),F&&s.jsxDEV(ne,{content:"角色",children:s.jsxDEV(re,{size:"small",variant:"text",icon:s.jsxDEV(De,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:879,columnNumber:31},void 0),onClick:x=>{x.stopPropagation(),l==null||l(e.id)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:876,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:875,columnNumber:21},void 0),s.jsxDEV(ne,{content:"删除",children:s.jsxDEV(re,{size:"small",variant:"text",className:"task-item__delete-btn",icon:s.jsxDEV(Es,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:893,columnNumber:29},void 0),onClick:x=>{x.stopPropagation(),U==null||U(e.id)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:889,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:888,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:829,columnNumber:17},void 0),p&&((((Be=e.result)==null?void 0:Be.url)||((Xe=e.result)==null?void 0:Xe.chatResponse))&&!w||E)&&s.jsxDEV(re,{size:"small",theme:"primary",className:"task-item__primary-action","data-track":"task_click_insert","data-track-params":G,onClick:x=>{x.stopPropagation(),j==null||j(e.id)},children:"插入"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:907,columnNumber:21},void 0),Y&&s.jsxDEV(re,{size:"small",theme:"primary",className:"task-item__primary-action","data-track":"task_click_retry","data-track-params":G,onClick:x=>{x.stopPropagation(),o==null||o(e.id)},children:"重试"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:923,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:827,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:691,columnNumber:13},void 0),v&&e.error&&s.jsxDEV("div",{className:"task-item__error",children:s.jsxDEV("div",{className:"task-item__error-message",children:[e.error.message,((Ke=e.error.details)==null?void 0:Ke.originalError)&&s.jsxDEV(ne,{content:s.jsxDEV("div",{className:"task-item__error-details-tooltip",children:[s.jsxDEV("div",{className:"task-item__error-details-title",children:"详细错误:"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:949,columnNumber:27},void 0),s.jsxDEV("div",{className:"task-item__error-details-content",children:e.error.details.originalError},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:952,columnNumber:27},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:948,columnNumber:25},void 0),theme:"light",placement:"bottom",children:s.jsxDEV("span",{className:"task-item__error-details-link",onClick:x=>x.stopPropagation(),children:"[详情]"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:960,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:946,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:943,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:942,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:690,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:676,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:504,columnNumber:7},void 0)},(e,a)=>{var N,k;return e.task.id===a.task.id&&e.task.status===a.task.status&&e.task.progress===a.task.progress&&((N=e.task.error)==null?void 0:N.message)===((k=a.task.error)==null?void 0:k.message)&&e.task.result===a.task.result&&e.isSelected===a.isSelected&&e.selectionMode===a.selectionMode&&e.isCompact===a.isCompact}),Bs=new Set,Xs=140,Qe=0,Ks=3,es=375,Ys=20,sa=({tasks:e,selectionMode:a=!1,selectedTaskIds:N,onSelectionChange:k,onRetry:u,onDelete:o,onDownload:U,onInsert:q,onCopy:j,onEdit:R,onPreviewOpen:d,onExtractCharacter:m,className:l="",emptyContent:r,isCompact:i,hasMore:g=!1,isLoadingMore:b=!1,onLoadMore:f,totalCount:p,loadedCount:v,allLoadedText:$,allLoadedHint:Y})=>{const I=N??Bs,T=t.useRef(null),F=t.useRef(null),w=t.useRef(null),O=t.useRef(0),[B,E]=t.useState(()=>typeof window<"u"&&window.innerWidth<es),[_,H]=t.useState(!1),ae=i!==void 0?i:B,W=c=>{let D=c;for(;D;){const S=getComputedStyle(D).overflowY;if((S==="auto"||S==="scroll")&&D.scrollHeight>D.clientHeight)return D;D=D.parentElement}return null};t.useEffect(()=>{if(!g||!f)return;const c=T.current;if(!c)return;const D=setTimeout(()=>{const S=c.scrollHeight>c.clientHeight?c:W(c);if(w.current=S,!S)return;const K=()=>{const{scrollTop:oe,scrollHeight:le,clientHeight:n}=S,h=le-oe-n,V=Date.now();V-O.current<500||h<300&&g&&!b&&(O.current=V,f())};S.addEventListener("scroll",K,{passive:!0}),K(),c.__loadMoreCleanup=()=>{S.removeEventListener("scroll",K)}},150);return()=>{var z;clearTimeout(D),(z=c.__loadMoreCleanup)==null||z.call(c)}},[g,b,f,e.length]),t.useEffect(()=>{const c=T.current;if(!c)return;const D=setTimeout(()=>{const S=c.scrollHeight>c.clientHeight?c:W(c);if(w.current=S,!S)return;const K=()=>{H(S.scrollTop>S.clientHeight)};S.addEventListener("scroll",K),K(),c.__scrollCleanup=()=>{S.removeEventListener("scroll",K)}},100);return()=>{var z;clearTimeout(D),(z=c.__scrollCleanup)==null||z.call(c)}},[e.length]);const ue=()=>{const c=w.current||T.current;c&&(c.scrollTop=0)};t.useEffect(()=>{if(i!==void 0)return;const c=T.current;if(!c)return;const D=c,z=K=>{const oe=K??D.getBoundingClientRect().width;E(oe<es)},S=new ResizeObserver(K=>{z(K[0].contentRect.width)});return S.observe(D),z(),()=>{S.disconnect()}},[i,T.current]);const ce=e.length>Ys,Q=Ds({count:ce?e.length:0,getScrollElement:()=>T.current,estimateSize:()=>Xs+Qe,overscan:Ks,enabled:ce,measureElement:c=>c.offsetHeight});if(e.length===0)return s.jsxDEV("div",{className:`virtual-task-list virtual-task-list--empty ${l}`,children:r},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:280,columnNumber:7},void 0);const me=e.length||v||0,Z=()=>s.jsxDEV(s.Fragment,{children:[b&&s.jsxDEV("div",{className:"virtual-task-list__loading-more",children:[s.jsxDEV("span",{className:"virtual-task-list__loading-spinner"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:297,columnNumber:11},void 0),s.jsxDEV("span",{children:"加载中..."},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:298,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:296,columnNumber:9},void 0),g&&!b&&p!==void 0&&p>0&&s.jsxDEV("div",{className:"virtual-task-list__pagination-info",children:["已加载 ",me," / ",p]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:306,columnNumber:11},void 0),!g&&e.length>0&&p!==void 0&&p>50&&s.jsxDEV("div",{className:"virtual-task-list__no-more",children:Y?s.jsxDEV(ne,{content:Y,children:s.jsxDEV("span",{children:$||`已加载全部 ${p} 个任务`},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:318,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:317,columnNumber:15},void 0):$||`已加载全部 ${p} 个任务`},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:315,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:293,columnNumber:5},void 0);if(!ce)return s.jsxDEV("div",{ref:F,className:`virtual-task-list-container ${l}`,style:{height:"100%",position:"relative",display:"flex",flexDirection:"column"},children:[s.jsxDEV("div",{ref:T,className:"virtual-task-list-scrollarea",style:{flex:1,overflow:"auto"},children:[e.map(c=>s.jsxDEV(Je,{task:c,selectionMode:a,isSelected:I.has(c.id),isCompact:ae,onSelectionChange:k,onRetry:u,onDelete:o,onDownload:U,onInsert:q,onEdit:R,onPreviewOpen:()=>d==null?void 0:d(c.id),onExtractCharacter:m},c.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:349,columnNumber:13},void 0)),s.jsxDEV(Z,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:365,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:343,columnNumber:9},void 0),_&&s.jsxDEV(re,{shape:"circle",variant:"base",theme:"default",icon:s.jsxDEV(Ze,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:373,columnNumber:19},void 0),onClick:ue,className:"virtual-task-list__back-to-top"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:369,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:333,columnNumber:7},void 0);const X=Q.getVirtualItems();return s.jsxDEV("div",{ref:F,className:`virtual-task-list-container ${l}`,style:{height:"100%",width:"100%",position:"relative",display:"flex",flexDirection:"column"},children:[s.jsxDEV("div",{ref:T,className:"virtual-task-list-scrollarea",style:{flex:1,width:"100%",overflow:"auto"},children:[s.jsxDEV("div",{style:{height:`${Q.getTotalSize()}px`,width:"100%",position:"relative"},children:X.map(c=>{const D=e[c.index];return D?s.jsxDEV("div",{"data-index":c.index,ref:z=>{z&&Q.measureElement(z)},style:{position:"absolute",top:0,left:0,width:"100%",transform:`translateY(${c.start}px)`,paddingBottom:`${Qe}px`},children:s.jsxDEV(Je,{task:D,selectionMode:a,isSelected:I.has(D.id),isCompact:ae,onSelectionChange:k,onRetry:u,onDelete:o,onDownload:U,onInsert:q,onCopy:j,onEdit:R,onPreviewOpen:()=>d==null?void 0:d(D.id),onExtractCharacter:m},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:435,columnNumber:17},void 0)},D.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:418,columnNumber:15},void 0):null})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:406,columnNumber:9},void 0),s.jsxDEV(Z,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:454,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:397,columnNumber:7},void 0),_&&s.jsxDEV(re,{shape:"circle",variant:"base",theme:"default",icon:s.jsxDEV(Ze,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:462,columnNumber:17},void 0),onClick:ue,className:"virtual-task-list__back-to-top"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:458,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:386,columnNumber:5},void 0)};function Zs(e,a){const[N,k]=t.useState(a||null),[u,o]=t.useState(!1),[U,q]=t.useState(!0),[j,R]=t.useState(null),d=t.useRef("none"),m=t.useCallback(async()=>{if(q(!0),!a){k(null),o(!1),q(!1);return}const l=await Ne.getCachedUrl(a);l?(j&&j!==l&&URL.revokeObjectURL(j),R(l),k(l),o(!0)):a?(k(a),o(!1)):(k(null),o(!1)),q(!1)},[a,j]);return t.useEffect(()=>{m(),a&&(d.current=Ne.getCacheStatus(a))},[e,a]),t.useEffect(()=>Ne.subscribe(()=>{if(!a)return;const r=Ne.getCacheStatus(a),i=d.current;r!==i&&(d.current=r,(r==="cached"||r==="none")&&m())}),[a,m]),t.useEffect(()=>()=>{j&&URL.revokeObjectURL(j)},[j]),{url:N,isFromCache:u,isLoading:U}}const ss=1,ve=3,Js=({videoUrl:e,videoDuration:a,onConfirm:N,onCancel:k,disabled:u=!1})=>{const o=t.useRef(null),U=t.useRef(null),q=t.useRef(null),j=t.useRef(null),R=t.useRef(0),[d,m]=t.useState(!0),[l,r]=t.useState(a),[i,g]=t.useState(0),[b,f]=t.useState(Math.min(ve,a)),[p,v]=t.useState(0),[$,Y]=t.useState(""),[I,T]=t.useState(!1),[F,w]=t.useState(null),[O,B]=t.useState([]),[E,_]=t.useState(!1),H=b-i,ae=l>0?H/l*100:100,W=l>0?i/l*100:0;t.useEffect(()=>(e&&(m(!0),Y(""),B([]),T(!1),w(null)),()=>{j.current!==null&&cancelAnimationFrame(j.current)}),[e]);const ue=()=>{const n=o.current;if(n){const h=n.duration;r(h),T(!0),f(Math.min(ve,h))}},ce=t.useCallback(async()=>{const n=o.current;if(!(!n||!I||l<=0||E)){_(!0);try{const V=Math.max(4,Math.ceil(l*2)),C=l/V,ee=[],A=document.createElement("canvas"),G=A.getContext("2d");if(!G)return;const L=50,M=n.videoWidth/n.videoHeight||16/9,pe=Math.round(L*M);A.width=pe,A.height=L;for(let de=0;de<V;de++){const te=Math.min((de+.5)*C,l-.01);await new Promise(xe=>{const he=()=>{n.removeEventListener("seeked",he),xe()};n.addEventListener("seeked",he),n.currentTime=te}),G.drawImage(n,0,0,pe,L),ee.push(A.toDataURL("image/jpeg",.5))}B(ee),n.currentTime=i}catch(h){console.warn("Failed to generate frame strip:",h)}finally{_(!1)}}},[I,l,E,i]);t.useEffect(()=>{if(I&&l>0&&O.length===0&&!E){const n=setTimeout(()=>{ce()},100);return()=>clearTimeout(n)}},[I,l,O.length,E,ce]);const Q=t.useCallback(()=>{const n=o.current,h=U.current;if(!n||!h)return;const V=h.getContext("2d");if(V)try{h.width=n.videoWidth,h.height=n.videoHeight,V.drawImage(n,0,0,h.width,h.height);const C=h.toDataURL("image/jpeg",.8);Y(C),m(!1)}catch(C){console.warn("Failed to generate frame image:",C)}},[]),me=t.useCallback(()=>{const n=o.current;n&&d&&(n.currentTime===0||Math.abs(n.currentTime-i)<.1)&&Q()},[d,i,Q]),Z=t.useCallback(n=>{const h=o.current;!h||!I||Math.abs(n-R.current)<.1||(R.current=n,h.readyState>=2&&(h.currentTime=n))},[I]),X=t.useCallback(()=>{Q()},[Q]);t.useEffect(()=>{if(I&&l>0){v(i);const n=o.current;n&&n.readyState>=2&&(n.currentTime=i)}},[I,l]);const c=t.useCallback(n=>{const h=q.current;if(!h)return 0;const V=h.getBoundingClientRect(),C=n.clientX-V.left;return Math.max(0,Math.min(1,C/V.width))*l},[l]),D=n=>{if(u||!I)return;n.preventDefault(),n.stopPropagation(),w("left");const h=b,V=ee=>{const A=c(ee),G=h-ss,L=Math.max(0,h-ve),M=Math.max(L,Math.min(G,A));g(M),v(M),Z(M)},C=()=>{w(null),document.removeEventListener("mousemove",V),document.removeEventListener("mouseup",C),Z(i)};document.addEventListener("mousemove",V),document.addEventListener("mouseup",C)},z=n=>{if(u||!I)return;n.preventDefault(),n.stopPropagation(),w("right");const h=i,V=ee=>{const A=c(ee),G=h+ss,L=Math.min(l,h+ve),M=Math.max(G,Math.min(L,A));f(M),v(M),Z(M)},C=()=>{w(null),document.removeEventListener("mousemove",V),document.removeEventListener("mouseup",C),Z(b)};document.addEventListener("mousemove",V),document.addEventListener("mouseup",C)},S=n=>{if(u||!I)return;n.preventDefault(),w("center");const h=q.current;if(!h)return;const V=h.getBoundingClientRect(),C=n.clientX,ee=i,A=b-i,G=M=>{const de=(M.clientX-C)/V.width*l;let te=ee+de;te=Math.max(0,Math.min(l-A,te)),g(te),f(te+A),v(te),Z(te)},L=()=>{w(null),document.removeEventListener("mousemove",G),document.removeEventListener("mouseup",L),Z(i)};document.addEventListener("mousemove",G),document.addEventListener("mouseup",L)},K=n=>{if(u||!I||F||n.target.closest(".character-time-selector__range"))return;const V=q.current;if(!V)return;const C=V.getBoundingClientRect(),A=(n.clientX-C.left)/C.width*l,G=b-i,L=G/2;let M=A-L;M=Math.max(0,Math.min(l-G,M)),g(M),f(M+G),v(M),Z(M)},oe=()=>{N(Math.round(i),Math.round(b))},le=n=>n.toFixed(1)+"s";return s.jsxDEV("div",{className:`character-time-selector ${F?"is-dragging":""}`,children:[s.jsxDEV("video",{ref:o,src:e,style:{display:"none"},muted:!0,playsInline:!0,preload:"auto",crossOrigin:"anonymous",onLoadedMetadata:ue,onSeeked:X,onCanPlay:me},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:382,columnNumber:7},void 0),s.jsxDEV("canvas",{ref:U,style:{display:"none"}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:396,columnNumber:7},void 0),s.jsxDEV("div",{className:"character-time-selector__preview",children:[d?s.jsxDEV("div",{className:"character-time-selector__loading",children:[s.jsxDEV("div",{className:"character-time-selector__spinner"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:402,columnNumber:13},void 0),s.jsxDEV("span",{children:"加载中..."},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:403,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:401,columnNumber:11},void 0):$?s.jsxDEV("img",{src:$,alt:"Video frame",className:"character-time-selector__frame"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:406,columnNumber:11},void 0):s.jsxDEV("div",{className:"character-time-selector__placeholder",children:"视频帧加载失败"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:412,columnNumber:11},void 0),s.jsxDEV("div",{className:"character-time-selector__time-badge",children:le(p)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:416,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:399,columnNumber:7},void 0),s.jsxDEV("div",{className:"character-time-selector__timeline",ref:q,onClick:K,children:[O.length>0?s.jsxDEV("div",{className:"character-time-selector__frame-strip",children:O.map((n,h)=>s.jsxDEV("img",{src:n,alt:"",className:"character-time-selector__frame-thumb",draggable:!1},h,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:431,columnNumber:15},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:429,columnNumber:11},void 0):E?s.jsxDEV("div",{className:"character-time-selector__frame-strip character-time-selector__frame-strip--loading",children:s.jsxDEV("div",{className:"character-time-selector__strip-shimmer"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:442,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:441,columnNumber:11},void 0):s.jsxDEV("div",{className:"character-time-selector__timeline-bg"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:445,columnNumber:11},void 0),s.jsxDEV("div",{className:`character-time-selector__range ${F?"dragging":""}`,style:{left:`${W}%`,width:`${ae}%`},children:[s.jsxDEV("div",{className:"character-time-selector__handle character-time-selector__handle--left",onMouseDown:D},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:457,columnNumber:11},void 0),s.jsxDEV("div",{className:"character-time-selector__range-content",onMouseDown:S,children:s.jsxDEV("span",{className:"character-time-selector__range-label",children:[le(i)," - ",le(b)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:466,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:462,columnNumber:11},void 0),s.jsxDEV("div",{className:"character-time-selector__handle character-time-selector__handle--right",onMouseDown:z},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:471,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:449,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:422,columnNumber:7},void 0),s.jsxDEV("div",{className:"character-time-selector__info",children:[s.jsxDEV("span",{children:["API参数: ",Math.round(i),", ",Math.round(b)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:480,columnNumber:9},void 0),s.jsxDEV("span",{children:["时长: ",H.toFixed(1),"s"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:481,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:479,columnNumber:7},void 0),s.jsxDEV("div",{className:"character-time-selector__actions",children:[s.jsxDEV(re,{variant:"outline",onClick:k,disabled:u,children:"取消"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:486,columnNumber:9},void 0),s.jsxDEV(re,{theme:"primary",onClick:oe,disabled:u||!I,children:"创建角色"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:493,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:485,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:380,columnNumber:5},void 0)},aa=({visible:e,task:a,onClose:N,onCreateStart:k,onCreateComplete:u})=>{var g;const{createTask:o,tasks:U}=_s(),[q,j]=t.useState(!1),{url:R}=Zs((a==null?void 0:a.id)??"",(g=a==null?void 0:a.result)==null?void 0:g.url),d=t.useMemo(()=>a!=null&&a.params.seconds?parseFloat(a.params.seconds.toString()):10,[a==null?void 0:a.params.seconds]),m=t.useMemo(()=>a?U.some(b=>b.type===y.CHARACTER&&b.params.sourceLocalTaskId===a.id&&(b.status===P.PENDING||b.status===P.PROCESSING)):!1,[a,U]),l=t.useCallback(async(b,f)=>{if(!a||!a.remoteId){ye.error("无效的任务数据");return}j(!0),k==null||k();try{const p=Vs(b,f),v=Us(a.params.model),$=o({prompt:a.params.prompt||"角色提取",model:v,sourceVideoTaskId:a.remoteId,characterTimestamps:p,sourceLocalTaskId:a.id},y.CHARACTER);ye.success("角色创建任务已加入队列"),u==null||u($.id),N()}catch(p){console.error("Failed to create character task:",p);const v=p.message||"创建任务失败";ye.error(v)}finally{j(!1)}},[a,o,k,u,N]),r=()=>{q||N()},i=()=>{q||N()};return!a||!R?null:s.jsxDEV(Is,{visible:e,header:"角色",onClose:r,footer:null,width:560,className:"character-create-dialog",closeOnOverlayClick:!q,closeOnEscKeydown:!q,children:[s.jsxDEV("div",{className:"character-create-dialog__description",children:["从视频中提取角色,创建后可通过 ",s.jsxDEV("code",{children:"@username"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterCreateDialog.tsx",lineNumber:130,columnNumber:25},void 0)," 在提示词中引用"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterCreateDialog.tsx",lineNumber:129,columnNumber:7},void 0),m&&s.jsxDEV("div",{className:"character-create-dialog__warning",children:"此视频已有一个角色正在创建中"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterCreateDialog.tsx",lineNumber:135,columnNumber:9},void 0),s.jsxDEV(Js,{videoUrl:R,videoDuration:d,onConfirm:l,onCancel:i,disabled:q||m},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterCreateDialog.tsx",lineNumber:141,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterCreateDialog.tsx",lineNumber:119,columnNumber:5},void 0)},ta=({characterId:e,profilePictureUrl:a,alt:N="Character",className:k,onClick:u})=>{const[o,U]=t.useState(a||null),[q,j]=t.useState(!1),[R,d]=t.useState(!0);t.useEffect(()=>{let r=!1;return(async()=>{d(!0),j(!1);const g=await je.getCachedUrl(e);if(!r){if(g){U(g),d(!1);return}a?(U(a),je.cacheAvatar(e,a).catch(()=>{})):j(!0),d(!1)}})(),()=>{r=!0}},[e,a]);const m=async()=>{if(o===a){const r=await je.getCachedUrl(e);if(r&&r!==o){U(r);return}}j(!0)},l=()=>{d(!1)};return q||!o?s.jsxDEV("div",{className:k,onClick:u,style:u?{cursor:"pointer"}:void 0,children:s.jsxDEV(De,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterAvatar.tsx",lineNumber:101,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterAvatar.tsx",lineNumber:100,columnNumber:7},void 0):s.jsxDEV("img",{src:o,alt:N,className:k,onError:m,onLoad:l,onClick:u,style:{display:R?"none":"block",cursor:u?"pointer":void 0}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterAvatar.tsx",lineNumber:107,columnNumber:5},void 0)};function ra(){const[e,a]=t.useState([]),[N,k]=t.useState(!0),u=t.useRef(new Map);t.useEffect(()=>{const r=se.getCharacters$().subscribe(i=>{a(i),k(!1)});return se.init(),()=>r.unsubscribe()},[]),t.useEffect(()=>{N||(async()=>{const i=se.getPendingCharacters();for(const g of i)u.current.get(g.id)||o(g)})()},[N]);const o=t.useCallback(async r=>{if(!u.current.get(r.id)){u.current.set(r.id,!0);try{const i=await qe.resumePolling(r.id,{onStatusChange:async g=>{await se.updateCharacterStatus(r.id,g)}});await se.updateCharacter(r.id,{username:i.username,profilePictureUrl:i.profile_picture_url,permalink:i.permalink,status:"completed",completedAt:Date.now()})}catch(i){console.error("[useCharacters] Character polling failed:",i),await se.updateCharacterStatus(r.id,"failed",i.message)}finally{u.current.delete(r.id)}}},[]),U=t.useCallback(async r=>{var g;const i=Date.now();Te.track("character_extract_start",{videoTaskId:r.videoTaskId,hasTimestamps:!!((g=r.characterTimestamps)!=null&&g.length)});try{const f=(await qe.createCharacter(r)).id,p={id:f,username:"",profilePictureUrl:"",sourceTaskId:r.localTaskId||"",sourceVideoId:r.videoTaskId,sourcePrompt:r.sourcePrompt,characterTimestamps:r.characterTimestamps,status:"processing",createdAt:Date.now()};return await se.saveCharacter(p),u.current.set(f,!0),qe.resumePolling(f,{onStatusChange:async v=>{await se.updateCharacterStatus(f,v)}}).then(async v=>{await se.updateCharacter(f,{username:v.username,profilePictureUrl:v.profile_picture_url,permalink:v.permalink,status:"completed",completedAt:Date.now()}),Te.track("character_extract_success",{characterId:f,username:v.username,duration:Date.now()-i})}).catch(async v=>{console.error("[useCharacters] Character creation failed:",v),await se.updateCharacterStatus(f,"failed",v.message),Te.track("character_extract_failed",{characterId:f,error:v.message,duration:Date.now()-i})}).finally(()=>{u.current.delete(f)}),p}catch(b){throw console.error("[useCharacters] Failed to create character:",b),b}},[]),q=t.useCallback(async r=>(u.current.delete(r),se.deleteCharacter(r)),[]),j=t.useCallback(async()=>{await se.init()},[]),R=t.useCallback(r=>e.find(i=>i.id===r),[e]),d=t.useCallback(r=>e.some(i=>i.sourceTaskId===r&&(i.status==="pending"||i.status==="processing")),[e]),m=e.filter(r=>r.status==="completed"),l=e.filter(r=>r.status==="pending"||r.status==="processing");return{characters:e,completedCharacters:m,pendingCharacters:l,isLoading:N,createCharacter:U,deleteCharacter:q,refreshCharacters:j,getCharacterById:R,isCreatingCharacterForTask:d}}export{ta as C,Je as T,sa as V,aa as a,ra as u};
|
|
6
|
+
`},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/retry-image.tsx",lineNumber:60,columnNumber:5},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/retry-image.tsx",lineNumber:48,columnNumber:3},void 0);function Ss(e){if(e.startsWith("data:")||e.startsWith("blob:"))return e;try{const a=new URL(e,window.location.origin);return a.searchParams.has("bypass_sw")||a.searchParams.set("bypass_sw","1"),a.toString()}catch{const a=e.includes("?")?"&":"?";return`${e}${a}bypass_sw=1`}}function Rs(e){return e.startsWith("data:")||e.startsWith("blob:")||e.includes("/__aitu_cache__/")||e.includes("/asset-library/")||e.includes("thumbnail=")}function we(e){return e.startsWith("/__aitu_cache__/")||e.startsWith("/asset-library/")}function Ls(){return typeof navigator<"u"&&"serviceWorker"in navigator&&!!navigator.serviceWorker.controller}const Ee=({src:e,alt:a,maxRetries:N=5,initialRetryDelay:g=1e3,onLoadSuccess:u,onLoadFailure:o,fallback:V,showSkeleton:q=!0,bypassSWAfterRetries:j=2,eager:R,...d})=>{const m=t.useMemo(()=>as(e),[e]),l=R??Rs(m),[r,i]=t.useState(m),[b,k]=t.useState(0),[f,p]=t.useState(!0),[v,H]=t.useState(!1),[Y,I]=t.useState(!1),T=t.useRef(null),F=t.useRef(null),w=t.useCallback(async _=>{if(!we(_))return null;try{const $=await Ne.getCachedBlob(_);if($&&$.size>0)return URL.createObjectURL($)}catch($){console.warn("[RetryImage] Failed to get blob for virtual URL:",_,$)}return null},[]),O=t.useCallback(_=>g*Math.pow(2,_),[g]),B=t.useCallback(()=>{p(!1),H(!1),u==null||u()},[u]),E=t.useCallback(async()=>{if(m.startsWith("data:")){p(!1),H(!0),o==null||o(new Error("Failed to load inline data image"));return}if(b<N){const _=O(b),$=b+1,ae=$>=j&&!Y;if(ae&&I(!0),ae&&we(m)&&!T.current){const W=await w(m);if(W){T.current=W,k($),i(W);return}}F.current=setTimeout(()=>{if(k($),T.current){i(`${T.current}#retry=${Date.now()}`);return}let W=m;(ae||Y)&&(W=Ss(W));const ue=W.includes("?")?"&":"?";W=`${W}${ue}_retry=${Date.now()}`,i(W)},_)}else{p(!1),H(!0);const _=new Error(`Failed to load image after ${N} retries`);o==null||o(_)}},[b,N,m,O,o,Y,j,w]);return t.useEffect(()=>(T.current&&(URL.revokeObjectURL(T.current),T.current=null),k(0),p(!0),H(!1),I(!1),we(m)&&!Ls()?w(m).then(_=>{_?(T.current=_,i(_)):i(m)}):i(m),()=>{F.current&&clearTimeout(F.current)}),[m,w]),t.useEffect(()=>()=>{F.current&&clearTimeout(F.current),T.current&&(URL.revokeObjectURL(T.current),T.current=null)},[]),v&&V?s.jsxDEV(s.Fragment,{children:V},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/retry-image.tsx",lineNumber:306,columnNumber:12},void 0):s.jsxDEV("div",{style:{position:"relative",width:"100%",height:"100%"},children:[f&&q&&s.jsxDEV(Cs,{className:d.className,style:{position:"absolute",top:0,left:0,width:"100%",height:"100%",...d.style}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/retry-image.tsx",lineNumber:314,columnNumber:9},void 0),s.jsxDEV("img",{...d,src:r,alt:a,loading:l?"eager":"lazy",decoding:l?"sync":"async",referrerPolicy:"no-referrer",onLoad:B,onError:E,style:{...d.style,opacity:f?0:1,transition:"opacity 0.3s ease-out",width:"100%",height:"100%"}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/retry-image.tsx",lineNumber:327,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/retry-image.tsx",lineNumber:311,columnNumber:5},void 0)},As=({taskType:e,taskStatus:a,realProgress:N,startedAt:g,mediaUrl:u,isImageLoading:o=!1,onImageLoaded:V,onImageError:q,estimatedDuration:j=us})=>{const[R,d]=t.useState(1),m=t.useRef(null),{displayProgress:l}=rs({taskType:e,taskStatus:a,startedAt:g,realProgress:N,mediaUrl:u,isImageLoading:o,estimatedDuration:j}),r=90,i=80,b=.5,k=1.2;if(t.useEffect(()=>{const H=m.current;if(!H)return;const Y=()=>{const{width:T,height:F}=H.getBoundingClientRect(),w=F-10,O=T-20,B=w/r,E=O/i,_=Math.min(B,E,k);d(Math.max(_,b))};Y();const I=new ResizeObserver(Y);return I.observe(H),()=>I.disconnect()},[]),a!==P.PROCESSING)return null;const f=l??0,p=e===y.IMAGE?is(f,!!u,o):e===y.AUDIO?f<10?"提交任务...":f<45?"生成旋律...":f<85?"渲染音轨...":"整理结果...":f<10?"准备中...":f<50?"生成中...":f<90?"渲染中...":"即将完成...",v=["task-progress-overlay",e===y.VIDEO||e===y.AUDIO?"task-progress-overlay--video":"",u&&o?"task-progress-overlay--loading":""].filter(Boolean).join(" ");return s.jsxDEV("div",{ref:m,className:v,children:[s.jsxDEV("div",{className:"task-progress-overlay__backdrop"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskProgressOverlay.tsx",lineNumber:142,columnNumber:7},void 0),s.jsxDEV("div",{className:"task-progress-overlay__pulse"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskProgressOverlay.tsx",lineNumber:143,columnNumber:7},void 0),s.jsxDEV("div",{className:"task-progress-overlay__dots"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskProgressOverlay.tsx",lineNumber:144,columnNumber:7},void 0),s.jsxDEV("div",{className:"task-progress-overlay__content",style:{transform:`scale(${R})`},children:s.jsxDEV(ns,{progress:f,progressMode:"determinate",statusText:p,tone:u&&o?"loading":"default",className:"task-progress-overlay__progress"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskProgressOverlay.tsx",lineNumber:151,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskProgressOverlay.tsx",lineNumber:147,columnNumber:7},void 0),s.jsxDEV("div",{className:"task-progress-overlay__bar",children:s.jsxDEV("div",{className:"task-progress-overlay__bar-fill",style:{width:`${f}%`}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskProgressOverlay.tsx",lineNumber:162,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskProgressOverlay.tsx",lineNumber:161,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskProgressOverlay.tsx",lineNumber:140,columnNumber:5},void 0)},Ms=500;function Os(e){if(typeof e!="number"||!Number.isFinite(e)||e<=0)return null;const a=Math.round(e),N=Math.floor(a/60),g=a%60;return`${N}:${String(g).padStart(2,"0")}`}function fe(e){return typeof e=="string"&&e.trim()?e.trim():void 0}function zs(e){if(!e)return!1;const a=e.toLowerCase();return a==="kling_video"||a.startsWith("kling-v")}function Ps(e){if(e==="text2video")return"文生视频";if(e==="image2video")return"图生视频"}function Hs(e){return e==="std"?"std 高性能":e==="pro"?"pro 高表现":e}function _e(e){const a=e.params.videoAnalyzerAction;return a==="analyze"||a==="rewrite"?a:null}function $s(e){const a=_e(e);if(a==="analyze")return fe(e.params.videoAnalyzerSourceLabel)||null;if(a==="rewrite"){const N=fe(e.params.prompt);return N?N.replace(/^改编脚本:\s*/,""):null}return null}function Ws(e){const a=_e(e);return a==="analyze"?"视频分析":a==="rewrite"?"脚本改编":null}function Gs(e){switch(e){case P.PENDING:case P.PROCESSING:return"primary";case P.COMPLETED:return"success";case P.FAILED:return"danger";case P.CANCELLED:return"default";default:return"default"}}function Fs(e){switch(e){case P.PENDING:case P.PROCESSING:return"处理中";case P.COMPLETED:return"已完成";case P.FAILED:return"失败";case P.CANCELLED:return"已取消";default:return"未知"}}const Qe=cs.memo(({task:e,selectionMode:a=!1,isSelected:N=!1,isCompact:g,onSelectionChange:u,onRetry:o,onDelete:V,onDownload:q,onInsert:j,onCopy:R,onPreviewOpen:d,onEdit:m,onExtractCharacter:l})=>{var te,xe,he,Ue,Ve,Ie,Ce,Se,Re,Le,Ae,Me,Oe,ze,Pe,He,$e,We,Ge,Fe,Be,Xe,Ke;const[r,i]=t.useState(null),[b,k]=t.useState(!1),f=t.useRef(null),p=e.status===P.COMPLETED,v=e.status===P.FAILED,H=e.status===P.CANCELLED,Y=v||H,I=g!==void 0?g:b;t.useEffect(()=>{if(g!==void 0)return;const x=f.current;if(!x)return;const ie=new ResizeObserver(ge=>{for(const be of ge){const ts=be.contentRect.width;k(ts<Ms)}});return ie.observe(x),()=>ie.disconnect()},[g]);const T=((te=e.params.storyboard)==null?void 0:te.enabled)===!0,F=p&&e.type===y.VIDEO&&ls(e.remoteId)&&os(e.params.model)&&!T,w=e.type===y.CHARACTER,O=e.type===y.AUDIO,B=e.type===y.CHAT,E=O&&ds(e.result),_=e.type===y.IMAGE||e.type===y.VIDEO||e.type===y.AUDIO&&!E,$=ms(e.result),ae=fs(e.result,e.params.title||e.params.prompt),W=ps($),ue=hs(e.result),ce=_e(e),Z=$s(e),me=Ws(e),J=w?p&&((xe=e.result)!=null&&xe.characterUsername)?`@${e.result.characterUsername}`:"角色创建中...":B?((he=e.result)==null?void 0:he.title)||e.params.prompt||((Ue=e.result)==null?void 0:Ue.chatResponse):E?ae||W||e.params.prompt:((Ve=e.result)==null?void 0:Ve.title)||e.params.title||e.params.prompt,X=e.params.params&&typeof e.params.params=="object"?e.params.params:null,c=e.type===y.AUDIO&&!E?Os((Ie=e.result)==null?void 0:Ie.duration):null,D=e.type===y.VIDEO&&zs(e.params.model),z=fe(X==null?void 0:X.model_name)||((Ce=e.params.model)!=null&&Ce.toLowerCase().startsWith("kling-v")?e.params.model:void 0),S=Hs(fe(X==null?void 0:X.mode)),K=fe(X==null?void 0:X.klingAction2),oe=Ps(K);fe(X==null?void 0:X.cfg_scale);const le=E?void 0:((Re=(Se=e.result)==null?void 0:Se.urls)==null?void 0:Re[0])||((Le=e.result)==null?void 0:Le.url),n=e.type===y.IMAGE&&le?as(le):le,{isCached:h,cacheWarning:U}=Ns(w||O?void 0:n),C=_&&!O?((Ae=e.result)==null?void 0:Ae.cacheWarning)||(h?void 0:U):void 0,ee=C?`${C.message}${C.expiresHint?`
|
|
7
|
+
${C.expiresHint}`:""}`:"",A=E?0:((Oe=(Me=e.result)==null?void 0:Me.urls)==null?void 0:Oe.length)||((ze=e.result)!=null&&ze.url?1:0),G=t.useMemo(()=>JSON.stringify({taskId:e.id,taskType:e.type,taskStatus:e.status,hasMultipleResults:A>1}),[A,e.id,e.status,e.type]),L=O?E||(Pe=e.result)==null?void 0:Pe.previewImageUrl:n,M=xs(L,e.type===y.IMAGE?"image":void 0,"small");t.useEffect(()=>{if(p&&L&&e.type===y.IMAGE){const x=new Image;x.onload=()=>{i({width:x.naturalWidth,height:x.naturalHeight})},x.onerror=()=>{i(null)},x.src=L}},[p,L,e.type]);const pe=x=>{const ie=x.target;ie.closest("button")||ie.closest(".t-checkbox")||ie.closest("a")||ie.closest(".task-item__preview")||(a?u==null||u(e.id,!N):p&&n&&_&&(d==null||d()))},de=x=>{x.stopPropagation(),p&&n&&_&&(d==null||d())};return s.jsxDEV("div",{ref:f,className:`task-item ${a?"task-item--selection-mode":""} ${N?"task-item--selected":""} ${I?"task-item--compact":"task-item--wide"} task-item--${e.status.toLowerCase()}`,onClick:pe,children:[a&&s.jsxDEV("div",{className:"task-item__checkbox",children:s.jsxDEV(gs,{checked:N,onChange:x=>u==null?void 0:u(e.id,x)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:516,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:515,columnNumber:11},void 0),(p||v||e.status===P.PROCESSING)&&(L||w||B||e.type===y.VIDEO||e.type===y.IMAGE||e.type===y.AUDIO)&&s.jsxDEV("div",{className:"task-item__preview-wrapper",children:s.jsxDEV("div",{className:"task-item__preview","data-track":"task_click_preview",onClick:de,children:v?s.jsxDEV("div",{className:"task-item__preview-failed",children:[s.jsxDEV(bs,{size:"24px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:542,columnNumber:21},void 0),s.jsxDEV("span",{children:"生成失败"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:543,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:541,columnNumber:19},void 0):e.status===P.PROCESSING?B?s.jsxDEV("div",{className:"task-item__preview-placeholder",children:s.jsxDEV("span",{children:ce==="analyze"?`视频分析中 ${Math.round(e.progress??0)}%`:ce==="rewrite"?`脚本改编中 ${Math.round(e.progress??0)}%`:"生成文本中"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:548,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:547,columnNumber:21},void 0):s.jsxDEV(As,{taskType:e.type,taskStatus:e.status,realProgress:e.progress,startedAt:e.startedAt,mediaUrl:L},e.startedAt,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:558,columnNumber:21},void 0):s.jsxDEV(s.Fragment,{children:[e.type===y.IMAGE&&n?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(Ee,{src:M||n,alt:"Generated",maxRetries:5,fallback:s.jsxDEV("div",{className:"task-item__preview-placeholder",children:s.jsxDEV("span",{children:"图片加载失败"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:578,columnNumber:31},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:577,columnNumber:29},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:572,columnNumber:25},void 0),A>1&&s.jsxDEV("span",{className:"task-item__multi-badge",children:[A,"张"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:583,columnNumber:27},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:571,columnNumber:23},void 0):O&&L?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(Ee,{src:L,alt:J||"音频封面",maxRetries:3,fallback:s.jsxDEV("div",{className:"task-item__preview-placeholder",children:[s.jsxDEV(ke,{size:"24px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:596,columnNumber:31},void 0),s.jsxDEV("span",{children:"音频封面"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:597,columnNumber:31},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:595,columnNumber:29},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:590,columnNumber:25},void 0),s.jsxDEV("div",{className:"task-item__video-play-overlay",children:s.jsxDEV(ke,{size:"28px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:602,columnNumber:27},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:601,columnNumber:25},void 0),A>1&&s.jsxDEV("span",{className:"task-item__multi-badge",children:[A,"首"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:605,columnNumber:27},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:589,columnNumber:23},void 0):E?s.jsxDEV("div",{className:"task-item__preview-placeholder",children:[s.jsxDEV(Ye,{size:"24px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:612,columnNumber:25},void 0),s.jsxDEV("span",{children:"歌词"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:613,columnNumber:25},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:611,columnNumber:23},void 0):B?s.jsxDEV("div",{className:"task-item__preview-placeholder",children:s.jsxDEV("span",{children:"文本"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:617,columnNumber:25},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:616,columnNumber:23},void 0):w&&((He=e.result)!=null&&He.characterProfileUrl)?s.jsxDEV("div",{className:"task-item__character-preview",children:s.jsxDEV(Ee,{src:e.result.characterProfileUrl,alt:`@${e.result.characterUsername}`,maxRetries:5,fallback:s.jsxDEV("div",{className:"task-item__character-fallback",children:s.jsxDEV(De,{size:"32px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:627,columnNumber:31},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:626,columnNumber:29},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:621,columnNumber:25},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:620,columnNumber:23},void 0):n?s.jsxDEV(s.Fragment,{children:[s.jsxDEV(ks,{src:n,poster:($e=e.result)==null?void 0:$e.previewImageUrl,alt:J||"视频预览",thumbnailSize:"small",videoProps:{muted:!0,playsInline:!0,preload:"metadata"}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:634,columnNumber:25},void 0),s.jsxDEV("div",{className:"task-item__video-play-overlay",children:s.jsxDEV(ke,{size:"32px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:647,columnNumber:27},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:646,columnNumber:25},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:633,columnNumber:23},void 0):s.jsxDEV("div",{className:"task-item__preview-placeholder",children:e.type===y.IMAGE?s.jsxDEV(vs,{size:"24px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:653,columnNumber:27},void 0):e.type===y.VIDEO?s.jsxDEV(ys,{size:"24px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:655,columnNumber:27},void 0):s.jsxDEV(s.Fragment,{children:[s.jsxDEV(ke,{size:"24px"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:658,columnNumber:29},void 0),s.jsxDEV("span",{children:"音频"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:659,columnNumber:29},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:657,columnNumber:27},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:651,columnNumber:23},void 0),C&&s.jsxDEV(ne,{content:ee,showArrow:!1,children:s.jsxDEV("span",{className:"task-item__cache-warning-badge",children:"需下载"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:666,columnNumber:25},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:665,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:568,columnNumber:19},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:534,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:533,columnNumber:13},void 0),s.jsxDEV("div",{className:"task-item__body",children:[s.jsxDEV("div",{className:"task-item__prompt-area",children:[s.jsxDEV(ne,{content:e.params.prompt,showArrow:!1,children:s.jsxDEV("div",{className:"task-item__prompt",children:J},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:680,columnNumber:15},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:679,columnNumber:13},void 0),B&&Z&&s.jsxDEV(ne,{content:Z,showArrow:!1,children:s.jsxDEV("div",{className:"task-item__subtitle",children:Z},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:684,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:683,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:678,columnNumber:11},void 0),s.jsxDEV("div",{className:"task-item__info-area",children:[s.jsxDEV("div",{className:"task-item__content-row",children:[s.jsxDEV("div",{className:"task-item__meta",children:[s.jsxDEV("div",{className:"task-item__tags",children:[s.jsxDEV(Q,{theme:Gs(e.status),variant:"light",className:"task-item__status-tag",children:Fs(e.status)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:695,columnNumber:19},void 0),e.params.model&&s.jsxDEV(Q,{variant:"outline",className:"task-item__model-tag",children:e.params.model},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:705,columnNumber:21},void 0),B&&me&&s.jsxDEV(Q,{variant:"outline",children:me},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:710,columnNumber:21},void 0),D&&z&&s.jsxDEV(Q,{variant:"outline",children:z},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:713,columnNumber:21},void 0),D&&S&&s.jsxDEV(Q,{variant:"outline",children:S},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:716,columnNumber:21},void 0),D&&oe&&s.jsxDEV(Q,{variant:"outline",children:oe},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:719,columnNumber:21},void 0),e.type===y.VIDEO&&e.params.seconds&&s.jsxDEV(Q,{variant:"outline",children:[e.params.seconds,"s"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:724,columnNumber:21},void 0),e.type===y.VIDEO&&e.params.size&&s.jsxDEV(Q,{variant:"outline",children:e.params.size},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:727,columnNumber:21},void 0),c&&s.jsxDEV(Q,{variant:"outline",children:c},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:730,columnNumber:21},void 0),e.type===y.AUDIO&&e.params.mv&&!E&&s.jsxDEV(Q,{variant:"outline",children:e.params.mv},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:735,columnNumber:23},void 0),e.type===y.AUDIO&&e.params.tags&&!E&&s.jsxDEV(Q,{variant:"outline",children:((We=String(e.params.tags).split(",")[0])==null?void 0:We.trim())||"音频"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:740,columnNumber:23},void 0),E&&s.jsxDEV(Q,{variant:"outline",children:"歌词"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:745,columnNumber:36},void 0),E&&ue[0]&&s.jsxDEV(Q,{variant:"outline",children:ue[0]},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:747,columnNumber:21},void 0),e.params.batchId&&typeof e.params.batchIndex=="number"&&typeof e.params.batchTotal=="number"&&s.jsxDEV(Q,{variant:"outline",children:["批量 ",e.params.batchIndex+1,"/",e.params.batchTotal]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:752,columnNumber:23},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:693,columnNumber:17},void 0),s.jsxDEV("div",{className:"task-item__details",children:[s.jsxDEV("span",{className:"task-item__time",children:js(e.createdAt)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:760,columnNumber:19},void 0),e.startedAt&&s.jsxDEV("span",{className:"task-item__duration",children:["·"," ",qs((e.completedAt||Date.now())-e.startedAt)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:764,columnNumber:21},void 0),(()=>{var ge,be;const x=(r==null?void 0:r.width)||((ge=e.result)==null?void 0:ge.width)||e.params.width,ie=(r==null?void 0:r.height)||((be=e.result)==null?void 0:be.height)||e.params.height;return x&&ie?s.jsxDEV("span",{className:"task-item__size",children:[" ","· ",x,"x",ie]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:782,columnNumber:25},void 0):null})(),c&&s.jsxDEV("span",{className:"task-item__size",children:[" · ",c]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:791,columnNumber:21},void 0),p&&((Ge=e.result)==null?void 0:Ge.url)&&!E&&s.jsxDEV("a",{href:e.result.url,target:"_blank",rel:"noopener noreferrer",className:"task-item__link","data-track":"task_click_open_link",onClick:x=>x.stopPropagation(),children:"· 打开链接"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:797,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:759,columnNumber:17},void 0),(e.type===y.VIDEO||e.type===y.AUDIO||e.type===y.CHAT&&typeof e.progress=="number")&&e.status===P.PROCESSING&&s.jsxDEV("div",{className:"task-item__progress-container",children:s.jsxDEV("div",{className:"task-item__progress-bar",children:s.jsxDEV("div",{className:`task-item__progress-fill task-item__progress-fill--${e.status}`,style:{width:`${e.progress??0}%`}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:818,columnNumber:25},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:817,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:816,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:692,columnNumber:15},void 0),s.jsxDEV("div",{className:"task-item__actions",children:[s.jsxDEV("div",{className:"task-item__secondary-actions",children:[p&&((Fe=e.result)==null?void 0:Fe.url)&&!w&&s.jsxDEV(ne,{content:"下载",children:s.jsxDEV(re,{size:"small",variant:"text",icon:s.jsxDEV(Ts,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:835,columnNumber:31},void 0),"data-track":"task_click_download","data-track-params":G,onClick:x=>{x.stopPropagation(),q==null||q(e.id)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:832,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:831,columnNumber:21},void 0),p&&E&&$&&s.jsxDEV(ne,{content:"复制歌词",children:s.jsxDEV(re,{size:"small",variant:"text",icon:s.jsxDEV(Ye,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:851,columnNumber:31},void 0),onClick:x=>{x.stopPropagation(),R==null||R(e.id)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:848,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:847,columnNumber:21},void 0),!w&&!O&&!B&&s.jsxDEV(ne,{content:"编辑",children:s.jsxDEV(re,{size:"small",variant:"text",icon:s.jsxDEV(ws,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:865,columnNumber:31},void 0),onClick:x=>{x.stopPropagation(),m==null||m(e.id)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:862,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:861,columnNumber:21},void 0),F&&s.jsxDEV(ne,{content:"角色",children:s.jsxDEV(re,{size:"small",variant:"text",icon:s.jsxDEV(De,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:879,columnNumber:31},void 0),onClick:x=>{x.stopPropagation(),l==null||l(e.id)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:876,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:875,columnNumber:21},void 0),s.jsxDEV(ne,{content:"删除",children:s.jsxDEV(re,{size:"small",variant:"text",className:"task-item__delete-btn",icon:s.jsxDEV(Es,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:893,columnNumber:29},void 0),onClick:x=>{x.stopPropagation(),V==null||V(e.id)}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:889,columnNumber:21},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:888,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:829,columnNumber:17},void 0),p&&((((Be=e.result)==null?void 0:Be.url)||((Xe=e.result)==null?void 0:Xe.chatResponse))&&!w||E)&&s.jsxDEV(re,{size:"small",theme:"primary",className:"task-item__primary-action","data-track":"task_click_insert","data-track-params":G,onClick:x=>{x.stopPropagation(),j==null||j(e.id)},children:"插入"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:907,columnNumber:21},void 0),Y&&s.jsxDEV(re,{size:"small",theme:"primary",className:"task-item__primary-action","data-track":"task_click_retry","data-track-params":G,onClick:x=>{x.stopPropagation(),o==null||o(e.id)},children:"重试"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:923,columnNumber:19},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:827,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:691,columnNumber:13},void 0),v&&e.error&&s.jsxDEV("div",{className:"task-item__error",children:s.jsxDEV("div",{className:"task-item__error-message",children:[e.error.message,((Ke=e.error.details)==null?void 0:Ke.originalError)&&s.jsxDEV(ne,{content:s.jsxDEV("div",{className:"task-item__error-details-tooltip",children:[s.jsxDEV("div",{className:"task-item__error-details-title",children:"详细错误:"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:949,columnNumber:27},void 0),s.jsxDEV("div",{className:"task-item__error-details-content",children:e.error.details.originalError},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:952,columnNumber:27},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:948,columnNumber:25},void 0),theme:"light",placement:"bottom",children:s.jsxDEV("span",{className:"task-item__error-details-link",onClick:x=>x.stopPropagation(),children:"[详情]"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:960,columnNumber:23},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:946,columnNumber:21},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:943,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:942,columnNumber:15},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:690,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:676,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/TaskItem.tsx",lineNumber:504,columnNumber:7},void 0)},(e,a)=>{var N,g;return e.task.id===a.task.id&&e.task.status===a.task.status&&e.task.progress===a.task.progress&&((N=e.task.error)==null?void 0:N.message)===((g=a.task.error)==null?void 0:g.message)&&e.task.result===a.task.result&&e.isSelected===a.isSelected&&e.selectionMode===a.selectionMode&&e.isCompact===a.isCompact}),Bs=new Set,Xs=140,Ze=0,Ks=3,es=375,Ys=20,sa=({tasks:e,selectionMode:a=!1,selectedTaskIds:N,onSelectionChange:g,onRetry:u,onDelete:o,onDownload:V,onInsert:q,onCopy:j,onEdit:R,onPreviewOpen:d,onExtractCharacter:m,className:l="",emptyContent:r,isCompact:i,hasMore:b=!1,isLoadingMore:k=!1,onLoadMore:f,totalCount:p,loadedCount:v,allLoadedText:H,allLoadedHint:Y})=>{const I=N??Bs,T=t.useRef(null),F=t.useRef(null),w=t.useRef(null),O=t.useRef(0),[B,E]=t.useState(()=>typeof window<"u"&&window.innerWidth<es),[_,$]=t.useState(!1),ae=i!==void 0?i:B,W=c=>{let D=c;for(;D;){const S=getComputedStyle(D).overflowY;if((S==="auto"||S==="scroll")&&D.scrollHeight>D.clientHeight)return D;D=D.parentElement}return null};t.useEffect(()=>{if(!b||!f)return;const c=T.current;if(!c)return;const D=setTimeout(()=>{const S=c.scrollHeight>c.clientHeight?c:W(c);if(w.current=S,!S)return;const K=()=>{const{scrollTop:oe,scrollHeight:le,clientHeight:n}=S,h=le-oe-n,U=Date.now();U-O.current<500||h<300&&b&&!k&&(O.current=U,f())};S.addEventListener("scroll",K,{passive:!0}),K(),c.__loadMoreCleanup=()=>{S.removeEventListener("scroll",K)}},150);return()=>{var z;clearTimeout(D),(z=c.__loadMoreCleanup)==null||z.call(c)}},[b,k,f,e.length]),t.useEffect(()=>{const c=T.current;if(!c)return;const D=setTimeout(()=>{const S=c.scrollHeight>c.clientHeight?c:W(c);if(w.current=S,!S)return;const K=()=>{$(S.scrollTop>S.clientHeight)};S.addEventListener("scroll",K),K(),c.__scrollCleanup=()=>{S.removeEventListener("scroll",K)}},100);return()=>{var z;clearTimeout(D),(z=c.__scrollCleanup)==null||z.call(c)}},[e.length]);const ue=()=>{const c=w.current||T.current;c&&(c.scrollTop=0)};t.useEffect(()=>{if(i!==void 0)return;const c=T.current;if(!c)return;const D=c,z=K=>{const oe=K??D.getBoundingClientRect().width;E(oe<es)},S=new ResizeObserver(K=>{z(K[0].contentRect.width)});return S.observe(D),z(),()=>{S.disconnect()}},[i,T.current]);const ce=e.length>Ys,Z=Ds({count:ce?e.length:0,getScrollElement:()=>T.current,estimateSize:()=>Xs+Ze,overscan:Ks,enabled:ce,measureElement:c=>c.offsetHeight});if(e.length===0)return s.jsxDEV("div",{className:`virtual-task-list virtual-task-list--empty ${l}`,children:r},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:280,columnNumber:7},void 0);const me=e.length||v||0,J=()=>s.jsxDEV(s.Fragment,{children:[k&&s.jsxDEV("div",{className:"virtual-task-list__loading-more",children:[s.jsxDEV("span",{className:"virtual-task-list__loading-spinner"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:297,columnNumber:11},void 0),s.jsxDEV("span",{children:"加载中..."},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:298,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:296,columnNumber:9},void 0),b&&!k&&p!==void 0&&p>0&&s.jsxDEV("div",{className:"virtual-task-list__pagination-info",children:["已加载 ",me," / ",p]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:306,columnNumber:11},void 0),!b&&e.length>0&&p!==void 0&&p>50&&s.jsxDEV("div",{className:"virtual-task-list__no-more",children:Y?s.jsxDEV(ne,{content:Y,children:s.jsxDEV("span",{children:H||`已加载全部 ${p} 个任务`},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:318,columnNumber:17},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:317,columnNumber:15},void 0):H||`已加载全部 ${p} 个任务`},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:315,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:293,columnNumber:5},void 0);if(!ce)return s.jsxDEV("div",{ref:F,className:`virtual-task-list-container ${l}`,style:{height:"100%",position:"relative",display:"flex",flexDirection:"column"},children:[s.jsxDEV("div",{ref:T,className:"virtual-task-list-scrollarea",style:{flex:1,overflow:"auto"},children:[e.map(c=>s.jsxDEV(Qe,{task:c,selectionMode:a,isSelected:I.has(c.id),isCompact:ae,onSelectionChange:g,onRetry:u,onDelete:o,onDownload:V,onInsert:q,onEdit:R,onPreviewOpen:()=>d==null?void 0:d(c.id),onExtractCharacter:m},c.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:349,columnNumber:13},void 0)),s.jsxDEV(J,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:365,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:343,columnNumber:9},void 0),_&&s.jsxDEV(re,{shape:"circle",variant:"base",theme:"default",icon:s.jsxDEV(Je,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:373,columnNumber:19},void 0),onClick:ue,className:"virtual-task-list__back-to-top"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:369,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:333,columnNumber:7},void 0);const X=Z.getVirtualItems();return s.jsxDEV("div",{ref:F,className:`virtual-task-list-container ${l}`,style:{height:"100%",width:"100%",position:"relative",display:"flex",flexDirection:"column"},children:[s.jsxDEV("div",{ref:T,className:"virtual-task-list-scrollarea",style:{flex:1,width:"100%",overflow:"auto"},children:[s.jsxDEV("div",{style:{height:`${Z.getTotalSize()}px`,width:"100%",position:"relative"},children:X.map(c=>{const D=e[c.index];return D?s.jsxDEV("div",{"data-index":c.index,ref:z=>{z&&Z.measureElement(z)},style:{position:"absolute",top:0,left:0,width:"100%",transform:`translateY(${c.start}px)`,paddingBottom:`${Ze}px`},children:s.jsxDEV(Qe,{task:D,selectionMode:a,isSelected:I.has(D.id),isCompact:ae,onSelectionChange:g,onRetry:u,onDelete:o,onDownload:V,onInsert:q,onCopy:j,onEdit:R,onPreviewOpen:()=>d==null?void 0:d(D.id),onExtractCharacter:m},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:435,columnNumber:17},void 0)},D.id,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:418,columnNumber:15},void 0):null})},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:406,columnNumber:9},void 0),s.jsxDEV(J,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:454,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:397,columnNumber:7},void 0),_&&s.jsxDEV(re,{shape:"circle",variant:"base",theme:"default",icon:s.jsxDEV(Je,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:462,columnNumber:17},void 0),onClick:ue,className:"virtual-task-list__back-to-top"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:458,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/task-queue/VirtualTaskList.tsx",lineNumber:386,columnNumber:5},void 0)};function Js(e,a){const[N,g]=t.useState(a||null),[u,o]=t.useState(!1),[V,q]=t.useState(!0),[j,R]=t.useState(null),d=t.useRef("none"),m=t.useCallback(async()=>{if(q(!0),!a){g(null),o(!1),q(!1);return}const l=await Ne.getCachedUrl(a);l?(j&&j!==l&&URL.revokeObjectURL(j),R(l),g(l),o(!0)):a?(g(a),o(!1)):(g(null),o(!1)),q(!1)},[a,j]);return t.useEffect(()=>{m(),a&&(d.current=Ne.getCacheStatus(a))},[e,a]),t.useEffect(()=>Ne.subscribe(()=>{if(!a)return;const r=Ne.getCacheStatus(a),i=d.current;r!==i&&(d.current=r,(r==="cached"||r==="none")&&m())}),[a,m]),t.useEffect(()=>()=>{j&&URL.revokeObjectURL(j)},[j]),{url:N,isFromCache:u,isLoading:V}}const ss=1,ve=3,Qs=({videoUrl:e,videoDuration:a,onConfirm:N,onCancel:g,disabled:u=!1})=>{const o=t.useRef(null),V=t.useRef(null),q=t.useRef(null),j=t.useRef(null),R=t.useRef(0),[d,m]=t.useState(!0),[l,r]=t.useState(a),[i,b]=t.useState(0),[k,f]=t.useState(Math.min(ve,a)),[p,v]=t.useState(0),[H,Y]=t.useState(""),[I,T]=t.useState(!1),[F,w]=t.useState(null),[O,B]=t.useState([]),[E,_]=t.useState(!1),$=k-i,ae=l>0?$/l*100:100,W=l>0?i/l*100:0;t.useEffect(()=>(e&&(m(!0),Y(""),B([]),T(!1),w(null)),()=>{j.current!==null&&cancelAnimationFrame(j.current)}),[e]);const ue=()=>{const n=o.current;if(n){const h=n.duration;r(h),T(!0),f(Math.min(ve,h))}},ce=t.useCallback(async()=>{const n=o.current;if(!(!n||!I||l<=0||E)){_(!0);try{const U=Math.max(4,Math.ceil(l*2)),C=l/U,ee=[],A=document.createElement("canvas"),G=A.getContext("2d");if(!G)return;const L=50,M=n.videoWidth/n.videoHeight||16/9,pe=Math.round(L*M);A.width=pe,A.height=L;for(let de=0;de<U;de++){const te=Math.min((de+.5)*C,l-.01);await new Promise(xe=>{const he=()=>{n.removeEventListener("seeked",he),xe()};n.addEventListener("seeked",he),n.currentTime=te}),G.drawImage(n,0,0,pe,L),ee.push(A.toDataURL("image/jpeg",.5))}B(ee),n.currentTime=i}catch(h){console.warn("Failed to generate frame strip:",h)}finally{_(!1)}}},[I,l,E,i]);t.useEffect(()=>{if(I&&l>0&&O.length===0&&!E){const n=setTimeout(()=>{ce()},100);return()=>clearTimeout(n)}},[I,l,O.length,E,ce]);const Z=t.useCallback(()=>{const n=o.current,h=V.current;if(!n||!h)return;const U=h.getContext("2d");if(U)try{h.width=n.videoWidth,h.height=n.videoHeight,U.drawImage(n,0,0,h.width,h.height);const C=h.toDataURL("image/jpeg",.8);Y(C),m(!1)}catch(C){console.warn("Failed to generate frame image:",C)}},[]),me=t.useCallback(()=>{const n=o.current;n&&d&&(n.currentTime===0||Math.abs(n.currentTime-i)<.1)&&Z()},[d,i,Z]),J=t.useCallback(n=>{const h=o.current;!h||!I||Math.abs(n-R.current)<.1||(R.current=n,h.readyState>=2&&(h.currentTime=n))},[I]),X=t.useCallback(()=>{Z()},[Z]);t.useEffect(()=>{if(I&&l>0){v(i);const n=o.current;n&&n.readyState>=2&&(n.currentTime=i)}},[I,l]);const c=t.useCallback(n=>{const h=q.current;if(!h)return 0;const U=h.getBoundingClientRect(),C=n.clientX-U.left;return Math.max(0,Math.min(1,C/U.width))*l},[l]),D=n=>{if(u||!I)return;n.preventDefault(),n.stopPropagation(),w("left");const h=k,U=ee=>{const A=c(ee),G=h-ss,L=Math.max(0,h-ve),M=Math.max(L,Math.min(G,A));b(M),v(M),J(M)},C=()=>{w(null),document.removeEventListener("mousemove",U),document.removeEventListener("mouseup",C),J(i)};document.addEventListener("mousemove",U),document.addEventListener("mouseup",C)},z=n=>{if(u||!I)return;n.preventDefault(),n.stopPropagation(),w("right");const h=i,U=ee=>{const A=c(ee),G=h+ss,L=Math.min(l,h+ve),M=Math.max(G,Math.min(L,A));f(M),v(M),J(M)},C=()=>{w(null),document.removeEventListener("mousemove",U),document.removeEventListener("mouseup",C),J(k)};document.addEventListener("mousemove",U),document.addEventListener("mouseup",C)},S=n=>{if(u||!I)return;n.preventDefault(),w("center");const h=q.current;if(!h)return;const U=h.getBoundingClientRect(),C=n.clientX,ee=i,A=k-i,G=M=>{const de=(M.clientX-C)/U.width*l;let te=ee+de;te=Math.max(0,Math.min(l-A,te)),b(te),f(te+A),v(te),J(te)},L=()=>{w(null),document.removeEventListener("mousemove",G),document.removeEventListener("mouseup",L),J(i)};document.addEventListener("mousemove",G),document.addEventListener("mouseup",L)},K=n=>{if(u||!I||F||n.target.closest(".character-time-selector__range"))return;const U=q.current;if(!U)return;const C=U.getBoundingClientRect(),A=(n.clientX-C.left)/C.width*l,G=k-i,L=G/2;let M=A-L;M=Math.max(0,Math.min(l-G,M)),b(M),f(M+G),v(M),J(M)},oe=()=>{N(Math.round(i),Math.round(k))},le=n=>n.toFixed(1)+"s";return s.jsxDEV("div",{className:`character-time-selector ${F?"is-dragging":""}`,children:[s.jsxDEV("video",{ref:o,src:e,style:{display:"none"},muted:!0,playsInline:!0,preload:"auto",crossOrigin:"anonymous",onLoadedMetadata:ue,onSeeked:X,onCanPlay:me},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:382,columnNumber:7},void 0),s.jsxDEV("canvas",{ref:V,style:{display:"none"}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:396,columnNumber:7},void 0),s.jsxDEV("div",{className:"character-time-selector__preview",children:[d?s.jsxDEV("div",{className:"character-time-selector__loading",children:[s.jsxDEV("div",{className:"character-time-selector__spinner"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:402,columnNumber:13},void 0),s.jsxDEV("span",{children:"加载中..."},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:403,columnNumber:13},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:401,columnNumber:11},void 0):H?s.jsxDEV("img",{src:H,alt:"Video frame",className:"character-time-selector__frame"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:406,columnNumber:11},void 0):s.jsxDEV("div",{className:"character-time-selector__placeholder",children:"视频帧加载失败"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:412,columnNumber:11},void 0),s.jsxDEV("div",{className:"character-time-selector__time-badge",children:le(p)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:416,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:399,columnNumber:7},void 0),s.jsxDEV("div",{className:"character-time-selector__timeline",ref:q,onClick:K,children:[O.length>0?s.jsxDEV("div",{className:"character-time-selector__frame-strip",children:O.map((n,h)=>s.jsxDEV("img",{src:n,alt:"",className:"character-time-selector__frame-thumb",draggable:!1},h,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:431,columnNumber:15},void 0))},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:429,columnNumber:11},void 0):E?s.jsxDEV("div",{className:"character-time-selector__frame-strip character-time-selector__frame-strip--loading",children:s.jsxDEV("div",{className:"character-time-selector__strip-shimmer"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:442,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:441,columnNumber:11},void 0):s.jsxDEV("div",{className:"character-time-selector__timeline-bg"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:445,columnNumber:11},void 0),s.jsxDEV("div",{className:`character-time-selector__range ${F?"dragging":""}`,style:{left:`${W}%`,width:`${ae}%`},children:[s.jsxDEV("div",{className:"character-time-selector__handle character-time-selector__handle--left",onMouseDown:D},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:457,columnNumber:11},void 0),s.jsxDEV("div",{className:"character-time-selector__range-content",onMouseDown:S,children:s.jsxDEV("span",{className:"character-time-selector__range-label",children:[le(i)," - ",le(k)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:466,columnNumber:13},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:462,columnNumber:11},void 0),s.jsxDEV("div",{className:"character-time-selector__handle character-time-selector__handle--right",onMouseDown:z},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:471,columnNumber:11},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:449,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:422,columnNumber:7},void 0),s.jsxDEV("div",{className:"character-time-selector__info",children:[s.jsxDEV("span",{children:["API参数: ",Math.round(i),", ",Math.round(k)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:480,columnNumber:9},void 0),s.jsxDEV("span",{children:["时长: ",$.toFixed(1),"s"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:481,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:479,columnNumber:7},void 0),s.jsxDEV("div",{className:"character-time-selector__actions",children:[s.jsxDEV(re,{variant:"outline",onClick:g,disabled:u,children:"取消"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:486,columnNumber:9},void 0),s.jsxDEV(re,{theme:"primary",onClick:oe,disabled:u||!I,children:"创建角色"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:493,columnNumber:9},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:485,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterTimeRangeSelector.tsx",lineNumber:380,columnNumber:5},void 0)},aa=({visible:e,task:a,onClose:N,onCreateStart:g,onCreateComplete:u})=>{var b;const{createTask:o,tasks:V}=_s(),[q,j]=t.useState(!1),{url:R}=Js((a==null?void 0:a.id)??"",(b=a==null?void 0:a.result)==null?void 0:b.url),d=t.useMemo(()=>a!=null&&a.params.seconds?parseFloat(a.params.seconds.toString()):10,[a==null?void 0:a.params.seconds]),m=t.useMemo(()=>a?V.some(k=>k.type===y.CHARACTER&&k.params.sourceLocalTaskId===a.id&&(k.status===P.PENDING||k.status===P.PROCESSING)):!1,[a,V]),l=t.useCallback(async(k,f)=>{if(!a||!a.remoteId){ye.error("无效的任务数据");return}j(!0),g==null||g();try{const p=Us(k,f),v=Vs(a.params.model),H=o({prompt:a.params.prompt||"角色提取",model:v,sourceVideoTaskId:a.remoteId,characterTimestamps:p,sourceLocalTaskId:a.id},y.CHARACTER);ye.success("角色创建任务已加入队列"),u==null||u(H.id),N()}catch(p){console.error("Failed to create character task:",p);const v=p.message||"创建任务失败";ye.error(v)}finally{j(!1)}},[a,o,g,u,N]),r=()=>{q||N()},i=()=>{q||N()};return!a||!R?null:s.jsxDEV(Is,{visible:e,header:"角色",onClose:r,footer:null,width:560,className:"character-create-dialog",closeOnOverlayClick:!q,closeOnEscKeydown:!q,children:[s.jsxDEV("div",{className:"character-create-dialog__description",children:["从视频中提取角色,创建后可通过 ",s.jsxDEV("code",{children:"@username"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterCreateDialog.tsx",lineNumber:130,columnNumber:25},void 0)," 在提示词中引用"]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterCreateDialog.tsx",lineNumber:129,columnNumber:7},void 0),m&&s.jsxDEV("div",{className:"character-create-dialog__warning",children:"此视频已有一个角色正在创建中"},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterCreateDialog.tsx",lineNumber:135,columnNumber:9},void 0),s.jsxDEV(Qs,{videoUrl:R,videoDuration:d,onConfirm:l,onCancel:i,disabled:q||m},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterCreateDialog.tsx",lineNumber:141,columnNumber:7},void 0)]},void 0,!0,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterCreateDialog.tsx",lineNumber:119,columnNumber:5},void 0)},ta=({characterId:e,profilePictureUrl:a,alt:N="Character",className:g,onClick:u})=>{const[o,V]=t.useState(a||null),[q,j]=t.useState(!1),[R,d]=t.useState(!0);t.useEffect(()=>{let r=!1;return(async()=>{d(!0),j(!1);const b=await je.getCachedUrl(e);if(!r){if(b){V(b),d(!1);return}a?(V(a),je.cacheAvatar(e,a).catch(()=>{})):j(!0),d(!1)}})(),()=>{r=!0}},[e,a]);const m=async()=>{if(o===a){const r=await je.getCachedUrl(e);if(r&&r!==o){V(r);return}}j(!0)},l=()=>{d(!1)};return q||!o?s.jsxDEV("div",{className:g,onClick:u,style:u?{cursor:"pointer"}:void 0,children:s.jsxDEV(De,{},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterAvatar.tsx",lineNumber:101,columnNumber:9},void 0)},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterAvatar.tsx",lineNumber:100,columnNumber:7},void 0):s.jsxDEV("img",{src:o,alt:N,className:g,onError:m,onLoad:l,onClick:u,style:{display:R?"none":"block",cursor:u?"pointer":void 0}},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/components/character/CharacterAvatar.tsx",lineNumber:107,columnNumber:5},void 0)};function ra(){const[e,a]=t.useState([]),[N,g]=t.useState(!0),u=t.useRef(new Map);t.useEffect(()=>{const r=se.getCharacters$().subscribe(i=>{a(i),g(!1)});return se.init(),()=>r.unsubscribe()},[]),t.useEffect(()=>{N||(async()=>{const i=se.getPendingCharacters();for(const b of i)u.current.get(b.id)||o(b)})()},[N]);const o=t.useCallback(async r=>{if(!u.current.get(r.id)){u.current.set(r.id,!0);try{const i=await qe.resumePolling(r.id,{onStatusChange:async b=>{await se.updateCharacterStatus(r.id,b)}});await se.updateCharacter(r.id,{username:i.username,profilePictureUrl:i.profile_picture_url,permalink:i.permalink,status:"completed",completedAt:Date.now()})}catch(i){console.error("[useCharacters] Character polling failed:",i),await se.updateCharacterStatus(r.id,"failed",i.message)}finally{u.current.delete(r.id)}}},[]),V=t.useCallback(async r=>{var b;const i=Date.now();Te.track("character_extract_start",{videoTaskId:r.videoTaskId,hasTimestamps:!!((b=r.characterTimestamps)!=null&&b.length)});try{const f=(await qe.createCharacter(r)).id,p={id:f,username:"",profilePictureUrl:"",sourceTaskId:r.localTaskId||"",sourceVideoId:r.videoTaskId,sourcePrompt:r.sourcePrompt,characterTimestamps:r.characterTimestamps,status:"processing",createdAt:Date.now()};return await se.saveCharacter(p),u.current.set(f,!0),qe.resumePolling(f,{onStatusChange:async v=>{await se.updateCharacterStatus(f,v)}}).then(async v=>{await se.updateCharacter(f,{username:v.username,profilePictureUrl:v.profile_picture_url,permalink:v.permalink,status:"completed",completedAt:Date.now()}),Te.track("character_extract_success",{characterId:f,username:v.username,duration:Date.now()-i})}).catch(async v=>{console.error("[useCharacters] Character creation failed:",v),await se.updateCharacterStatus(f,"failed",v.message),Te.track("character_extract_failed",{characterId:f,error:v.message,duration:Date.now()-i})}).finally(()=>{u.current.delete(f)}),p}catch(k){throw console.error("[useCharacters] Failed to create character:",k),k}},[]),q=t.useCallback(async r=>(u.current.delete(r),se.deleteCharacter(r)),[]),j=t.useCallback(async()=>{await se.init()},[]),R=t.useCallback(r=>e.find(i=>i.id===r),[e]),d=t.useCallback(r=>e.some(i=>i.sourceTaskId===r&&(i.status==="pending"||i.status==="processing")),[e]),m=e.filter(r=>r.status==="completed"),l=e.filter(r=>r.status==="pending"||r.status==="processing");return{characters:e,completedCharacters:m,pendingCharacters:l,isLoading:N,createCharacter:V,deleteCharacter:q,refreshCharacters:j,getCharacterById:R,isCreatingCharacterForTask:d}}export{ta as C,Qe as T,sa as V,aa as a,ra as u};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./tool-windows-CUNbW1Tz.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{aC as Y,dn as H,dp as re,dq as X,dr as fe,ds as me,dt as ge,aj as w,ai as ke,W as ee,bz as V,T as ie,du as D,dv as we,q as te,ak as U}from"./tool-windows-DOIu9TAD.js";import{w as N}from"./workflow-submission-service-YOpo7g37.js";import{S as Se,a as se}from"./skill-dsl-parser-syNWYxFu.js";import{u as ye}from"./main-BFEkxCOK.js";function he(s){if(!s||typeof s!="string")return console.warn("[ExternalSkillParser] SKILL.md 内容为空"),null;const e=s.trim();if(!e.startsWith("---"))return console.warn("[ExternalSkillParser] SKILL.md 缺少 YAML front matter(未以 --- 开头)"),null;const t=e.indexOf("---",3);if(t===-1)return console.warn("[ExternalSkillParser] SKILL.md YAML front matter 未闭合(缺少结束 ---)"),null;const n=e.substring(3,t).trim(),r=e.substring(t+3).trim(),i=We(n),o=i.name,f=i.description||"";return o?{name:o,description:f,body:r}:(console.warn("[ExternalSkillParser] SKILL.md 缺少必填字段 name"),null)}function We(s){const e={},t=s.split(`
|
|
3
|
+
`);for(const n of t){const r=n.trim();if(!r||r.startsWith("#"))continue;const i=r.indexOf(":");if(i===-1)continue;const o=r.substring(0,i).trim();let f=r.substring(i+1).trim();(f.startsWith('"')&&f.endsWith('"')||f.startsWith("'")&&f.endsWith("'"))&&(f=f.slice(1,-1)),o&&(e[o]=f)}return e}function Je(s){try{const e=JSON.parse(s);if(!e.plugins||!Array.isArray(e.plugins))return console.warn("[ExternalSkillParser] marketplace.json 缺少 plugins 数组"),null;const t=new Map,n=[];for(const r of e.plugins){const i={name:r.name||"",description:r.description||"",skills:[]};if(Array.isArray(r.skills))for(const o of r.skills){const f=xe(o);i.skills.push(f),t.set(f,r.name||"")}n.push(i)}return{name:e.name||"",metadata:e.metadata?{description:e.metadata.description,version:e.metadata.version}:void 0,plugins:n,skillCategoryMap:t}}catch(e){return console.warn("[ExternalSkillParser] marketplace.json 解析失败:",e),null}}function xe(s){let e=s.trim();return e.startsWith("./")&&(e=e.substring(2)),e.startsWith("skills/")&&(e=e.substring(7)),e.endsWith("/")&&(e=e.slice(0,-1)),e}function be(s,e){if(!e||e.size===0)return s;let t=s;for(const[n,r]of e){const i=new RegExp("`"+Ie(n)+"`","g");t=t.replace(i,`\`${n}\`
|
|
4
|
+
|
|
5
|
+
<details><summary>${n}</summary>
|
|
6
|
+
|
|
7
|
+
${r}
|
|
8
|
+
|
|
9
|
+
</details>`)}return t}function Ie(s){return s.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Xe(s,e,t,n){const r=[];for(const i of s){const o=he(i.skillMdContent);if(!o){console.warn(`[ExternalSkillParser] 跳过无效 Skill: ${i.dirName}`);continue}let f=o.body;i.references&&i.references.size>0&&(f=be(f,i.references));const g=(t==null?void 0:t.skillCategoryMap.get(o.name))||(t==null?void 0:t.skillCategoryMap.get(i.dirName));r.push({id:`${e}:${o.name}`,name:o.name,description:o.description,type:Se,content:f,source:e,sourceUrl:n,category:g})}return r}function Me(s,e){if(e!=="image"||!s||s.trim().length===0)return s;let t=s;return t=t.replace(/```bash\n[\s\S]*?```/g,r=>/npx|bun|scripts\/|\.ts\b|\.js\b|mkdir|cp |mv |rm |cat /i.test(r)?"> *(此步骤在 aitu 中自动处理)*":r),t=t.replace(/(?:Select|Check|Use|Call)\s+(?:available\s+)?image\s+generation\s+skill[s]?[^.\n]*/gi,"调用 generate_image 工具生成图片"),t=t.replace(/(?:If\s+)?(?:multiple\s+)?(?:image\s+generation\s+)?skills?\s+available,?\s*ask\s+(?:user\s+)?preference[^.\n]*/gi,""),t=t.replace(/Call\s+(?:skill\s+)?with\s+prompt\s+file[^.\n]*/gi,"调用 generate_image 工具,传入构建好的 prompt"),t=t.replace(/If\s+image\s+generation\s+skill\s+supports[^.\n]*/gi,""),t=t.replace(/(?:Use\s+)?AskUserQuestion\s+(?:with\s+)?(?:ALL\s+)?(?:questions?\s+)?(?:in\s+ONE\s+call)?[^.\n]*/gi,"自动选择最合适的参数组合"),t=t.replace(/\*\*(?:Use\s+)?AskUserQuestion\*\*[^.\n]*/gi,"**自动选择**最合适的参数组合"),t=t.replace(/ask\s+(?:the\s+)?user\s+with\s+AskUserQuestion[^.\n]*/gi,"自动选择最合适的参数"),t=t.replace(/\bDo\s+NOT\s+split\s+into\s+separate\s+AskUserQuestion\s+calls[^.\n]*/gi,""),t=t.replace(/\*\*Important\*\*:\s*Do NOT split into separate AskUserQuestion[^.\n]*/gi,""),t=t.replace(/\*\*(?:Save|Write)\s+(?:source\s+)?(?:content|to\s+file)\*\*[^.\n]*(?:\n\s*-[^\n]*)*/gi,"> *(文件保存步骤在 aitu 中自动跳过)*"),t=t.replace(/(?:Save|Write)\s+(?:to|the)\s+(?:file|disk|output)[^.\n]*/gi,""),t=t.replace(/\*\*Check\s+for\s+existing\s+file\*\*[^.\n]*(?:\n\s*-[^\n]*)*/gi,""),t=t.replace(/If\s+exists?:\s*Rename\s+to[^\n]*/gi,""),t=t.replace(/\*\*Backup\s+rule\*\*[^\n]*/gi,""),t=t.replace(/output\s+path[,:]?\s*(?:files?\s+created)?[^.\n]*/gi,""),t=t.replace(/(?:^|\n)(?:[│├└─\s]+[^\n]+\n)+/gm,`
|
|
10
|
+
`),t=t.replace(/\n{4,}/g,`
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
`),t+=`
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 执行指引(aitu 环境适配)
|
|
18
|
+
|
|
19
|
+
**你必须严格按照以上 Skill 工作流指令执行。** 在 aitu 环境中,执行规则如下:
|
|
20
|
+
|
|
21
|
+
1. **内容分析**:基于用户输入内容,按照 Skill 中的步骤进行深入分析,提取关键信息
|
|
22
|
+
2. **参数选择**:自动选择最合适的布局(layout)和样式(style),无需询问用户
|
|
23
|
+
3. **Prompt 构建**:严格按照 Skill 中的模板和规则,结合 Reference 中的布局定义和样式定义,构建完整、详细的图片生成 prompt
|
|
24
|
+
4. **图片生成**:将构建好的完整 prompt 作为参数,调用 \`generate_image\` 工具生成图片
|
|
25
|
+
5. **禁止**:不要仅输出文字描述而不生成图片,必须实际调用 \`generate_image\` 工具
|
|
26
|
+
|
|
27
|
+
**重要**:你的最终目标是调用 \`generate_image\` 工具生成一张高质量的图片,而非输出文本分析。
|
|
28
|
+
`,t}function ve(s){if(!/\[(?:Intro|Verse|Chorus|Pre-Chorus|Bridge|Outro|Hook|Fade|Instrumental|Interlude)/i.test(s))return{lyrics:s};const e=s.split(`
|
|
29
|
+
`);let t,n;const r=[];for(const i of e){const o=i.trim();if(!t&&/^#\s+(.+)/.test(o)){t=o.replace(/^#\s+/,"").trim();continue}if(!n&&/^(?:标签|tags)\s*[::]\s*(.+)/i.test(o)){n=o.replace(/^(?:标签|tags)\s*[::]\s*/i,"").trim();continue}r.push(i)}for(;r.length>0&&r[0].trim()==="";)r.shift();for(;r.length>0&&r[r.length-1].trim()==="";)r.pop();return{title:t,tags:n,lyrics:r.join(`
|
|
30
|
+
`)}}function J(){return`wf-${Date.now()}-${Math.random().toString(36).substring(2,8)}`}function _e(s,e,t=!1){return s.map(n=>({...n,args:me(n.mcp,{...n.args},{defaultModels:e.defaultModels,defaultModelRefs:e.defaultModelRefs,contextModel:{id:e.modelId,type:e.generationType==="agent"?"text":e.generationType},contextModelRef:e.modelRef,overrideSpecifiedModel:t})}))}function Te(s,e=[]){const{generationType:t,modelId:n,modelRef:r,isModelExplicit:i,prompt:o,userInstruction:f,rawInput:g,count:c,size:m,duration:T,extraParams:a,selection:l,defaultModels:p,defaultModelRefs:k}=s,_=[],I=J(),u=`wf_batch_${I}`;for(let d=0;d<c;d++){const S=`${I}-step-${d+1}`,M={mode:"queue",batchId:u,batchIndex:d+1,batchTotal:c,globalIndex:d+1};if(t==="image"){const b={prompt:o,model:n,modelRef:r,workflowId:I,batchId:u,batchIndex:d+1,batchTotal:c,globalIndex:d+1};m&&(b.size=m),e.length>0&&(b.referenceImages=e),a&&(b.params=a),_.push({id:S,mcp:"generate_image",args:b,options:M,description:c>1?`生成图片 (${d+1}/${c})`:"生成图片",status:"pending"})}else if(t==="video"){const b={prompt:o,model:n,modelRef:r,seconds:T||"5",workflowId:I,batchId:u,batchIndex:d+1,batchTotal:c,globalIndex:d+1};m&&(b.size=m),e.length>0&&(b.referenceImages=e),a&&(b.params=a),_.push({id:S,mcp:"generate_video",args:b,options:M,description:c>1?`生成视频 (${d+1}/${c})`:"生成视频",status:"pending"})}else if(t==="audio"){const b=typeof(a==null?void 0:a.sunoAction)=="string"?a.sunoAction:"music",h=b==="lyrics",W={prompt:o,model:n,modelRef:r,sunoAction:b,workflowId:I,batchId:u,batchIndex:d+1,batchTotal:c,globalIndex:d+1};if(!h&&o){const v=ve(o);(v.title||v.tags)&&(W.prompt=v.lyrics,v.title&&!(a!=null&&a.title)&&(W.title=v.title),v.tags&&!(a!=null&&a.tags)&&(W.tags=v.tags))}a&&(W.params=a,a.notifyHook&&(W.notifyHook=a.notifyHook),!h&&a.mv&&(W.mv=a.mv),!h&&a.title&&(W.title=a.title),!h&&a.tags&&(W.tags=a.tags),!h&&a.continueClipId&&(W.continueClipId=a.continueClipId),!h&&a.continueAt!==void 0&&a.continueAt!==null&&a.continueAt!==""&&(W.continueAt=Number(a.continueAt))),_.push({id:S,mcp:"generate_audio",args:W,options:M,description:c>1?`${h?"生成歌词":"生成音频"} (${d+1}/${c})`:h?"生成歌词":"生成音频",status:"pending"})}else{const b={prompt:o,model:n,modelRef:r,rawInput:g,workflowId:I,batchId:u,batchIndex:d+1,batchTotal:c,globalIndex:d+1};e.length>0&&(b.referenceImages=e),a&&(b.params=a),_.push({id:S,mcp:"generate_text",args:b,options:M,description:"生成文本",status:"pending"})}}const x=t==="audio"&&_.every(d=>d.args.sunoAction==="lyrics");return{id:I,name:t==="image"?"图片生成":t==="video"?"视频生成":t==="text"?"文本生成":x?"歌词生成":"音频生成",description:`使用 ${n} 模型${c>1?`生成 ${c} 个`:"生成"}${t==="image"?"图片":t==="video"?"视频":t==="text"?"文本":x?"歌词":"音频"}`,scenarioType:"direct_generation",generationType:t,steps:_,metadata:{prompt:o,userInstruction:f,rawInput:g,modelId:n,modelRef:r,defaultModels:p,defaultModelRefs:k,isModelExplicit:i,count:c,size:m,duration:T,referenceImages:e.length>0?e:void 0,selection:l},createdAt:Date.now()}}function Re(s,e=[]){const{generationType:t,modelId:n,modelRef:r,isModelExplicit:i,prompt:o,userInstruction:f,rawInput:g,count:c,size:m,duration:T,extraParams:a,selection:l,defaultModels:p,defaultModelRefs:k}=s,_=J(),I={userInstruction:f,rawInput:g,model:{id:n,type:t==="agent"?"text":t,isExplicit:i},params:{count:c,size:m,duration:T,...a},defaultModels:p,defaultModelRefs:k,selection:l,finalPrompt:o},u=[...l.images||[],...l.graphics||[]];let x=ge();u.length>0&&(x+=H(u.length,l.imageDimensions));const d=re(I),S=[{role:"system",content:x},{role:"user",content:d}],M=[{id:`${_}-step-analyze`,mcp:"ai_analyze",args:{context:I,messages:S,referenceImages:u.length>0?u:void 0,textModel:n,modelRef:r},options:{mode:"async"},description:"AI 分析用户意图",status:"pending"}];return{id:_,name:"AI 智能生成",description:"AI 分析用户请求并执行相应操作",scenarioType:"agent_flow",generationType:t,steps:M,metadata:{prompt:o,userInstruction:f,rawInput:g,modelId:n,modelRef:r,isModelExplicit:i,count:c,size:m,duration:T,defaultModels:p,defaultModelRefs:k,referenceImages:e.length>0?e:void 0,selection:l},createdAt:Date.now()}}function Ae(s){const e=[];for(const t of s){const n=Y.getTool(t);if(!n)continue;const r=n.inputSchema.properties||{},i=n.inputSchema.required||[],o=n.promptGuidance,f=Object.entries(r).map(([c,m])=>{var I;const a=i.includes(c)?"(必填)":"(可选)",l=[];m.type&&l.push(`类型: ${m.type}`),m.enum&&Array.isArray(m.enum)&&l.push(`可选值: ${m.enum.map(u=>`"${u}"`).join(" | ")}`),m.default!==void 0&&l.push(`默认: "${m.default}"`);const p=l.length>0?` [${l.join(", ")}]`:"",k=(I=o==null?void 0:o.parameterGuidance)==null?void 0:I[c],_=k?`
|
|
31
|
+
💡 ${k}`:"";return` - **${c}**${a}: ${m.description||"无描述"}${p}${_}`}).join(`
|
|
32
|
+
`);let g=`### ${n.name}
|
|
33
|
+
${n.description}
|
|
34
|
+
|
|
35
|
+
**参数:**
|
|
36
|
+
${f||" 无参数"}`;o!=null&&o.whenToUse&&(g+=`
|
|
37
|
+
|
|
38
|
+
**使用场景:** ${o.whenToUse}`),e.push(g)}return e.length>0?e.join(`
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
`):""}async function et(s,e,t=[],n){const{generationType:r,modelRef:i,modelId:o,isModelExplicit:f,prompt:g,userInstruction:c,rawInput:m,count:T,size:a,duration:l,selection:p,defaultModels:k,defaultModelRefs:_}=s,I=J(),u=e.id,x=e.name,d=e.type==="system"?e.description:e.content,S=c||g||m,M={input:S,count:T,size:a,model:o},b=se.parse(d,M,I,S);if(b){const P=_e(b.steps,s,!0);return{id:I,name:x,description:`使用「${x}」Skill 生成内容`,scenarioType:"skill_flow",skillId:u,generationType:r,steps:P,metadata:{prompt:g,userInstruction:c,rawInput:m,modelId:o,modelRef:i,defaultModels:k,defaultModelRefs:_,isModelExplicit:f,count:T,size:a,duration:l,referenceImages:t.length>0?t:void 0,selection:p,parseMethod:"regex"},createdAt:Date.now()}}const h=[...p.images||[],...p.graphics||[]],W={userInstruction:c,rawInput:m,model:{id:o,type:r==="agent"?"text":r,isExplicit:f},params:{count:T,size:a,duration:l},defaultModels:k,defaultModelRefs:_,selection:p,finalPrompt:g},v=e.type==="external",R=e.type==="user",y=e.outputType==="image"?"image":"text",C=v||R&&y==="image"?Me(d,y):d;console.log(`[SkillFlow] Skill="${x}" type=${e.type} outputType=${y} isExternal=${v} contentLen=${(C==null?void 0:C.length)||0}`);const A=se.extractToolNamesFromContent(C),$=A.filter(P=>Y.hasTool(P));y==="image"&&!$.includes("generate_image")&&Y.hasTool("generate_image")&&$.push("generate_image");const z=$.includes("generate_image");if(console.log(`[SkillFlow] referencedTools=[${A.join(",")}] validTools=[${$.join(",")}] hasGenerateImage=${z} → 路径${$.length>0?"B":"C"}`),$.length>0){const P=Ae($);let O=`## 当前激活的 Skill:${x}
|
|
43
|
+
|
|
44
|
+
${C}`;P&&(O+=`
|
|
45
|
+
|
|
46
|
+
## 可用工具
|
|
47
|
+
|
|
48
|
+
${P}`),h.length>0&&(O+=H(h.length,p.imageDimensions)),O+=`
|
|
49
|
+
|
|
50
|
+
## 响应格式(严格遵守)
|
|
51
|
+
|
|
52
|
+
你的响应必须是一个有效的 JSON 对象:
|
|
53
|
+
{"content": "你的分析内容", "next": [{"mcp": "工具名称", "args": {"参数名": "参数值"}}]}`,z&&(O+=`
|
|
54
|
+
|
|
55
|
+
## 执行要求
|
|
56
|
+
|
|
57
|
+
你必须严格按照以上 Skill 工作流指令执行。最终目标是:
|
|
58
|
+
1. 基于用户输入内容,按照 Skill 中的步骤分析并构建高质量的图片描述 prompt
|
|
59
|
+
2. 调用 generate_image 工具生成图片,将构建好的 prompt 作为参数传入
|
|
60
|
+
3. 不要仅输出文字描述,必须实际调用工具生成图片
|
|
61
|
+
|
|
62
|
+
你的回复必须包含对 generate_image 工具的调用,例如:
|
|
63
|
+
{"content": "分析与 prompt 构建过程", "next": [{"mcp": "generate_image", "args": {"prompt": "完整的图片描述 prompt"}}]}`);const ue=re(W),de=[{role:"system",content:O},{role:"user",content:ue}],pe=[{id:`${I}-step-analyze`,mcp:"ai_analyze",args:{context:W,messages:de,referenceImages:h.length>0?h:void 0,textModel:o,modelRef:i},options:{mode:"async"},description:`AI 分析用户意图(Skill: ${x})`,status:"pending"}];return{id:I,name:x,description:`使用「${x}」Skill 生成内容`,scenarioType:"skill_flow",skillId:u,generationType:r,steps:pe,metadata:{prompt:g,userInstruction:c,rawInput:m,modelId:o,modelRef:i,defaultModels:k,defaultModelRefs:_,isModelExplicit:f,count:T,size:a,duration:l,referenceImages:t.length>0?t:void 0,selection:p,parseMethod:"agent_fallback"},createdAt:Date.now()}}let F=C||"";h.length>0&&(F+=H(h.length,p.imageDimensions)),z&&(F+=`
|
|
64
|
+
|
|
65
|
+
## 重要执行指引
|
|
66
|
+
|
|
67
|
+
请基于以上 Skill 指令构建详细的图片描述 prompt,并使用以下 JSON 格式回复以调用图片生成工具:
|
|
68
|
+
{"content": "你的分析", "next": [{"mcp": "generate_image", "args": {"prompt": "你构建的完整 prompt"}}]}
|
|
69
|
+
|
|
70
|
+
你必须实际调用 generate_image 工具生成图片,不要仅输出文字描述。`);const B=[{role:"system",content:F},{role:"user",content:S}],Q=[{id:`${I}-step-analyze`,mcp:"ai_analyze",args:{context:W,messages:B,referenceImages:h.length>0?h:void 0,textModel:o,modelRef:i},options:{mode:"async"},description:`AI 以「${x}」角色回复`,status:"pending"}];return{id:I,name:x,description:`使用「${x}」Skill 生成内容`,scenarioType:"skill_flow",skillId:u,generationType:r,steps:Q,metadata:{prompt:g,userInstruction:c,rawInput:m,modelId:o,modelRef:i,defaultModels:k,defaultModelRefs:_,isModelExplicit:f,count:T,size:a,duration:l,referenceImages:t.length>0?t:void 0,selection:p,parseMethod:"agent_fallback"},createdAt:Date.now()}}function Ce(s,e=[]){return s.scenario==="direct_generation"?Te(s,e):Re(s,e)}function Ee(s,e=0){try{let t=X(s);if(!t){const i=fe(s),o=i.indexOf("{"),f=i.lastIndexOf("}");o>=0&&f>o&&(t=X(i.slice(o,f+1)))}if(!t)return{content:"",steps:[]};const n=typeof t.content=="string"?t.content:"";if(!Array.isArray(t.next)||t.next.length===0)return{content:n,steps:[]};const r=t.next.filter(i=>typeof i.mcp=="string"&&typeof i.args=="object").map((i,o)=>({id:`step-${e+o+1}`,mcp:i.mcp,args:i.args,description:$e(i.mcp,i.args),status:"pending"}));return{content:n,steps:r}}catch{return{content:"",steps:[]}}}function $e(s,e){var t,n,r,i;switch(s){case"generate_image":return`生成图片: ${((t=e.prompt)==null?void 0:t.substring(0,30))||""}...`;case"generate_video":return`生成视频: ${((n=e.prompt)==null?void 0:n.substring(0,30))||""}...`;case"generate_audio":return`生成音频: ${((r=e.prompt)==null?void 0:r.substring(0,30))||""}...`;case"generate_text":return`生成文本: ${((i=e.prompt)==null?void 0:i.substring(0,30))||""}...`;case"ai_analyze":return"AI 分析用户意图";case"format_markdown":return"格式化输出";case"show_result":return"展示结果";default:return`执行 ${s}`}}function Pe(s,e,t,n,r,i){return{...s,steps:s.steps.map(o=>o.id===e?{...o,status:t,result:n!==void 0?n:o.result,error:r,duration:i}:o)}}function De(s,e){const t=new Set(s.steps.map(r=>r.id)),n=e.filter(r=>!t.has(r.id));return n.length===0?s:{...s,steps:[...s.steps,...n]}}function j(s){const e=s.steps.filter(o=>o.status==="completed").length,t=s.steps.filter(o=>o.status==="failed").length,n=s.steps.find(o=>o.status==="running"),r=s.steps.filter(o=>o.status==="pending").length;let i;return t>0?i="failed":n?i="running":r===0&&e>0?i="completed":i="pending",{status:i,completedSteps:e,totalSteps:s.steps.length,currentStep:n||s.steps.find(o=>o.status==="pending")}}const ne={workflow:null,status:"idle",currentStep:null,completedSteps:0,totalSteps:0,error:null};function Le(){const[s,e]=w.useState(ne),t=w.useRef(null),n=w.useRef(!1),r=w.useCallback(l=>{t.current=l,n.current=!1;const p=j(l);e({workflow:l,status:"running",currentStep:p.currentStep||null,completedSteps:p.completedSteps,totalSteps:p.totalSteps,error:null})},[]),i=w.useCallback(l=>{t.current=l,n.current=!1;const p=j(l);let k="running";l.status==="completed"?k="completed":(l.status==="failed"||l.status==="cancelled")&&(k="failed"),e({workflow:l,status:k,currentStep:p.currentStep||null,completedSteps:p.completedSteps,totalSteps:p.totalSteps,error:l.error||null})},[]),o=w.useCallback((l,p,k,_,I)=>{if(n.current)return;const u=t.current;if(!u)return;const x=Pe(u,l,p,k,_,I);t.current=x,e(d=>{const S=j(x);let M="running";return S.status==="completed"?M="completed":S.status==="failed"&&(M="failed"),{...d,workflow:x,status:M,currentStep:S.currentStep||null,completedSteps:S.completedSteps,totalSteps:S.totalSteps,error:_||d.error}})},[]),f=w.useCallback(l=>{if(n.current||l.length===0)return;const p=t.current;if(!p)return;const k=De(p,l);t.current=k,e(_=>{const I=j(k);return{..._,workflow:k,currentStep:I.currentStep||_.currentStep,totalSteps:I.totalSteps}})},[]),g=w.useCallback(l=>{const p=t.current;if(!p||n.current)return{content:"",steps:[]};const k=p.steps.length,{content:_,steps:I}=Ee(l,k);return _&&!p.aiAnalysis&&(t.current={...p,aiAnalysis:_}),I.length>0&&f(I),{content:_,steps:I}},[f]),c=w.useCallback(()=>{t.current=null,n.current=!1,e(ne)},[]),m=w.useCallback(()=>{n.current=!0,e(l=>({...l,status:"failed",error:"工作流已中止"}))},[]),T=w.useCallback(()=>{n.current=!1,e(l=>({...l,status:"running",error:null}))},[]),a=w.useCallback(()=>t.current,[]);return{state:s,startWorkflow:r,restoreWorkflow:i,updateStep:o,addSteps:f,addStepsFromAIResponse:g,resetWorkflow:c,abortWorkflow:m,resumeWorkflow:T,getWorkflow:a}}const ae=w.createContext(null),tt=({children:s})=>{const e=Le(),t=w.useMemo(()=>({state:e.state,startWorkflow:e.startWorkflow,restoreWorkflow:e.restoreWorkflow,updateStep:e.updateStep,addSteps:e.addSteps,addStepsFromAIResponse:e.addStepsFromAIResponse,resetWorkflow:e.resetWorkflow,abortWorkflow:e.abortWorkflow,resumeWorkflow:e.resumeWorkflow,getWorkflow:e.getWorkflow}),[e.state,e.startWorkflow,e.restoreWorkflow,e.updateStep,e.addSteps,e.addStepsFromAIResponse,e.resetWorkflow,e.abortWorkflow,e.resumeWorkflow,e.getWorkflow]);return ke.jsxDEV(ae.Provider,{value:t,children:s},void 0,!1,{fileName:"/Users/ljq/code/shuidiyu/aitu/packages/drawnix/src/contexts/WorkflowContext.tsx",lineNumber:78,columnNumber:5},void 0)};function ze(){const s=w.useContext(ae);if(!s)throw new Error("useWorkflowContext must be used within a WorkflowProvider");return s}function Fe(){const s=ze();return{startWorkflow:s.startWorkflow,restoreWorkflow:s.restoreWorkflow,updateStep:s.updateStep,addSteps:s.addSteps,addStepsFromAIResponse:s.addStepsFromAIResponse,resetWorkflow:s.resetWorkflow,abortWorkflow:s.abortWorkflow,resumeWorkflow:s.resumeWorkflow,getWorkflow:s.getWorkflow}}const Ne=20,oe=2e3,Oe=3e4;function le(s){const e=new Map;if(!s)return e;for(const t of s){const n=t.result;n!=null&&n.taskId&&e.set(n.taskId,t.id)}return e}function ce(s){var e;return s.status===V.PROCESSING?{status:"running"}:s.status===V.COMPLETED&&s.result?{status:"completed",result:{...s.result,taskId:s.id}}:s.status===V.FAILED?{status:"failed",error:typeof s.error=="string"?s.error:((e=s.error)==null?void 0:e.message)||"Task failed"}:null}function Ue(s,e,t,n,r,i){const o=t.getWorkflow(),g=le(o==null?void 0:o.steps).get(s.id);if(!g)return!1;const c=s.type!==ie.IMAGE&&(o==null?void 0:o.generationType)!=="image";e.status==="running"&&t.resumeWorkflow(),t.updateStep(g,e.status,e.result,e.error);const m=t.getWorkflow();if(m){const T=L(m);n.current(T);const a=r.current,l=i.current;c&&a&&l&&D.updateWorkflow(a,l,T)}return!0}function je(s,e,t,n,r,i){var f;const o=r.current;if(!o||s.type===ie.IMAGE)return!1;for(const g of o.children){if(!we(g))continue;const c=g;if(c.workflow.generationType==="image")continue;const T=le((f=c.workflow)==null?void 0:f.steps).get(s.id);if(!T)continue;const a=c.workflow.steps.map(p=>p.id!==T?p:{...p,status:e.status,...e.result!==void 0&&{result:e.result},...e.error!==void 0&&{error:e.error}}),l={...c.workflow,steps:a};if(e.status==="running"&&delete l.error,D.updateWorkflow(o,c.id,l),i.current=c.id,n.current(l),t.restoreWorkflow){const p={id:l.id,name:l.name||"",description:"",scenarioType:"direct_generation",generationType:l.generationType,status:e.status==="running"?"running":"failed",steps:a.map(k=>({id:k.id,mcp:k.mcp||"",args:k.args||{},description:k.description||"",status:k.status,result:k.result,error:k.error,duration:k.duration,options:k.options})),createdAt:l.createdAt||Date.now(),metadata:{prompt:l.prompt||"",userInstruction:"",rawInput:"",modelId:"",isModelExplicit:!1,count:l.count||1,selection:{texts:[],images:[],videos:[],graphics:[]}},aiAnalysis:l.aiAnalysis};t.restoreWorkflow(p)}return!0}return!1}function K(s,e,t,n,r){const i=s.task,o=ce(i);return o?!!(Ue(i,o,e,t,n,r)||je(i,o,e,t,n,r)):!1}function Ve(s){const{workflowControl:e,boardRef:t,workZoneIdRef:n}=s,r=w.useRef(s.updateWorkflowMessage);w.useEffect(()=>{r.current=s.updateWorkflowMessage},[s.updateWorkflowMessage]);const i=w.useRef(new Map),o=w.useRef(null),f=w.useRef(0),g=w.useRef(!1);w.useEffect(()=>{const c=a=>{const l=i.current;if(!l.has(a.task.id)&&l.size>=Ne){const p=l.keys().next().value;p&&l.delete(p)}l.set(a.task.id,a)},m=()=>{const a=new Map;for(const[l,p]of i.current.entries())K(p,e,r,t,n)||a.set(l,p);i.current=a,(a.size===0||Date.now()-f.current>Oe)&&(o.current&&(clearInterval(o.current),o.current=null),i.current=new Map)};if(!g.current){g.current=!0;const a=ee.getAllTasks();for(const l of a){const p=ce(l);p&&(p.status==="completed"||p.status==="failed")&&K({task:l},e,r,t,n)}}const T=ee.observeTaskUpdates().subscribe(a=>{if(a.type!=="taskUpdated")return;if(a.task.status===V.PROCESSING&&i.current.has(a.task.id)){c(a),o.current||(f.current=Date.now(),o.current=setInterval(m,oe));return}K(a,e,r,t,n)?i.current.delete(a.task.id):(c(a),o.current||(f.current=Date.now(),o.current=setInterval(m,oe)))});return()=>{T.unsubscribe(),o.current&&(clearInterval(o.current),o.current=null),i.current=new Map}},[e,t,n])}let Z=null;const Ze=new Promise(s=>{Z=s});function L(s,e,t,n){var i;const r=s.metadata||{};return{id:s.id,name:s.name,generationType:s.generationType,prompt:r.prompt||((i=e==null?void 0:e.aiContext)==null?void 0:i.finalPrompt)||"",aiAnalysis:s.aiAnalysis,count:r.count,createdAt:s.createdAt,steps:s.steps.map(o=>({id:o.id,description:o.description,status:o.status,mcp:o.mcp,args:o.args,result:o.result,error:o.error,duration:o.duration,options:o.options})),retryContext:e,postProcessingStatus:t,insertedCount:n}}async function Ge(s,e){const{operation:t,params:n}=e;try{const{insertImageFromUrl:r}=await U(async()=>{const{insertImageFromUrl:c}=await import("./tool-windows-DOIu9TAD.js").then(m=>m.pn);return{insertImageFromUrl:c}},__vite__mapDeps([0]),import.meta.url),{insertVideoFromUrl:i}=await U(async()=>{const{insertVideoFromUrl:c}=await import("./tool-windows-DOIu9TAD.js").then(m=>m.pv);return{insertVideoFromUrl:c}},__vite__mapDeps([0]),import.meta.url),{insertAudioFromUrl:o}=await U(async()=>{const{insertAudioFromUrl:c}=await import("./tool-windows-DOIu9TAD.js").then(m=>m.po);return{insertAudioFromUrl:c}},__vite__mapDeps([0]),import.meta.url),{getSmartInsertionPoint:f}=await U(async()=>{const{getSmartInsertionPoint:c}=await import("./tool-windows-DOIu9TAD.js").then(m=>m.pm);return{getSmartInsertionPoint:c}},__vite__mapDeps([0]),import.meta.url),g=n.position?[n.position.x,n.position.y]:f(s)||[100,100];if(t==="canvas_insert"&&n.items)for(const c of n.items)c.type==="image"&&c.url?await r(s,c.url,g):c.type==="video"&&c.url?await i(s,c.url,g):c.type==="audio"&&c.url&&await o(s,c.url,c,g);else t==="insert_image"&&n.url?await r(s,n.url,g):t==="insert_video"&&n.url?await i(s,n.url,g):t==="insert_audio"&&n.url&&await o(s,n.url,n,g)}catch(r){console.error("[useWorkflowSubmission] Failed to insert to canvas:",r)}}function qe(s){const{boardRef:e,workZoneIdRef:t}=s,n=Fe(),r=ye(),i=w.useRef(r.sendWorkflowMessage),o=w.useRef(r.updateWorkflowMessage);w.useEffect(()=>{i.current=r.sendWorkflowMessage,o.current=r.updateWorkflowMessage},[r.sendWorkflowMessage,r.updateWorkflowMessage]),Ve({workflowControl:n,updateWorkflowMessage:r.updateWorkflowMessage,boardRef:e,workZoneIdRef:t});const f=w.useRef(null),g=w.useRef([]),c=w.useRef(!1),m=w.useRef(null),T=w.useCallback(u=>u!=="image",[]),a=w.useCallback(async()=>{if(!c.current){c.current=!0;try{await N.recoverWorkflows()}catch(u){console.warn("[useWorkflowSubmission] Failed to recover workflows:",u)}finally{Z==null||Z()}}},[]);w.useEffect(()=>{N.init(),N.registerCanvasHandler(async(x,d)=>({success:!0}));const u=N.subscribeToAllEvents(x=>{var d,S,M,b,h,W,v,R,E;if(x.type==="recovered"&&x.workflow){const y=x.workflow,G=y.status==="running"||y.status==="pending",C=y.status==="failed"&&y.updatedAt&&Date.now()-y.updatedAt<300*1e3;if(!G&&!C)return;(d=n.restoreWorkflow)==null||d.call(n,y);const A=te.get(),$={aiContext:{rawInput:((S=y.context)==null?void 0:S.userInput)||"",userInstruction:((M=y.context)==null?void 0:M.userInput)||"",model:{id:((b=y.context)==null?void 0:b.model)||"",type:y.generationType==="video"?"video":y.generationType==="audio"?"audio":"image",isExplicit:!0},defaultModels:{image:A.imageModelName||"gemini-3-pro-image-preview-vip",video:A.videoModelName||"veo3.1",audio:A.audioModelName||"suno_music"},defaultModelRefs:void 0,params:{count:(h=y.metadata)==null?void 0:h.count,size:(W=y.metadata)==null?void 0:W.size,duration:(v=y.metadata)==null?void 0:v.duration},selection:{texts:[],images:[],videos:[],graphics:[]},finalPrompt:((R=y.metadata)==null?void 0:R.prompt)||""},referenceImages:((E=y.context)==null?void 0:E.referenceImages)||[],textModel:A.textModelName},z=L(y,$);o.current(z);const F=e.current,q=t.current;T(y.generationType)&&q&&F&&D.updateWorkflow(F,q,z);const B=N.subscribeToWorkflow(y.id,async Q=>{var P;await((P=m.current)==null?void 0:P.call(m,Q,y,$))});g.current.push(B)}});return g.current.push(u),a(),()=>{g.current.forEach(x=>x.unsubscribe()),g.current=[]}},[]);const l=w.useCallback(async(u,x,d)=>{const S=e.current,M=t.current,b=T(x.generationType);switch(u.type){case"step":{n.updateStep(u.stepId,u.status,u.result,u.error,u.duration);const h=n.getWorkflow();if(h){const W=L(h,d);o.current(W),b&&M&&S&&D.updateWorkflow(S,M,W)}break}case"completed":{const h=n.getWorkflow();let W=!1;h&&h.steps.forEach(R=>{const E=R.result,y=E==null?void 0:E.taskId;y&&(W=!0),(R.status==="running"||R.status==="pending")&&!y&&n.updateStep(R.id,"completed")});const v=n.getWorkflow();if(v){const R=L(v,d);if(o.current(R),b&&M&&S){if(D.updateWorkflow(S,M,R),v.steps.some(y=>y.status==="pending"||y.status==="running"))break;if(!W)setTimeout(()=>{D.removeWorkZone(S,M)},1500);else{const{workflowCompletionService:y}=await U(async()=>{const{workflowCompletionService:C}=await import("./tool-windows-DOIu9TAD.js").then(A=>A.pw);return{workflowCompletionService:C}},__vite__mapDeps([0]),import.meta.url);v.steps.every(C=>{const A=C.result;return A!=null&&A.taskId?y.isPostProcessingCompleted(A.taskId):!0})&&setTimeout(()=>{D.removeWorkZone(S,M)},1500)}}}break}case"failed":{n.abortWorkflow();const h=n.getWorkflow();if(h){const W=L(h,d);o.current(W),b&&M&&S&&D.updateWorkflow(S,M,W)}break}case"steps_added":{const h=u;n.addSteps(h.steps.map(v=>({id:v.id,mcp:v.mcp,args:v.args,description:v.description,status:v.status})));const W=n.getWorkflow();if(W){const v=L(W,d);o.current(v),b&&M&&S&&D.updateWorkflow(S,M,v)}break}case"canvas_insert":{S&&Ge(S,u);break}}},[n,e,t,T]);w.useEffect(()=>{m.current=l},[l]);const p=w.useCallback(async(u,x,d,S)=>{var R,E,y;const M=S||Ce(u,x);n.startWorkflow(M);const b=te.get(),h=b.textModelName,W=d||{aiContext:{rawInput:u.rawInput||u.userInstruction,userInstruction:u.userInstruction,model:{id:u.modelId,type:u.generationType,isExplicit:u.isModelExplicit},modelRef:u.modelRef,defaultModels:{image:((R=u.defaultModels)==null?void 0:R.image)||b.imageModelName||"gemini-3-pro-image-preview-vip",video:((E=u.defaultModels)==null?void 0:E.video)||b.videoModelName||"veo3.1",audio:((y=u.defaultModels)==null?void 0:y.audio)||b.audioModelName||"suno_music"},defaultModelRefs:u.defaultModelRefs,params:{count:u.count,size:u.size,duration:u.duration},selection:u.selection||{texts:[],images:[],videos:[],graphics:[]},finalPrompt:u.prompt},referenceImages:x,textModel:h};f.current=W;const v=L(M,W);return await i.current({context:W.aiContext,workflow:v,textModel:h,autoOpen:!1}),{workflowId:M.id,usedSW:!1}},[n]),k=w.useCallback(async u=>{await N.cancel(u),n.abortWorkflow()},[n]),_=w.useCallback(async(u,x)=>{const d=u.retryContext;if(!d){console.error("[useWorkflowSubmission] No retry context available");return}const S={prompt:u.prompt,userInstruction:d.aiContext.userInstruction,rawInput:d.aiContext.rawInput,modelId:d.aiContext.model.id,modelRef:d.aiContext.modelRef,defaultModels:d.aiContext.defaultModels,defaultModelRefs:d.aiContext.defaultModelRefs,isModelExplicit:d.aiContext.model.isExplicit,generationType:d.aiContext.model.type,count:u.count||1,size:d.aiContext.params.size,duration:d.aiContext.params.duration,scenario:d.aiContext.model.type==="agent"?"agent_flow":"direct_generation",selection:d.aiContext.selection,parseResult:{},hasExtraContent:!1};await p(S,d.referenceImages||[],d)},[p]),I=w.useCallback(()=>f.current,[]);return{submitWorkflow:p,cancelWorkflow:k,retryWorkflow:_,getRetryContext:I}}const st=Object.freeze(Object.defineProperty({__proto__:null,toWorkflowMessageData:L,useWorkflowSubmission:qe,workflowRecoveryPromise:Ze},Symbol.toStringTag,{value:"Module"}));export{tt as W,Je as a,Xe as b,qe as c,et as d,Ce as e,st as f,he as p,Fe as u};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{S as i,U as r,W as d,T as u}from"./tool-windows-DOIu9TAD.js";function n(e){const o=e.prompt||r;if(!e.videoData&&!e.youtubeUrl&&!e.videoCacheUrl)return{success:!1,error:"需要提供 videoData、videoCacheUrl 或 youtubeUrl",type:"error"};const t=d.createTask({prompt:e.taskLabel||"视频分析",model:e.model,modelRef:e.modelRef||null,mimeType:e.mimeType||"video/mp4",youtubeUrl:e.youtubeUrl,videoData:e.videoData,videoCacheUrl:e.videoCacheUrl,videoAnalyzerAction:"analyze",videoAnalyzerPrompt:o,videoAnalyzerSource:e.videoAnalyzerSource,videoAnalyzerSourceLabel:e.videoAnalyzerSourceLabel,videoAnalyzerSourceSnapshot:e.videoAnalyzerSourceSnapshot,autoInsertToCanvas:!1},u.CHAT);return{success:!0,data:{taskId:t.id,prompt:e.taskLabel||"视频分析",model:e.model},type:"text",taskId:t.id,task:t}}const c={name:"video_analyze",description:"分析视频内容,返回结构化的镜头拆解、脚本提取、风格分析等数据",supportedModes:["async","queue"],inputSchema:{type:"object",properties:{videoData:{type:"string",description:"base64 编码的视频数据(不含 data: 前缀),≤20MB"},mimeType:{type:"string",description:"视频 MIME 类型,默认 video/mp4",default:"video/mp4"},youtubeUrl:{type:"string",description:"YouTube 视频 URL"},videoCacheUrl:{type:"string",description:"本地缓存的视频 URL(队列模式)"},prompt:{type:"string",description:"自定义分析 prompt(可选,有内置默认值)"},model:{type:"string",description:"模型 ID,默认使用当前文本模型"}},required:[]},execute:async(e,o)=>(o==null?void 0:o.mode)==="queue"?n(e):i(e)};export{c as v};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{k as u,V as s,n as v,o as h,q as z,t as w,T as k,v as x,u as I,w as _,x as b}from"./tool-windows-DOIu9TAD.js";function y(){const e=z.get();return(e==null?void 0:e.videoModelName)||u()}function T(){const e=new Set;return Object.values(s).forEach(t=>{t.durationOptions.forEach(o=>e.add(o.value))}),Array.from(e).sort((t,o)=>parseInt(t)-parseInt(o))}function V(){const e=new Set;return Object.values(s).forEach(t=>{t.sizeOptions.forEach(o=>e.add(o.value))}),Array.from(e)}async function O(e){const{prompt:t,model:o="veo3",modelRef:n,seconds:i="8",size:a="1280x720",referenceImages:d,params:c}=e,l=x(t);if(l)return l;try{const r=o,m=I("video",r,n||null);if(!m||m.kind!=="video")return{success:!1,error:`未找到可用的视频适配器: ${r}`,type:"error"};const p=i?Number(i):void 0,g=await m.generateVideo(_("video",n||r),{prompt:t,size:a,model:r,modelRef:n||null,duration:Number.isFinite(p)?p:void 0,referenceImages:d,params:c}),f=g.url;return f?{success:!0,data:{url:f,format:g.format||"mp4",prompt:t,model:o,seconds:i,size:a},type:"video"}:{success:!1,error:"API 未返回有效的视频 URL",type:"error"}}catch(r){return console.error("[VideoGenerationTool] Generation failed:",r),b(r,"视频生成失败")}}function S(e){const t=e.model||"veo3",o=s[t]||s.veo3,n=w(e.referenceImages);return{taskType:k.VIDEO,resultType:"video",getDefaultModel:y,logPrefix:"VideoGenerationTool",buildTaskPayload:()=>({prompt:e.prompt,size:e.size||"16x9",duration:parseInt(e.seconds||o.defaultDuration,10),model:t,modelRef:e.modelRef||null,uploadedImages:n&&n.length>0?n:void 0,referenceImages:e.referenceImages&&e.referenceImages.length>0?e.referenceImages:void 0,params:e.params}),buildResultData:()=>({size:e.size||"16x9",duration:parseInt(e.seconds||o.defaultDuration,10)})}}const A={name:"generate_video",description:`生成视频工具。根据用户的文字描述生成视频。
|
|
2
2
|
|
|
3
3
|
使用场景:
|
|
4
4
|
- 用户想要创建、生成视频
|
|
@@ -10,4 +10,4 @@ import{hf as u,lb as s,lB as h,l1 as v,he as z,lC as w,h2 as k,l2 as x,lD as I,l
|
|
|
10
10
|
- 用户想要生成静态图片(使用 generate_image 工具)
|
|
11
11
|
- 用户只是在聊天,没有生成视频的意图
|
|
12
12
|
|
|
13
|
-
当前使用模型:${y()}`,inputSchema:{type:"object",properties:{prompt:{type:"string",description:"视频描述提示词,详细描述想要生成的视频内容、动作、场景、风格等"},model:{type:"string",description:`视频生成模型,默认使用 ${u()}`,default:u()},seconds:{type:"string",description:"视频时长(秒),不同模型支持的时长不同",enum:T(),default:"8"},size:{type:"string",description:"视频尺寸",enum:V(),default:"1280x720"},referenceImages:{type:"array",description:"参考图片 URL 列表,用于图生视频",items:{type:"string"}},params:{type:"object",description:"额外模型参数,Kling 可用字段包括 model_name、klingAction2、mode、cfg_scale、negative_prompt 与 camera_*;其中 cfg_scale 取值 0 到 1,camera_* 取值 -10 到 10 且需为整数",properties:{model_name:{type:"string",enum:["kling-v3","kling-v2-6","kling-v2-1","kling-v1-6","kling-v1-5"]},klingAction2:{type:"string",enum:["text2video","image2video"]},mode:{type:"string",enum:["std","pro"]},cfg_scale:{type:"number",description:"Kling 自由度,取值范围 0 到 1"},negative_prompt:{type:"string"},camera_control_type:{type:"string"},camera_horizontal:{type:"number",description:"Kling 水平运镜,取值范围 -10 到 10,且必须为整数"},camera_vertical:{type:"number",description:"Kling 垂直运镜,取值范围 -10 到 10,且必须为整数"},camera_pan:{type:"number",description:"Kling 水平摇镜,取值范围 -10 到 10,且必须为整数"},camera_tilt:{type:"number",description:"Kling 垂直摇镜,取值范围 -10 到 10,且必须为整数"},camera_roll:{type:"number",description:"Kling 旋转运镜,取值范围 -10 到 10,且必须为整数"},camera_zoom:{type:"number",description:"Kling 变焦,取值范围 -10 到 10,且必须为整数"}}},count:{type:"number",description:"生成数量,1-10 之间,默认为 1",default:1}},required:["prompt"]},supportedModes:["async","queue"],promptGuidance:{whenToUse:"当用户想要生成视频、动画或动态内容时使用。适用于:将图片变成视频、创建短视频、生成动态场景等。关键词:视频、动画、动起来、动态。",parameterGuidance:{prompt:"将用户描述扩展为详细的英文视频提示词,包含:主体动作(walking, flying, spinning)、场景描述、镜头运动(camera pan, zoom in, tracking shot)、氛围(cinematic, dreamy)、时间节奏(slow motion, timelapse)。",model:"默认使用 veo3,支持高质量视频生成。可选其他模型如需特定效果。",seconds:"根据内容复杂度选择:简单动作用 5-8 秒,复杂场景用 8-10 秒。默认 8 秒。",size:"横屏视频用 1280x720 或 1920x1080,竖屏用 720x1280,正方形用 1024x1024。",referenceImages:'当用户提供图片并想让它"动起来"时使用,传入图片 URL 实现图生视频。',count:'用户明确要求批量生成时使用,如 "+3 生成视频" 则 count=3。'},bestPractices:["prompt 使用英文能获得更好的生成效果",'描述具体的动作和运动,如 "a cat walking slowly" 而非 "a cat"','添加镜头运动描述如 "camera slowly pans right"、"zoom in smoothly"','描述氛围和风格如 "cinematic lighting"、"slow motion"、"dreamy atmosphere"','对于图生视频,描述图片中元素如何运动,如 "the waves start to move"',"避免过于复杂的场景变化,每个视频专注一个主要动作"],examples:[{input:"生成一个猫咪走路的视频",args:{prompt:"A fluffy orange cat walking gracefully across a sunny room, soft natural lighting, camera tracking shot following the cat, gentle movements, high quality, cinematic",seconds:"8",size:"1280x720"}},{input:"让这张日落图片动起来",args:{prompt:"Beautiful sunset scene with moving clouds drifting slowly across the sky, sun rays shifting, gentle wind effect on trees, time-lapse style, warm golden hour lighting, peaceful atmosphere",referenceImages:["[图片1]"],seconds:"8"},explanation:"图生视频使用 referenceImages 传递原图,prompt 描述期望的动态效果"},{input:"赛博朋克城市夜景动画",args:{prompt:"Cyberpunk city at night with flying cars moving through neon-lit streets, holographic advertisements flickering, rain falling, camera slowly panning across the skyline, atmospheric fog, cinematic sci-fi mood",seconds:"10",size:"1920x1080"}},{input:"生成一个产品旋转展示视频",args:{prompt:"Product showcase video, sleek modern headphones rotating 360 degrees on a white pedestal, smooth continuous rotation, professional studio lighting, minimal clean background, commercial quality",seconds:"8",size:"1280x720"}}],warnings:["视频生成时间较长(通常 1-3 分钟),请耐心等待","避免描述突然的场景切换或多个不连贯的动作","图生视频时,确保参考图片清晰且主体明确"]},execute:async(e,t)=>{console.log("[VideoGenerationTool] execute called with mode:",t==null?void 0:t.mode);const o=e,n=(t==null?void 0:t.mode)||"async";let i=o.size;if(o.size){const d=o.model||"veo3",
|
|
13
|
+
当前使用模型:${y()}`,inputSchema:{type:"object",properties:{prompt:{type:"string",description:"视频描述提示词,详细描述想要生成的视频内容、动作、场景、风格等"},model:{type:"string",description:`视频生成模型,默认使用 ${u()}`,default:u()},seconds:{type:"string",description:"视频时长(秒),不同模型支持的时长不同",enum:T(),default:"8"},size:{type:"string",description:"视频尺寸",enum:V(),default:"1280x720"},referenceImages:{type:"array",description:"参考图片 URL 列表,用于图生视频",items:{type:"string"}},params:{type:"object",description:"额外模型参数,Kling 可用字段包括 model_name、klingAction2、mode、cfg_scale、negative_prompt 与 camera_*;其中 cfg_scale 取值 0 到 1,camera_* 取值 -10 到 10 且需为整数",properties:{model_name:{type:"string",enum:["kling-v3","kling-v2-6","kling-v2-1","kling-v1-6","kling-v1-5"]},klingAction2:{type:"string",enum:["text2video","image2video"]},mode:{type:"string",enum:["std","pro"]},cfg_scale:{type:"number",description:"Kling 自由度,取值范围 0 到 1"},negative_prompt:{type:"string"},camera_control_type:{type:"string"},camera_horizontal:{type:"number",description:"Kling 水平运镜,取值范围 -10 到 10,且必须为整数"},camera_vertical:{type:"number",description:"Kling 垂直运镜,取值范围 -10 到 10,且必须为整数"},camera_pan:{type:"number",description:"Kling 水平摇镜,取值范围 -10 到 10,且必须为整数"},camera_tilt:{type:"number",description:"Kling 垂直摇镜,取值范围 -10 到 10,且必须为整数"},camera_roll:{type:"number",description:"Kling 旋转运镜,取值范围 -10 到 10,且必须为整数"},camera_zoom:{type:"number",description:"Kling 变焦,取值范围 -10 到 10,且必须为整数"}}},count:{type:"number",description:"生成数量,1-10 之间,默认为 1",default:1}},required:["prompt"]},supportedModes:["async","queue"],promptGuidance:{whenToUse:"当用户想要生成视频、动画或动态内容时使用。适用于:将图片变成视频、创建短视频、生成动态场景等。关键词:视频、动画、动起来、动态。",parameterGuidance:{prompt:"将用户描述扩展为详细的英文视频提示词,包含:主体动作(walking, flying, spinning)、场景描述、镜头运动(camera pan, zoom in, tracking shot)、氛围(cinematic, dreamy)、时间节奏(slow motion, timelapse)。",model:"默认使用 veo3,支持高质量视频生成。可选其他模型如需特定效果。",seconds:"根据内容复杂度选择:简单动作用 5-8 秒,复杂场景用 8-10 秒。默认 8 秒。",size:"横屏视频用 1280x720 或 1920x1080,竖屏用 720x1280,正方形用 1024x1024。",referenceImages:'当用户提供图片并想让它"动起来"时使用,传入图片 URL 实现图生视频。',count:'用户明确要求批量生成时使用,如 "+3 生成视频" 则 count=3。'},bestPractices:["prompt 使用英文能获得更好的生成效果",'描述具体的动作和运动,如 "a cat walking slowly" 而非 "a cat"','添加镜头运动描述如 "camera slowly pans right"、"zoom in smoothly"','描述氛围和风格如 "cinematic lighting"、"slow motion"、"dreamy atmosphere"','对于图生视频,描述图片中元素如何运动,如 "the waves start to move"',"避免过于复杂的场景变化,每个视频专注一个主要动作"],examples:[{input:"生成一个猫咪走路的视频",args:{prompt:"A fluffy orange cat walking gracefully across a sunny room, soft natural lighting, camera tracking shot following the cat, gentle movements, high quality, cinematic",seconds:"8",size:"1280x720"}},{input:"让这张日落图片动起来",args:{prompt:"Beautiful sunset scene with moving clouds drifting slowly across the sky, sun rays shifting, gentle wind effect on trees, time-lapse style, warm golden hour lighting, peaceful atmosphere",referenceImages:["[图片1]"],seconds:"8"},explanation:"图生视频使用 referenceImages 传递原图,prompt 描述期望的动态效果"},{input:"赛博朋克城市夜景动画",args:{prompt:"Cyberpunk city at night with flying cars moving through neon-lit streets, holographic advertisements flickering, rain falling, camera slowly panning across the skyline, atmospheric fog, cinematic sci-fi mood",seconds:"10",size:"1920x1080"}},{input:"生成一个产品旋转展示视频",args:{prompt:"Product showcase video, sleek modern headphones rotating 360 degrees on a white pedestal, smooth continuous rotation, professional studio lighting, minimal clean background, commercial quality",seconds:"8",size:"1280x720"}}],warnings:["视频生成时间较长(通常 1-3 分钟),请耐心等待","避免描述突然的场景切换或多个不连贯的动作","图生视频时,确保参考图片清晰且主体明确"]},execute:async(e,t)=>{console.log("[VideoGenerationTool] execute called with mode:",t==null?void 0:t.mode);const o=e,n=(t==null?void 0:t.mode)||"async";let i=o.size;if(o.size){const d=o.model||"veo3",c=s[d]||s.veo3,l=c.sizeOptions.map(r=>r.value);i=v(o.size,l,c.defaultSize)}const a={...o,size:i};return n==="queue"?h(a,t||{},S(a)):O(a)}};async function E(e,t){return await A.execute(e,{...t,mode:"queue"})}export{E as createVideoTask,y as getCurrentVideoModel,A as videoGenerationTool};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a4 as f,M as u}from"./tool-windows-DOIu9TAD.js";async function h(e){if(!e||!e.children)return 0;let n=0;for(const c of e.children){const r=c.url;if(r&&r.startsWith("blob:")&&r.includes("#merged-video-")){const s=r.indexOf("#merged-video-");if(s===-1)continue;const i=r.substring(s+1),d=i.indexOf("#",1),o=d>0?i.substring(0,d):i;try{const t=await f.getCachedBlob(o);if(t){const l=`${URL.createObjectURL(t)}#${o}`,a=e.children.indexOf(c);u.setNode(e,{url:l},[a]),n++}else console.warn("[VideoRecovery] Cache not found for taskId:",o)}catch(t){console.error("[VideoRecovery] Failed to recover video:",o,t)}}}return n}function x(e){e&&requestAnimationFrame(async()=>{try{await h(e)}catch(n){console.error("[VideoRecovery] Initialization failed:",n)}})}export{x as initVideoRecoveryService,h as recoverExpiredVideoUrls};
|