videobook 0.3.1 → 0.3.2
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/CHANGELOG.md +62 -0
- package/dist/diagnostics.js +9 -3
- package/dist/goal-plan-v3.js +10 -5
- package/dist/jobs/_kie-upload.js +3 -1
- package/dist/jobs/generate-media.js +19 -10
- package/dist/media/catalog.js +5 -5
- package/dist/media/descriptor.js +9 -3
- package/dist/media/listing.js +26 -4
- package/dist/provider-usage.js +24 -9
- package/dist/tools/estimate-cost.js +9 -4
- package/dist/tools/reconcile-project-work.js +3 -3
- package/package.json +15 -15
- package/ui/assets/{alive-captions-CnLK22ED.js → alive-captions-BWk_4aX0.js} +1 -1
- package/ui/assets/{confirm-bodies-BaalBxp1.js → confirm-bodies-CNW9vLsi.js} +1 -1
- package/ui/assets/{fullscreen-DTJQJ6dX.js → fullscreen-ND_H86Ih.js} +1 -1
- package/ui/assets/{goal-ui-CN-kZTEO.js → goal-ui-CCTD4lxi.js} +1 -1
- package/ui/assets/{index-Dp81yChE.js → index-D0ftggO4.js} +2 -2
- package/ui/assets/{inspector-jeyma7HL.js → inspector-BZnbKsEZ.js} +1 -1
- package/ui/assets/{jobs-ui-D6S3LJ4j.js → jobs-ui-BNK0IPSl.js} +1 -1
- package/ui/assets/{music-video-CDqr0X6G.js → music-video-CoOI0cgW.js} +1 -1
- package/ui/assets/{ui-Cqs1-YNg.js → ui-koLWlu0t.js} +1 -1
- package/ui/assets/{vendor-BWf-WCsY.js → vendor-Ca2-b3hB.js} +14 -14
- package/ui/assets/{vendor-flow-DPvi8ynA.js → vendor-flow-C2NYBYCL.js} +1 -1
- package/ui/assets/{vendor-mcp-BSR9acpG.js → vendor-mcp-9gUvOX4H.js} +1 -1
- package/ui/assets/{videobook-b9VODNOA.js → videobook-B8dYNQrG.js} +2 -2
- package/ui/index.html +11 -11
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as ne,a as _,j as Ke}from"./vendor-react-Dj7D1fD4.js";import{n as It,a as Zs,t as Ht,T as ti,b as ue,N as de,d as X,e as an,f as ke,S as Qs,i as ni,g as ea,s as co,h as ta,j as Xe,k as Dn,l as na,m as Ee,o as oa,p as Do,q as Vn,r as ra,u as oi,M as ia,v as ri,w as Fe,x as ii,y as Wt,z as sa,A as aa,B as si,C as Yt,D as ca}from"./vendor-
|
|
1
|
+
import{c as ne,a as _,j as Ke}from"./vendor-react-Dj7D1fD4.js";import{n as It,a as Zs,t as Ht,T as ti,b as ue,N as de,d as X,e as an,f as ke,S as Qs,i as ni,g as ea,s as co,h as ta,j as Xe,k as Dn,l as na,m as Ee,o as oa,p as Do,q as Vn,r as ra,u as oi,M as ia,v as ri,w as Fe,x as ii,y as Wt,z as sa,A as aa,B as si,C as Yt,D as ca}from"./vendor-Ca2-b3hB.js";import{o as te,n as V,a as ae,s as j,_ as Ze,l as ai,b as Te,C as la,S as ua}from"./vendor-mcp-9gUvOX4H.js";import{l as da,u as fa,a as ma}from"./vendor-remotion-CH1HXrlc.js";const ly=["x","instagram","tiktok","youtube","other"],uy=["views","impressions","likes","replies","reposts","quotes","bookmarks","shares","clicks"];function pa(e){return e.toLowerCase().replace(/[^a-z0-9]+/gu,"-").replace(/^-+|-+$/gu,"")||"book"}function ci(e,t,n){return`${pa(e)}/post-${t.replace(/^@/u,"")}-${n.slice(-6)}`}function ga(e){const t=e.trim().replace(/\/+$/u,"");return t?t.startsWith("/")||t.startsWith("~")?"Use a folder inside iCloud Drive › Videobook, like my-book/post-a1.":[...t].some(n=>n.charCodeAt(0)<32||n.charCodeAt(0)===127)?"Use an iCloud folder without control characters.":t.split("/").some(n=>n===".."||n==="."||n==="")?"Use an iCloud folder without empty, . or .. segments.":null:"Choose an iCloud folder."}const ha="9:16",ba="4K",ya="jpg",dy=25,_a="9:16",va="1080p",ka=12,wa="mp4",Sa=!0,fy=60,Ia={resolution:va,aspect_ratio:_a,duration:ka,output_format:wa,generate_audio:Sa},xa={aspect_ratio:ha,resolution:ba,output_format:ya},Aa=3,Ea=2.3,Ca=.3,Ma="th",Ta=["fyp","bkk"],Ra={profileUrl:"https://www.tiktok.com/@jtbkk",includePlatformIcon:!0,includeHandleBorder:!0,handlePaddingX:15,handlePaddingY:12,handleRounding:56,handlePlacement:"center",handleVerticalPercent:10,handleStartSeconds:0,handleEndSeconds:Aa,handleOpacity:.28,qrLeadSeconds:Ea,qrOpacity:.37,fadeSeconds:Ca};function $a(e,t){const n=Number.isFinite(t)?Math.max(0,t):0,o=Math.min(n,Math.max(0,e.handleStartSeconds)),r=Math.min(n,Math.max(o,e.handleEndSeconds)),i=n,s=e.qrLeadSeconds,a=Math.max(0,n-Math.min(n,Math.max(0,s)));return{handleStartSeconds:o,handleEndSeconds:r,qrStartSeconds:a,qrEndSeconds:i}}const my=["en","th"],Na={en:"English",th:"Thai"},Pa={x:280,instagram:2200,tiktok:2200,youtube:5e3,other:2200},li={x:2,instagram:10,tiktok:5,youtube:15,other:8},lo={x:"X",instagram:"Instagram",tiktok:"TikTok",youtube:"YouTube Shorts",other:"Other"},Oa=/^#[\p{L}\p{M}\p{N}_]+$/u;function La(e){return e.trim().replace(/^#+/u,"").replace(/[^\p{L}\p{M}\p{N}_]/gu,"")}function cn(e,t=Number.POSITIVE_INFINITY){const n=new Set,o=[];for(const r of e){const i=La(r),s=i.toLocaleLowerCase();if(!(!i||n.has(s))&&(n.add(s),o.push(i),o.length>=t))break}return o}function Fa(e){const t=e.trim().split(/\s+/u);return t.length>0&&t.every(n=>Oa.test(n))}function Da(e){const n=e.trimEnd().split(`
|
|
2
2
|
`),o=n[n.length-1]??"";return!o.trim()||!Fa(o)?{body:e,tags:[]}:{body:n.slice(0,-1).join(`
|
|
3
3
|
`).trimEnd(),tags:cn(o.trim().split(/\s+/u))}}function Va(e,t){const n=cn(t).map(r=>`#${r}`).join(" "),o=e.trimEnd();return n?o?`${o}
|
|
4
4
|
|
|
@@ -11,7 +11,7 @@ This deletes the asset and destroys its stored content. Files shared with anothe
|
|
|
11
11
|
Clear those references and forget it anyway?`}const Il=[{label:"no people",aliases:["empty","unpopulated","nobody","no one"]},{label:"solo subject",aliases:["one person","single person","solo","individual"]},{label:"two people",aliases:["pair","couple","duo","two subjects"]},{label:"small group",aliases:["group","three people","few people","small gathering"]},{label:"crowd",aliases:["crowded","many people","audience","large group"]},{label:"interviewer",aliases:["questioner"]},{label:"interviewee",aliases:["subject being interviewed","respondent"]},{label:"presenter",aliases:["host"]}],xl=[{label:"interior",aliases:["indoors","inside","indoor"]},{label:"exterior",aliases:["outdoors","outside","outdoor"]},{label:"day",aliases:["daytime","daylight","morning","afternoon"]},{label:"night",aliases:["nighttime","after dark","evening"]},{label:"kitchen",aliases:["galley"]},{label:"street",aliases:["sidewalk","roadside","city street"]},{label:"studio",aliases:["soundstage"]},{label:"office",aliases:["workplace"]},{label:"bedroom",aliases:[]},{label:"living room",aliases:["lounge"]},{label:"restaurant",aliases:["cafe","diner","bar"]},{label:"store",aliases:["shop","market","supermarket"]},{label:"car",aliases:["vehicle interior"]},{label:"beach",aliases:["shore","seaside"]},{label:"park",aliases:["garden"]},{label:"forest",aliases:["woods","woodland"]},{label:"stage",aliases:["venue","concert stage"]},{label:"gym",aliases:["fitness studio"]},{label:"rooftop",aliases:["roof"]}],Al=[{label:"wide shot",aliases:["wide","long shot","full shot","establishing wide"]},{label:"medium shot",aliases:["medium","mid shot","waist up"]},{label:"close-up",aliases:["close up","closeup","tight shot","cu"]},{label:"extreme close-up",aliases:["extreme close up","extreme closeup","macro shot"]},{label:"establishing shot",aliases:["establishing","scene setter"]},{label:"insert",aliases:["insert shot","cutaway","detail shot"]},{label:"product shot",aliases:["product","packshot"]},{label:"static",aliases:["locked off","tripod","still camera","fixed camera"]},{label:"pan",aliases:["panning","whip pan"]},{label:"tilt",aliases:["tilting"]},{label:"handheld",aliases:["hand held","shaky","run and gun"]},{label:"tracking",aliases:["dolly","steadicam","follow shot","tracking shot"]},{label:"interview",aliases:["sit down interview"]},{label:"talking head",aliases:[]},{label:"dialogue",aliases:["conversation","speech","talking"]},{label:"ambience",aliases:["ambient","room tone","atmosphere","background sound"]},{label:"music",aliases:["musical","score","soundtrack"]},{label:"voiceover",aliases:["voice over","narration","narrator"]}],El={people:Il,places:xl,editing:Al,custom:[]},Qo=new Set(["beautiful","stunning","amazing","gorgeous","great","good","nice","cool","epic","dramatic","moody","vibe","vibes","aesthetic","mood","cinematic","masterpiece","high quality","professional","hd","4k","video","footage","clip","content","scene","shot","media","image","photo","picture","frame","camera","misc","other","general","interesting","modern","classic","colorful","bright","dark","atmospheric","emotional","energetic","calm","peaceful","happy","sad"]);function xi(e){return e.normalize("NFKC").toLowerCase().replace(/[_/]+/gu," ").replace(/[^\p{L}\p{N}\s-]+/gu,"").replace(/\s+/gu," ").trim()}const Cl=new Map(Object.entries(El).flatMap(([e,t])=>t.flatMap(n=>[n.label,...n.aliases].map(o=>[`${e}:${xi(o)}`,{facet:e,label:n.label}]))));function Ai(e,t=[]){const n=Zs(e.label),o=Ht(n),r=e.facet?[e.facet]:["people","places","editing"];for(const s of r){const a=Tl(s,n);if(a)return{...a,label:Ht(a.label)===o?n:a.label}}const i=!e.facet&&t.find(s=>Ht(s.label)===o);return{facet:e.facet??(i?i.facet:"custom"),label:n}}function Ml(e){if(Qo.has(e))return!1;const t=e.split(" ");return t.length===0||t.length>2?!1:t.every(n=>n.length>=3&&n.length<=20&&/^[\p{L}-]+$/u.test(n)&&!Qo.has(n)&&!["not","without","never","maybe","possibly"].includes(n))}function Tl(e,t,n={}){const o=xi(t);if(!o||o.length>40)return null;const r=Cl.get(`${e}:${o}`);return r||(n.allowUnlisted&&e==="places"&&Ml(o)?{facet:e,label:o}:null)}const Rl={effective:[],manual:[],automatic:[],dismissed:[],analysis:null,fingerprint:""};function po(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:null}function Re(e){return typeof e=="string"&&e.trim()?e:null}function $l(e){return typeof e=="string"&&ti.includes(e)?e:null}function Kt(e){const t=po(e),n=$l(t?.facet),o=Re(t?.key),r=Re(t?.label);return!t||!n||!o||!r?null:{facet:n,key:o,label:r,origin:t.origin==="automatic"?"automatic":"manual",entityId:Re(t.entity_id??t.entityId)}}function Nl(e){const t=Kt(e);return t?{facet:t.facet,key:t.key,label:t.label}:null}function Nt(e,t){return Array.isArray(e)?e.flatMap(n=>{const o=t(n);return o?[o]:[]}):[]}function Pl(e){const t=po(e),n=Re(t?.source_hash??t?.sourceHash),o=Re(t?.generator),r=Re(t?.extractor_version??t?.extractorVersion);if(!t||!n||!o||!r)return null;const i=Number(t.tag_count??t.tagCount),s=Number(t.analyzed_at??t.analyzedAt);return{sourceHash:n,generator:o,model:Re(t.model),extractorVersion:r,tagCount:Number.isFinite(i)?i:0,analyzedAt:Number.isFinite(s)?s:0,stale:t.stale===!0}}function Ei(e){const t=po(e);return t?{effective:Nt(t.effective,Kt),manual:Nt(t.manual,Kt),automatic:Nt(t.automatic,Kt),dismissed:Nt(t.dismissed,Nl),analysis:Pl(t.analysis),fingerprint:Re(t.fingerprint)??""}:null}function wn(e){const t=new Map(ti.map((n,o)=>[n,o]));return[...e].sort((n,o)=>(t.get(n.facet)??0)-(t.get(o.facet)??0)||n.label.localeCompare(o.label))}function Ci(e,t){return`${e}/${t}`}function Ol(e){return e.trim()?Ht(e):""}function le(e){return Ci(e.facet,e.key)}function Q_(e){return e.origin==="manual"?"Added by you":"From analysis"}function Be(e,t){return e.filter(n=>le(n)!==t)}function er(e,t,n){const o=e??Rl;if(!t.label.trim())return o;t=Ai(t,[...o.effective,...o.dismissed]);const r=Ol(t.label);if(!r)return o;const i=t.facet??"custom",s=Ci(i,r);if(n==="add"){if(o.manual.some(u=>le(u)===s))return o;const l={facet:i,key:r,label:t.label.trim(),origin:"manual",entityId:null};return{...o,dismissed:Be(o.dismissed,s),manual:wn([...o.manual,l]),effective:wn([...Be(o.effective,s),l])}}if(n==="remove"){const l=o.effective.find(m=>le(m)===s);if(!l)return o;const u=[{facet:l.facet,key:l.key,label:l.label}];return{...o,effective:Be(o.effective,s),manual:Be(o.manual,s),dismissed:[...Be(o.dismissed,s),...u]}}if(!o.dismissed.find(l=>le(l)===s))return o;const c=o.automatic.find(l=>le(l)===s);return{...o,dismissed:Be(o.dismissed,s),effective:c?wn([...o.effective,c]):o.effective}}function ev(e,t){const n=le(t);return e.some(r=>le(r)===n)?e.filter(r=>le(r)!==n):[...e,t]}function tv(e){return{facet:e.facet,key:e.key,label:e.label}}function nv(e){return e.length===0?{}:{tags_all:e.map(t=>({facet:t.facet,label:t.label}))}}function ov(e,t){if(e.length!==t.length)return!1;const n=new Set(e.map(le));return t.every(o=>n.has(le(o)))}function Ll(e,t,n=8){const o=new Set(t.map(le));return e.filter(r=>!o.has(le(r))).slice(0,n)}const rv={calls:[]},iv=420,tr=140,nr=400,Fl={chat:"Routing chat",chain:"Running chained actions",list_chat_models:"Loading chat models",list_prompt_history:"Loading prompt history",plan_chat_command:"Planning chat command",record_prompt:"Saving prompt",slash_commands:"Loading commands"},Dl=new Set(["get_notebook","list_chat_models","list_jobs","list_prompt_history","list_workspace_actions","slash_commands"]);function sv(e){return!Dl.has(e)}function av(e){const t=Fl[e];return t||e.split("_").filter(Boolean).map(n=>n[0]?.toUpperCase()+n.slice(1)).join(" ")}function Zt(e,t){const n=e.replace(/\s+/g," ").trim();return n.length<=t?n:`${n.slice(0,t)}… (${n.length} chars)`}function Vl(e){if(typeof e=="string")return Zt(e,tr);if(typeof e=="number"||typeof e=="boolean")return String(e);try{return Zt(JSON.stringify(e)??String(e),tr)}catch{return String(e)}}function cv(e){return Object.entries(e).filter(([,t])=>t!=null&&t!=="").map(([t,n])=>({name:t,value:Vl(n)}))}function lv(e){if(typeof e=="string")return Zt(e,nr);if(Array.isArray(e))return e.length===1?"1 item":`${e.length} items`;if(!e||typeof e!="object")return"";const t=e;for(const n of["message","error","status"])if(typeof t[n]=="string"&&t[n])return Zt(t[n],nr);return""}function jl(e){const t=Math.max(0,e);return t<1e3?`${Math.round(t)}ms`:t<6e4?`${(t/1e3).toFixed(1)}s`:`${Math.floor(t/6e4)}m ${Math.round(t%6e4/1e3)}s`}function uv(e){return e.phase==="running"?"working":e.phase==="failed"?"failed":jl(e.elapsedMs)}function dv(e,t){const n={id:t.id,...t.turnId===void 0?{}:{turnId:t.turnId},tool:t.tool,args:t.args,phase:"running",elapsedMs:0,detail:"",expanded:!1};return{calls:[...e.calls,n].slice(-256)}}function fv(e,t,n){return e.calls.some(o=>o.id===t)?{calls:e.calls.map(o=>o.id===t?{...o,phase:n.phase,elapsedMs:n.elapsedMs,detail:n.detail}:o)}:e}function mv(e,t){return e.calls.some(n=>n.id===t)?{calls:e.calls.map(n=>n.id===t?{...n,expanded:!n.expanded}:n)}:e}function pv(e){return e.calls.filter(t=>t.phase==="running").length}function gv(e){switch(e){case"connecting":return"Opening your voice channel…";case"listening":return"Listening… speak anytime.";case"thinking":return"Transcribing…";case"speaking":return"Waiting for captions…";case"review":return"Review is on screen.";case"error":return"No captions. Voice could not connect.";case"off":return"No captions this session."}}function hv(e,t){const n=new Map(e.map(i=>[ue(i.slot),i])),o=new Map(t.map(i=>[i.artifactId,i])),r=new Map;for(let i=0;i<de;i+=1)for(let s=0;s<X;s+=1){const a=ue({row:i,column:s}),c=n.get(a),l=c?.outputArtifactId?o.get(c.outputArtifactId)??null:null,u=c?.label?.trim()||l?.label?.trim()||null;r.set(a,{token:a,cellId:c?.id??null,label:u===l?.artifactId?null:u,type:l?.type??c?.type??"empty",status:l?.status??(c?.outputArtifactId?"missing":c?.status??(c?"":"empty")),asset:l})}return r}function bv(e){if(e.type==="empty")return"Empty grid square";const t=[e.type.replaceAll("_"," ").toUpperCase()],n=e.asset?.duration;return n&&Number.isFinite(n)&&n>0&&t.push(me(n)),e.status&&e.status!=="ready"&&t.push(e.status.replaceAll("_"," ")),t.join(" · ")}function Mi(e,t=e.length,n=t){if(t!==n)return null;const o=an(e.slice(0,t));if(o===void 0)return null;let r=t;for(;r<e.length&&/[a-z0-9]/iu.test(e[r]);)r+=1;return{start:t-o.length-1,end:r,prefix:o}}function yv(e,t,n=t.length,o=n,r){const i=Mi(t,n,o);return i?[...e.values()].filter(s=>s.token.slice(1).includes(i.prefix)&&(!r||!!(s.asset&&r.has(s.asset.artifactId)))).slice(0,12):[]}function _v(e,t,n=e.length,o=n){const r=Mi(e,n,o);if(!r)return null;const i=`@${ke(t)}`,s=e.slice(r.end),a=!s||/^[\p{L}\p{N}@]/u.test(s)?" ":"";return{value:`${e.slice(0,r.start)}${i}${a}${s}`,caret:r.start+i.length+(a||s.startsWith(" ")?1:0)}}function vv(e,t,n){const o=t&&n?t/n:1.7777777777777777,[r=1,i=1]=e.split(":").map(Number),s=r/i,a=Math.min(1,s/o),c=Math.min(1,o/s);return{ratio:e,x:(1-a)/2,y:(1-c)/2,w:a,h:c}}function kv(e){return e.handler.kind==="tool"&&["list_entities","list_notebooks","asset_history","list_book_actions","search_archive"].includes(e.handler.tool)}function go(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null}function wv(e){const t=go(e);if(!Array.isArray(t?.actions)||!Array.isArray(t.tools))throw new Error("The action catalog could not be loaded. Reconnect and try again.");return e}function Sv(e,t){const n=new Set(e.flatMap(i=>[i.command,...i.aliases]).map(i=>i.toLowerCase())),o=t.filter(i=>i.category!=="project"||!n.has(i.command.toLowerCase())),r=new Set(o.flatMap(i=>[i.command,...i.aliases??[]]).map(i=>i.toLowerCase()));return[...o,...e.filter(i=>!r.has(i.command.toLowerCase())).map(i=>({command:i.command,description:i.description,aliases:i.aliases,workspaceActionId:i.id,category:"action",icon:"Play",size:"default",variant:"default",chevron:"right",params:Object.entries(i.inputSchema.properties??{}).filter(([s])=>s!=="book_id").map(([s,a])=>({name:s,description:a.description??Gl(s),required:i.inputSchema.required?.includes(s)??!1,type:a.type==="number"||a.type==="integer"?"number":a.type==="boolean"?"boolean":"string"}))}))]}function Iv(e,t){return t?[...e,...["apply","cancel"].map(n=>({command:`/${n}`,description:n==="apply"?"Apply the reviewed action":"Cancel the pending action",category:"action",icon:n==="apply"?"Check":"X",size:"default",variant:"default",chevron:"right",params:[]}))]:[...e]}function Gl(e){const t=e.replace(/([a-z])([A-Z])/gu,"$1 $2").replaceAll(/[_-]/gu," ").replace(/\b(?:artifact|asset) (?:id|ref)\b/gu,"media").replace(/\bbook id\b/gu,"project").replace(/\b(notebook|cell|clip|track|entity) id\b/gu,"$1").replace(/\brefs\b/gu,"references").replace(/\bdb\b/gu,"dB");return t.charAt(0).toUpperCase()+t.slice(1)}function Ti(e){const t=e.oneOf??e.anyOf;return t?t.flatMap(n=>{const o=Ti(n);return o.length?o:[n]}):[]}function ql(e,t){if("const"in e)return e.const===t;if(e.enum)return e.enum.includes(t);if(e.type==="null")return t===null;if(e.type==="array")return Array.isArray(t);if(e.type==="object"){const n=go(t);return n?Object.entries(e.properties??{}).every(([o,r])=>!("const"in r)||r.const===n[o]):!1}return e.type==="integer"?Number.isInteger(t):!e.type||typeof t===e.type}function Ul(e,t){const n=Ti(e);if(!n.length)return e;const o=n.find(a=>ql(a,t))??n.find(a=>a.type!=="null")??n[0],{anyOf:r,oneOf:i,...s}=e;return{...s,...o}}function Bn(e,t=!1){if("const"in e)return e.const;if(e.default!==void 0)return structuredClone(e.default);if(!t)return;const n=Ul(e,void 0);if("const"in n)return n.const;if(n.type==="object"){const o=new Set(n.required??[]);return Object.fromEntries(Object.entries(n.properties??{}).map(([r,i])=>[r,Bn(i,o.has(r))]).filter(([,r])=>r!==void 0))}if(n.type==="array")return Array.from({length:n.minItems??0},()=>Bn(n.items??{},!0));if(n.enum?.length===1)return n.enum[0];if(n.type==="boolean")return!1;if(n.type==="null")return null}function xv(e,t){const n=go(Bn(e.inputSchema,!0))??{},o=e.inputSchema.properties??{},r={...n,...e.initialArgs};o._provider&&e.generation&&(r._provider=e.generation.provider);for(const[i,s]of[["book_id",t.bookId],["notebook_id",t.notebookId],["sequence_id",t.sequenceId],["cell_id",t.cellId],["base_revision",t.sequenceRevision],["sequence_revision",t.sequenceRevision],["source_surface","ui"],["actor","videobook-user"]])s&&o[i]&&(r[i]=s);if(e.target.kind==="asset"&&e.target.argument&&t.assetId){const i=t.choices.asset_id?.find(s=>s.value===t.assetId)?.detail;(!e.target.mediaKinds||e.target.mediaKinds.some(s=>s===i))&&(r[e.target.argument]=e.target.multiple?t.assetIds??[t.assetId]:t.assetId)}return e.target.kind==="cell"&&e.target.multiple&&e.target.argument&&t.cellIds?.length&&(r[e.target.argument]=t.cellIds),e.target.kind==="cell"&&!e.target.multiple&&e.target.argument&&t.cellId&&(r[e.target.argument]=t.cellId),o.object_hash&&t.assetId&&t.media?.[t.assetId]?.objectHash&&(r.object_hash=t.media[t.assetId].objectHash),r}function Av(e,t){return e.scope!=="global"&&!t.bookId?"Open or create a project first.":e.scope==="notebook"&&!t.notebookId?"Open a notebook first.":e.scope==="sequence"&&!t.sequenceId?"Open a project with a sequence first.":null}function Ev(e,t){const n=t.trim().toLowerCase().replace(/^\//u,"").split(/\s+/u).filter(Boolean);return e.filter(o=>{const r=[o.title,o.command,o.description,o.group,...o.aliases,...o.keywords].join(" ").toLowerCase();return n.every(i=>r.includes(i))}).sort((o,r)=>{const i=s=>[s.command,...s.aliases].some(a=>a.replace(/^\//u,"").toLowerCase()===n.join(" "));return Number(i(r))-Number(i(o))||o.group.localeCompare(r.group)||o.title.localeCompare(r.title)})}const Pt=new Qs({nodes:{doc:{content:"inline*"},text:{group:"inline"},reference:{inline:!0,group:"inline",atom:!0,selectable:!0,attrs:{token:{}},leafText:e=>String(e.attrs.token),toDOM:e=>["span",{"data-reference":String(e.attrs.token),contenteditable:"false"},String(e.attrs.token)],parseDOM:[{tag:"span[data-reference]",getAttrs:e=>{const t=e.getAttribute("data-reference")??"";return ni(t)?{token:t}:!1}}]}}});function Bl(e,t=!0){const n=[];let o=0;if(t)for(const r of co(e))r.index>o&&n.push(Pt.text(e.slice(o,r.index))),n.push(Pt.nodes.reference.create({token:r.raw})),o=r.end;return o<e.length&&n.push(Pt.text(e.slice(o))),Pt.nodes.doc.create(null,n)}function or(e,t=0,n=e.content.size){return e.textBetween(t,n,"",o=>String(o.attrs.token??""))}function Cv(e,t,n){return{start:or(e,0,Math.min(t,n)).length,end:or(e,0,Math.max(t,n)).length,backward:t>n}}function rr(e,t,n=1){let o=0,r=e.content.size;return e.forEach((i,s)=>{const a=i.isText?i.text.length:String(i.attrs.token??"").length;t>=o&&t<=o+a&&(r=i.isText?s+t-o:t===o||t<o+a&&n<0?s:s+i.nodeSize),o+=a}),Math.max(0,Math.min(e.content.size,r))}function Hl(e,t,n=1){const o=rr(e.doc,t.start,t.start===t.end?n:-1),r=rr(e.doc,t.end,n);return e.setSelection(ea.create(e.doc,t.backward?r:o,t.backward?o:r))}function Mv(e,t,n,o=!0){const r=Bl(t,o),i=e.doc.content.findDiffStart(r.content);if(i!==null){const s=e.doc.content.findDiffEnd(r.content),a=Math.max(0,i-Math.min(s.a,s.b));e.replaceWith(i,s.a+a,r.content.cut(i,s.b+a))}return Hl(e,n)}function Ot(e,t,n,o){const r=e.slice(0,t)+o+e.slice(n),i=t+o.length;return{value:r,selectionStart:i,selectionEnd:i}}function ir(e,t){return e.lastIndexOf(`
|
|
12
12
|
`,Math.max(0,t-1))+1}function sr(e,t){const n=e.indexOf(`
|
|
13
13
|
`,t);return n===-1?e.length:n}function ar(e,t){let n=t;for(;n>0&&/\s/.test(e[n-1]);)n-=1;for(;n>0&&!/\s/.test(e[n-1]);)n-=1;return n}function Wl(e,t){let n=t;for(;n<e.length&&/\s/.test(e[n]);)n+=1;for(;n<e.length&&!/\s/.test(e[n]);)n+=1;return n}function Tv(e){const{value:t,selectionStart:n,selectionEnd:o,key:r,ctrlKey:i,altKey:s,yankText:a}=e,c=r.toLowerCase();if(s&&c==="b"){const l=ar(t,n);return{value:t,selectionStart:l,selectionEnd:l}}if(s&&c==="f"){const l=Wl(t,o);return{value:t,selectionStart:l,selectionEnd:l}}if(!i)return null;if(c==="a"){const l=ir(t,n);return{value:t,selectionStart:l,selectionEnd:l}}if(c==="e"){const l=sr(t,o);return{value:t,selectionStart:l,selectionEnd:l}}if(c==="b"){const l=Math.max(0,n-1);return{value:t,selectionStart:l,selectionEnd:l}}if(c==="f"){const l=Math.min(t.length,o+1);return{value:t,selectionStart:l,selectionEnd:l}}if(c==="y")return Ot(t,n,o,a);if(c==="k"){const l=n===o?Math.min(t.length,sr(t,o)+1):o;return{...Ot(t,n,l,""),killedText:t.slice(n,l)}}if(c==="u"){const l=n===o?ir(t,n):n;return{...Ot(t,l,o,""),killedText:t.slice(l,o)}}if(c==="w"){const l=n===o?ar(t,n):n;return{...Ot(t,l,o,""),killedText:t.slice(l,o)}}return null}const Ri="videobook.elevenlabs-voice",Kl="/speak ";function zl(e){return/^\/speak(\s|$)/.test(e)}function Rv(e,t){return t&&e.some(n=>n.voiceId===t)?t:e[0]?.voiceId??""}function cr(e,t,n){if(e.length===0)return t;const o=e.findIndex(s=>s.voiceId===t),i=((o<0?0:o)+n+e.length)%e.length;return e[i].voiceId}function $v(){return typeof window>"u"?null:window.localStorage.getItem(Ri)}function Nv(e){typeof window>"u"||!e||window.localStorage.setItem(Ri,e)}function Pv(e,t,n){return e.key==="ArrowDown"?{type:"select",voiceId:cr(t,n,1)}:e.key==="ArrowUp"?{type:"select",voiceId:cr(t,n,-1)}:e.key==="Tab"?n?{type:"select",voiceId:n}:{type:"ignore"}:e.ctrlKey&&e.code==="Space"?{type:"toggle"}:e.key==="Escape"?{type:"dismiss"}:{type:"ignore"}}function Ov(e,t){if(!(!zl(e)||!t))return{speakVoiceId:t}}function Lv(e){if(e.command==="/voices")return{kind:"prefill",nextInput:Kl,message:"Choose a voice, then type the speech text."};if(!e.hasNotebook)return{kind:"error",message:"Open a notebook before speaking."};const t=e.text.trim(),n=e.voiceId?.trim()??"";return t?n?{kind:"generate",text:t,voiceId:n}:{kind:"error",message:"Select a voice before speaking."}:{kind:"error",message:"Type the text to speak after /speak."}}function Fv(e,t){const n=e.trim().toLowerCase();return t.some(o=>[o.label,...o.aliases??[]].some(r=>r.toLowerCase()===n))}function Dv(e,t,n=Number.POSITIVE_INFINITY){const o=t.toLowerCase(),r=e.filter(s=>[s.command,...s.aliases??[],s.description??""].join(" ").toLowerCase().includes(o)).sort((s,a)=>{const c=l=>[l.command,...l.aliases??[]].some(u=>u.slice(1).toLowerCase()===o);return Number(c(a))-Number(c(s))});if(o)return r.slice(0,n);const i=r.find(s=>s.command==="/download");return i?[i,...r.filter(s=>s!==i)].slice(0,n):r.slice(0,n)}function Vv(e){const t=e.match(/^\s*\/apply(?:\s+([\s\S]*?))?\s*$/iu);return t?{promptOverride:(t[1]?.trim()??"")||null}:null}function jv(e,t){const n=e.nextInput??(e.ok?void 0:t);return n===void 0?null:{value:n,select:e.selectInput??!e.ok}}function Gv(e,t){return t.ok?e.trim().toLowerCase()==="/cancel"?{status:"cancelled",message:t.message}:t.nextInput?.startsWith("/apply")?{status:"review",message:t.message}:{status:/queued|started|running|processing/i.test(t.message)?"queued":"completed",message:t.message}:{status:"review",message:t.message}}const zt="videobook.composer-drafts.v1",Xl=50,$i=1e6;function Ni(e){const t=[],n=new Set;let o=0;for(const r of[...e].reverse()){if(!Array.isArray(r)||r.length!==2)continue;const[i,s]=r;if(!(typeof i!="string"||!i.startsWith("chat:")||i.length<=5||i.length>128||n.has(i))&&(n.add(i),!(typeof s!="string"||!s||o+s.length>$i)&&(t.push([i,s]),o+=s.length,t.length===Xl)))break}return t.reverse()}function qv(){if(typeof window>"u")return new Map;try{const e=window.sessionStorage.getItem(zt);if(!e||e.length>$i*6+1e4)return new Map;const t=JSON.parse(e);return new Map(Array.isArray(t)?Ni(t):[])}catch{return new Map}}function Uv(e,t,n){if(typeof window>"u")return;const o=new Map(e);o.delete(t),o.set(t,n);const r=Ni([...o]);try{r.length===0?window.sessionStorage.removeItem(zt):window.sessionStorage.setItem(zt,JSON.stringify(r))}catch{try{window.sessionStorage.removeItem(zt)}catch{return}}}const lr=new WeakMap,dn='.command-composer [aria-label="Videobook command input"]',Pi='input:not([type="file"]), textarea, select, [contenteditable="true"], video[controls], audio[controls]',Yl='dialog[open], :popover-open, [aria-modal="true"], [role="menu"], details.canvas-add-menu[open]';function nt(e){const t=lr.get(e);if(t)return t;const n={epoch:0,scope:"",enabled:!1,composerOwnedFocus:!1,modality:"initial",pending:null,frame:null};return lr.set(e,n),n}function Jl(e,t){const n=t.pending;if(!n)return;const o=n.resolve();if(!(!t.enabled&&(!(o instanceof HTMLElement)||o.closest(".command-composer")))&&(t.pending=null,!(n.epoch!==t.epoch||n.scope!==t.scope)&&!(!o||e.visibilityState==="hidden"))){if(o instanceof HTMLElement){if(!o.isConnected||o.matches(':disabled, [aria-disabled="true"]')||o.closest("[inert], [hidden]"))return;const r=[...e.querySelectorAll(Yl)].at(-1);if(r&&!r.contains(o))return;const i=e.activeElement;if(i&&i!==o&&i.matches(Pi)&&!i.closest("[hidden], [inert]")||r&&i instanceof Element&&r.contains(i)&&!i.closest(".command-composer")&&i!==o)return}o.focus({preventScroll:!0}),n.afterFocus?.()}}function ho(e,t){t.frame!==null&&e.defaultView?.cancelAnimationFrame(t.frame),t.frame=e.defaultView?.requestAnimationFrame(()=>{t.frame=null,Jl(e,t)})??null}function Hn(e,t){t.pending={epoch:t.epoch,scope:t.scope,resolve:()=>e.querySelector(dn)},ho(e,t)}function fn(e=()=>document.querySelector(dn),t){const n=document,o=nt(n),r={epoch:o.epoch,scope:o.scope,resolve:e,afterFocus:t};return()=>{o.epoch!==r.epoch||o.scope!==r.scope||(o.pending=r,ho(n,o))}}function Bv(){return nt(document).modality==="pointer"?fn():()=>{}}function Hv(e){const t=nt(document).modality==="pointer",n=!!e?.closest(".command-composer");return fn(()=>{const o=document.querySelector(dn);return!(t||n||e===document.body||!e?.isConnected)||!o||o.closest("[hidden]")?e:o.matches('[aria-disabled="true"]')?o.closest(".command-composer")?.querySelector('button[aria-label="Open actions"]:not(:disabled)')??null:o})}function Wv(e,t){const n=ne.c(5);let o;n[0]===Symbol.for("react.memo_cache_sentinel")?(o=[],n[0]=o):o=n[0],_.useLayoutEffect(Zl,o);let r,i;n[1]!==t||n[2]!==e?(r=()=>{const s=nt(document),a=s.scope!==e,c=!s.enabled&&t;if(s.scope=e,s.enabled=t,a&&(s.pending=null),!!t){if(s.pending){ho(document,s);return}if(a||c){if(c&&s.composerOwnedFocus&&s.modality!=="touch"&&document.activeElement===document.body){Hn(document,s);return}s.modality==="initial"&&document.activeElement!==document.body||s.modality!=="initial"&&!(a&&s.modality==="pointer")||window.matchMedia("(pointer: fine)").matches&&Hn(document,s)}}},i=[t,e],n[1]=t,n[2]=e,n[3]=r,n[4]=i):(r=n[3],i=n[4]),_.useLayoutEffect(r,i)}function Zl(){const e=nt(document),t=()=>{e.epoch=e.epoch+1,e.pending=null},n=s=>{t(),e.modality=s.pointerType==="touch"?"touch":"pointer"},o=()=>{t(),e.modality="keyboard"},r=s=>{const a=s.target;e.composerOwnedFocus=a instanceof Element&&a.matches(dn)},i=s=>{if(s.detail===0||e.modality!=="pointer")return;const a=s.target;!(a instanceof Element)||a.closest(Pi)||a.closest("[data-composer-focus]")?.getAttribute("data-composer-focus")==="return"&&Hn(document,e)};return document.addEventListener("pointerdown",n,!0),document.addEventListener("keydown",o,!0),document.addEventListener("focusin",r,!0),document.addEventListener("click",i,!0),document.defaultView?.addEventListener("blur",t),()=>{t(),document.removeEventListener("pointerdown",n,!0),document.removeEventListener("keydown",o,!0),document.removeEventListener("focusin",r,!0),document.removeEventListener("click",i,!0),document.defaultView?.removeEventListener("blur",t),e.frame!==null&&document.defaultView?.cancelAnimationFrame(e.frame),e.frame=null}}function Ql(){const e=nt(document);e.epoch+=1,e.pending=null}function Kv(e){Ql();const t=e?.getAttribute("aria-label");if(!!t?.includes("fullscreen")){if(e?.isConnected){e.focus();return}t&&document.querySelector(`[aria-label="${CSS.escape(t)}"]`)?.focus();return}if(e?.isConnected){e.focus();return}document.querySelector('[aria-label="Videobook command input"]')?.focus()}function zv(e,t=n=>window.requestAnimationFrame(n)){if(typeof document>"u"){t(()=>e()?.focus({preventScroll:!0}));return}fn(e)()}function eu(e){const t=h(e),o=(Array.isArray(t?.content)?t.content:[]).map(h).find(r=>r?.type==="text");return typeof o?.text=="string"?o.text:null}function Xv(e){const t=eu(e);let n=e;if(t)try{n=JSON.parse(t)}catch{return{values:[],offset:0,hasMore:!1}}const o=h(n),r=Array.isArray(o?.entries)?o.entries:[],i=h(o?.page);return{values:r.flatMap(s=>{const a=h(s);return typeof a?.prompt=="string"?[a.prompt]:[]}),offset:typeof i?.offset=="number"?i.offset:0,hasMore:i?.has_more===!0}}function Yv(e){if(e.values.length===0)return null;let t=e.cursor,n=e.draft;if(t===-1){if(e.direction===1)return null;n=e.current,t=e.values.length-1}else if(t+=e.direction,t<0&&(t=0),t>=e.values.length)return{cursor:-1,draft:n,value:n};return{cursor:t,draft:n,value:e.values[t]??e.current}}const tu=/page is hidden|paused for media playback|You are offline/i;function nu(e,t){return t?e==="connecting"||e==="thinking"||e==="listening"||e==="speaking":!1}function ou(e){const t=e.voicePhase;return e.sending?{kind:"sending",label:"Sending",busy:!0}:t==="error"?{kind:"error",label:"Connection error",busy:!1}:t==="review"?{kind:"review",label:"Review on screen",busy:!1}:e.retrying?{kind:"retrying",label:"Retrying reply",busy:!0}:e.mcpRunning>0||nu(t,e.pendingReview)?{kind:"preparing",label:"Preparing an action",busy:!0}:t==="connecting"?/allow microphone/i.test(e.voiceMessage??"")?{kind:"permission",label:"Allow microphone access",busy:!0}:{kind:"connecting",label:"Connecting voice",busy:!0}:t==="thinking"?{kind:"waiting",label:"Waiting for reply",busy:!0}:t==="speaking"?{kind:"speaking",label:"Speaking",busy:!1}:t==="listening"?{kind:"listening",label:"Listening",busy:!1}:t==="off"&&tu.test(e.voiceMessage??"")?{kind:"paused",label:"Voice paused. Start voice to resume.",busy:!1}:{kind:"idle",label:t==="off"?"Offline":"",busy:!1}}const ru=new Set(["idle","listening","review"]);function iu(e){return!ru.has(e.kind)&&e.label!==""}function Jv(e){if(!e)return null;const t=ou({sending:!1,mcpRunning:0,voicePhase:e.phase,voiceMessage:e.message,retrying:e.phase!=="off"&&e.retrying,pendingReview:e.pendingReview}),n=iu(t)&&t.kind!=="connecting"&&t.kind!=="permission",o=n?t.kind==="error"&&e.message||t.label:null,r=e.phase==="off"||e.phase==="error"?null:e.fallbackReason??null;return!o&&!r&&!e.playbackBlocked?null:{message:o,busy:n&&t.busy,error:t.kind==="error",fallbackReason:r,playbackBlocked:e.playbackBlocked}}const Oi=e=>new Audio(e);function su(e=Oi){let t=null,n=null;const o=new Set,r=()=>{for(const a of o)a(n)},i=()=>{t?.pause(),t=null,n=null,r()};return{get playingVoiceId(){return n},toggle:(a,c)=>{if(!c)return;if(n===a){i();return}t?.pause();const l=e(c);t=l,n=a,r(),l.play().catch(()=>{t===l&&i()}),l.onended=()=>{t===l&&i()}},stop:i,subscribe(a){return o.add(a),()=>{o.delete(a)}},dispose(){t?.pause(),t=null,n=null,o.clear()}}}function Zv(e){const t=ne.c(13),n=Oi;let o;t[0]!==n?(o=()=>su(n),t[0]=n,t[1]=o):o=t[1];const[r]=_.useState(o),[i,s]=_.useState(null);let a,c;t[2]!==r?(a=()=>{const p=r.subscribe(s);return()=>{p(),r.dispose()}},c=[r],t[2]=r,t[3]=a,t[4]=c):(a=t[3],c=t[4]),_.useEffect(a,c);let l;t[5]!==r?(l=(p,g)=>{r.toggle(p,g)},t[5]=r,t[6]=l):l=t[6];const u=l;let m;t[7]!==r?(m=()=>{r.stop()},t[7]=r,t[8]=m):m=t[8];const f=m;let d;return t[9]!==i||t[10]!==f||t[11]!==u?(d={playingVoiceId:i,toggle:u,stop:f},t[9]=i,t[10]=f,t[11]=u,t[12]=d):d=t[12],d}const au=["auto","openai","xai"],Li={auto:"Auto",openai:"OpenAI",xai:"xAI"},cu={auto:"Tries OpenAI, then xAI if it cannot connect",openai:null,xai:null};function Qv(e){return Li[e]}function lu(e){return e.modelSelectable?e.chatModels.map((t,n)=>({id:`model:${t.id}`,position:n,label:t.label,detail:t.id,note:t.description,checked:t.id===e.selectedModel,choice:{kind:"model",model:t.id}})):[]}function uu(e,t){const n=e.voiceMode;return n?au.map((o,r)=>({id:`speech:${o}`,position:t+r,label:Li[o],detail:null,note:cu[o],checked:o===n,choice:{kind:"speech",mode:o}})):[]}function ek(e){const t=[],n=lu(e);n.length>0&&t.push({id:"model",label:"Chat model",items:n});const o=uu(e,n.length);return o.length>0&&t.push({id:"speech",label:"Speech",items:o}),t}function tk(e){return e.flatMap(t=>t.items)}function nk(e){const t=e.findIndex(n=>n.checked);return t===-1?0:t}function ok(e,t,n){return e.length===0?null:n==="ArrowDown"?(t+1)%e.length:n==="ArrowUp"?(t-1+e.length)%e.length:n==="Home"?0:n==="End"?e.length-1:null}const rk="Collapse chat";function ik(e){return e==="selection"||e==="action"||e==="expand"||e==="reopen"}function sk(e,t){if(!e||!t||e.id!==t.id)return!1;const n=new Set(e.cells.map(o=>o.id));return t.cells.some(o=>!n.has(o.id))}function ak(e){return e}function ck(e){e.stopVoice?.(),e.pauseMedia?.(),e.setOpen(!1)}function lk(e){if(e)for(const t of e.querySelectorAll("video, audio"))t instanceof HTMLMediaElement&&t.pause()}function uk(e){return e==="applied"||e==="timeline"?"media":"music"}function dk(e){return e.dockOpen&&e.panelHasHeader&&!e.reviewPriority}function fk(e){return e.musicSession?!1:e.cellInspector}const O={originX:0,originY:0,squareSize:240,gap:24,columnPitch:264,rowPitch:264,columnCount:X,maximumRowCount:de,minimumRowCount:3,trailingRowCount:1,detailZoomFloor:.5};function Fi(e){return{row:Math.round(e.row),column:Math.round(e.column)}}function Ve(e){const t=Fi(e);return{row:Math.min(de-1,Math.max(0,t.row)),column:Math.min(X-1,Math.max(0,t.column))}}function ve(e){return`${e.row}:${e.column}`}function du(e){return Ve({row:Math.round((e.y-O.originY)/O.rowPitch),column:Math.round((e.x-O.originX)/O.columnPitch)})}function Qe(e){const t=Ve(e);return{x:O.originX+t.column*O.columnPitch,y:O.originY+t.row*O.rowPitch}}function mk(e,t,n){const o=e.find(i=>i.id===t),r=Ve(o?.data.kind==="timeline"?{...n,column:0}:n);return e.map(i=>i.id===t?{...i,position:Qe(r)}:i)}function fu(e,t,n){const o=e.find(c=>c.id===t);if(!o)return[...e];const r=Ve(o.data.kind==="timeline"?{...n,column:0}:n),i=o.data.slot,s=new Set(Ee({type:String(o.data.kind),slot:r}).map(ve)),a=e.find(c=>c.id!==t&&Ee({type:String(c.data.kind),slot:c.data.slot}).some(l=>s.has(ve(l))));return a&&(o.data.kind==="timeline"||a.data.kind==="timeline")?e.map(c=>c.id===t?{...c,position:Qe(i)}:c):e.map(c=>{const l=c.id===t?r:c.id===a?.id?i:null;return l?{...c,position:Qe(l),data:{...c.data,slot:l}}:c})}function pk(e,t,n,o){const r=new Set(n);r.add(t);const i=e.filter(d=>r.has(d.id));if(i.length<=1)return fu(e,t,o);const s=i.find(d=>d.id===t);if(!s)return[...e];const a=Fi(o),c=a.row-s.data.slot.row,l=a.column-s.data.slot.column,u=new Map(i.map(d=>{const p={row:d.data.slot.row+c,column:d.data.slot.column+l};return[d.id,p]})),m=new Set(i.flatMap(d=>Ee({type:String(d.data.kind),slot:u.get(d.id)})).map(ve));return[...u.values()].some(d=>!oa(d))||i.some(d=>d.data.kind==="timeline"&&l!==0)||e.some(d=>!r.has(d.id)&&Ee({type:String(d.data.kind),slot:d.data.slot}).some(p=>m.has(ve(p))))?e.map(d=>r.has(d.id)?{...d,position:Qe(d.data.slot)}:d):e.map(d=>{const p=u.get(d.id);return p?{...d,position:Qe(p),data:{...d.data,slot:p}}:d})}function gk(e,t){const n=new Map(e.map(o=>[o.id,ve(o.data.slot)]));return t.filter(o=>n.get(o.id)!==ve(o.data.slot))}const mu=new Set(["image","generate_image","character"]);function pu(e){return mu.has(e)}function bo(e){return e?Ve(e):null}const gu=new Set(["generate_image","generate_audio","extract_audio"]);function yo(e,t=[],n=null){const o=Xe(e);if(t.length>0){const s=Math.max(...t.map(l=>l.row))+1,c=t.every(l=>l.row===0)?0:t[0].column;return Do(s,c,o)}const r=bo(n);if(r)return Vn(r,o);let i=-1;for(const s of e)pu(s.type)&&s.slot.row>i&&(i=s.slot.row);return Do(i+1,0,o)}function mn(e,t=[],n=null){const o=Xe(e);if(t.length===0){const a=bo(n);return Dn(a??{row:0,column:0},o)}const r=Math.max(...t.map(a=>a.column)),s={row:Math.min(...t.map(a=>a.row)),column:Math.min(r+1,X-1)};return Dn(s,o)}function hk(e,t,n=null){if(e==="timeline")return ta(Xe(t));if(e==="generate_video")return yo(t,[],n);if(gu.has(e))return mn(t,[],n);const o=bo(n);return o?Dn(o,Xe(t)):na(Xe(t))}function pn(e){return Number.isFinite(e)&&e>0?e:1}function bk(e){return 1/Math.max(pn(e),O.detailZoomFloor)}function hu(e,t=0){return!Number.isFinite(e)||e<=0?1:Math.max(Number.isFinite(t)?t:0,e/Di())}function Di(){return O.originX*2+X*O.squareSize+(X-1)*O.gap}function bu(e,t){if(!Number.isFinite(e)||e<=0)return O.minimumRowCount;const n=e/pn(t);return Math.max(O.minimumRowCount,Math.ceil((n-O.originY*2+O.gap)/O.rowPitch))}function yk(e,t){const n=pn(t);return{width:e.width*n,height:e.height*n}}function _k(e,t,n=0){return{x:0,y:Number.isFinite(n)?n:0,zoom:pn(t)}}function vk(e,t){return du(e)}function kk(e,t){const n=e.x-O.originX,o=e.y-O.originY;if(n<0||o<0)return null;const r=Math.floor(n/O.columnPitch),i=Math.floor(o/O.rowPitch);if(r<0||r>=t.columnCount||i<0||i>=t.rowCount)return null;const s=t.minColumn+r;return s>t.maxColumn||n-r*O.columnPitch>=O.squareSize||o-i*O.rowPitch>=O.squareSize?null:{row:i,column:s}}function wk(e,t={}){const n=t.preview?[...e,Ve(t.preview)]:e,o=Math.max(-1,...n.map(a=>Ve(a).row)),r=Math.min(de,Math.max(O.minimumRowCount,bu(t.viewportHeight??0,t.zoom??1),o+2)),i=Di(),s=O.originY*2+r*O.squareSize+Math.max(0,r-1)*O.gap;return{rowCount:r,columnCount:X,minColumn:0,maxColumn:X-1,centerX:i/2,width:i,height:s}}const Vi="post_to_x";function Ge(e){return e?.inputs?.sourceOperation===Vi}function yu(){return"X · POSTED"}function _u(e){const t=Date.parse(e);return Number.isFinite(t)?new Date(t).toISOString().replace("T"," ").replace(/\.\d{3}Z$/," UTC"):e}function vu(e){const t=h(e);if(!t)return null;const n=W(t.tweetId??t.tweet_id),o=W(t.tweetUrl??t.tweet_url);return!n||!o?null:{tweetId:n,tweetUrl:o}}function ku(e){const t=h(e);if(!t)return null;const n=typeof t.replyNumber=="number"?t.replyNumber:typeof t.reply_number=="number"?t.reply_number:null,o=W(t.message);return n===null||!o?null:{replyNumber:n,message:o}}function Sk(e){if(e?.sourceOperation!==Vi)return null;const t=W(e.tweetId??e.tweet_id),n=W(e.tweetUrl??e.tweet_url),o=W(e.postedAt??e.posted_at);if(!t||!n||!o)return null;const r=Array.isArray(e.replies)?e.replies.flatMap(s=>{const a=vu(s);return a?[a]:[]}):[],i=e.status==="partially_posted"?"partially_posted":"posted";return{badge:"Posted to X",tweetId:t,tweetUrl:n,postedAt:o,postedAtLabel:_u(o),replyCount:r.length,replyLabel:r.length===1?"1 reply":`${r.length} replies`,replies:r,status:i,followupError:ku(e.followupError??e.followup_error)}}const wu={run_notebook:"Run notebook",semantic_index:"Semantic index",extract_waveform:"Extract waveform",extract_video_poster:"Create video poster",assess_video_proxy:"Check video proxy",backfill_media_duration:"Measure media duration",extract_audio:"Extract audio",transcribe:"Transcribe"},Su={attention:"Needs attention",running:"Running",queued:"Queued",finished:"Finished"},Iu=["attention","running","queued","finished"];function _o(e){const t=wu[e];if(t)return t;const n=e.replace(/[_-]+/g," ").trim();return n.length===0?e:n.charAt(0).toUpperCase()+n.slice(1)}function ur(e){const t=Math.max(0,e);if(t<1e4)return`${(t/1e3).toFixed(1)}s`;const n=Math.round(t/1e3);if(n<60)return`${n}s`;const o=Math.floor(n/60),r=n%60;return o<60?`${o}m ${String(r).padStart(2,"0")}s`:`${Math.floor(o/60)}h ${String(o%60).padStart(2,"0")}m`}function vo(e){return e.slice(0,8)}function xu(e){switch(e){case"queued":return"queued";case"running":case"completing":return"running";case"failed":return"failed";case"aborted":return"cancelled";default:return"done"}}function Au(e,t){switch(e){case"awaiting-output":return t?"review":"running";case"failed":return"failed";case"queued":return"queued";case"omitted":return"omitted";default:return"done"}}function ji(e){switch(e){case"review":case"failed":return"attention";case"running":return"running";case"queued":return"queued";default:return"finished"}}function Gi(e){return e.toUpperCase()}function qi(e){return e?{tag:ue(e.slot),label:e.label??e.prompt??null}:{tag:null,label:null}}function Eu(e,t){if(!e.artifactId)return{tag:null,label:null};const n=t.find(o=>!Ge(o)&&o.outputArtifactId===e.artifactId);return n?qi(n):{tag:null,label:`artifact ${vo(e.artifactId)}`}}function dr(e,t){const n=e?.[t];return typeof n=="string"&&n.trim().length>0?n:null}function Cu(e){const t=[dr(e.payload,"provider"),dr(e.payload,"model")].filter(n=>n!==null);return t.length>0?t.join(" · "):null}function Mu(e){return e==="queued"||e==="running"||e==="completing"?["cancel"]:e==="failed"||e==="aborted"?["retry"]:[]}function Tu(e,t){const n=e.startedAt===null?null:ur((e.finishedAt??t)-e.startedAt);switch(e.state){case"queued":return{summary:"Waiting for a worker",note:`waiting ${ur(t-e.enqueuedAt)}`,duration:null,live:!1};case"running":return{summary:`${_o(e.type)} in progress`,note:n?`${n} elapsed`:null,duration:null,live:!0};case"completing":return{summary:"Finishing up",note:n?`${n} elapsed`:null,duration:null,live:!0};case"failed":return{summary:e.error?.message??"Failed without an error message",note:null,duration:n,live:!1};case"aborted":return{summary:e.error?.message??"Cancelled",note:"nothing was written",duration:n,live:!1};default:return{summary:"Completed",note:null,duration:n,live:!1}}}function Ru(e){const t=e.error?.code??null;return t&&t!=="Error"?t:null}function $u(e,t,n){const o=xu(e.state),r=o==="done"&&e.state!=="done"?e.state.toUpperCase():Gi(o),i=e.error?[`${e.error.code?`${e.error.code} · `:""}${e.error.message}`,`operation ${e.operationId} · enqueued ${new Date(e.enqueuedAt).toLocaleString()}`].join(`
|
|
14
|
-
`):null;return{key:`job:${e.id}`,providerTask:e.providerTask,source:{kind:"job",jobId:e.id},tone:o,band:ji(o),statusLabel:r,title:_o(e.type),detail:Cu(e),target:Eu(e,t),...Tu(e,n),errorCode:Ru(e),errorDetail:i,attempt:`${e.attempts}/${e.maxAttempts}`,timestamp:e.enqueuedAt,sortAt:e.finishedAt??e.startedAt??e.enqueuedAt,actions:Mu(e.state)}}function Ui(e){const t=e.plan.stages.find(n=>n.kind==="queued"&&n.jobType==="generation");return t?.kind==="queued"?t:null}function Nu(e,t){const n=[];return t&&e.status!=="continued"&&e.status!=="omitted"&&n.push("continue"),(e.status==="failed"||e.status==="awaiting-output"&&t)&&n.push("retry","switch","omit"),n}function Pu(e){const t=Ui(e),n=[];return t?.estimatedCostUsd!==void 0&&n.push(`est. $${t.estimatedCostUsd.toFixed(2)}`),e.outputArtifactId&&n.push(`output ${vo(e.outputArtifactId)}`),n.length>0?n.join(" · "):null}function Ou(e,t){const n=Pu(e);switch(e.status){case"awaiting-output":return{summary:t?"Output ready — review before inserting":"Waiting for generated media",note:n};case"failed":return{summary:e.error??"Generation failed",note:n};case"queued":return{summary:"Generation queued",note:n};case"continued":return{summary:"Generation complete",note:n};case"omitted":return{summary:"Left out of the sequence",note:e.outputArtifactId?`output kept as ${vo(e.outputArtifactId)}`:null};default:return{summary:"Generation finished",note:n}}}function Sn(e){const t=Date.parse(e);return Number.isFinite(t)?t:0}function Lu(e,t,n){return t?.type.startsWith("generate_")?_o(t.type):n?"Generate":e.plan.summary}function Fu(e,t,n){const o=n.some(c=>c.artifactId===e.outputArtifactId&&c.status==="ready"&&!!c.mediaUrl),r=Au(e.status,o),i=Ui(e),s=t.find(c=>c.id===e.cellId),a=i?[i.provider,i.model??i.tool].filter(c=>!!c).join(" · "):null;return{key:`plan:${e.planId}`,source:{kind:"plan",planId:e.planId},tone:r,band:ji(r),statusLabel:Gi(r),title:Lu(e,s,i),detail:a&&a.length>0?a:null,target:qi(s),...Ou(e,o),errorCode:null,errorDetail:e.error,attempt:"1/1",timestamp:Sn(e.createdAt),sortAt:Sn(e.updatedAt)||Sn(e.createdAt),duration:null,live:r==="running",actions:Nu(e,o)}}function Ik({jobs:e,plans:t,cells:n,assets:o=[],now:r}){return[...t.map(i=>Fu(i,n,o)),...e.map(i=>$u(i,n,r))]}function Du(e){return e.map((t,n)=>({...t,summary:n===0?"Next up":`${n} ahead in queue`}))}function Vu(e,t){switch(e){case"running":return[...t].sort((n,o)=>n.sortAt-o.sortAt);case"queued":return Du([...t].sort((n,o)=>n.timestamp-o.timestamp));default:return[...t].sort((n,o)=>o.sortAt-n.sortAt)}}function xk(e){return Iu.map(t=>({id:t,label:Su[t],rows:Vu(t,e.filter(n=>n.band===t))}))}function Ak(e){const t=i=>e.find(s=>s.id===i)?.rows.length??0,n=t("attention"),o=t("running")+t("queued"),r=t("finished");return{total:n+o+r,attention:n,active:o,finished:r}}function Ek(e,t){if(t==="all")return e.filter(o=>o.rows.length>0);const n=t==="attention"?["attention"]:t==="active"?["running","queued"]:["finished"];return e.filter(o=>n.includes(o.id)&&o.rows.length>0)}const Ae=[O.gap*.25,O.gap*.5,O.gap*.75],ju=[.25,.5,.75],Bi={sourceSide:"bottom",sourcePortIndex:1,targetSide:"top",targetPortIndex:1,sourceBusOffset:Ae[1],targetBusOffset:Ae[1],riverOffset:Ae[1],riverSide:"right",directRowGutter:!1,targetPrimary:!0};function Ct(e,t){return e.sourceRow-t.sourceRow||e.sourceColumn-t.sourceColumn||e.targetRow-t.targetRow||e.targetColumn-t.targetColumn||e.targetInput.localeCompare(t.targetInput)||e.id.localeCompare(t.id)}function ko(e,t){return t===1?1:t===2?e%2===0?0:2:e%Ae.length}function Hi(e,t){return Ae[ko(e,t)]}function Gu(e,t){const n=new Map;for(const r of e)for(const i of t(r)){const s=n.get(i)??new Map;s.set(r.id,r),n.set(i,s)}const o=new Map;for(const[r,i]of n){const s=[...i.values()].sort(Ct);o.set(r,new Map(s.map((a,c)=>[a.id,Hi(c,s.length)])))}return o}function Mt(e){return e.targetColumn<e.sourceColumn?"left":e.targetColumn>e.sourceColumn?"right":"bottom"}function qu(e){const t=new Map;for(const o of e){const r=`${o.sourceId}:${Mt(o)}`,i=t.get(r)??[];i.push(o),t.set(r,i)}const n=new Map;for(const o of t.values())o.sort(Ct),o.forEach((r,i)=>{n.set(r.id,ko(i,o.length))});return n}function Qt(e){return e.sourceColumn<e.targetColumn?"left":"top"}function Uu(e){const t=new Map;for(const o of e){const r=`${o.targetId}:${Qt(o)}`,i=t.get(r)??[];i.push(o),t.set(r,i)}const n=new Map;for(const o of t.values())o.sort(Ct),o.forEach((r,i)=>{n.set(r.id,ko(i,o.length))});return n}function Bu(e){const t=new Map;for(const o of e){const r=t.get(o.targetId)??[];r.push(o),t.set(o.targetId,r)}const n=new Set;for(const o of t.values()){o.sort(Ct);const r=o[0];r&&n.add(r.id)}return n}function Hu(e){const t=new Map;for(const o of e){if(Mt(o)!=="bottom")continue;const r=t.get(o.sourceId)??[];r.push(o),t.set(o.sourceId,r)}const n=new Map;for(const o of t.values())o.sort(Ct),o.forEach((r,i)=>{n.set(r.id,o.length===1||i%2===1?"right":"left")});return n}function Wi(e,t){const n=Mt(e);return n==="bottom"?t.get(e.id)??"right":n}function fr(e,t){return Wi(e,t)==="right"?e.sourceColumn:e.sourceColumn-1}function en(e){return e.targetRow===e.sourceRow+1&&e.targetColumn===e.sourceColumn}function Wu(e){const t=new Map,n=(i,s,a,c,l)=>{const u=t.get(i)??new Map,m=u.get(s)??{id:s,column:a,kind:c,candidates:[]};m.candidates.push(l),u.set(s,m),t.set(i,u)};for(const i of e)Mt(i)==="bottom"&&!en(i)&&n(i.sourceRow,`source:${i.id}`,i.sourceColumn,"source",i),Qt(i)==="top"&&n(i.targetRow-1,`target:${i.targetId}`,i.targetColumn,"target",i);const o=new Map,r=new Map;for(const i of t.values()){const s=[...i.values()].sort((a,c)=>a.column-c.column||a.kind.localeCompare(c.kind)||a.id.localeCompare(c.id));s.forEach((a,c)=>{const l=Hi(c,s.length);for(const u of a.candidates)a.kind==="source"?o.set(u.id,l):r.set(u.id,l)})}for(const i of e)en(i)&&o.set(i.id,r.get(i.id)??Ae[1]);return{source:o,target:r}}function Ku(e,t,n){return e.get(String(t))?.get(n)??Ae[1]}function Ki(e){const t=new Map(e.cells.map(u=>[u.id,u])),n=e.edges.flatMap(u=>{const m=t.get(u.source),f=t.get(u.target);return!m||!f?[]:[{id:u.id,sourceId:m.id,targetId:f.id,sourceRow:m.slot.row,sourceColumn:m.slot.column,targetRow:f.slot.row,targetColumn:f.slot.column,targetInput:u.targetInput}]}),o=qu(n),r=Uu(n),i=Bu(n),s=Hu(n),a=Wu(n),c=Gu(n.filter(u=>!en(u)),u=>[String(Qt(u)==="left"?u.targetColumn-1:fr(u,s))]),l=new Map;for(const u of n){const m=Wi(u,s),f=Qt(u),d=f==="left"?u.targetColumn-1:fr(u,s);l.set(u.id,{sourceSide:Mt(u),sourcePortIndex:o.get(u.id)??1,targetSide:f,targetPortIndex:r.get(u.id)??1,sourceBusOffset:a.source.get(u.id)??Ae[1],targetBusOffset:a.target.get(u.id)??Ae[1],riverOffset:Ku(c,d,u.id),riverSide:m,directRowGutter:en(u),targetPrimary:i.has(u.id)})}return l}function zu(e,t){const n=e.sourceBottomY+t.sourceBusOffset,o=e.targetTopY-O.gap+t.targetBusOffset,r=t.riverSide==="right"?e.sourceRightX+t.riverOffset:e.sourceLeftX-O.gap+t.riverOffset;if(t.targetSide==="left"){if(e.sourceY===e.targetY)return[{x:e.sourceX,y:e.sourceY},{x:e.targetX,y:e.targetY}];const i=e.targetLeftX-O.gap+t.riverOffset;return[{x:e.sourceX,y:e.sourceY},{x:i,y:e.sourceY},{x:i,y:e.targetY},{x:e.targetX,y:e.targetY}]}if(t.directRowGutter&&e.targetTopY>e.sourceBottomY){const i=e.targetTopY-e.sourceBottomY,s=e.sourceBottomY+i*(t.targetBusOffset/O.gap);return[{x:e.sourceX,y:e.sourceY},{x:e.sourceX,y:s},{x:e.targetX,y:s},{x:e.targetX,y:e.targetY}]}return t.sourceSide!=="bottom"?[{x:e.sourceX,y:e.sourceY},{x:r,y:e.sourceY},{x:r,y:o},{x:e.targetX,y:o},{x:e.targetX,y:e.targetY}]:[{x:e.sourceX,y:e.sourceY},{x:e.sourceX,y:n},{x:r,y:n},{x:r,y:o},{x:e.targetX,y:o},{x:e.targetX,y:e.targetY}]}const Xu=8;function In(e,t){return t.x===e.x?`V ${t.y}`:t.y===e.y?`H ${t.x}`:`L ${t.x} ${t.y}`}function Ck(e,t){const n=zu(e,t),o=[`M ${n[0].x} ${n[0].y}`];let r=n[0];for(let i=1;i<n.length-1;i+=1){const s=n[i],a=n[i+1],c=Math.hypot(s.x-r.x,s.y-r.y),l=Math.hypot(a.x-s.x,a.y-s.y),u=Math.min(Xu,c/2,l/2);if(u<1){o.push(In(r,s)),r=s;continue}const m={x:s.x-(s.x-r.x)/c*u,y:s.y-(s.y-r.y)/c*u},f={x:s.x+(a.x-s.x)/l*u,y:s.y+(a.y-s.y)/l*u};o.push(In(r,m),`Q ${s.x} ${s.y} ${f.x} ${f.y}`),r=f}return o.push(In(r,n[n.length-1])),o.join(" ")}function zi(e,t){return`route-${e}-${t%ju.length}`}function Mk(e){const t=ne.c(8),{bookId:n,notebook:o,ready:r,call:i}=e,[s,a]=_.useState(null),c=_.useRef(null),l=`${n}:${o?.id}`;let u;t[0]!==n||t[1]!==i||t[2]!==o||t[3]!==r?(u=(p,g,y)=>{const v=y===void 0?o:y,S=v?.cells.find(C=>C.id===p);if(!n||!v||!p||g===void 0&&(!S||!Et(S.type))){c.current=null,a(null);return}const w=`${n}:${v.id}`,k={scope:w,cellId:p};if(g!==void 0){c.current=null,a({...k,value:g,loading:!1,error:null});return}if(!S||!r)return;const I=JSON.stringify([w,S,v.edges.filter(C=>C.target===p)]);if(c.current?.key===I)return;const E={key:I};c.current=E,a({...k,value:null,loading:!0,error:null}),i("preview_notebook_generation",{book_id:n,notebook_id:v.id,cell_id:S.id},{background:!0}).then(C=>{c.current===E&&a({...k,value:C,loading:!1,error:null})}).catch(C=>{c.current===E&&(c.current=null,a({...k,value:null,loading:!1,error:C instanceof Error?C.message:String(C)}))})},t[0]=n,t[1]=i,t[2]=o,t[3]=r,t[4]=u):u=t[4];const m=u,f=s?.scope===l?s:null;let d;return t[5]!==m||t[6]!==f?(d={preview:f,select:m},t[5]=m,t[6]=f,t[7]=d):d=t[7],d}function Tk(e,t){const n=ne.c(11),o=_.useRef(null);let r;n[0]===Symbol.for("react.memo_cache_sentinel")?(r=()=>{o.current!==null&&clearTimeout(o.current),o.current=null},n[0]=r):r=n[0];const i=r;let s;n[1]===Symbol.for("react.memo_cache_sentinel")?(s=()=>i,n[1]=s):s=n[1];let a;n[2]!==t?(a=[i,t],n[2]=t,n[3]=a):a=n[3],_.useEffect(s,a);let c;n[4]!==e?(c=(...d)=>{const p=d;i(),o.current=setTimeout(()=>{o.current=null,e(...p)},350)},n[4]=e,n[5]=c):c=n[5];const l=c;let u;n[6]!==e?(u=(...d)=>{const p=d;i(),e(...p)},n[6]=e,n[7]=u):u=n[7];const m=u;let f;return n[8]!==m||n[9]!==l?(f={schedule:l,cancel:i,run:m},n[8]=m,n[9]=l,n[10]=f):f=n[10],f}const Yu=720;function Xi(e){return Math.abs(e)}function Ju(e,t){const n=[];for(let o=0;o<e.length;o+=t)n.push(Math.max(...e.slice(o,o+t).map(Xi)));return n}function Zu(e,t){const n=[];for(let o=0;o<t;o+=1){const r=Math.floor(o*e.length/t),i=Math.max(r+1,Math.floor((o+1)*e.length/t));n.push(Math.max(...e.slice(r,i).map(Xi)))}return n}function Rk(e){if(e.length===0)return"";const t=Math.max(1,Math.ceil(e.length/Yu)),n=Ju(e,t);return n.map((o,r)=>{const i=n.length===1?50:r/(n.length-1)*100,s=Math.max(2,Math.min(46,o*46));return`M${i.toFixed(3)} ${50-s}V${50+s}`}).join("")}function $k(e,t){const{width:n,height:o,pitch:r,minimumBarHeight:i}=t,s=Math.floor(n/r);if(e.length===0||s<1)return"";const a=Zu(e,s),c=Math.max(...a),l=o/2,u=o-i;return a.map((m,f)=>{const d=r*f+r/2,p=c>0?m/c:0,g=Math.max(i,p*u),y=l-g/2,v=l+g/2;return`M${d.toFixed(2)} ${y.toFixed(2)}V${v.toFixed(2)}`}).join("")}function Nk(e){const{width:t,height:n,pitch:o,minimumBarHeight:r}=e,i=Math.floor(t/o);if(i<1)return"";const s=n/2,a=(s-r/2).toFixed(2),c=(s+r/2).toFixed(2);return Array.from({length:i},(l,u)=>`M${(o*u+o/2).toFixed(2)} ${a}V${c}`).join("")}function Pk(e,t){return ra(e,t)}function Ok(e){if(e.value===null)return{kind:"null"};if(!e.column.endsWith("_json")||typeof e.value!="string")return{kind:"raw",value:e.value};try{return{kind:"json",value:JSON.parse(e.value)}}catch{return{kind:"raw",value:e.value}}}function Lk(e){const t=ne.c(3),[n,o]=_.useState(null);let r,i;return t[0]!==e?(r=()=>{if(!e)return;const s=Date.parse(e);if(!Number.isFinite(s))return;const a=()=>o(Math.max(0,Math.round((Date.now()-s)/1e3))),c=window.setTimeout(a,0),l=window.setInterval(a,1e3);return()=>{window.clearTimeout(c),window.clearInterval(l)}},i=[e],t[0]=e,t[1]=r,t[2]=i):(r=t[1],i=t[2]),_.useEffect(r,i),e?n:null}const Qu={image:9/16,video:16/9,audio:16/9},ed={image:"Image",video:"Video",audio:"Audio"};function ht(e){return e!=null&&Number.isFinite(e)&&e>0}function Fk(e){return e==="image"||e==="video"||e==="audio"?e:null}function Dk(e){return ed[e]}function Vk(e,t){return e!=="audio"&&t&&ht(t.width)&&ht(t.height)?t.width/t.height:Qu[e]}function Oe(e,t,n,o="plain"){return n===null?null:{key:e,term:t,value:n,emphasis:o}}function td(e){return ht(e.width)&&ht(e.height)?`${e.width} × ${e.height}`:null}function nd(e){return ht(e)?me(e):null}function jk(e,t,n,o){const r=Oe("address","Address",`@${t}`,"address");if(e==="audio"){const i=mo({audioInfo:n.audioInfo,durationSeconds:n.duration,hasOutput:!0,inputs:o});return[r,Oe("role","Role",i.role),Oe("duration","Duration",i.duration),Oe("format","Format",i.details.length>0?i.details.join(" · "):null)].filter(s=>s!==null)}return[r,Oe("dimensions","Dimensions",td(n)),Oe("aspect","Aspect",un(n.width,n.height)),e==="video"?Oe("duration","Duration",nd(n.duration)):null].filter(i=>i!==null)}async function Gk(e){e.onStarting?.();try{const t=await e.start();return e.onAccepted?.(),t}catch(t){throw e.onRejected?.(),t}}async function qk(e){return!e.valid||e.dirty&&await e.onUpdate(e.patch)===!1?!1:(await e.onRun(e.cellId),!0)}function xn(e){return e!==null&&Number.isFinite(e)&&e>0}function Uk(e,t){const n=new Map(t.map(r=>[r.artifactId,r])),o=new Map;for(const r of e){const i=r.outputArtifactId;if(!i)continue;const s=n.get(i);if(!s)continue;const a=o.get(i);(!a||a.type!==s.type&&r.type===s.type)&&o.set(i,r)}return[...o.entries()].map(([r,i])=>{const s=n.get(r),{id:a,...c}=s;return{...c,cellAddress:It(i.slot)}})}function Bk(e,t){return oi(e,t.map(n=>({reference:n.cellAddress,replacement:`@${n.artifactId}`})))}function od(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Yi(e,t){let n=e;for(const{token:o,replacement:r}of t){const i=ke(o);i&&(n=n.replace(new RegExp(`(?<![\\w./-])@?${od(i)}(?![\\w-])`,"giu"),r))}return n}function Hk(e,t){return Yi(e,t.map(n=>({token:n.artifactId,replacement:`@${n.cellAddress}`})))}function Wk(e,t,n){const o=new Map(n.flatMap(r=>r.outputArtifactId?[[r.outputArtifactId,r]]:[]));return Yi(e,t.flatMap(r=>{const i=o.get(r.artifactId);return i?[{token:r.artifactId,replacement:`@${It(i.slot)}`}]:[]}))}function Ji(e){const t=[e.type.toUpperCase()];xn(e.width)&&xn(e.height)&&t.push(`${e.width}×${e.height}`),xn(e.duration)&&t.push(me(e.duration));const n=e.status.trim().toLowerCase();return n&&n!=="ready"&&t.push(n.replaceAll("_"," ").toUpperCase()),t}function Zi(e){return e.thumbnailUrl??(e.type==="image"?e.mediaUrl:null)}function Wn(e){const t=e.toLowerCase();return t.includes("audio")?"audio":t.includes("image")?"image":t.includes("video")||t==="final"||t==="concat"||t==="splice"?"video":"other"}function rd(e,t,n=new Set){const o=an(t);if(o===void 0)return[];const r=t.slice(0,t.lastIndexOf("@")).trim(),i=/\b(?:generate|create|make)\s+(?:an?\s+)?(?:image|photo|picture)s?(?:\s+(?:of|from|using|with))?$/iu.test(r)?"image":null;return e.filter(s=>(!i||s.type.toLowerCase()===i)&&s.cellAddress.toLowerCase().includes(o)&&!n.has(`@${s.cellAddress}`)).sort((s,a)=>/^\s*\/goal\b/u.test(t)?+(a.type==="image")-+(s.type==="image"):0).slice(0,12).map(s=>({value:`@${s.cellAddress}`,label:`@${s.cellAddress}`,asset:s,type:"asset"}))}function id(e,t,n=new Set){const o=an(t);if(o===void 0)return[];const r=new Map(e.flatMap(s=>Ee(s).map(a=>[`${a.row}:${a.column}`,s]))),i=[];for(let s=0;s<de;s+=1)for(let a=0;a<X;a+=1){const c=ue({row:s,column:a});if(!c.slice(1).includes(o)||n.has(c))continue;const l=r.get(`${s}:${a}`);if(!(l?.type==="timeline"&&a!==l.slot.column)&&(i.push({value:c,label:c,description:l?`${l.type.replaceAll("_"," ").toUpperCase()} cell`:"Empty grid square",cellType:l?.type??null,empty:!l,type:"cell"}),i.length===12))return i}return i}const sd=8,ad=16;function Kk(e,t,n,o=new Set,r={}){const i=new Map(t.map(c=>[ue(c.slot),c.label?.trim()||null])),s=new Set,a=[];for(const c of rd(e,n,o))s.has(c.value)||(s.add(c.value),a.push({value:c.value,label:c.label,description:Ji(c.asset).join(" · "),caption:i.get(c.value)??null,thumbnailUrl:Zi(c.asset),mediaKind:Wn(c.asset.type),empty:!1}));for(const c of id(t,n,o))s.has(c.value)||(s.add(c.value),a.push({value:c.value,label:c.label,description:c.description,caption:i.get(c.value)??null,thumbnailUrl:null,mediaKind:c.cellType?Wn(c.cellType):null,empty:c.empty}));return[...a.filter(c=>!c.empty).sort((c,l)=>/^\s*\/goal\b/u.test(n)?+(l.mediaKind==="image")-+(c.mediaKind==="image"):0).slice(0,r.rows??sd),...a.filter(c=>c.empty).slice(0,r.empties??ad)]}function zk(e,t,n){const o=an(n);if(o===void 0)return[];const r=new Map(t.map(i=>[i.cellAddress,i]));return e.filter(({token:i})=>i.includes(o)).map(({token:i,cell:s})=>{const a=It(s.slot),c=r.get(a);return{value:`@${i}`,label:`@${i}`,description:[`@${a}`,...c?Ji(c):[s.type.replaceAll("_"," ").toUpperCase()]].join(" · "),caption:s.label?.trim()||null,thumbnailUrl:c?Zi(c):null,mediaKind:Wn(c?.type??s.type),empty:!1}})}const Qi={first_frame:"firstframe",last_frame:"lastframe"},cd=new Set(["replace_audio"]),ld=["image","video","audio"];function ud(e){return e==="image"||e==="generate_image"?"image":e==="audio"||e==="extract_audio"||e==="generate_audio"?"audio":e==="video"||e==="split_video"||e==="generate_video"||e==="concat"||e==="splice"?"video":null}function mr(e,t){if(e===t)return 1;const n=`${t}_`;if(!e.startsWith(n))return null;const o=e.slice(n.length);return/^\d+$/.test(o)?Number(o):null}function dd(e,t){return[...e].sort((n,o)=>{const r=mr(n.targetInput,t)??Number.MAX_SAFE_INTEGER,i=mr(o.targetInput,t)??Number.MAX_SAFE_INTEGER;return r-i})}function fd(e,t,n){const o=new Map(t.map(r=>[r.id,r]));return n.flatMap(r=>{if(r.target!==e)return[];const i=o.get(r.source),s=i?ud(i.type):null;return s?[{kind:s,sourceCellId:r.source,targetInput:r.targetInput}]:[]})}function md(e){return Object.entries(Qi).flatMap(([t,n])=>{const o=e.find(r=>r.kind==="image"&&r.targetInput===t);return o?[{...o,token:n}]:[]})}function pd(e,t,n){const o=e.filter(r=>r.kind===t&&!(n!=="r2v"&&t==="image"&&r.targetInput in Qi)&&!cd.has(r.targetInput));return dd(o,t).map((r,i)=>({...r,token:`${t}${i+1}`}))}function gd(e,t,n,o){const r=t.find(a=>a.id===e)?.inputs?.generationMode,i=o??r,s=fd(e,t,n);return[...i==="r2v"?[]:md(s),...ld.flatMap(a=>pd(s,a,typeof i=="string"?i:void 0))]}function Xk(e,t,n){const o=new Set([...t,...n].map(i=>i.token)),r=new Map(t.map(i=>{const s=n.find(l=>l.sourceCellId===i.sourceCellId&&l.targetInput===i.targetInput)??n.find(l=>l.targetInput===i.targetInput);if(s)return[i.token,s.token];if(!n.some(l=>l.token===i.token))return[i.token,i.token];let a=1;for(;o.has(`${i.kind}${a}`);)a+=1;const c=`${i.kind}${a}`;return o.add(c),[i.token,c]}));return e.replace(/@((?:image|video|audio)\d+|firstframe|lastframe)(?![\w-])/giu,(i,s)=>{const a=r.get(s.toLowerCase());return a&&a!==s.toLowerCase()?`@${a}`:i})}function es(e,t,n){return e==="r2v"&&t==="image"&&(n==="first_frame"||n==="last_frame")?"image":n}function hd(e,t){const n=t.map(i=>({...i,target:es(e.id,i.kind,i.target)}));if(e.id!=="i2v"||e.slots.some(i=>i.targets.includes("image")))return n;const o=e.slots.flatMap(i=>i.targets).filter(i=>i==="first_frame"||i==="last_frame").filter(i=>!t.some(s=>s.target===i));let r=0;return n.map(i=>{if(i.kind!=="image"||i.target!=="image")return i;const s=o[r++];return s?{...i,target:s}:i})}function Lt(e){return e==="replace_audio"?"replacement audio":e==="first_frame"?"first frame":e==="last_frame"?"last frame":`${e} reference`}function wo(e,t){const n=e.id==="default"||e.id==="text"?"this model":e.id.toUpperCase(),o=n==="this model"?"This model":n,r=new Map(e.slots.map(l=>[l.field,0])),i=hd(e,t).sort((l,u)=>+(u.target!==u.kind)-+(l.target!==l.kind));for(const l of i){const u=e.slots.filter(d=>d.kind===l.kind&&d.targets.includes(l.target));if(u.length===0)return`${o} does not accept ${Lt(l.target)} inputs. Change the type or remove that input.`;const f=u.filter(d=>d.max===null||(r.get(d.field)??0)<d.max).sort((d,p)=>{const g=+((r.get(d.field)??0)<d.min);return+((r.get(p.field)??0)<p.min)-g||d.targets.length-p.targets.length})[0];if(!f){const d=u.reduce((p,g)=>p+(g.max??0),0);return`${o} accepts at most ${d} ${Lt(l.target)} input${d===1?"":"s"}. Remove an input or change the model.`}r.set(f.field,(r.get(f.field)??0)+1)}const s=e.slots.find(l=>(r.get(l.field)??0)<l.min);if(s)return`Add at least ${s.min} ${Lt(s.targets[0]??s.kind)} input${s.min===1?"":"s"} for ${n}.`;const a=e.requiredGroups.find(l=>!l.some(u=>(r.get(u)??0)>0));return a?`Add at least one ${[...new Set(e.slots.filter(l=>a.includes(l.field)).flatMap(l=>l.targets).map(Lt))].join(" or ")} input for ${n}.`:null}const ts={duration:["duration"],aspect:["aspect_ratio","aspectRatio","image_size"],resolution:["resolution","output_resolution","size","mode"],quality:["quality"],bitrate:["bitrate_mode"]};function ns(e){const t=Object.entries(ts).find(([,n])=>n.includes(e));return t?t[0]:null}function Kn(e){if(typeof e=="number")return e;const t=/^(\d+(?:\.\d+)?)\s*(p|k|sq)?$/iu.exec(e.trim());if(!t)return null;const n=Number(t[1]);return t[2]?.toLowerCase()==="k"?n*1e3:n}function bd(e,t){const n=Kn(e),o=Kn(t);return n!==null&&n===o&&String(e).toLowerCase().replace(/p$/u,"")===String(t).toLowerCase().replace(/p$/u,"")}function yd(e,t){return e.find(n=>n===t)??e.find(n=>String(n).toLowerCase()===String(t).toLowerCase())??e.find(n=>typeof n!="boolean"&&typeof t!="boolean"&&bd(n,t))}function _d(e,t){if(e.options.length>0)return yd(e.options,t);if(e.valueType!=="number")return;const n=Number(t);if(Number.isFinite(n)&&!(e.minimum!==void 0&&n<e.minimum)&&!(e.maximum!==void 0&&n>e.maximum))return n}function os(e,t){return typeof t!="string"&&typeof t!="number"?!1:e!=="resolution"||Kn(t)!==null}function Yk(e){return Object.fromEntries(Object.entries(e).flatMap(([t,n])=>{const o=ns(t);return!o||!os(o,n)?[]:[[o,n]]}))}function vd(e){return Object.hasOwn(ts,e)}function kd(e){return Object.fromEntries(Object.entries(e).flatMap(([t,n])=>vd(t)&&os(t,n)?[[t,n]]:[]))}function Jk(e,t){return Object.fromEntries(e.flatMap(n=>{const o=ns(n.name),r=o?t[o]:void 0,i=r===void 0?void 0:_d(n,r);return i===void 0?[]:[[n.name,i]]}))}function wd(e){const t=h(e),n=h(t?.mentions),o=Array.isArray(n?.prompt_leaks)?n.prompt_leaks.flatMap(i=>{const s=h(i),a=x(s?.token),c=x(s?.code),l=x(s?.message);return a&&c&&l?[{token:a,code:c,message:l}]:[]}):[],r=Array.isArray(n?.url_placeholders)?n.url_placeholders.flatMap(i=>{const s=h(i),a=x(s?.path),c=x(s?.reference),l=x(s?.url);return a&&c&&l?[{path:a,reference:c,url:l}]:[]}):[];return{promptLeaks:o,urlPlaceholders:r}}function Zk(e){const t=wd(e).promptLeaks;return t.length===0?null:`Fix prompt references before generating: ${t.map(o=>o.message).join("; ")}`}function Sd(e){return e.length>0&&e.every(t=>t.includes("historical average per call"))}function Qk(e){const t=h(h(e)?.estimate),n=Array.isArray(t?.warnings)?t.warnings.filter(r=>typeof r=="string"):[],o=Sd(n);return{usd:typeof t?.usd=="number"?t.usd:null,currency:typeof t?.currency=="string"?t.currency:"USD",warnings:n,unknown:!o&&n.some(r=>/not found|unavailable|no cost adapter|unknown/iu.test(r))}}const rs=["t2i","i2i","t2v","i2v","r2v","v2v"];function is(e){return Array.isArray(e)?e.filter(t=>{if(!t||typeof t!="object")return!1;const n=t;return rs.some(o=>o===n.type)&&typeof n.rank=="number"&&Number.isFinite(n.rank)&&n.rank>0&&typeof n.elo=="number"&&Number.isFinite(n.elo)&&typeof n.priceLabel=="string"&&typeof n.sourceUrl=="string"&&typeof n.capturedOn=="string"}):[]}function Id(e,t,n,o){const r=rs.find(s=>s===t);if(r)return r;if(t==="v2v_refs")return"v2v";if(e==="generate_image")return n==="layer_image"?null:o.some(a=>a.type==="image"||a.type==="generate_image")||n==="edit_image"||n==="image_to_image"?"i2i":"t2i";if(e!=="generate_video")return null;const i={text_to_video:"t2v",image_to_video:"i2v",reference_to_video:"r2v",edit_video:"v2v"};return i[n]?n!=="text_to_video"?i[n]:o.some(s=>s.targetInput==="first_frame"||s.targetInput==="last_frame")?"i2v":o.some(s=>s.type==="video"||s.type==="generate_video")?"v2v":o.some(s=>s.type==="image"||s.type==="generate_image")?"r2v":i[n]:null}function xd(e,t){const n=e.map(s=>({action:s,ranking:t?s.frontier?.find(a=>a.type===t):void 0})),o=n.filter(s=>s.ranking&&s.action.available!==!1).sort((s,a)=>s.ranking.rank-a.ranking.rank),r=n.filter(s=>!s.ranking&&s.action.available!==!1),i=n.filter(s=>s.action.available===!1);return[{label:"Frontier models",rows:o},{label:o.length?"Other models":"Models",rows:r},{label:"Unavailable · provider not configured",rows:i}].filter(s=>s.rows.length>0)}function ew(e,t,n){const o=n.refs&&typeof n.refs=="object"?n.refs:{},r=Object.entries(o).filter(([,a])=>!!a&&(!Array.isArray(a)||a.length>0)).map(([a])=>({type:a==="first_frame"||a==="last_frame"?"image":a,targetInput:a})),i=typeof n.operation=="string"?n.operation:t==="image"?"text_to_image":"text_to_video",s=Id(`generate_${t}`,typeof n.mode=="string"?n.mode:"",i,r);return xd(e,s).flatMap(a=>a.rows.map(({action:c,ranking:l})=>({...c,group:a.label,label:`${l?`#${l.rank} · `:""}${c.label}`,detail:[c.detail,l?`Elo ${l.elo} · ${l.priceLabel}`:"",c.available===!1?"unavailable":""].filter(Boolean).join(" · ")})))}function An(e,t,n){if(t===n)return!0;const o=new Map;for(const s of e){const a=o.get(s.source)??[];a.push(s.target),o.set(s.source,a)}const r=new Set,i=[n];for(;i.length>0;){const s=i.pop();if(!(!s||r.has(s))){if(s===t)return!0;r.add(s),i.push(...o.get(s)??[])}}return!1}function ot(e,t,n,o){if(!An(t,n,o))return t;const r=e.find(s=>s.id===n);if(n===o||r?.type!=="image"||!r.outputArtifactId)return null;const i=t.filter(s=>s.target!==n||!An(t,s.source,o));return An(i,n,o)?null:i}function tw(e,t,n=[]){const o=t.source,r=t.target;return!o||!r?!1:ot(n,e,o,r)!==null}function nw(e,t,n){return new Set(e.filter(o=>ot(e,t,o.id,n)===null).map(o=>ue(o.slot)))}function ss(e,t){return t[e.name]??e.defaultValue}function ow(e,t){return Object.fromEntries(e.flatMap(n=>{const o=ss(n,t);return o===void 0?[]:[[n.name,o]]}))}function Ad(e,t){return e.minimum===void 0?!1:e.exclusiveMinimum?t<=e.minimum:t<e.minimum}function Ed(e,t){return e.maximum===void 0?!1:e.exclusiveMaximum?t>=e.maximum:t>e.maximum}function Cd(e,t){const n=ss(e,t);return n===void 0||n===""?e.required?`${e.label}: Required`:null:e.options.length>0&&!e.options.some(o=>o===n)?`${e.label}: Choose one of the listed values`:e.valueType==="number"?typeof n!="number"||!Number.isFinite(n)?`${e.label}: Enter a number`:Ad(e,n)?e.exclusiveMinimum?`${e.label}: Must be greater than ${e.minimum}`:`${e.label}: Must be at least ${e.minimum}`:Ed(e,n)?e.exclusiveMaximum?`${e.label}: Must be less than ${e.maximum}`:`${e.label}: Must be at most ${e.maximum}`:null:typeof n===e.valueType?null:`${e.label}: Required`}function rw(e,t){const n=e.flatMap(o=>{const r=Cd(o,t);return r?[r]:[]});return n.length>0?n.join("; "):null}function bt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Md(e){return e==="image"||e==="video"||e==="audio"?e:null}function as(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function pr(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"?e:void 0}function Td(e){const t=h(e),n=x(t?.name),o=x(t?.label),r=x(t?.description),i=t?.kind,s=t?.valueType;if(!n||!o||!r||i!=="select"&&i!=="boolean"&&i!=="number"&&i!=="text"||s!=="string"&&s!=="number"&&s!=="boolean")return null;const a=pr(t?.defaultValue),c=Array.isArray(t?.options)?t.options.flatMap(m=>{const f=pr(m);return f===void 0?[]:[f]}):[],l=bt(t?.minimum),u=bt(t?.maximum);return{name:n,label:o,kind:i,valueType:s,required:t?.required===!0,...a===void 0?{}:{defaultValue:a},options:c,...l===null?{}:{minimum:l},...u===null?{}:{maximum:u},...t?.exclusiveMinimum===!0?{exclusiveMinimum:!0}:{},...t?.exclusiveMaximum===!0?{exclusiveMaximum:!0}:{},description:r}}function Rd(e){const t=h(e),n=x(t?.field),o=Md(t?.kind),r=as(t?.targets),i=bt(t?.min),s=t?.max,a=s===null?null:bt(s);return!n||!o||r.length===0||i===null||s!==null&&a===null?null:{field:n,kind:o,targets:r,min:i,max:a}}function $d(e){const t=h(e),n=x(t?.id);if(!n||!Array.isArray(t?.slots))return null;const o=t.slots.map(Rd).filter(i=>i!==null),r=Array.isArray(t.requiredGroups)?t.requiredGroups.map(as).filter(i=>i.length>0):[];return{id:n,slots:o,requiredGroups:r}}function Nd(e){const t=h(e);if(!Array.isArray(t?.modes))return null;const n=t.modes.map($d).filter(o=>o!==null);return n.length>0?{modes:n}:null}function Pd(e){const n=h(e)?.actions;return Array.isArray(n)?n.flatMap(o=>{const r=h(o);if(!r||r.kind!=="generation")return[];const i=x(r.provider),s=x(r.model),a=x(r.operation),c=x(r.tool),l=x(r.title),u=Nd(r.inputContract),m=Array.isArray(r.controls)?r.controls.map(Td).filter(p=>p!==null):[],f=Array.isArray(r.cellTypes)?r.cellTypes.filter(p=>typeof p=="string"&&Et(p)):[];if(!i||!s||!a||!c||!u||f.length===0)return[];const d=bt(r.defaultPriority);return[{id:x(r.id)??`generation.${c}`,cellTypes:f,provider:i,providerLabel:x(r.providerLabel)??i,model:s,operation:a,tool:c,title:l??c,isDefault:r.isDefault===!0,defaultPriority:d,inputContract:u,controls:m,...typeof r.available=="boolean"?{available:r.available}:{},...Array.isArray(r.frontier)?{frontier:is(r.frontier)}:{},...r.existingCellOnly===!0?{existingCellOnly:!0}:{}}]}):[]}function So(e,t,n=!1){return e.filter(o=>o.cellTypes.includes(t)&&(n||!o.existingCellOnly))}function zn(e){return{provider:e.provider,model:e.model,operation:e.operation,tool:e.tool}}function Od(e){return{provider:e.provider?.trim()??"",model:e.model?.trim()??"",operation:e.operation?.trim()??"",tool:e.tool?.trim()??""}}function Ft(e,t){return["provider","model","operation","tool"].reduce((n,o)=>t[o]&&e[o]===t[o]?n+1:n,0)}function cs(e,t,n){const o=So(e,t,!0).filter(c=>!c.existingCellOnly||c.tool===n.tool&&c.model===n.model),r=n.model?o.find(c=>c.model===n.model&&(!n.tool||c.tool===n.tool)):void 0;if(r)return r;const i=n.tool?o.filter(c=>c.tool===n.tool).sort((c,l)=>Ft(l,n)-Ft(c,n))[0]:void 0;if(i)return i;const s=n.model?o.find(c=>c.tool===n.model):void 0;return s||(n.model?o.filter(c=>c.model===n.model):n.operation?o.filter(c=>c.operation===n.operation):n.provider?o.filter(c=>c.provider===n.provider):[]).reduce((c,l)=>!c||Ft(l,n)>Ft(c,n)?l:c,null)}function Xn(e){return e.type==="image"||e.type==="generate_image"?"image":e.type==="video"||e.type==="split_video"||e.type==="generate_video"||e.type==="concat"||e.type==="splice"?"video":e.type==="audio"||e.type==="extract_audio"||e.type==="generate_audio"?"audio":null}function ls(e,t){return t==="first_frame"||t==="last_frame"||e==="audio"&&t==="replace_audio"?t:e}function iw(e,t,n){const o=new Map(t.map(r=>[r.id,r]));return n.flatMap(r=>{if(r.target!==e)return[];const i=o.get(r.source),s=i?Xn(i):null;return s?[{kind:s,target:ls(s,r.targetInput)}]:[]})}function Ld(e,t){if(!t.has(e))return e;let n=2;for(;t.has(`${e}_${n}`);)n+=1;return`${e}_${n}`}function sw(e,t,n,o,r){const i=e.inputContract.modes.find(d=>d.id===t);if(!i)return[];const s=new Map(o.map(d=>[d.id,d])),a=r.filter(d=>d.target===n),c=a.flatMap(d=>{const p=s.get(d.source),g=p?Xn(p):null;return g?[{sourceCellId:d.source,targetInput:d.targetInput,target:es(t,g,ls(g,d.targetInput)),kind:g}]:[]}),l=new Set(a.map(d=>d.source)),u=new Set(a.map(d=>d.targetInput)),m=[],f=new Set;for(const d of o.filter(p=>p.id!==n).sort((p,g)=>p.slot.row-g.slot.row||p.slot.column-g.slot.column)){if(l.has(d.id)||ot(o,r,d.id,n)===null)continue;const p=Xn(d);if(p)for(const g of i.slots){if(g.kind!==p)continue;const y=c.filter(v=>v.kind===g.kind&&g.targets.includes(v.target)).length;if(!(g.max!==null&&y>=g.max))for(const v of g.targets){const S=`${d.id}:${v}`;f.has(S)||(f.add(S),m.push({sourceCellId:d.id,targetInput:Ld(v,u),target:v,kind:p}))}}}return m}function Tt(e,t){return e.inputContract.modes.filter(n=>wo(n,t)===null)}function aw(e,t,n){const o=e.inputContract.modes.find(r=>r.id===t);return!!(o&&wo(o,n)===null)}function cw(e,t,n=""){return n&&e.inputContract.modes.some(o=>o.id===n)?n:Tt(e,t)[0]?.id??e.inputContract.modes[0]?.id??""}function lw(e){return{t2v:"T2V · Text to video",i2v:"I2V · Image to video",r2v:"R2V · Reference to video",v2v:"V2V · Video to video",t2i:"T2I · Text to image",i2i:"I2I · Image to image",t2a:"T2A · Text to audio"}[e]??e.replaceAll("-"," ").replace(/^./,n=>n.toUpperCase())}function gn(e,t){return e.inputContract.modes.some(n=>wo(n,t)===null)}function Fd(e,t){const n=e.defaultPriority??Number.POSITIVE_INFINITY,o=t.defaultPriority??Number.POSITIVE_INFINITY;if(n!==o)return n-o;const r=e.title.localeCompare(t.title);if(r!==0)return r;const i=e.providerLabel.localeCompare(t.providerLabel);return i!==0?i:e.model.localeCompare(t.model)}function Dd(e,t,n,o=!1){return So(e,t,o).filter(r=>gn(r,n)).sort(Fd)}function Vd(e,t,n=[]){if(!Et(e.type))return null;const o=Od(e),r=cs(t,e.type,o);if(r)return zn(r);if(Object.values(o).every(Boolean))return o;const i=Dd(t,e.type,n)[0];return i?zn(i):null}function Io(e){return zn(e)}function jd(e){return e.replace(/\b(image|text|reference|video|audio|frame)[\s-]+to[\s-]+(video|image|audio|text)\b/gi,(t,n,o)=>`${n[0]}2${o[0]}`.toUpperCase())}const uw="Edit video follows the source aspect ratio and duration. Connect one 4–30 second video plus optional image or audio references.";function us(e,t){return e==="kie:bytedance/seedance-2-5"&&t==="v2v"}const En=[{id:"t2v",label:"Text to video",roles:[]},{id:"i2v",label:"Frames",roles:["first_frame","last_frame"],requireAny:["first_frame","last_frame"]},{id:"r2v",label:"References",roles:["image","video","audio"],requireAny:["image","video","audio"]}],rt=[{id:"i2v",label:"Frames",roles:["first_frame","last_frame"]}],Cn={aspect_ratio:"auto",duration:5,generate_audio:!0,resolution:"720p",reasoning_level:"high"},Gd=[{id:"r2v",label:"References",roles:["image","video","audio"],requireAny:["image","video","audio"]},{id:"v2v",label:"Edit video",roles:["video","image","audio"],requireAny:["video"],defaults:{task:"editing"}},{id:"extend",label:"Extend video",roles:["video","image","audio"],requireAny:["video"],defaults:{task:"extension"}}],qd=[{id:"i2v",label:"Image to video",roles:["first_frame"]},{id:"r2v",label:"References",roles:["image"],defaults:{duration:10}},{id:"v2v",label:"Edit video",roles:["video"],requireAny:["video"]}],it={id:"i2v",label:"Frames",roles:["first_frame","last_frame"],requireAny:["first_frame"]},Dt=["image","video","audio"];function st(e,t,n=t){return[{id:"t2v",label:"Text to video",roles:[]},e,{id:"r2v",label:"References",roles:t,requireAny:n}]}function Vt(e){const t={minimum:2e3,maximum:e*1e3,maximumTotal:e*1e3};return{refDurationMs:{video:t,audio:t}}}const at=["text_to_video","image_to_video","reference_to_video"],tn="Speaker 1";function gr(e,t){return{id:e,media:"audio",operations:["speech"],title:t,prompt:"dialogue_turns.0.text",aliases:{voice:"speakers.0.voice_name",accent:"speakers.0.accent",style:"speakers.0.style",pace:"speakers.0.pace"},defaults:{speakers:[{speaker_id:tn,voice_name:"Kore",accent:"Neutral"}],dialogue_turns:[{speaker_id:tn}]}}}function hr(e,t){return{id:e,media:"audio",operations:["speech"],title:t,prompt:"dialogue_turns.0.text",aliases:{voice:"speakers.0.voice_name",style:"dialogue_turns.0.style"},defaults:{speakers:[{speaker_id:tn,voice_name:"Fola"}],dialogue_turns:[{speaker_id:tn}]}}}function br(e,t){return{id:e,media:"audio",operations:["speech"],title:t,defaults:{voice:"Rachel"}}}function ct(e){return{id:`fal:minimax/h3-max/styles/${e}`,media:"video",operations:["text_to_video","image_to_video"],dialect:"strip_frames"}}const Ud=[{id:"kie:nano-banana-2-1",media:"image",operations:["text_to_image","edit_image"],dialect:"natural_numbered",defaults:{...xa}},{id:"kie:flux-3/klein-text-to-image",media:"image",operations:["text_to_image"],dialect:"natural",defaults:{resolution:"1K"}},{id:"kie:flux-3/klein-edit-image",media:"image",operations:["edit_image"],dialect:"natural",defaults:{resolution:"1K"}},{id:"kie:nano-banana-pro",media:"image",operations:["text_to_image","edit_image"],guide:"nano_banana",dialect:"natural"},{id:"kie:gpt-image-2-5-flare-text-to-image",media:"image",operations:["text_to_image"],guide:"gpt_image",dialect:"natural",defaults:{resolution:"2K"}},{id:"kie:gpt-image-2-5-flare-image-to-image",media:"image",operations:["edit_image"],guide:"gpt_image",dialect:"natural",defaults:{resolution:"2K"}},{id:"kie:gpt-image-2-5-sunburst-text-to-image",media:"image",operations:["text_to_image"],guide:"gpt_image",dialect:"natural",defaults:{resolution:"2K"}},{id:"kie:gpt-image-2-5-sunburst-image-to-image",media:"image",operations:["edit_image"],guide:"gpt_image",dialect:"natural",defaults:{resolution:"2K"}},{id:"kie:gpt-image-2-image-to-image",media:"image",operations:["edit_image"],title:"GPT Image 2 Edit",dialect:"natural",hidden:!0},{id:"kie:seedream/5-pro-image-to-image",media:"image",operations:["edit_image"],dialect:"natural",hidden:!0},{id:"kie:grok-imagine/text-to-image",media:"image",operations:["text_to_image"],guide:"grok_image"},{id:"kie:grok-imagine/image-to-image",media:"image",operations:["edit_image"],guide:"grok_image",dialect:"natural"},{id:"kie:qwen2/image-edit",media:"image",operations:["edit_image"],dialect:"natural"},{id:"kie:qwen3/image-to-image",media:"image",operations:["edit_image"],dialect:"natural"},{id:"kie:qwen2-1/text-to-image",media:"image",operations:["text_to_image"],dialect:"natural"},{id:"kie:qwen2-1/image-to-image",media:"image",operations:["edit_image"],dialect:"natural"},{id:"kie:seedream/5-lite-text-to-image",media:"image",operations:["text_to_image"]},{id:"kie:seedream/5-lite-image-to-image",media:"image",operations:["edit_image"],dialect:"natural"},{id:"kie:seedream/5-flash-text-to-image",media:"image",operations:["text_to_image"]},{id:"kie:seedream/5-flash-image-to-image",media:"image",operations:["edit_image"]},{id:"kie:seedream/5-flash-layer-decomposition",media:"image",operations:["layer_image"]},{id:"alibaba:qwen-image-2.0-pro",media:"image",operations:["text_to_image"],title:"Qwen Image 2.0 Pro (Alibaba)"},{id:"alibaba:qwen-image-edit-plus",media:"image",operations:["edit_image"],title:"Qwen Image Edit Plus (Alibaba)"},{id:"fal:fal-ai/nano-banana",media:"image",operations:["text_to_image"],guide:"nano_banana",hidden:!0},{id:"fal:fal-ai/nano-banana/edit",media:"image",operations:["edit_image"],guide:"nano_banana",hidden:!0},{id:"fal:fal-ai/nano-banana-2",media:"image",operations:["text_to_image"],guide:"nano_banana",hidden:!0},{id:"fal:fal-ai/nano-banana-2/edit",media:"image",operations:["edit_image"],guide:"nano_banana",hidden:!0},{id:"fal:google/nano-banana-2-lite",media:"image",operations:["text_to_image"],guide:"nano_banana",hidden:!0},{id:"fal:google/nano-banana-lite/edit",media:"image",operations:["edit_image"],guide:"nano_banana",hidden:!0},{id:"fal:fal-ai/nano-banana-pro",media:"image",operations:["text_to_image"],guide:"nano_banana",hidden:!0},{id:"fal:fal-ai/nano-banana-pro/edit",media:"image",operations:["edit_image"],guide:"nano_banana",hidden:!0},{id:"fal:google/nano-banana-2.1",media:"image",operations:["text_to_image"],guide:"nano_banana",hidden:!0},{id:"fal:google/nano-banana-2.1/edit",media:"image",operations:["edit_image"],guide:"nano_banana",hidden:!0},{id:"fal:fal-ai/bytedance/seedream/v5/lite/text-to-image",media:"image",operations:["text_to_image"],hidden:!0},{id:"fal:fal-ai/bytedance/seedream/v5/lite/edit",media:"image",operations:["edit_image"],hidden:!0},{id:"fal:xai/grok-imagine-image",media:"image",operations:["text_to_image"],guide:"grok_image",hidden:!0},{id:"fal:xai/grok-imagine-image/edit",media:"image",operations:["edit_image"],guide:"grok_image",hidden:!0},{id:"fal:fal-ai/qwen-image",media:"image",operations:["text_to_image"],hidden:!0},{id:"fal:fal-ai/qwen-image-edit",media:"image",operations:["edit_image"],hidden:!0},{id:"fal:alibaba/qwen-image-3/edit",media:"image",operations:["edit_image"]},{id:"fal:fal-ai/wan/v2.7/edit",media:"image",operations:["edit_image"],rules:{maxPromptChars:500},hidden:!0},{id:"fal:bria/fibo-edit-1.5/product-holding",media:"image",operations:["edit_image"],prompt:"instruction",refs:{image:["person_image_url","product_image_urls"]}},{id:"fal:bria/fibo-edit-1.5/virtual-try-on",media:"image",operations:["edit_image"],prompt:"instruction",refs:{image:["person_image_url","garment_image_urls"]}},{id:"fal:recraft/v4.1/flash/text-to-image",media:"image",operations:["text_to_image"]},{id:"fal:bytedance/seedream/v5/flash/text-to-image",media:"image",operations:["text_to_image"]},{id:"fal:bytedance/seedream/v5/flash/edit",media:"image",operations:["edit_image"]},{id:"fal:bytedance/seedream/v5/flash/layerize",media:"image",operations:["layer_image"]},{id:"fal:ideogram/v4.5",media:"image",operations:["text_to_image"]},{id:"fal:ideogram/v4.5/edit",media:"image",operations:["edit_image"],refs:{image:["image_url","reference_image_urls"]}},{id:"fal:blackforestlabs/flux-3/text-to-image",media:"image",operations:["text_to_image"]},{id:"fal:blackforestlabs/flux-3/edit-image",media:"image",operations:["edit_image"]},{id:"fal:bria/fibo-2/generate",media:"image",operations:["text_to_image"]},{id:"fal:bria/fibo-2/edit",media:"image",operations:["edit_image"],prompt:"instruction"},{id:"fal:fal-ai/flux-2-flex",media:"image",operations:["text_to_image"]},{id:"fal:bria/guided-remove-background",media:"image",operations:["edit_image"]},{id:"fal:bria/fibo-edit-1.5/expand",media:"image",operations:["edit_image"]},{id:"fal:fal-ai/marigold-v2",media:"image",operations:["edit_image"]},{id:"kie:bytedance/seedance-2-5",media:"video",operations:["text_to_video","image_to_video","reference_to_video","edit_video"],guide:"seedance25",dialect:"seedance",modes:[...En,{id:"v2v",label:"Edit video",roles:["video","image","audio"],requireAny:["video"]}],defaults:{...Ia},frameOptions:{aspect_ratio:"adaptive"}},{id:"kie:bytedance/seedance-2-5-draft",media:"video",operations:["upscale_video"],title:"Seedance 2.5 Draft Complete",description:"Render the 1080p final of a Seedance 2.5 draft: a 480p kie:bytedance/seedance-2-5 run with draft on. Pass that run's Kie task id as draft_task_id.",defaults:{resolution:"1080p"}},{id:"kie:grok-imagine/image-to-video",media:"video",operations:["image_to_video"],guide:"grok_imagine"},{id:"kie:grok-imagine/text-to-video",media:"video",operations:["text_to_video"],guide:"grok_imagine",defaults:{duration:6,resolution:"480p"}},{id:"kie:grok-imagine-video-1-5-preview",media:"video",operations:["image_to_video"],title:"Grok Imagine Video 1.5 Preview (Kie)",guide:"grok_imagine",dialect:"natural_strip_frames"},{id:"kie:grok-imagine/extend",media:"video",operations:["extend_video"],hidden:!0},{id:"kie:grok-imagine/upscale",media:"video",operations:["upscale_video"],hidden:!0},{id:"kie:kling-3.0-omni/text-to-video",media:"video",operations:["text_to_video"],guide:"kling30",dialect:"natural",defaults:{customize_multi_shots:!1}},{id:"kie:kling-3.0-omni/image-to-video",media:"video",operations:["image_to_video"],guide:"kling30",dialect:"natural",defaults:{aspect_ratio:"auto"},pinnedDefaults:["aspect_ratio"]},{id:"kie:kling-3.0-omni/reference-to-video",media:"video",operations:["reference_to_video"],guide:"kling30",dialect:"natural",defaults:{audio:!1}},{id:"kie:kling-3.0-omni/transformation",media:"video",operations:["edit_video"],guide:"kling30",dialect:"natural",modes:[{id:"v2v",label:"Edit video",roles:["video"],requireAny:["video"],defaults:{aspect_ratio:"auto"}},{id:"v2v_refs",label:"Edit with references",roles:["video","image"],requireAny:["video"]}]},{id:"kie:kling-3.0/motion-control",media:"video",operations:["motion_control"],guide:"kling30",dialect:"natural",defaults:{mode:"720p"}},{id:"kie:kling-4.0/reference-to-video",media:"video",operations:["reference_to_video"],dialect:"kling4"},{id:"kie:kling-4.0/keyframe-to-video",media:"video",operations:["image_to_video"],dialect:"kling4_keyframes",refs:{image:"keyframe_urls"}},{id:"kie:gemini-omni-video",media:"video",operations:["image_to_video","edit_video"],dialect:"natural_source_video",defaults:{duration:"8"},modes:[{id:"i2v",label:"Image to video",roles:["image"]},{id:"v2v",label:"Edit video",roles:["video","image"],requireAny:["video"]}],refItem:{video:{start:0,ends:8}},aliases:{clip_start:"video_list.0.start",clip_end:"video_list.0.ends"}},{id:"kie:wan/3-0-video",media:"video",operations:["text_to_video","image_to_video","reference_to_video"],dialect:"seedance",modes:En},{id:"kie:wan/3-0-video-prime",media:"video",operations:["text_to_video","image_to_video","reference_to_video"],dialect:"seedance",modes:En},{id:"kie:happyhorse-1-1/text-to-video",media:"video",operations:["text_to_video"]},{id:"kie:happyhorse-1-1/image-to-video",media:"video",operations:["image_to_video"],dialect:"strip_frames"},{id:"kie:happyhorse-1-1/reference-to-video",media:"video",operations:["reference_to_video"],dialect:"brackets"},{id:"kie:happyhorse/video-edit",media:"video",operations:["edit_video"],dialect:"happyhorse_edit"},{id:"kie:minimax-h3/text-to-video",media:"video",operations:["text_to_video"]},{id:"kie:minimax-h3/image-to-video",media:"video",operations:["image_to_video"],dialect:"strip_frames"},{id:"kie:minimax-h3/reference-to-video",media:"video",operations:["reference_to_video"],dialect:"natural",rules:{refDurationMs:ia}},{id:"kie:volcengine/video-to-video-lip-sync",media:"video",operations:["lip_sync"]},{id:"kie:omnihuman-1-5",media:"video",operations:["image_to_video","lip_sync"],dialect:"natural"},{id:"kie:omnihuman-2-0",media:"video",operations:["image_to_video","lip_sync"],dialect:"natural"},{id:"kie:vidu-q4/image-to-video",media:"video",operations:["image_to_video"],dialect:"natural_kinds"},{id:"kie:vidu-q4/reference-to-video",media:"video",operations:["reference_to_video"],dialect:"natural_kinds"},{id:"kie:pixverse-v6-max/text-to-video",media:"video",operations:["text_to_video"],defaults:{quality:"1080p"}},{id:"kie:pixverse-v6-max/image-to-video",media:"video",operations:["image_to_video"],dialect:"strip_frames",defaults:{quality:"1080p"}},{id:"kie:veo3",media:"video",operations:["text_to_video","image_to_video"],title:"Veo 3 (Kie)"},{id:"kie:veo3_fast",media:"video",operations:["text_to_video","image_to_video"],title:"Veo 3 Fast (Kie)"},{id:"xai:grok-imagine-video",media:"video",operations:["text_to_video","image_to_video","reference_to_video","edit_video"],guide:"grok_imagine",title:"Grok Imagine Video (xAI)",dialect:"natural",refs:{first_frame:"image",audio:null},modes:qd},{id:"fal:xai/grok-imagine-video/image-to-video",media:"video",operations:["image_to_video"],guide:"grok_imagine",hidden:!0},{id:"fal:xai/grok-imagine-video/reference-to-video",media:"video",operations:["reference_to_video"],guide:"grok_imagine",hidden:!0},{id:"fal:xai/grok-imagine-video/extend-video",media:"video",operations:["extend_video"],hidden:!0},{id:"fal:xai/grok-imagine-video/edit-video",media:"video",operations:["edit_video"],guide:"grok_imagine",hidden:!0},{id:"fal:xai/grok-imagine-video/v1.5/lite/image-to-video",media:"video",operations:["image_to_video"]},{id:"fal:xai/grok-imagine-video/v1.5/lite/text-to-video",media:"video",operations:["text_to_video"]},{id:"fal:alibaba/wan-3.0/text-to-video",media:"video",operations:["text_to_video"],hidden:!0},{id:"fal:alibaba/wan-3.0/image-to-video",media:"video",operations:["image_to_video"],hidden:!0},{id:"fal:alibaba/wan-3.0/reference-to-video",media:"video",operations:["reference_to_video"],hidden:!0},{id:"fal:alibaba/wan-3.0-prime/text-to-video",media:"video",operations:["text_to_video"],hidden:!0},{id:"fal:alibaba/wan-3.0-prime/image-to-video",media:"video",operations:["image_to_video"],hidden:!0},{id:"fal:alibaba/wan-3.0-prime/reference-to-video",media:"video",operations:["reference_to_video"],hidden:!0},{id:"fal:kling/v4/text-to-video",media:"video",operations:["text_to_video"],dialect:"seedance"},{id:"fal:kling/v4/image-to-video",media:"video",operations:["image_to_video"],dialect:"seedance",modes:rt},{id:"fal:kling/v4/reference-to-video",media:"video",operations:["reference_to_video"],dialect:"seedance"},{id:"fal:kling/v4/video-to-video/edit",media:"video",operations:["edit_video"],dialect:"seedance"},{id:"fal:heygen/heygen-video/text-to-video",media:"video",operations:["text_to_video"],dialect:"natural"},{id:"fal:heygen/heygen-video/image-to-video",media:"video",operations:["image_to_video"],dialect:"strip_frames",refs:{first_frame:"image_url"}},{id:"fal:heygen/heygen-video/reference-to-video",media:"video",operations:["reference_to_video"],dialect:"natural",modes:[{id:"r2v",label:"References",roles:["image","video","audio"],requireAny:["image","video"]}]},...[3,4].map(e=>({id:`fal:fal-ai/heygen/avatar${e}/digital-twin`,media:"video",operations:["text_to_video"],dialect:"plain",prompt:"voice.prompt",defaults:{character:{avatar:"Abigail Office Front"},voice:{voice:"Ivy"}},aliases:{avatar:"character.avatar",avatar_style:"character.avatar_style",voice:"voice.voice",voice_id:"voice.voice_id",speed:"voice.speed"}})),{id:"fal:fal-ai/heygen/avatar5/digital-twin",media:"video",operations:["text_to_video"],dialect:"plain"},{id:"fal:fal-ai/heygen/avatar4/image-to-video",media:"video",operations:["image_to_video"],dialect:"plain",defaults:{voice:"Ivy"}},{id:"fal:fal-ai/heygen/v2/video-agent",media:"video",operations:["text_to_video"],dialect:"plain"},{id:"fal:fal-ai/heygen/v3/video-agent",media:"video",operations:["text_to_video"],dialect:"plain"},{id:"fal:blackforestlabs/flux-3-max/text-to-video",media:"video",operations:["text_to_video"],title:"FLUX 3 Max",defaults:Cn},{id:"fal:blackforestlabs/flux-3-max/image-to-video",media:"video",operations:["image_to_video"],title:"FLUX 3 Max Image",refs:{first_frame:"image_url"},modes:rt,defaults:Cn},{id:"fal:blackforestlabs/flux-3-max/keyframes-to-video",media:"video",operations:["image_to_video"],title:"FLUX 3 Max Keyframes",refs:{image:"keyframes"},keyframeFps:24,defaults:Cn},{id:"fal:minimax/h3-max/reframe-video",media:"video",operations:["edit_video"]},{id:"fal:minimax/h3-max/insert-video",media:"video",operations:["edit_video"],refs:{video:["video_url","reference_video_urls"]}},{id:"fal:minimax/h3-max/recast",media:"video",operations:["edit_video"]},{id:"fal:minimax/h3-max-turbo/extend-video",media:"video",operations:["extend_video"]},{id:"fal:minimax/h3-max/relight",media:"video",operations:["edit_video"]},ct("16bit-pixel"),ct("hand-drawn"),ct("low-poly"),ct("retro-toon-70s"),ct("vhs"),{id:"fal:bytedance/seedance-2.5/us/text-to-video",media:"video",operations:["text_to_video"],guide:"seedance25",dialect:"seedance",hidden:!0},{id:"fal:bytedance/seedance-2.5/us/image-to-video",media:"video",operations:["image_to_video"],guide:"seedance25",dialect:"seedance",refs:{first_frame:"image_url"},modes:rt,hidden:!0},{id:"fal:bytedance/seedance-2.5/us/reference-to-video",media:"video",operations:["reference_to_video","edit_video","extend_video"],guide:"seedance25",dialect:"seedance",modes:Gd,hidden:!0},{id:"fal:bytedance/seedance-2.5/draft/complete",media:"video",operations:["upscale_video"],title:"Seedance 2.5 Draft Complete",hidden:!0},{id:"fal:bytedance/seedance-2.0/us/text-to-video",media:"video",operations:["text_to_video"],guide:"seedance2",dialect:"seedance"},{id:"fal:bytedance/seedance-2.0/us/image-to-video",media:"video",operations:["image_to_video"],guide:"seedance2",dialect:"seedance",refs:{first_frame:"image_url"},modes:rt},{id:"fal:bytedance/seedance-2.0/us/reference-to-video",media:"video",operations:["reference_to_video"],guide:"seedance2",dialect:"seedance",modes:[{id:"r2v",label:"References",roles:["image","video","audio"],requireAny:["image","video"]}]},{id:"fal:fal-ai/kling-video/o3/standard/image-to-video",media:"video",operations:["image_to_video"],guide:"kling30",dialect:"strip_frames",refs:{first_frame:"image_url"},modes:rt},{id:"fal:fal-ai/kandinsky6-pro/text-to-video",media:"video",operations:["text_to_video"]},{id:"fal:fal-ai/kandinsky6-pro/image-to-video",media:"video",operations:["image_to_video"],dialect:"strip_frames"},{id:"fal:fal-ai/kandinsky6-lite/text-to-video",media:"video",operations:["text_to_video"]},{id:"fal:fal-ai/kandinsky6-lite/image-to-video",media:"video",operations:["image_to_video"],dialect:"strip_frames"},{id:"fal:fal-ai/kandinsky6-vsr",media:"video",operations:["upscale_video"]},{id:"fal:fal-ai/kandinsky6-vsr/lite",media:"video",operations:["upscale_video"]},{id:"fal:fal-ai/vidu/q4/image-to-video",media:"video",operations:["image_to_video"],dialect:"natural_kinds",hidden:!0},{id:"fal:fal-ai/vidu/q4/reference-to-video",media:"video",operations:["reference_to_video"],dialect:"vidu",hidden:!0},{id:"fal:pixverse/music-video/vibemv",media:"video",operations:["reference_to_video"],refs:{image:["image_url","style_image_url"]}},{id:"fal:pixelcut/looping-video",media:"video",operations:["image_to_video"],dialect:"strip_frames"},{id:"fal:creatify/boreal",media:"video",operations:["text_to_video","image_to_video","lip_sync"]},{id:"fal:mirelo-ai/sfx2.0/video-to-video",media:"video",operations:["edit_video"],prompt:"text_prompt",defaults:{num_samples:1}},{id:"machgen:MiniMax-H3",media:"video",operations:at,title:"MiniMax H3 (MachGen)",dialect:"natural_strip_frames",modes:st({...it,requireAny:["first_frame","last_frame"]},Dt),rules:Vt(15)},{id:"machgen:Seedance-2.5",media:"video",operations:at,title:"Seedance 2.5 (MachGen)",guide:"seedance25",dialect:"natural_strip_frames",modes:st(it,Dt),frameOptions:{aspect_ratio:"adaptive"},rules:Vt(30)},{id:"machgen:Seedance-2.0",media:"video",operations:at,title:"Seedance 2.0 (MachGen)",guide:"seedance2",dialect:"natural_strip_frames",modes:st(it,Dt,["image","video"]),rules:Vt(15)},{id:"machgen:Alibaba-Wan-3.0",media:"video",operations:at,title:"Wan 3.0 (MachGen)",dialect:"natural_strip_frames",modes:st(it,Dt),rules:Vt(15)},{id:"machgen:HappyHorse-1.1",media:"video",operations:at,title:"HappyHorse 1.1 (MachGen)",dialect:"natural_strip_frames",modes:st({...it,roles:["first_frame"]},["image"])},{id:"machgen:Grok-Imagine-Video-1.5",media:"video",operations:["image_to_video"],title:"Grok Imagine Video 1.5 (MachGen)",guide:"grok_imagine",dialect:"natural_strip_frames"},{id:"elevenlabs:text-to-speech",media:"audio",operations:["speech"],title:"ElevenLabs Text to Speech",defaults:{model_id:"eleven_multilingual_v2"}},{id:"elevenlabs:sound-generation",media:"audio",operations:["sfx"],title:"ElevenLabs Sound Effects"},{id:"elevenlabs:music",media:"audio",operations:["music"],title:"ElevenLabs Music",defaults:{force_instrumental:!0}},{id:"elevenlabs:video-to-music",media:"audio",operations:["video_to_music"],title:"ElevenLabs Video to Music"},{id:"kie:elevenlabs/sound-effect-v2",media:"audio",operations:["sfx"]},br("kie:elevenlabs/text-to-speech-multilingual-v2","ElevenLabs Multilingual v2 (Kie)"),br("kie:elevenlabs/text-to-speech-turbo-2-5","ElevenLabs Turbo 2.5 (Kie)"),{id:"kie:elevenlabs/text-to-dialogue-v3",media:"audio",operations:["dialogue"],title:"ElevenLabs v3 Dialogue (Kie)",prompt:"dialogue.0.text",aliases:{voice:"dialogue.0.voice"},defaults:{dialogue:[{voice:"Rachel"}]}},gr("kie:google/gemini-2-5-pro-tts","Gemini 2.5 Pro TTS (Kie)"),gr("kie:google/gemini-3-1-flash-tts","Gemini 3.1 Flash TTS (Kie)"),hr("kie:google/gemini-3-8-flash-tts","Gemini 3.8 Flash TTS (Kie)"),hr("kie:google/gemini-3-8-flash-lite-tts","Gemini 3.8 Flash Lite TTS (Kie)"),{id:"kie:suno/generate",media:"audio",operations:["music"],title:"Suno (Kie)",defaults:{model:"V5_5",instrumental:!0,customMode:!1}},{id:"kie:suno/sounds-generate",media:"audio",operations:["sfx"],title:"Suno Sounds (Kie)",defaults:{model:"V5_5"}},{id:"fal:elevenlabs/music/v2.5",media:"audio",operations:["music"],defaults:{force_instrumental:!0,output_format:"mp3_48000_192"}},{id:"fal:minimax/music-3",media:"audio",operations:["music"],defaults:{lyrics:"[Instrumental]"}},{id:"fal:elevenlabs/tts/eleven-v4",media:"audio",operations:["speech"],defaults:{voice:"Rachel",output_format:"mp3_44100_128"}},{id:"fal:elevenlabs/tts/eleven-v4-turbo",media:"audio",operations:["speech"],defaults:{voice:"Rachel",output_format:"mp3_44100_128"}},{id:"fal:google/gemini-3.8-flash-tts",media:"audio",operations:["speech"],defaults:{voice:"Kore"}},{id:"fal:google/gemini-3.8-flash-lite-tts",media:"audio",operations:["speech"],defaults:{voice:"Kore"}},{id:"fal:alibaba/qwen-audio-3-tts",media:"audio",operations:["speech"],defaults:{voice:"Cherry",language:"Auto"}},{id:"fal:fal-ai/bytedance/seed-speech/tts/v2",media:"audio",operations:["speech"],defaults:{output_format:"mp3"}}],Bd=new Map(Ud.map(e=>[e.id,e]));function Hd(e){return Bd.get(e)}const dw="Frame mode follows the first image’s aspect ratio (adaptive).";function Wd(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;const t=e;return[t.first_frame,t.last_frame].some(n=>typeof n=="string"&&n.trim()!==""||Array.isArray(n)&&n.some(o=>typeof o=="string"&&o.trim()!==""))}function ds(e,t){const n=Hd(e)?.frameOptions?.aspect_ratio;if(typeof n!="string")return;const o=t.generationMode??t.mode;if(o!=="r2v")return o==="i2v"||Wd(t.refs)?n:void 0}const Kd=200,zd={chat:"chat",image_rewrite:"image rewrite",video_rewrite:"video rewrite",script_rewrite:"script rewrite",post:"post",image_generate:"image",video_generate:"video",audio_generate:"audio"};function Xd(e){const t=h(e),o=(Array.isArray(t?.content)?t.content:[]).map(h).find(r=>r?.type==="text");return typeof o?.text=="string"?o.text:null}function Yd(e){const t=Xd(e);if(!t)return e;try{return JSON.parse(t)}catch{return null}}function Jd(e){const t=h(e);return typeof t?.model=="string"&&t.model?t.model:typeof t?.tool=="string"&&t.tool?t.tool:""}function Zd(e){const t=h(e);return!t||typeof t.prompt!="string"||!t.prompt.trim()?[]:[{id:String(t.id??""),surface:typeof t.surface=="string"?t.surface:"",prompt:t.prompt,book:typeof t.book=="string"?t.book:"",model:Jd(t.params),createdAt:typeof t.created_at=="number"?t.created_at:0}]}function Qd(e){const t=h(Yd(e));return(Array.isArray(t?.entries)?t.entries:[]).flatMap(Zd)}function ef(e){const t=new Set;return e.filter(n=>{const o=n.prompt.trim();return t.has(o)?!1:(t.add(o),!0)})}function fw(e,t){const n=t.trim().toLowerCase();return n?e.filter(o=>o.prompt.toLowerCase().includes(n)):[...e]}function mw(e,t){const n=e.filter(r=>t.has(r.prompt)),o=e.filter(r=>!t.has(r.prompt));return[...n,...o]}function tf(e){return{book_id:e.bookId,scope:e.scope,limit:Kd,...e.surfaceFilter==="surface"?{surface:e.surface}:{}}}function pw(e){return zd[e]??e.replaceAll("_"," ")}function nf(e){return e<1e12?e*1e3:e}function gw(e,t){if(!e)return"";const n=Math.max(0,Math.floor((t-nf(e))/6e4));if(n<1)return"just now";if(n<60)return`${n}m ago`;const o=Math.floor(n/60);if(o<24)return`${o}h ago`;const r=Math.floor(o/24);return r===1?"yesterday":`${r}d ago`}function fs(e,t){return e.cells.find(n=>n.slot.row===t.row&&n.slot.column===t.column)}function Z(e){return ue(e.slot)}function ms(e){const t=co(e).map(n=>n.reference);return[...new Set(t)]}function xo(e,t){const n=ke(t),o=ri(n);if(o){const a=fs(e,o);if(!a)throw new Error(`Notebook cell ${ue(o)} is empty`);return a}const r=e.cells.find(a=>a.id.toLowerCase()===n),i=r?[]:e.cells.filter(a=>a.id.toLowerCase().startsWith(n));if(i.length>1)throw new Error(`Cell reference @${n} is ambiguous`);const s=r??i[0];if(!s)throw new Error(`Notebook cell @${n} was not found`);return s}function ps(e){return ms(e)}function Ao(e){return e.type==="image"||e.type==="generate_image"?"image":e.type==="video"||e.type==="split_video"||e.type==="generate_video"||e.type==="concat"||e.type==="splice"?"video":e.type==="audio"||e.type==="extract_audio"||e.type==="generate_audio"?"audio":null}function of(e,t){return t==="first_frame"||t==="last_frame"||e==="audio"&&t==="replace_audio"?t:e}function gs(e){const t=new Map;return e.map(n=>{const o=(t.get(n.target)??0)+1;return t.set(n.target,o),o===1?n.target:`${n.target}_${o}`})}function hs(e){const t=e.map(s=>({kind:s.kind,target:s.kind})),n=["first_frame","last_frame"],o=e.map((s,a)=>({kind:s.kind,target:s.kind==="image"?n[a]??"image":s.kind})),r=e.map(s=>({kind:s.kind,target:s.kind==="audio"?"replace_audio":s.kind})),i=[t,o,r];return i.filter((s,a)=>i.findIndex(c=>JSON.stringify(c)===JSON.stringify(s))===a)}function bs(e){const t=e.preferredModel?So(e.actions,e.cellType).find(o=>o.model===e.preferredModel):void 0;if(t&&gn(t,e.connectedInputs))return t;const n=Vd({type:e.cellType},e.actions,e.connectedInputs);return n?cs(e.actions,e.cellType,n):null}function rf(e,t){if(!t)return{};const n=t.options&&typeof t.options=="object"&&!Array.isArray(t.options)?t.options:{};return Object.fromEntries(e.controls.flatMap(o=>{const r=n[o.name]??t[o.name];return typeof r=="string"||typeof r=="number"||typeof r=="boolean"?[[o.name,r]]:[]}))}function hw(e){return ps(e)}function yr(e){return typeof e=="string"?[e]:Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function bw(e){const n=[...e.refs&&typeof e.refs=="object"&&!Array.isArray(e.refs)?Object.values(e.refs).flatMap(yr):[],...Object.entries(e).flatMap(([o,r])=>/(?:^|_)(?:ref|refs)$/u.test(o)?yr(r):[])];return ps(n.map(o=>o.startsWith("@")?o:`@${o}`).join(" "))}function yw(e,t,n){const o=n.find(i=>i.tool===e);if(o?.cellTypes[0])return o.cellTypes[0];const r=`${t} ${e}`.toLowerCase();return/audio|music|speech|t2a|voice/iu.test(r)?"generate_audio":/image|photo|picture|qart|qr/iu.test(r)?"generate_image":"generate_video"}function ys(e,t){const n=Ao(t);if(!n)throw new Error(`${Z(t)} is not a media-producing cell`);if(!Fe(e,t))throw new Error(`${Z(t)} does not have media output yet`);return{cell:t,kind:n}}function sf(e,t){return t.map(n=>ys(e,xo(e,n)))}function _w(e,t=[],n){const o=new Set(t);return e.cells.flatMap(r=>{if(o.has(r.id))return[];if(n&&ot(e.cells,e.edges,r.id,n)===null)return[];const i=Ao(r);return!i||!Fe(e,r)?[]:[{cell:r,kind:i}]})}function vw(e){const t=sf(e.document,e.command.sourceReferences),n=t.find(p=>ot(e.document.cells,e.document.edges,p.cell.id,e.cellId)===null);if(n)throw new Error(`Connecting ${Z(n.cell)} would create a cycle`);let o=null,r=[];for(const p of hs(t)){const g=bs({actions:e.actions,cellType:e.command.cellType,connectedInputs:p,...e.preferredModel?{preferredModel:e.preferredModel}:{}});if(g){o=g,r=p;break}}if(!o)throw new Error(`No available ${e.command.mediaKind} generation action accepts these references`);const i=Io(o),s=Tt(o,r)[0],a=rf(o,e.routedParams),c={...s?{generationMode:s.id}:{},...Object.keys(a).length>0?{generationSettings:a}:{}},l=t.map(p=>p.cell.slot),u=e.lastWorkSlot??null,m=e.command.cellType==="generate_video"?yo(e.document.cells,l,u):e.command.cellType==="generate_image"||e.command.cellType==="generate_audio"?mn(e.document.cells,l,u):e.fallbackSlot,f={id:e.cellId,type:e.command.cellType,slot:m,prompt:e.command.prompt,...i,...Object.keys(c).length>0?{inputs:c}:{}},d=gs(r);return{action:o,cell:f,connections:t.map((p,g)=>({sourceCellId:p.cell.id,targetInput:d[g]??p.kind})),sourceCellIds:t.map(p=>p.cell.id),sourceAddresses:t.map(p=>Z(p.cell))}}function kw(e,t){const n=new Set(e.sourceCellIds);for(const o of ms(e.cell.prompt??"")){const r=xo(t,o);if(!n.has(r.id))throw new Error(`@${o} is referenced but not connected`)}}function af(e,t){const n=e.connections.map(r=>({source:r.sourceCellId,target:e.cell.id,targetInput:r.targetInput})),o=new Map(gd(e.cell.id,t.cells,n,x(e.cell.inputs?.generationMode)??void 0).map(r=>[r.sourceCellId,r.token]));return oi(e.cell.prompt??"",t.cells.flatMap(r=>{const i=o.get(r.id);return i?[{reference:It(r.slot),replacement:`@${i}`}]:[]}))}function ww(e,t){return e.connections.flatMap(n=>{const o=t.cells.find(i=>i.id===n.sourceCellId),r=o?Ao(o):null;return r?[{kind:r,target:of(r,n.targetInput)}]:[]})}function Eo(e){const t=h(e.cell.inputs),n=h(t?.generationSettings),o=Object.fromEntries(Object.entries(n??{}).flatMap(([i,s])=>typeof s=="string"||typeof s=="number"||typeof s=="boolean"?[[i,s]]:[]));if(us(e.action.model,t?.generationMode))return{...o,aspect_ratio:"adaptive",duration:-1};const r=ds(e.action.model,t??{});return r?{...o,aspect_ratio:r}:o}function Sw(e,t){return{...e,cell:{...e.cell,prompt:t}}}function Iw(e,t,n){if(!t.cellTypes.includes(e.cell.type)||!gn(t,n))throw new Error("The selected generation model does not accept these inputs");const o=Tt(t,n),r=h(e.cell.inputs)??{},i=x(r.generationMode),s=o.find(l=>l.id===i)??o[0];if(!s)throw new Error("The selected generation model does not have a compatible mode");const a=Eo(e),c=Object.fromEntries(t.controls.flatMap(l=>{const u=a[l.name];return u===void 0?[]:[[l.name,u]]}));return{...e,action:t,cell:{...e.cell,...Io(t),inputs:{...r,generationMode:s.id,generationSettings:c}}}}function xw(e,t,n){const o=Tt(e.action,n).find(r=>r.id===t);if(!o)throw new Error("The selected generation type does not accept these inputs");return{...e,cell:{...e.cell,inputs:{...h(e.cell.inputs)??{},generationMode:o.id}}}}function Aw(e,t,n){if(!e.action.controls.some(r=>r.name===t))throw new Error(`The selected generation model does not support ${t}`);const o=Eo(e);return n===void 0?delete o[t]:o[t]=n,{...e,cell:{...e.cell,inputs:{...h(e.cell.inputs)??{},generationSettings:o}}}}function Ew(e){const t=e.draft.cell.type,n=[...new Set(e.sourceCellIds)].map(d=>{const p=e.document.cells.find(g=>g.id===d);if(!p)throw new Error("The selected source cell is no longer available");if(ot(e.document.cells,e.document.edges,p.id,e.draft.cell.id)===null)throw new Error(`Connecting ${Z(p)} to ${Z(e.draft.cell)} would create a cycle`);return ys(e.document,p)}),o=hs(n);let r=null,i=[];for(const d of o)if(gn(e.draft.action,d)){r=e.draft.action,i=d;break}if(!r)for(const d of o){const p=bs({actions:e.actions,cellType:t,connectedInputs:d});if(p){r=p,i=d;break}}if(!r){const d=t==="generate_audio"?"audio":t==="generate_image"?"image":"video";throw new Error(`No available ${d} generation action accepts these references`)}const s=Tt(r,i),a=h(e.draft.cell.inputs)??{},c=x(a.generationMode),l=s.find(d=>d.id===c)??s[0];if(!l)throw new Error("The selected generation model does not have a compatible mode");const u=Eo(e.draft),m=Object.fromEntries(r.controls.flatMap(d=>{const p=u[d.name];return p===void 0?[]:[[d.name,p]]})),f=gs(i);return{action:r,cell:{...e.draft.cell,...Io(r),inputs:{...a,generationMode:l.id,generationSettings:m}},connections:n.map((d,p)=>({sourceCellId:d.cell.id,targetInput:f[p]??d.kind})),sourceCellIds:n.map(d=>d.cell.id),sourceAddresses:n.map(d=>Z(d.cell))}}async function Cw(e){let t=!1;try{const n=h(await e.callTool("create_notebook_cell",{book_id:e.bookId,notebook_id:e.document.id,...e.expectedRevision?{expected_revision:e.expectedRevision}:{},cell:{id:e.draft.cell.id,type:e.draft.cell.type,slot:e.draft.cell.slot,prompt:af(e.draft,e.document),provider:e.draft.cell.provider,model:e.draft.cell.model,operation:e.draft.cell.operation,tool:e.draft.cell.tool,inputs:e.draft.cell.inputs}})),o=x(n?.id);if(!o||o!==e.draft.cell.id)throw new Error("The server did not preserve the planned generation cell");t=!0;for(const r of e.draft.connections)await e.callTool("connect_notebook_cells",{book_id:e.bookId,notebook_id:e.document.id,source_cell_id:r.sourceCellId,target_cell_id:o,target_input:r.targetInput});return{cellId:o,cellAddress:x(n?.address)??Z(e.draft.cell),sourceCellIds:e.draft.sourceCellIds,sourceAddresses:e.draft.sourceAddresses}}catch(n){throw t&&await e.callTool("delete_notebook_cell",{book_id:e.bookId,notebook_id:e.document.id,cell_id:e.draft.cell.id}).catch(()=>{}),n}}const cf=new Set(["","text","number","url","search","email","tel","date","time","datetime-local","password"]);function lf(e){return!e||e.tagName.toLowerCase()!=="input"?!1:cf.has((e.type??"").toLowerCase())}function Mw(e,t){return e.defaultPrevented?"none":e.key==="Escape"?t.busy?"none":"cancel":e.key!=="Enter"||e.altKey||t.busy?"none":e.metaKey||e.ctrlKey||lf(e.target)?"apply":"none"}const Tw={transcribing:!1,analyzing:!1,error:null};function Rw(e,t){return e.transcribing}function $w(e,t){return e==="transcript"?{transcribing:t}:{analyzing:t}}const Nw="GPT-4o Translation",Pw="ElevenLabs Transcript";function uf(e){return e==="timed"||e==="plain"||e==="silence"?e:null}function _r(e){return Array.isArray(e)?e.flatMap(t=>{const n=x(t);return n?[n]:[]}):[]}function _s(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.trunc(e):0}function df(e){return Array.isArray(e)?e.flatMap(t=>{const n=h(t);return!n||typeof n.text!="string"?[]:typeof n.start!="number"||!Number.isFinite(n.start)?[]:typeof n.end!="number"||!Number.isFinite(n.end)?[]:[{text:n.text,start:n.start,end:n.end}]}):[]}function Mn(e){const t=h(e),n=t&&uf(t.kind);return!t||!n?null:{kind:n,languageCode:x(t.language_code??t.languageCode),text:typeof t.text=="string"?t.text:"",wordCount:_s(t.word_count??t.wordCount),words:df(t.words)}}function ff(e){const t=h(e);if(!t)return null;if("elevenlabs"in t||"plain"in t){const o=Mn(t.elevenlabs),r=Mn(t.plain);return!o&&!r?null:{elevenlabs:o,plain:r}}const n=Mn(t);return n?n.kind==="plain"?{elevenlabs:null,plain:n}:{elevenlabs:n,plain:null}:null}function mf(e){const t=h(e);return t?{summary:typeof t.summary=="string"?t.summary:"",mood:x(t.mood),setting:x(t.setting),tags:_r(t.tags),subjects:_r(t.subjects),sceneCount:_s(t.scene_count??t.sceneCount)}:null}function We(e){return e==="video"||e==="audio"||e==="final"}function Ow(e){return!!(e&&e.kind!=="silence"&&e.text.trim())}function pf(e){if(e.kind==="silence")return"No dialog detected";const t=[e.kind==="timed"?"Word-timed":"Plain text",`${e.wordCount} ${e.wordCount===1?"word":"words"}`];return e.languageCode&&t.push(e.languageCode),t.join(" · ")}const gf=.4,hf=12;function bf(e){const t=[];let n=[];for(const o of e){const r=n.at(-1),i=r?o.start-r.end:0,s=r?/[.!?]$/.test(r.text.trim()):!1;if(n.length>0&&(i>gf||s||n.length>=hf)){const a=n.map(c=>c.text).join(" ").replace(/\s+/g," ").trim();a&&t.push({start:n[0].start,text:a}),n=[]}n.push(o)}if(n.length>0){const o=n.map(r=>r.text).join(" ").replace(/\s+/g," ").trim();o&&t.push({start:n[0].start,text:o})}return t}function yf(e){const t=Math.max(0,Math.floor(e)),n=Math.floor(t/60),o=t%60;return`${n}:${String(o).padStart(2,"0")}`}function _f(e){return bf(e).map(t=>`${yf(t.start)} ${t.text}`).join(`
|
|
14
|
+
`):null;return{key:`job:${e.id}`,providerTask:e.providerTask,source:{kind:"job",jobId:e.id},tone:o,band:ji(o),statusLabel:r,title:_o(e.type),detail:Cu(e),target:Eu(e,t),...Tu(e,n),errorCode:Ru(e),errorDetail:i,attempt:`${e.attempts}/${e.maxAttempts}`,timestamp:e.enqueuedAt,sortAt:e.finishedAt??e.startedAt??e.enqueuedAt,actions:Mu(e.state)}}function Ui(e){const t=e.plan.stages.find(n=>n.kind==="queued"&&n.jobType==="generation");return t?.kind==="queued"?t:null}function Nu(e,t){const n=[];return t&&e.status!=="continued"&&e.status!=="omitted"&&n.push("continue"),(e.status==="failed"||e.status==="awaiting-output"&&t)&&n.push("retry","switch","omit"),n}function Pu(e){const t=Ui(e),n=[];return t?.estimatedCostUsd!==void 0&&n.push(`est. $${t.estimatedCostUsd.toFixed(2)}`),e.outputArtifactId&&n.push(`output ${vo(e.outputArtifactId)}`),n.length>0?n.join(" · "):null}function Ou(e,t){const n=Pu(e);switch(e.status){case"awaiting-output":return{summary:t?"Output ready — review before inserting":"Waiting for generated media",note:n};case"failed":return{summary:e.error??"Generation failed",note:n};case"queued":return{summary:"Generation queued",note:n};case"continued":return{summary:"Generation complete",note:n};case"omitted":return{summary:"Left out of the sequence",note:e.outputArtifactId?`output kept as ${vo(e.outputArtifactId)}`:null};default:return{summary:"Generation finished",note:n}}}function Sn(e){const t=Date.parse(e);return Number.isFinite(t)?t:0}function Lu(e,t,n){return t?.type.startsWith("generate_")?_o(t.type):n?"Generate":e.plan.summary}function Fu(e,t,n){const o=n.some(c=>c.artifactId===e.outputArtifactId&&c.status==="ready"&&!!c.mediaUrl),r=Au(e.status,o),i=Ui(e),s=t.find(c=>c.id===e.cellId),a=i?[i.provider,i.model??i.tool].filter(c=>!!c).join(" · "):null;return{key:`plan:${e.planId}`,source:{kind:"plan",planId:e.planId},tone:r,band:ji(r),statusLabel:Gi(r),title:Lu(e,s,i),detail:a&&a.length>0?a:null,target:qi(s),...Ou(e,o),errorCode:null,errorDetail:e.error,attempt:"1/1",timestamp:Sn(e.createdAt),sortAt:Sn(e.updatedAt)||Sn(e.createdAt),duration:null,live:r==="running",actions:Nu(e,o)}}function Ik({jobs:e,plans:t,cells:n,assets:o=[],now:r}){return[...t.map(i=>Fu(i,n,o)),...e.map(i=>$u(i,n,r))]}function Du(e){return e.map((t,n)=>({...t,summary:n===0?"Next up":`${n} ahead in queue`}))}function Vu(e,t){switch(e){case"running":return[...t].sort((n,o)=>n.sortAt-o.sortAt);case"queued":return Du([...t].sort((n,o)=>n.timestamp-o.timestamp));default:return[...t].sort((n,o)=>o.sortAt-n.sortAt)}}function xk(e){return Iu.map(t=>({id:t,label:Su[t],rows:Vu(t,e.filter(n=>n.band===t))}))}function Ak(e){const t=i=>e.find(s=>s.id===i)?.rows.length??0,n=t("attention"),o=t("running")+t("queued"),r=t("finished");return{total:n+o+r,attention:n,active:o,finished:r}}function Ek(e,t){if(t==="all")return e.filter(o=>o.rows.length>0);const n=t==="attention"?["attention"]:t==="active"?["running","queued"]:["finished"];return e.filter(o=>n.includes(o.id)&&o.rows.length>0)}const Ae=[O.gap*.25,O.gap*.5,O.gap*.75],ju=[.25,.5,.75],Bi={sourceSide:"bottom",sourcePortIndex:1,targetSide:"top",targetPortIndex:1,sourceBusOffset:Ae[1],targetBusOffset:Ae[1],riverOffset:Ae[1],riverSide:"right",directRowGutter:!1,targetPrimary:!0};function Ct(e,t){return e.sourceRow-t.sourceRow||e.sourceColumn-t.sourceColumn||e.targetRow-t.targetRow||e.targetColumn-t.targetColumn||e.targetInput.localeCompare(t.targetInput)||e.id.localeCompare(t.id)}function ko(e,t){return t===1?1:t===2?e%2===0?0:2:e%Ae.length}function Hi(e,t){return Ae[ko(e,t)]}function Gu(e,t){const n=new Map;for(const r of e)for(const i of t(r)){const s=n.get(i)??new Map;s.set(r.id,r),n.set(i,s)}const o=new Map;for(const[r,i]of n){const s=[...i.values()].sort(Ct);o.set(r,new Map(s.map((a,c)=>[a.id,Hi(c,s.length)])))}return o}function Mt(e){return e.targetColumn<e.sourceColumn?"left":e.targetColumn>e.sourceColumn?"right":"bottom"}function qu(e){const t=new Map;for(const o of e){const r=`${o.sourceId}:${Mt(o)}`,i=t.get(r)??[];i.push(o),t.set(r,i)}const n=new Map;for(const o of t.values())o.sort(Ct),o.forEach((r,i)=>{n.set(r.id,ko(i,o.length))});return n}function Qt(e){return e.sourceColumn<e.targetColumn?"left":"top"}function Uu(e){const t=new Map;for(const o of e){const r=`${o.targetId}:${Qt(o)}`,i=t.get(r)??[];i.push(o),t.set(r,i)}const n=new Map;for(const o of t.values())o.sort(Ct),o.forEach((r,i)=>{n.set(r.id,ko(i,o.length))});return n}function Bu(e){const t=new Map;for(const o of e){const r=t.get(o.targetId)??[];r.push(o),t.set(o.targetId,r)}const n=new Set;for(const o of t.values()){o.sort(Ct);const r=o[0];r&&n.add(r.id)}return n}function Hu(e){const t=new Map;for(const o of e){if(Mt(o)!=="bottom")continue;const r=t.get(o.sourceId)??[];r.push(o),t.set(o.sourceId,r)}const n=new Map;for(const o of t.values())o.sort(Ct),o.forEach((r,i)=>{n.set(r.id,o.length===1||i%2===1?"right":"left")});return n}function Wi(e,t){const n=Mt(e);return n==="bottom"?t.get(e.id)??"right":n}function fr(e,t){return Wi(e,t)==="right"?e.sourceColumn:e.sourceColumn-1}function en(e){return e.targetRow===e.sourceRow+1&&e.targetColumn===e.sourceColumn}function Wu(e){const t=new Map,n=(i,s,a,c,l)=>{const u=t.get(i)??new Map,m=u.get(s)??{id:s,column:a,kind:c,candidates:[]};m.candidates.push(l),u.set(s,m),t.set(i,u)};for(const i of e)Mt(i)==="bottom"&&!en(i)&&n(i.sourceRow,`source:${i.id}`,i.sourceColumn,"source",i),Qt(i)==="top"&&n(i.targetRow-1,`target:${i.targetId}`,i.targetColumn,"target",i);const o=new Map,r=new Map;for(const i of t.values()){const s=[...i.values()].sort((a,c)=>a.column-c.column||a.kind.localeCompare(c.kind)||a.id.localeCompare(c.id));s.forEach((a,c)=>{const l=Hi(c,s.length);for(const u of a.candidates)a.kind==="source"?o.set(u.id,l):r.set(u.id,l)})}for(const i of e)en(i)&&o.set(i.id,r.get(i.id)??Ae[1]);return{source:o,target:r}}function Ku(e,t,n){return e.get(String(t))?.get(n)??Ae[1]}function Ki(e){const t=new Map(e.cells.map(u=>[u.id,u])),n=e.edges.flatMap(u=>{const m=t.get(u.source),f=t.get(u.target);return!m||!f?[]:[{id:u.id,sourceId:m.id,targetId:f.id,sourceRow:m.slot.row,sourceColumn:m.slot.column,targetRow:f.slot.row,targetColumn:f.slot.column,targetInput:u.targetInput}]}),o=qu(n),r=Uu(n),i=Bu(n),s=Hu(n),a=Wu(n),c=Gu(n.filter(u=>!en(u)),u=>[String(Qt(u)==="left"?u.targetColumn-1:fr(u,s))]),l=new Map;for(const u of n){const m=Wi(u,s),f=Qt(u),d=f==="left"?u.targetColumn-1:fr(u,s);l.set(u.id,{sourceSide:Mt(u),sourcePortIndex:o.get(u.id)??1,targetSide:f,targetPortIndex:r.get(u.id)??1,sourceBusOffset:a.source.get(u.id)??Ae[1],targetBusOffset:a.target.get(u.id)??Ae[1],riverOffset:Ku(c,d,u.id),riverSide:m,directRowGutter:en(u),targetPrimary:i.has(u.id)})}return l}function zu(e,t){const n=e.sourceBottomY+t.sourceBusOffset,o=e.targetTopY-O.gap+t.targetBusOffset,r=t.riverSide==="right"?e.sourceRightX+t.riverOffset:e.sourceLeftX-O.gap+t.riverOffset;if(t.targetSide==="left"){if(e.sourceY===e.targetY)return[{x:e.sourceX,y:e.sourceY},{x:e.targetX,y:e.targetY}];const i=e.targetLeftX-O.gap+t.riverOffset;return[{x:e.sourceX,y:e.sourceY},{x:i,y:e.sourceY},{x:i,y:e.targetY},{x:e.targetX,y:e.targetY}]}if(t.directRowGutter&&e.targetTopY>e.sourceBottomY){const i=e.targetTopY-e.sourceBottomY,s=e.sourceBottomY+i*(t.targetBusOffset/O.gap);return[{x:e.sourceX,y:e.sourceY},{x:e.sourceX,y:s},{x:e.targetX,y:s},{x:e.targetX,y:e.targetY}]}return t.sourceSide!=="bottom"?[{x:e.sourceX,y:e.sourceY},{x:r,y:e.sourceY},{x:r,y:o},{x:e.targetX,y:o},{x:e.targetX,y:e.targetY}]:[{x:e.sourceX,y:e.sourceY},{x:e.sourceX,y:n},{x:r,y:n},{x:r,y:o},{x:e.targetX,y:o},{x:e.targetX,y:e.targetY}]}const Xu=8;function In(e,t){return t.x===e.x?`V ${t.y}`:t.y===e.y?`H ${t.x}`:`L ${t.x} ${t.y}`}function Ck(e,t){const n=zu(e,t),o=[`M ${n[0].x} ${n[0].y}`];let r=n[0];for(let i=1;i<n.length-1;i+=1){const s=n[i],a=n[i+1],c=Math.hypot(s.x-r.x,s.y-r.y),l=Math.hypot(a.x-s.x,a.y-s.y),u=Math.min(Xu,c/2,l/2);if(u<1){o.push(In(r,s)),r=s;continue}const m={x:s.x-(s.x-r.x)/c*u,y:s.y-(s.y-r.y)/c*u},f={x:s.x+(a.x-s.x)/l*u,y:s.y+(a.y-s.y)/l*u};o.push(In(r,m),`Q ${s.x} ${s.y} ${f.x} ${f.y}`),r=f}return o.push(In(r,n[n.length-1])),o.join(" ")}function zi(e,t){return`route-${e}-${t%ju.length}`}function Mk(e){const t=ne.c(8),{bookId:n,notebook:o,ready:r,call:i}=e,[s,a]=_.useState(null),c=_.useRef(null),l=`${n}:${o?.id}`;let u;t[0]!==n||t[1]!==i||t[2]!==o||t[3]!==r?(u=(p,g,y)=>{const v=y===void 0?o:y,S=v?.cells.find(C=>C.id===p);if(!n||!v||!p||g===void 0&&(!S||!Et(S.type))){c.current=null,a(null);return}const w=`${n}:${v.id}`,k={scope:w,cellId:p};if(g!==void 0){c.current=null,a({...k,value:g,loading:!1,error:null});return}if(!S||!r)return;const I=JSON.stringify([w,S,v.edges.filter(C=>C.target===p)]);if(c.current?.key===I)return;const E={key:I};c.current=E,a({...k,value:null,loading:!0,error:null}),i("preview_notebook_generation",{book_id:n,notebook_id:v.id,cell_id:S.id},{background:!0}).then(C=>{c.current===E&&a({...k,value:C,loading:!1,error:null})}).catch(C=>{c.current===E&&(c.current=null,a({...k,value:null,loading:!1,error:C instanceof Error?C.message:String(C)}))})},t[0]=n,t[1]=i,t[2]=o,t[3]=r,t[4]=u):u=t[4];const m=u,f=s?.scope===l?s:null;let d;return t[5]!==m||t[6]!==f?(d={preview:f,select:m},t[5]=m,t[6]=f,t[7]=d):d=t[7],d}function Tk(e,t){const n=ne.c(11),o=_.useRef(null);let r;n[0]===Symbol.for("react.memo_cache_sentinel")?(r=()=>{o.current!==null&&clearTimeout(o.current),o.current=null},n[0]=r):r=n[0];const i=r;let s;n[1]===Symbol.for("react.memo_cache_sentinel")?(s=()=>i,n[1]=s):s=n[1];let a;n[2]!==t?(a=[i,t],n[2]=t,n[3]=a):a=n[3],_.useEffect(s,a);let c;n[4]!==e?(c=(...d)=>{const p=d;i(),o.current=setTimeout(()=>{o.current=null,e(...p)},350)},n[4]=e,n[5]=c):c=n[5];const l=c;let u;n[6]!==e?(u=(...d)=>{const p=d;i(),e(...p)},n[6]=e,n[7]=u):u=n[7];const m=u;let f;return n[8]!==m||n[9]!==l?(f={schedule:l,cancel:i,run:m},n[8]=m,n[9]=l,n[10]=f):f=n[10],f}const Yu=720;function Xi(e){return Math.abs(e)}function Ju(e,t){const n=[];for(let o=0;o<e.length;o+=t)n.push(Math.max(...e.slice(o,o+t).map(Xi)));return n}function Zu(e,t){const n=[];for(let o=0;o<t;o+=1){const r=Math.floor(o*e.length/t),i=Math.max(r+1,Math.floor((o+1)*e.length/t));n.push(Math.max(...e.slice(r,i).map(Xi)))}return n}function Rk(e){if(e.length===0)return"";const t=Math.max(1,Math.ceil(e.length/Yu)),n=Ju(e,t);return n.map((o,r)=>{const i=n.length===1?50:r/(n.length-1)*100,s=Math.max(2,Math.min(46,o*46));return`M${i.toFixed(3)} ${50-s}V${50+s}`}).join("")}function $k(e,t){const{width:n,height:o,pitch:r,minimumBarHeight:i}=t,s=Math.floor(n/r);if(e.length===0||s<1)return"";const a=Zu(e,s),c=Math.max(...a),l=o/2,u=o-i;return a.map((m,f)=>{const d=r*f+r/2,p=c>0?m/c:0,g=Math.max(i,p*u),y=l-g/2,v=l+g/2;return`M${d.toFixed(2)} ${y.toFixed(2)}V${v.toFixed(2)}`}).join("")}function Nk(e){const{width:t,height:n,pitch:o,minimumBarHeight:r}=e,i=Math.floor(t/o);if(i<1)return"";const s=n/2,a=(s-r/2).toFixed(2),c=(s+r/2).toFixed(2);return Array.from({length:i},(l,u)=>`M${(o*u+o/2).toFixed(2)} ${a}V${c}`).join("")}function Pk(e,t){return ra(e,t)}function Ok(e){if(e.value===null)return{kind:"null"};if(!e.column.endsWith("_json")||typeof e.value!="string")return{kind:"raw",value:e.value};try{return{kind:"json",value:JSON.parse(e.value)}}catch{return{kind:"raw",value:e.value}}}function Lk(e){const t=ne.c(3),[n,o]=_.useState(null);let r,i;return t[0]!==e?(r=()=>{if(!e)return;const s=Date.parse(e);if(!Number.isFinite(s))return;const a=()=>o(Math.max(0,Math.round((Date.now()-s)/1e3))),c=window.setTimeout(a,0),l=window.setInterval(a,1e3);return()=>{window.clearTimeout(c),window.clearInterval(l)}},i=[e],t[0]=e,t[1]=r,t[2]=i):(r=t[1],i=t[2]),_.useEffect(r,i),e?n:null}const Qu={image:9/16,video:16/9,audio:16/9},ed={image:"Image",video:"Video",audio:"Audio"};function ht(e){return e!=null&&Number.isFinite(e)&&e>0}function Fk(e){return e==="image"||e==="video"||e==="audio"?e:null}function Dk(e){return ed[e]}function Vk(e,t){return e!=="audio"&&t&&ht(t.width)&&ht(t.height)?t.width/t.height:Qu[e]}function Oe(e,t,n,o="plain"){return n===null?null:{key:e,term:t,value:n,emphasis:o}}function td(e){return ht(e.width)&&ht(e.height)?`${e.width} × ${e.height}`:null}function nd(e){return ht(e)?me(e):null}function jk(e,t,n,o){const r=Oe("address","Address",`@${t}`,"address");if(e==="audio"){const i=mo({audioInfo:n.audioInfo,durationSeconds:n.duration,hasOutput:!0,inputs:o});return[r,Oe("role","Role",i.role),Oe("duration","Duration",i.duration),Oe("format","Format",i.details.length>0?i.details.join(" · "):null)].filter(s=>s!==null)}return[r,Oe("dimensions","Dimensions",td(n)),Oe("aspect","Aspect",un(n.width,n.height)),e==="video"?Oe("duration","Duration",nd(n.duration)):null].filter(i=>i!==null)}async function Gk(e){e.onStarting?.();try{const t=await e.start();return e.onAccepted?.(),t}catch(t){throw e.onRejected?.(),t}}async function qk(e){return!e.valid||e.dirty&&await e.onUpdate(e.patch)===!1?!1:(await e.onRun(e.cellId),!0)}function xn(e){return e!==null&&Number.isFinite(e)&&e>0}function Uk(e,t){const n=new Map(t.map(r=>[r.artifactId,r])),o=new Map;for(const r of e){const i=r.outputArtifactId;if(!i)continue;const s=n.get(i);if(!s)continue;const a=o.get(i);(!a||a.type!==s.type&&r.type===s.type)&&o.set(i,r)}return[...o.entries()].map(([r,i])=>{const s=n.get(r),{id:a,...c}=s;return{...c,cellAddress:It(i.slot)}})}function Bk(e,t){return oi(e,t.map(n=>({reference:n.cellAddress,replacement:`@${n.artifactId}`})))}function od(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Yi(e,t){let n=e;for(const{token:o,replacement:r}of t){const i=ke(o);i&&(n=n.replace(new RegExp(`(?<![\\w./-])@?${od(i)}(?![\\w-])`,"giu"),r))}return n}function Hk(e,t){return Yi(e,t.map(n=>({token:n.artifactId,replacement:`@${n.cellAddress}`})))}function Wk(e,t,n){const o=new Map(n.flatMap(r=>r.outputArtifactId?[[r.outputArtifactId,r]]:[]));return Yi(e,t.flatMap(r=>{const i=o.get(r.artifactId);return i?[{token:r.artifactId,replacement:`@${It(i.slot)}`}]:[]}))}function Ji(e){const t=[e.type.toUpperCase()];xn(e.width)&&xn(e.height)&&t.push(`${e.width}×${e.height}`),xn(e.duration)&&t.push(me(e.duration));const n=e.status.trim().toLowerCase();return n&&n!=="ready"&&t.push(n.replaceAll("_"," ").toUpperCase()),t}function Zi(e){return e.thumbnailUrl??(e.type==="image"?e.mediaUrl:null)}function Wn(e){const t=e.toLowerCase();return t.includes("audio")?"audio":t.includes("image")?"image":t.includes("video")||t==="final"||t==="concat"||t==="splice"?"video":"other"}function rd(e,t,n=new Set){const o=an(t);if(o===void 0)return[];const r=t.slice(0,t.lastIndexOf("@")).trim(),i=/\b(?:generate|create|make)\s+(?:an?\s+)?(?:image|photo|picture)s?(?:\s+(?:of|from|using|with))?$/iu.test(r)?"image":null;return e.filter(s=>(!i||s.type.toLowerCase()===i)&&s.cellAddress.toLowerCase().includes(o)&&!n.has(`@${s.cellAddress}`)).sort((s,a)=>/^\s*\/goal\b/u.test(t)?+(a.type==="image")-+(s.type==="image"):0).slice(0,12).map(s=>({value:`@${s.cellAddress}`,label:`@${s.cellAddress}`,asset:s,type:"asset"}))}function id(e,t,n=new Set){const o=an(t);if(o===void 0)return[];const r=new Map(e.flatMap(s=>Ee(s).map(a=>[`${a.row}:${a.column}`,s]))),i=[];for(let s=0;s<de;s+=1)for(let a=0;a<X;a+=1){const c=ue({row:s,column:a});if(!c.slice(1).includes(o)||n.has(c))continue;const l=r.get(`${s}:${a}`);if(!(l?.type==="timeline"&&a!==l.slot.column)&&(i.push({value:c,label:c,description:l?`${l.type.replaceAll("_"," ").toUpperCase()} cell`:"Empty grid square",cellType:l?.type??null,empty:!l,type:"cell"}),i.length===12))return i}return i}const sd=8,ad=16;function Kk(e,t,n,o=new Set,r={}){const i=new Map(t.map(c=>[ue(c.slot),c.label?.trim()||null])),s=new Set,a=[];for(const c of rd(e,n,o))s.has(c.value)||(s.add(c.value),a.push({value:c.value,label:c.label,description:Ji(c.asset).join(" · "),caption:i.get(c.value)??null,thumbnailUrl:Zi(c.asset),mediaKind:Wn(c.asset.type),empty:!1}));for(const c of id(t,n,o))s.has(c.value)||(s.add(c.value),a.push({value:c.value,label:c.label,description:c.description,caption:i.get(c.value)??null,thumbnailUrl:null,mediaKind:c.cellType?Wn(c.cellType):null,empty:c.empty}));return[...a.filter(c=>!c.empty).sort((c,l)=>/^\s*\/goal\b/u.test(n)?+(l.mediaKind==="image")-+(c.mediaKind==="image"):0).slice(0,r.rows??sd),...a.filter(c=>c.empty).slice(0,r.empties??ad)]}function zk(e,t,n){const o=an(n);if(o===void 0)return[];const r=new Map(t.map(i=>[i.cellAddress,i]));return e.filter(({token:i})=>i.includes(o)).map(({token:i,cell:s})=>{const a=It(s.slot),c=r.get(a);return{value:`@${i}`,label:`@${i}`,description:[`@${a}`,...c?Ji(c):[s.type.replaceAll("_"," ").toUpperCase()]].join(" · "),caption:s.label?.trim()||null,thumbnailUrl:c?Zi(c):null,mediaKind:Wn(c?.type??s.type),empty:!1}})}const Qi={first_frame:"firstframe",last_frame:"lastframe"},cd=new Set(["replace_audio"]),ld=["image","video","audio"];function ud(e){return e==="image"||e==="generate_image"?"image":e==="audio"||e==="extract_audio"||e==="generate_audio"?"audio":e==="video"||e==="split_video"||e==="generate_video"||e==="concat"||e==="splice"?"video":null}function mr(e,t){if(e===t)return 1;const n=`${t}_`;if(!e.startsWith(n))return null;const o=e.slice(n.length);return/^\d+$/.test(o)?Number(o):null}function dd(e,t){return[...e].sort((n,o)=>{const r=mr(n.targetInput,t)??Number.MAX_SAFE_INTEGER,i=mr(o.targetInput,t)??Number.MAX_SAFE_INTEGER;return r-i})}function fd(e,t,n){const o=new Map(t.map(r=>[r.id,r]));return n.flatMap(r=>{if(r.target!==e)return[];const i=o.get(r.source),s=i?ud(i.type):null;return s?[{kind:s,sourceCellId:r.source,targetInput:r.targetInput}]:[]})}function md(e){return Object.entries(Qi).flatMap(([t,n])=>{const o=e.find(r=>r.kind==="image"&&r.targetInput===t);return o?[{...o,token:n}]:[]})}function pd(e,t,n){const o=e.filter(r=>r.kind===t&&!(n!=="r2v"&&t==="image"&&r.targetInput in Qi)&&!cd.has(r.targetInput));return dd(o,t).map((r,i)=>({...r,token:`${t}${i+1}`}))}function gd(e,t,n,o){const r=t.find(a=>a.id===e)?.inputs?.generationMode,i=o??r,s=fd(e,t,n);return[...i==="r2v"?[]:md(s),...ld.flatMap(a=>pd(s,a,typeof i=="string"?i:void 0))]}function Xk(e,t,n){const o=new Set([...t,...n].map(i=>i.token)),r=new Map(t.map(i=>{const s=n.find(l=>l.sourceCellId===i.sourceCellId&&l.targetInput===i.targetInput)??n.find(l=>l.targetInput===i.targetInput);if(s)return[i.token,s.token];if(!n.some(l=>l.token===i.token))return[i.token,i.token];let a=1;for(;o.has(`${i.kind}${a}`);)a+=1;const c=`${i.kind}${a}`;return o.add(c),[i.token,c]}));return e.replace(/@((?:image|video|audio)\d+|firstframe|lastframe)(?![\w-])/giu,(i,s)=>{const a=r.get(s.toLowerCase());return a&&a!==s.toLowerCase()?`@${a}`:i})}function es(e,t,n){return e==="r2v"&&t==="image"&&(n==="first_frame"||n==="last_frame")?"image":n}function hd(e,t){const n=t.map(i=>({...i,target:es(e.id,i.kind,i.target)}));if(e.id!=="i2v"||e.slots.some(i=>i.targets.includes("image")))return n;const o=e.slots.flatMap(i=>i.targets).filter(i=>i==="first_frame"||i==="last_frame").filter(i=>!t.some(s=>s.target===i));let r=0;return n.map(i=>{if(i.kind!=="image"||i.target!=="image")return i;const s=o[r++];return s?{...i,target:s}:i})}function Lt(e){return e==="replace_audio"?"replacement audio":e==="first_frame"?"first frame":e==="last_frame"?"last frame":`${e} reference`}function wo(e,t){const n=e.id==="default"||e.id==="text"?"this model":e.id.toUpperCase(),o=n==="this model"?"This model":n,r=new Map(e.slots.map(l=>[l.field,0])),i=hd(e,t).sort((l,u)=>+(u.target!==u.kind)-+(l.target!==l.kind));for(const l of i){const u=e.slots.filter(d=>d.kind===l.kind&&d.targets.includes(l.target));if(u.length===0)return`${o} does not accept ${Lt(l.target)} inputs. Change the type or remove that input.`;const f=u.filter(d=>d.max===null||(r.get(d.field)??0)<d.max).sort((d,p)=>{const g=+((r.get(d.field)??0)<d.min);return+((r.get(p.field)??0)<p.min)-g||d.targets.length-p.targets.length})[0];if(!f){const d=u.reduce((p,g)=>p+(g.max??0),0);return`${o} accepts at most ${d} ${Lt(l.target)} input${d===1?"":"s"}. Remove an input or change the model.`}r.set(f.field,(r.get(f.field)??0)+1)}const s=e.slots.find(l=>(r.get(l.field)??0)<l.min);if(s)return`Add at least ${s.min} ${Lt(s.targets[0]??s.kind)} input${s.min===1?"":"s"} for ${n}.`;const a=e.requiredGroups.find(l=>!l.some(u=>(r.get(u)??0)>0));return a?`Add at least one ${[...new Set(e.slots.filter(l=>a.includes(l.field)).flatMap(l=>l.targets).map(Lt))].join(" or ")} input for ${n}.`:null}const ts={duration:["duration"],aspect:["aspect_ratio","aspectRatio","image_size"],resolution:["resolution","output_resolution","size","mode"],quality:["quality"],bitrate:["bitrate_mode"]};function ns(e){const t=Object.entries(ts).find(([,n])=>n.includes(e));return t?t[0]:null}function Kn(e){if(typeof e=="number")return e;const t=/^(\d+(?:\.\d+)?)\s*(p|k|sq)?$/iu.exec(e.trim());if(!t)return null;const n=Number(t[1]);return t[2]?.toLowerCase()==="k"?n*1e3:n}function bd(e,t){const n=Kn(e),o=Kn(t);return n!==null&&n===o&&String(e).toLowerCase().replace(/p$/u,"")===String(t).toLowerCase().replace(/p$/u,"")}function yd(e,t){return e.find(n=>n===t)??e.find(n=>String(n).toLowerCase()===String(t).toLowerCase())??e.find(n=>typeof n!="boolean"&&typeof t!="boolean"&&bd(n,t))}function _d(e,t){if(e.options.length>0)return yd(e.options,t);if(e.valueType!=="number")return;const n=Number(t);if(Number.isFinite(n)&&!(e.minimum!==void 0&&n<e.minimum)&&!(e.maximum!==void 0&&n>e.maximum))return n}function os(e,t){return typeof t!="string"&&typeof t!="number"?!1:e!=="resolution"||Kn(t)!==null}function Yk(e){return Object.fromEntries(Object.entries(e).flatMap(([t,n])=>{const o=ns(t);return!o||!os(o,n)?[]:[[o,n]]}))}function vd(e){return Object.hasOwn(ts,e)}function kd(e){return Object.fromEntries(Object.entries(e).flatMap(([t,n])=>vd(t)&&os(t,n)?[[t,n]]:[]))}function Jk(e,t){return Object.fromEntries(e.flatMap(n=>{const o=ns(n.name),r=o?t[o]:void 0,i=r===void 0?void 0:_d(n,r);return i===void 0?[]:[[n.name,i]]}))}function wd(e){const t=h(e),n=h(t?.mentions),o=Array.isArray(n?.prompt_leaks)?n.prompt_leaks.flatMap(i=>{const s=h(i),a=x(s?.token),c=x(s?.code),l=x(s?.message);return a&&c&&l?[{token:a,code:c,message:l}]:[]}):[],r=Array.isArray(n?.url_placeholders)?n.url_placeholders.flatMap(i=>{const s=h(i),a=x(s?.path),c=x(s?.reference),l=x(s?.url);return a&&c&&l?[{path:a,reference:c,url:l}]:[]}):[];return{promptLeaks:o,urlPlaceholders:r}}function Zk(e){const t=wd(e).promptLeaks;return t.length===0?null:`Fix prompt references before generating: ${t.map(o=>o.message).join("; ")}`}function Sd(e){return e.length>0&&e.every(t=>t.includes("historical average per call"))}function Qk(e){const t=h(h(e)?.estimate),n=Array.isArray(t?.warnings)?t.warnings.filter(r=>typeof r=="string"):[],o=Sd(n);return{usd:typeof t?.usd=="number"?t.usd:null,currency:typeof t?.currency=="string"?t.currency:"USD",warnings:n,unknown:!o&&n.some(r=>/not found|unavailable|no cost adapter|unknown/iu.test(r))}}const rs=["t2i","i2i","t2v","i2v","r2v","v2v"];function is(e){return Array.isArray(e)?e.filter(t=>{if(!t||typeof t!="object")return!1;const n=t;return rs.some(o=>o===n.type)&&typeof n.rank=="number"&&Number.isFinite(n.rank)&&n.rank>0&&typeof n.elo=="number"&&Number.isFinite(n.elo)&&typeof n.priceLabel=="string"&&typeof n.sourceUrl=="string"&&typeof n.capturedOn=="string"}):[]}function Id(e,t,n,o){const r=rs.find(s=>s===t);if(r)return r;if(t==="v2v_refs")return"v2v";if(e==="generate_image")return n==="layer_image"?null:o.some(a=>a.type==="image"||a.type==="generate_image")||n==="edit_image"||n==="image_to_image"?"i2i":"t2i";if(e!=="generate_video")return null;const i={text_to_video:"t2v",image_to_video:"i2v",reference_to_video:"r2v",edit_video:"v2v"};return i[n]?n!=="text_to_video"?i[n]:o.some(s=>s.targetInput==="first_frame"||s.targetInput==="last_frame")?"i2v":o.some(s=>s.type==="video"||s.type==="generate_video")?"v2v":o.some(s=>s.type==="image"||s.type==="generate_image")?"r2v":i[n]:null}function xd(e,t){const n=e.map(s=>({action:s,ranking:t?s.frontier?.find(a=>a.type===t):void 0})),o=n.filter(s=>s.ranking&&s.action.available!==!1).sort((s,a)=>s.ranking.rank-a.ranking.rank),r=n.filter(s=>!s.ranking&&s.action.available!==!1),i=n.filter(s=>s.action.available===!1);return[{label:"Frontier models",rows:o},{label:o.length?"Other models":"Models",rows:r},{label:"Unavailable · provider not configured",rows:i}].filter(s=>s.rows.length>0)}function ew(e,t,n){const o=n.refs&&typeof n.refs=="object"?n.refs:{},r=Object.entries(o).filter(([,a])=>!!a&&(!Array.isArray(a)||a.length>0)).map(([a])=>({type:a==="first_frame"||a==="last_frame"?"image":a,targetInput:a})),i=typeof n.operation=="string"?n.operation:t==="image"?"text_to_image":"text_to_video",s=Id(`generate_${t}`,typeof n.mode=="string"?n.mode:"",i,r);return xd(e,s).flatMap(a=>a.rows.map(({action:c,ranking:l})=>({...c,group:a.label,label:`${l?`#${l.rank} · `:""}${c.label}`,detail:[c.detail,l?`Elo ${l.elo} · ${l.priceLabel}`:"",c.available===!1?"unavailable":""].filter(Boolean).join(" · ")})))}function An(e,t,n){if(t===n)return!0;const o=new Map;for(const s of e){const a=o.get(s.source)??[];a.push(s.target),o.set(s.source,a)}const r=new Set,i=[n];for(;i.length>0;){const s=i.pop();if(!(!s||r.has(s))){if(s===t)return!0;r.add(s),i.push(...o.get(s)??[])}}return!1}function ot(e,t,n,o){if(!An(t,n,o))return t;const r=e.find(s=>s.id===n);if(n===o||r?.type!=="image"||!r.outputArtifactId)return null;const i=t.filter(s=>s.target!==n||!An(t,s.source,o));return An(i,n,o)?null:i}function tw(e,t,n=[]){const o=t.source,r=t.target;return!o||!r?!1:ot(n,e,o,r)!==null}function nw(e,t,n){return new Set(e.filter(o=>ot(e,t,o.id,n)===null).map(o=>ue(o.slot)))}function ss(e,t){return t[e.name]??e.defaultValue}function ow(e,t){return Object.fromEntries(e.flatMap(n=>{const o=ss(n,t);return o===void 0?[]:[[n.name,o]]}))}function Ad(e,t){return e.minimum===void 0?!1:e.exclusiveMinimum?t<=e.minimum:t<e.minimum}function Ed(e,t){return e.maximum===void 0?!1:e.exclusiveMaximum?t>=e.maximum:t>e.maximum}function Cd(e,t){const n=ss(e,t);return n===void 0||n===""?e.required?`${e.label}: Required`:null:e.options.length>0&&!e.options.some(o=>o===n)?`${e.label}: Choose one of the listed values`:e.valueType==="number"?typeof n!="number"||!Number.isFinite(n)?`${e.label}: Enter a number`:Ad(e,n)?e.exclusiveMinimum?`${e.label}: Must be greater than ${e.minimum}`:`${e.label}: Must be at least ${e.minimum}`:Ed(e,n)?e.exclusiveMaximum?`${e.label}: Must be less than ${e.maximum}`:`${e.label}: Must be at most ${e.maximum}`:null:typeof n===e.valueType?null:`${e.label}: Required`}function rw(e,t){const n=e.flatMap(o=>{const r=Cd(o,t);return r?[r]:[]});return n.length>0?n.join("; "):null}function bt(e){return typeof e=="number"&&Number.isFinite(e)?e:null}function Md(e){return e==="image"||e==="video"||e==="audio"?e:null}function as(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function pr(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"?e:void 0}function Td(e){const t=h(e),n=x(t?.name),o=x(t?.label),r=x(t?.description),i=t?.kind,s=t?.valueType;if(!n||!o||!r||i!=="select"&&i!=="boolean"&&i!=="number"&&i!=="text"||s!=="string"&&s!=="number"&&s!=="boolean")return null;const a=pr(t?.defaultValue),c=Array.isArray(t?.options)?t.options.flatMap(m=>{const f=pr(m);return f===void 0?[]:[f]}):[],l=bt(t?.minimum),u=bt(t?.maximum);return{name:n,label:o,kind:i,valueType:s,required:t?.required===!0,...a===void 0?{}:{defaultValue:a},options:c,...l===null?{}:{minimum:l},...u===null?{}:{maximum:u},...t?.exclusiveMinimum===!0?{exclusiveMinimum:!0}:{},...t?.exclusiveMaximum===!0?{exclusiveMaximum:!0}:{},description:r}}function Rd(e){const t=h(e),n=x(t?.field),o=Md(t?.kind),r=as(t?.targets),i=bt(t?.min),s=t?.max,a=s===null?null:bt(s);return!n||!o||r.length===0||i===null||s!==null&&a===null?null:{field:n,kind:o,targets:r,min:i,max:a}}function $d(e){const t=h(e),n=x(t?.id);if(!n||!Array.isArray(t?.slots))return null;const o=t.slots.map(Rd).filter(i=>i!==null),r=Array.isArray(t.requiredGroups)?t.requiredGroups.map(as).filter(i=>i.length>0):[];return{id:n,slots:o,requiredGroups:r}}function Nd(e){const t=h(e);if(!Array.isArray(t?.modes))return null;const n=t.modes.map($d).filter(o=>o!==null);return n.length>0?{modes:n}:null}function Pd(e){const n=h(e)?.actions;return Array.isArray(n)?n.flatMap(o=>{const r=h(o);if(!r||r.kind!=="generation")return[];const i=x(r.provider),s=x(r.model),a=x(r.operation),c=x(r.tool),l=x(r.title),u=Nd(r.inputContract),m=Array.isArray(r.controls)?r.controls.map(Td).filter(p=>p!==null):[],f=Array.isArray(r.cellTypes)?r.cellTypes.filter(p=>typeof p=="string"&&Et(p)):[];if(!i||!s||!a||!c||!u||f.length===0)return[];const d=bt(r.defaultPriority);return[{id:x(r.id)??`generation.${c}`,cellTypes:f,provider:i,providerLabel:x(r.providerLabel)??i,model:s,operation:a,tool:c,title:l??c,isDefault:r.isDefault===!0,defaultPriority:d,inputContract:u,controls:m,...typeof r.available=="boolean"?{available:r.available}:{},...Array.isArray(r.frontier)?{frontier:is(r.frontier)}:{},...r.existingCellOnly===!0?{existingCellOnly:!0}:{}}]}):[]}function So(e,t,n=!1){return e.filter(o=>o.cellTypes.includes(t)&&(n||!o.existingCellOnly))}function zn(e){return{provider:e.provider,model:e.model,operation:e.operation,tool:e.tool}}function Od(e){return{provider:e.provider?.trim()??"",model:e.model?.trim()??"",operation:e.operation?.trim()??"",tool:e.tool?.trim()??""}}function Ft(e,t){return["provider","model","operation","tool"].reduce((n,o)=>t[o]&&e[o]===t[o]?n+1:n,0)}function cs(e,t,n){const o=So(e,t,!0).filter(c=>!c.existingCellOnly||c.tool===n.tool&&c.model===n.model),r=n.model?o.find(c=>c.model===n.model&&(!n.tool||c.tool===n.tool)):void 0;if(r)return r;const i=n.tool?o.filter(c=>c.tool===n.tool).sort((c,l)=>Ft(l,n)-Ft(c,n))[0]:void 0;if(i)return i;const s=n.model?o.find(c=>c.tool===n.model):void 0;return s||(n.model?o.filter(c=>c.model===n.model):n.operation?o.filter(c=>c.operation===n.operation):n.provider?o.filter(c=>c.provider===n.provider):[]).reduce((c,l)=>!c||Ft(l,n)>Ft(c,n)?l:c,null)}function Xn(e){return e.type==="image"||e.type==="generate_image"?"image":e.type==="video"||e.type==="split_video"||e.type==="generate_video"||e.type==="concat"||e.type==="splice"?"video":e.type==="audio"||e.type==="extract_audio"||e.type==="generate_audio"?"audio":null}function ls(e,t){return t==="first_frame"||t==="last_frame"||e==="audio"&&t==="replace_audio"?t:e}function iw(e,t,n){const o=new Map(t.map(r=>[r.id,r]));return n.flatMap(r=>{if(r.target!==e)return[];const i=o.get(r.source),s=i?Xn(i):null;return s?[{kind:s,target:ls(s,r.targetInput)}]:[]})}function Ld(e,t){if(!t.has(e))return e;let n=2;for(;t.has(`${e}_${n}`);)n+=1;return`${e}_${n}`}function sw(e,t,n,o,r){const i=e.inputContract.modes.find(d=>d.id===t);if(!i)return[];const s=new Map(o.map(d=>[d.id,d])),a=r.filter(d=>d.target===n),c=a.flatMap(d=>{const p=s.get(d.source),g=p?Xn(p):null;return g?[{sourceCellId:d.source,targetInput:d.targetInput,target:es(t,g,ls(g,d.targetInput)),kind:g}]:[]}),l=new Set(a.map(d=>d.source)),u=new Set(a.map(d=>d.targetInput)),m=[],f=new Set;for(const d of o.filter(p=>p.id!==n).sort((p,g)=>p.slot.row-g.slot.row||p.slot.column-g.slot.column)){if(l.has(d.id)||ot(o,r,d.id,n)===null)continue;const p=Xn(d);if(p)for(const g of i.slots){if(g.kind!==p)continue;const y=c.filter(v=>v.kind===g.kind&&g.targets.includes(v.target)).length;if(!(g.max!==null&&y>=g.max))for(const v of g.targets){const S=`${d.id}:${v}`;f.has(S)||(f.add(S),m.push({sourceCellId:d.id,targetInput:Ld(v,u),target:v,kind:p}))}}}return m}function Tt(e,t){return e.inputContract.modes.filter(n=>wo(n,t)===null)}function aw(e,t,n){const o=e.inputContract.modes.find(r=>r.id===t);return!!(o&&wo(o,n)===null)}function cw(e,t,n=""){return n&&e.inputContract.modes.some(o=>o.id===n)?n:Tt(e,t)[0]?.id??e.inputContract.modes[0]?.id??""}function lw(e){return{t2v:"T2V · Text to video",i2v:"I2V · Image to video",r2v:"R2V · Reference to video",v2v:"V2V · Video to video",t2i:"T2I · Text to image",i2i:"I2I · Image to image",t2a:"T2A · Text to audio"}[e]??e.replaceAll("-"," ").replace(/^./,n=>n.toUpperCase())}function gn(e,t){return e.inputContract.modes.some(n=>wo(n,t)===null)}function Fd(e,t){const n=e.defaultPriority??Number.POSITIVE_INFINITY,o=t.defaultPriority??Number.POSITIVE_INFINITY;if(n!==o)return n-o;const r=e.title.localeCompare(t.title);if(r!==0)return r;const i=e.providerLabel.localeCompare(t.providerLabel);return i!==0?i:e.model.localeCompare(t.model)}function Dd(e,t,n,o=!1){return So(e,t,o).filter(r=>gn(r,n)).sort(Fd)}function Vd(e,t,n=[]){if(!Et(e.type))return null;const o=Od(e),r=cs(t,e.type,o);if(r)return zn(r);if(Object.values(o).every(Boolean))return o;const i=Dd(t,e.type,n)[0];return i?zn(i):null}function Io(e){return zn(e)}function jd(e){return e.replace(/\b(image|text|reference|video|audio|frame)[\s-]+to[\s-]+(video|image|audio|text)\b/gi,(t,n,o)=>`${n[0]}2${o[0]}`.toUpperCase())}const uw="Edit video follows the source aspect ratio and duration. Connect one 4–30 second video plus optional image or audio references.";function us(e,t){return e==="kie:bytedance/seedance-2-5"&&t==="v2v"}const En=[{id:"t2v",label:"Text to video",roles:[]},{id:"i2v",label:"Frames",roles:["first_frame","last_frame"],requireAny:["first_frame","last_frame"]},{id:"r2v",label:"References",roles:["image","video","audio"],requireAny:["image","video","audio"]}],rt=[{id:"i2v",label:"Frames",roles:["first_frame","last_frame"]}],Cn={aspect_ratio:"auto",duration:5,generate_audio:!0,resolution:"720p",reasoning_level:"high"},Gd=[{id:"r2v",label:"References",roles:["image","video","audio"],requireAny:["image","video","audio"]},{id:"v2v",label:"Edit video",roles:["video","image","audio"],requireAny:["video"],defaults:{task:"editing"}},{id:"extend",label:"Extend video",roles:["video","image","audio"],requireAny:["video"],defaults:{task:"extension"}}],qd=[{id:"i2v",label:"Image to video",roles:["first_frame"]},{id:"r2v",label:"References",roles:["image"],defaults:{duration:10}},{id:"v2v",label:"Edit video",roles:["video"],requireAny:["video"]}],it={id:"i2v",label:"Frames",roles:["first_frame","last_frame"],requireAny:["first_frame"]},Dt=["image","video","audio"];function st(e,t,n=t){return[{id:"t2v",label:"Text to video",roles:[]},e,{id:"r2v",label:"References",roles:t,requireAny:n}]}function Vt(e){const t={minimum:2e3,maximum:e*1e3,maximumTotal:e*1e3};return{refDurationMs:{video:t,audio:t}}}const at=["text_to_video","image_to_video","reference_to_video"],tn="Speaker 1";function gr(e,t){return{id:e,media:"audio",operations:["speech"],title:t,prompt:"dialogue_turns.0.text",aliases:{voice:"speakers.0.voice_name",accent:"speakers.0.accent",style:"speakers.0.style",pace:"speakers.0.pace"},defaults:{speakers:[{speaker_id:tn,voice_name:"Kore",accent:"Neutral"}],dialogue_turns:[{speaker_id:tn}]}}}function hr(e,t){return{id:e,media:"audio",operations:["speech"],title:t,prompt:"dialogue_turns.0.text",aliases:{voice:"speakers.0.voice_name",style:"dialogue_turns.0.style"},defaults:{speakers:[{speaker_id:tn,voice_name:"Fola"}],dialogue_turns:[{speaker_id:tn}]}}}function br(e,t){return{id:e,media:"audio",operations:["speech"],title:t,defaults:{voice:"Rachel"}}}function ct(e){return{id:`fal:minimax/h3-max/styles/${e}`,media:"video",operations:["text_to_video","image_to_video"],dialect:"strip_frames"}}const Ud=[{id:"kie:nano-banana-2-1",media:"image",operations:["text_to_image","edit_image"],dialect:"natural_numbered",defaults:{...xa}},{id:"kie:flux-3/klein-text-to-image",media:"image",operations:["text_to_image"],dialect:"natural",defaults:{resolution:"1K"}},{id:"kie:flux-3/klein-edit-image",media:"image",operations:["edit_image"],dialect:"natural",defaults:{resolution:"1K"}},{id:"kie:nano-banana-pro",media:"image",operations:["text_to_image","edit_image"],guide:"nano_banana",dialect:"natural"},{id:"kie:gpt-image-2-5-flare-text-to-image",media:"image",operations:["text_to_image"],guide:"gpt_image",dialect:"natural",defaults:{resolution:"2K"}},{id:"kie:gpt-image-2-5-flare-image-to-image",media:"image",operations:["edit_image"],guide:"gpt_image",dialect:"natural",defaults:{resolution:"2K"}},{id:"kie:gpt-image-2-5-sunburst-text-to-image",media:"image",operations:["text_to_image"],guide:"gpt_image",dialect:"natural",defaults:{resolution:"2K"}},{id:"kie:gpt-image-2-5-sunburst-image-to-image",media:"image",operations:["edit_image"],guide:"gpt_image",dialect:"natural",defaults:{resolution:"2K"}},{id:"kie:gpt-image-2-image-to-image",media:"image",operations:["edit_image"],title:"GPT Image 2 Edit",dialect:"natural",hidden:!0},{id:"kie:seedream/5-pro-image-to-image",media:"image",operations:["edit_image"],dialect:"natural",hidden:!0},{id:"kie:grok-imagine/text-to-image",media:"image",operations:["text_to_image"],guide:"grok_image"},{id:"kie:grok-imagine/image-to-image",media:"image",operations:["edit_image"],guide:"grok_image",dialect:"natural"},{id:"kie:qwen2/image-edit",media:"image",operations:["edit_image"],dialect:"natural"},{id:"kie:qwen3/image-to-image",media:"image",operations:["edit_image"],dialect:"natural"},{id:"kie:qwen2-1/text-to-image",media:"image",operations:["text_to_image"],dialect:"natural"},{id:"kie:qwen2-1/image-to-image",media:"image",operations:["edit_image"],dialect:"natural"},{id:"kie:seedream/5-lite-text-to-image",media:"image",operations:["text_to_image"]},{id:"kie:seedream/5-lite-image-to-image",media:"image",operations:["edit_image"],dialect:"natural"},{id:"kie:seedream/5-flash-text-to-image",media:"image",operations:["text_to_image"]},{id:"kie:seedream/5-flash-image-to-image",media:"image",operations:["edit_image"]},{id:"kie:seedream/5-flash-layer-decomposition",media:"image",operations:["layer_image"]},{id:"alibaba:qwen-image-2.0-pro",media:"image",operations:["text_to_image"],title:"Qwen Image 2.0 Pro (Alibaba)"},{id:"alibaba:qwen-image-edit-plus",media:"image",operations:["edit_image"],title:"Qwen Image Edit Plus (Alibaba)"},{id:"fal:fal-ai/nano-banana",media:"image",operations:["text_to_image"],guide:"nano_banana",hidden:!0},{id:"fal:fal-ai/nano-banana/edit",media:"image",operations:["edit_image"],guide:"nano_banana",hidden:!0},{id:"fal:fal-ai/nano-banana-2",media:"image",operations:["text_to_image"],guide:"nano_banana",hidden:!0},{id:"fal:fal-ai/nano-banana-2/edit",media:"image",operations:["edit_image"],guide:"nano_banana",hidden:!0},{id:"fal:google/nano-banana-2-lite",media:"image",operations:["text_to_image"],guide:"nano_banana",hidden:!0},{id:"fal:google/nano-banana-lite/edit",media:"image",operations:["edit_image"],guide:"nano_banana",hidden:!0},{id:"fal:fal-ai/nano-banana-pro",media:"image",operations:["text_to_image"],guide:"nano_banana",hidden:!0},{id:"fal:fal-ai/nano-banana-pro/edit",media:"image",operations:["edit_image"],guide:"nano_banana",hidden:!0},{id:"fal:google/nano-banana-2.1",media:"image",operations:["text_to_image"],guide:"nano_banana",hidden:!0},{id:"fal:google/nano-banana-2.1/edit",media:"image",operations:["edit_image"],guide:"nano_banana",hidden:!0},{id:"fal:fal-ai/bytedance/seedream/v5/lite/text-to-image",media:"image",operations:["text_to_image"],hidden:!0},{id:"fal:fal-ai/bytedance/seedream/v5/lite/edit",media:"image",operations:["edit_image"],hidden:!0},{id:"fal:xai/grok-imagine-image",media:"image",operations:["text_to_image"],guide:"grok_image",hidden:!0},{id:"fal:xai/grok-imagine-image/edit",media:"image",operations:["edit_image"],guide:"grok_image",hidden:!0},{id:"fal:fal-ai/qwen-image",media:"image",operations:["text_to_image"],hidden:!0},{id:"fal:fal-ai/qwen-image-edit",media:"image",operations:["edit_image"],hidden:!0},{id:"fal:alibaba/qwen-image-3/edit",media:"image",operations:["edit_image"]},{id:"fal:fal-ai/wan/v2.7/edit",media:"image",operations:["edit_image"],rules:{maxPromptChars:500},hidden:!0},{id:"fal:bria/fibo-edit-1.5/product-holding",media:"image",operations:["edit_image"],prompt:"instruction",refs:{image:["person_image_url","product_image_urls"]}},{id:"fal:bria/fibo-edit-1.5/virtual-try-on",media:"image",operations:["edit_image"],prompt:"instruction",refs:{image:["person_image_url","garment_image_urls"]}},{id:"fal:recraft/v4.1/flash/text-to-image",media:"image",operations:["text_to_image"]},{id:"fal:bytedance/seedream/v5/flash/text-to-image",media:"image",operations:["text_to_image"]},{id:"fal:bytedance/seedream/v5/flash/edit",media:"image",operations:["edit_image"]},{id:"fal:bytedance/seedream/v5/flash/layerize",media:"image",operations:["layer_image"]},{id:"fal:ideogram/v4.5",media:"image",operations:["text_to_image"]},{id:"fal:ideogram/v4.5/edit",media:"image",operations:["edit_image"],refs:{image:["image_url","reference_image_urls"]}},{id:"fal:blackforestlabs/flux-3/text-to-image",media:"image",operations:["text_to_image"]},{id:"fal:blackforestlabs/flux-3/edit-image",media:"image",operations:["edit_image"]},{id:"fal:bria/fibo-2/generate",media:"image",operations:["text_to_image"]},{id:"fal:bria/fibo-2/edit",media:"image",operations:["edit_image"],prompt:"instruction"},{id:"fal:fal-ai/flux-2-flex",media:"image",operations:["text_to_image"]},{id:"fal:bria/guided-remove-background",media:"image",operations:["edit_image"]},{id:"fal:bria/fibo-edit-1.5/expand",media:"image",operations:["edit_image"]},{id:"fal:fal-ai/marigold-v2",media:"image",operations:["edit_image"]},{id:"kie:bytedance/seedance-2-5",media:"video",operations:["text_to_video","image_to_video","reference_to_video","edit_video"],guide:"seedance25",dialect:"seedance",modes:[...En,{id:"v2v",label:"Edit video",roles:["video","image","audio"],requireAny:["video"]}],defaults:{...Ia},frameOptions:{aspect_ratio:"adaptive"}},{id:"kie:bytedance/seedance-2-5-draft",media:"video",operations:["upscale_video"],title:"Seedance 2.5 Draft Complete",description:"Render the 1080p final of a Seedance 2.5 draft: a 480p kie:bytedance/seedance-2-5 run with draft on. Pass that run's Kie task id as draft_task_id.",defaults:{resolution:"1080p"}},{id:"kie:grok-imagine/image-to-video",media:"video",operations:["image_to_video"],guide:"grok_imagine"},{id:"kie:grok-imagine/text-to-video",media:"video",operations:["text_to_video"],guide:"grok_imagine",defaults:{duration:6,resolution:"480p"}},{id:"kie:grok-imagine-video-1-5-preview",media:"video",operations:["image_to_video"],title:"Grok Imagine Video 1.5 Preview (Kie)",guide:"grok_imagine",dialect:"natural_strip_frames"},{id:"kie:grok-imagine/extend",media:"video",operations:["extend_video"],hidden:!0},{id:"kie:grok-imagine/upscale",media:"video",operations:["upscale_video"],hidden:!0},{id:"kie:kling-3.0-omni/text-to-video",media:"video",operations:["text_to_video"],guide:"kling30",dialect:"natural",defaults:{customize_multi_shots:!1}},{id:"kie:kling-3.0-omni/image-to-video",media:"video",operations:["image_to_video"],guide:"kling30",dialect:"natural",defaults:{aspect_ratio:"auto"},pinnedDefaults:["aspect_ratio"]},{id:"kie:kling-3.0-omni/reference-to-video",media:"video",operations:["reference_to_video"],guide:"kling30",dialect:"natural",defaults:{audio:!1}},{id:"kie:kling-3.0-omni/transformation",media:"video",operations:["edit_video"],guide:"kling30",dialect:"natural",modes:[{id:"v2v",label:"Edit video",roles:["video"],requireAny:["video"],defaults:{aspect_ratio:"auto"}},{id:"v2v_refs",label:"Edit with references",roles:["video","image"],requireAny:["video"]}]},{id:"kie:kling-3.0/motion-control",media:"video",operations:["motion_control"],guide:"kling30",dialect:"natural",defaults:{mode:"720p"},outputLength:"video"},{id:"kie:kling-4.0/reference-to-video",media:"video",operations:["reference_to_video"],dialect:"kling4"},{id:"kie:kling-4.0/keyframe-to-video",media:"video",operations:["image_to_video"],dialect:"kling4_keyframes",refs:{image:"keyframe_urls"}},{id:"kie:gemini-omni-video",media:"video",operations:["image_to_video","edit_video"],dialect:"natural_source_video",defaults:{duration:"8"},modes:[{id:"i2v",label:"Image to video",roles:["image"]},{id:"v2v",label:"Edit video",roles:["video","image"],requireAny:["video"]}],refItem:{video:{start:0,ends:8}},aliases:{clip_start:"video_list.0.start",clip_end:"video_list.0.ends"}},{id:"kie:wan/3-0-video",media:"video",operations:["text_to_video","image_to_video","reference_to_video"],dialect:"seedance",modes:En},{id:"kie:wan/3-0-video-prime",media:"video",operations:["text_to_video","image_to_video","reference_to_video"],dialect:"seedance",modes:En},{id:"kie:happyhorse-1-1/text-to-video",media:"video",operations:["text_to_video"]},{id:"kie:happyhorse-1-1/image-to-video",media:"video",operations:["image_to_video"],dialect:"strip_frames"},{id:"kie:happyhorse-1-1/reference-to-video",media:"video",operations:["reference_to_video"],dialect:"brackets"},{id:"kie:happyhorse/video-edit",media:"video",operations:["edit_video"],dialect:"happyhorse_edit",outputLength:"video"},{id:"kie:minimax-h3/text-to-video",media:"video",operations:["text_to_video"]},{id:"kie:minimax-h3/image-to-video",media:"video",operations:["image_to_video"],dialect:"strip_frames"},{id:"kie:minimax-h3/reference-to-video",media:"video",operations:["reference_to_video"],dialect:"natural",rules:{refDurationMs:ia}},{id:"kie:volcengine/video-to-video-lip-sync",media:"video",operations:["lip_sync"],outputLength:"audio"},{id:"kie:omnihuman-1-5",media:"video",operations:["image_to_video","lip_sync"],dialect:"natural",outputLength:"audio"},{id:"kie:omnihuman-2-0",media:"video",operations:["image_to_video","lip_sync"],dialect:"natural",defaults:{enable_watermark:!1},outputLength:"audio"},{id:"kie:vidu-q4/image-to-video",media:"video",operations:["image_to_video"],dialect:"natural_kinds"},{id:"kie:vidu-q4/reference-to-video",media:"video",operations:["reference_to_video"],dialect:"natural_kinds"},{id:"kie:pixverse-v6-max/text-to-video",media:"video",operations:["text_to_video"],defaults:{quality:"1080p"}},{id:"kie:pixverse-v6-max/image-to-video",media:"video",operations:["image_to_video"],dialect:"strip_frames",defaults:{quality:"1080p"}},{id:"kie:veo3",media:"video",operations:["text_to_video","image_to_video"],title:"Veo 3 (Kie)"},{id:"kie:veo3_fast",media:"video",operations:["text_to_video","image_to_video"],title:"Veo 3 Fast (Kie)"},{id:"xai:grok-imagine-video",media:"video",operations:["text_to_video","image_to_video","reference_to_video","edit_video"],guide:"grok_imagine",title:"Grok Imagine Video (xAI)",dialect:"natural",refs:{first_frame:"image",audio:null},modes:qd},{id:"fal:xai/grok-imagine-video/image-to-video",media:"video",operations:["image_to_video"],guide:"grok_imagine",hidden:!0},{id:"fal:xai/grok-imagine-video/reference-to-video",media:"video",operations:["reference_to_video"],guide:"grok_imagine",hidden:!0},{id:"fal:xai/grok-imagine-video/extend-video",media:"video",operations:["extend_video"],hidden:!0},{id:"fal:xai/grok-imagine-video/edit-video",media:"video",operations:["edit_video"],guide:"grok_imagine",hidden:!0},{id:"fal:xai/grok-imagine-video/v1.5/lite/image-to-video",media:"video",operations:["image_to_video"]},{id:"fal:xai/grok-imagine-video/v1.5/lite/text-to-video",media:"video",operations:["text_to_video"]},{id:"fal:alibaba/wan-3.0/text-to-video",media:"video",operations:["text_to_video"],hidden:!0},{id:"fal:alibaba/wan-3.0/image-to-video",media:"video",operations:["image_to_video"],hidden:!0},{id:"fal:alibaba/wan-3.0/reference-to-video",media:"video",operations:["reference_to_video"],hidden:!0},{id:"fal:alibaba/wan-3.0-prime/text-to-video",media:"video",operations:["text_to_video"],hidden:!0},{id:"fal:alibaba/wan-3.0-prime/image-to-video",media:"video",operations:["image_to_video"],hidden:!0},{id:"fal:alibaba/wan-3.0-prime/reference-to-video",media:"video",operations:["reference_to_video"],hidden:!0},{id:"fal:kling/v4/text-to-video",media:"video",operations:["text_to_video"],dialect:"seedance"},{id:"fal:kling/v4/image-to-video",media:"video",operations:["image_to_video"],dialect:"seedance",modes:rt},{id:"fal:kling/v4/reference-to-video",media:"video",operations:["reference_to_video"],dialect:"seedance"},{id:"fal:kling/v4/video-to-video/edit",media:"video",operations:["edit_video"],dialect:"seedance"},{id:"fal:heygen/heygen-video/text-to-video",media:"video",operations:["text_to_video"],dialect:"natural"},{id:"fal:heygen/heygen-video/image-to-video",media:"video",operations:["image_to_video"],dialect:"strip_frames",refs:{first_frame:"image_url"}},{id:"fal:heygen/heygen-video/reference-to-video",media:"video",operations:["reference_to_video"],dialect:"natural",modes:[{id:"r2v",label:"References",roles:["image","video","audio"],requireAny:["image","video"]}]},...[3,4].map(e=>({id:`fal:fal-ai/heygen/avatar${e}/digital-twin`,media:"video",operations:["text_to_video"],dialect:"plain",prompt:"voice.prompt",defaults:{character:{avatar:"Abigail Office Front"},voice:{voice:"Ivy"}},aliases:{avatar:"character.avatar",avatar_style:"character.avatar_style",voice:"voice.voice",voice_id:"voice.voice_id",speed:"voice.speed"}})),{id:"fal:fal-ai/heygen/avatar5/digital-twin",media:"video",operations:["text_to_video"],dialect:"plain"},{id:"fal:fal-ai/heygen/avatar4/image-to-video",media:"video",operations:["image_to_video"],dialect:"plain",defaults:{voice:"Ivy"}},{id:"fal:fal-ai/heygen/v2/video-agent",media:"video",operations:["text_to_video"],dialect:"plain"},{id:"fal:fal-ai/heygen/v3/video-agent",media:"video",operations:["text_to_video"],dialect:"plain"},{id:"fal:blackforestlabs/flux-3-max/text-to-video",media:"video",operations:["text_to_video"],title:"FLUX 3 Max",defaults:Cn},{id:"fal:blackforestlabs/flux-3-max/image-to-video",media:"video",operations:["image_to_video"],title:"FLUX 3 Max Image",refs:{first_frame:"image_url"},modes:rt,defaults:Cn},{id:"fal:blackforestlabs/flux-3-max/keyframes-to-video",media:"video",operations:["image_to_video"],title:"FLUX 3 Max Keyframes",refs:{image:"keyframes"},keyframeFps:24,defaults:Cn},{id:"fal:minimax/h3-max/reframe-video",media:"video",operations:["edit_video"]},{id:"fal:minimax/h3-max/insert-video",media:"video",operations:["edit_video"],refs:{video:["video_url","reference_video_urls"]}},{id:"fal:minimax/h3-max/recast",media:"video",operations:["edit_video"]},{id:"fal:minimax/h3-max-turbo/extend-video",media:"video",operations:["extend_video"]},{id:"fal:minimax/h3-max/relight",media:"video",operations:["edit_video"]},ct("16bit-pixel"),ct("hand-drawn"),ct("low-poly"),ct("retro-toon-70s"),ct("vhs"),{id:"fal:bytedance/seedance-2.5/us/text-to-video",media:"video",operations:["text_to_video"],guide:"seedance25",dialect:"seedance",hidden:!0},{id:"fal:bytedance/seedance-2.5/us/image-to-video",media:"video",operations:["image_to_video"],guide:"seedance25",dialect:"seedance",refs:{first_frame:"image_url"},modes:rt,hidden:!0},{id:"fal:bytedance/seedance-2.5/us/reference-to-video",media:"video",operations:["reference_to_video","edit_video","extend_video"],guide:"seedance25",dialect:"seedance",modes:Gd,hidden:!0},{id:"fal:bytedance/seedance-2.5/draft/complete",media:"video",operations:["upscale_video"],title:"Seedance 2.5 Draft Complete",hidden:!0},{id:"fal:bytedance/seedance-2.0/us/text-to-video",media:"video",operations:["text_to_video"],guide:"seedance2",dialect:"seedance"},{id:"fal:bytedance/seedance-2.0/us/image-to-video",media:"video",operations:["image_to_video"],guide:"seedance2",dialect:"seedance",refs:{first_frame:"image_url"},modes:rt},{id:"fal:bytedance/seedance-2.0/us/reference-to-video",media:"video",operations:["reference_to_video"],guide:"seedance2",dialect:"seedance",modes:[{id:"r2v",label:"References",roles:["image","video","audio"],requireAny:["image","video"]}]},{id:"fal:fal-ai/kling-video/o3/standard/image-to-video",media:"video",operations:["image_to_video"],guide:"kling30",dialect:"strip_frames",refs:{first_frame:"image_url"},modes:rt},{id:"fal:fal-ai/kandinsky6-pro/text-to-video",media:"video",operations:["text_to_video"]},{id:"fal:fal-ai/kandinsky6-pro/image-to-video",media:"video",operations:["image_to_video"],dialect:"strip_frames"},{id:"fal:fal-ai/kandinsky6-lite/text-to-video",media:"video",operations:["text_to_video"]},{id:"fal:fal-ai/kandinsky6-lite/image-to-video",media:"video",operations:["image_to_video"],dialect:"strip_frames"},{id:"fal:fal-ai/kandinsky6-vsr",media:"video",operations:["upscale_video"]},{id:"fal:fal-ai/kandinsky6-vsr/lite",media:"video",operations:["upscale_video"]},{id:"fal:fal-ai/vidu/q4/image-to-video",media:"video",operations:["image_to_video"],dialect:"natural_kinds",hidden:!0},{id:"fal:fal-ai/vidu/q4/reference-to-video",media:"video",operations:["reference_to_video"],dialect:"vidu",hidden:!0},{id:"fal:pixverse/music-video/vibemv",media:"video",operations:["reference_to_video"],refs:{image:["image_url","style_image_url"]}},{id:"fal:pixelcut/looping-video",media:"video",operations:["image_to_video"],dialect:"strip_frames"},{id:"fal:creatify/boreal",media:"video",operations:["text_to_video","image_to_video","lip_sync"]},{id:"fal:mirelo-ai/sfx2.0/video-to-video",media:"video",operations:["edit_video"],prompt:"text_prompt",defaults:{num_samples:1}},{id:"machgen:MiniMax-H3",media:"video",operations:at,title:"MiniMax H3 (MachGen)",dialect:"natural_strip_frames",modes:st({...it,requireAny:["first_frame","last_frame"]},Dt),rules:Vt(15)},{id:"machgen:Seedance-2.5",media:"video",operations:at,title:"Seedance 2.5 (MachGen)",guide:"seedance25",dialect:"natural_strip_frames",modes:st(it,Dt),frameOptions:{aspect_ratio:"adaptive"},rules:Vt(30)},{id:"machgen:Seedance-2.0",media:"video",operations:at,title:"Seedance 2.0 (MachGen)",guide:"seedance2",dialect:"natural_strip_frames",modes:st(it,Dt,["image","video"]),rules:Vt(15)},{id:"machgen:Alibaba-Wan-3.0",media:"video",operations:at,title:"Wan 3.0 (MachGen)",dialect:"natural_strip_frames",modes:st(it,Dt),rules:Vt(15)},{id:"machgen:HappyHorse-1.1",media:"video",operations:at,title:"HappyHorse 1.1 (MachGen)",dialect:"natural_strip_frames",modes:st({...it,roles:["first_frame"]},["image"])},{id:"machgen:Grok-Imagine-Video-1.5",media:"video",operations:["image_to_video"],title:"Grok Imagine Video 1.5 (MachGen)",guide:"grok_imagine",dialect:"natural_strip_frames"},{id:"elevenlabs:text-to-speech",media:"audio",operations:["speech"],title:"ElevenLabs Text to Speech",defaults:{model_id:"eleven_multilingual_v2"}},{id:"elevenlabs:sound-generation",media:"audio",operations:["sfx"],title:"ElevenLabs Sound Effects"},{id:"elevenlabs:music",media:"audio",operations:["music"],title:"ElevenLabs Music",defaults:{force_instrumental:!0}},{id:"elevenlabs:video-to-music",media:"audio",operations:["video_to_music"],title:"ElevenLabs Video to Music"},{id:"kie:elevenlabs/sound-effect-v2",media:"audio",operations:["sfx"]},br("kie:elevenlabs/text-to-speech-multilingual-v2","ElevenLabs Multilingual v2 (Kie)"),br("kie:elevenlabs/text-to-speech-turbo-2-5","ElevenLabs Turbo 2.5 (Kie)"),{id:"kie:elevenlabs/text-to-dialogue-v3",media:"audio",operations:["dialogue"],title:"ElevenLabs v3 Dialogue (Kie)",prompt:"dialogue.0.text",aliases:{voice:"dialogue.0.voice"},defaults:{dialogue:[{voice:"Rachel"}]}},gr("kie:google/gemini-2-5-pro-tts","Gemini 2.5 Pro TTS (Kie)"),gr("kie:google/gemini-3-1-flash-tts","Gemini 3.1 Flash TTS (Kie)"),hr("kie:google/gemini-3-8-flash-tts","Gemini 3.8 Flash TTS (Kie)"),hr("kie:google/gemini-3-8-flash-lite-tts","Gemini 3.8 Flash Lite TTS (Kie)"),{id:"kie:suno/generate",media:"audio",operations:["music"],title:"Suno (Kie)",defaults:{model:"V5_5",instrumental:!0,customMode:!1}},{id:"kie:suno/sounds-generate",media:"audio",operations:["sfx"],title:"Suno Sounds (Kie)",defaults:{model:"V5_5"}},{id:"fal:elevenlabs/music/v2.5",media:"audio",operations:["music"],defaults:{force_instrumental:!0,output_format:"mp3_48000_192"}},{id:"fal:minimax/music-3",media:"audio",operations:["music"],defaults:{lyrics:"[Instrumental]"}},{id:"fal:elevenlabs/tts/eleven-v4",media:"audio",operations:["speech"],defaults:{voice:"Rachel",output_format:"mp3_44100_128"}},{id:"fal:elevenlabs/tts/eleven-v4-turbo",media:"audio",operations:["speech"],defaults:{voice:"Rachel",output_format:"mp3_44100_128"}},{id:"fal:google/gemini-3.8-flash-tts",media:"audio",operations:["speech"],defaults:{voice:"Kore"}},{id:"fal:google/gemini-3.8-flash-lite-tts",media:"audio",operations:["speech"],defaults:{voice:"Kore"}},{id:"fal:alibaba/qwen-audio-3-tts",media:"audio",operations:["speech"],defaults:{voice:"Cherry",language:"Auto"}},{id:"fal:fal-ai/bytedance/seed-speech/tts/v2",media:"audio",operations:["speech"],defaults:{output_format:"mp3"}}],Bd=new Map(Ud.map(e=>[e.id,e]));function Hd(e){return Bd.get(e)}const dw="Frame mode follows the first image’s aspect ratio (adaptive).";function Wd(e){if(e===null||typeof e!="object"||Array.isArray(e))return!1;const t=e;return[t.first_frame,t.last_frame].some(n=>typeof n=="string"&&n.trim()!==""||Array.isArray(n)&&n.some(o=>typeof o=="string"&&o.trim()!==""))}function ds(e,t){const n=Hd(e)?.frameOptions?.aspect_ratio;if(typeof n!="string")return;const o=t.generationMode??t.mode;if(o!=="r2v")return o==="i2v"||Wd(t.refs)?n:void 0}const Kd=200,zd={chat:"chat",image_rewrite:"image rewrite",video_rewrite:"video rewrite",script_rewrite:"script rewrite",post:"post",image_generate:"image",video_generate:"video",audio_generate:"audio"};function Xd(e){const t=h(e),o=(Array.isArray(t?.content)?t.content:[]).map(h).find(r=>r?.type==="text");return typeof o?.text=="string"?o.text:null}function Yd(e){const t=Xd(e);if(!t)return e;try{return JSON.parse(t)}catch{return null}}function Jd(e){const t=h(e);return typeof t?.model=="string"&&t.model?t.model:typeof t?.tool=="string"&&t.tool?t.tool:""}function Zd(e){const t=h(e);return!t||typeof t.prompt!="string"||!t.prompt.trim()?[]:[{id:String(t.id??""),surface:typeof t.surface=="string"?t.surface:"",prompt:t.prompt,book:typeof t.book=="string"?t.book:"",model:Jd(t.params),createdAt:typeof t.created_at=="number"?t.created_at:0}]}function Qd(e){const t=h(Yd(e));return(Array.isArray(t?.entries)?t.entries:[]).flatMap(Zd)}function ef(e){const t=new Set;return e.filter(n=>{const o=n.prompt.trim();return t.has(o)?!1:(t.add(o),!0)})}function fw(e,t){const n=t.trim().toLowerCase();return n?e.filter(o=>o.prompt.toLowerCase().includes(n)):[...e]}function mw(e,t){const n=e.filter(r=>t.has(r.prompt)),o=e.filter(r=>!t.has(r.prompt));return[...n,...o]}function tf(e){return{book_id:e.bookId,scope:e.scope,limit:Kd,...e.surfaceFilter==="surface"?{surface:e.surface}:{}}}function pw(e){return zd[e]??e.replaceAll("_"," ")}function nf(e){return e<1e12?e*1e3:e}function gw(e,t){if(!e)return"";const n=Math.max(0,Math.floor((t-nf(e))/6e4));if(n<1)return"just now";if(n<60)return`${n}m ago`;const o=Math.floor(n/60);if(o<24)return`${o}h ago`;const r=Math.floor(o/24);return r===1?"yesterday":`${r}d ago`}function fs(e,t){return e.cells.find(n=>n.slot.row===t.row&&n.slot.column===t.column)}function Z(e){return ue(e.slot)}function ms(e){const t=co(e).map(n=>n.reference);return[...new Set(t)]}function xo(e,t){const n=ke(t),o=ri(n);if(o){const a=fs(e,o);if(!a)throw new Error(`Notebook cell ${ue(o)} is empty`);return a}const r=e.cells.find(a=>a.id.toLowerCase()===n),i=r?[]:e.cells.filter(a=>a.id.toLowerCase().startsWith(n));if(i.length>1)throw new Error(`Cell reference @${n} is ambiguous`);const s=r??i[0];if(!s)throw new Error(`Notebook cell @${n} was not found`);return s}function ps(e){return ms(e)}function Ao(e){return e.type==="image"||e.type==="generate_image"?"image":e.type==="video"||e.type==="split_video"||e.type==="generate_video"||e.type==="concat"||e.type==="splice"?"video":e.type==="audio"||e.type==="extract_audio"||e.type==="generate_audio"?"audio":null}function of(e,t){return t==="first_frame"||t==="last_frame"||e==="audio"&&t==="replace_audio"?t:e}function gs(e){const t=new Map;return e.map(n=>{const o=(t.get(n.target)??0)+1;return t.set(n.target,o),o===1?n.target:`${n.target}_${o}`})}function hs(e){const t=e.map(s=>({kind:s.kind,target:s.kind})),n=["first_frame","last_frame"],o=e.map((s,a)=>({kind:s.kind,target:s.kind==="image"?n[a]??"image":s.kind})),r=e.map(s=>({kind:s.kind,target:s.kind==="audio"?"replace_audio":s.kind})),i=[t,o,r];return i.filter((s,a)=>i.findIndex(c=>JSON.stringify(c)===JSON.stringify(s))===a)}function bs(e){const t=e.preferredModel?So(e.actions,e.cellType).find(o=>o.model===e.preferredModel):void 0;if(t&&gn(t,e.connectedInputs))return t;const n=Vd({type:e.cellType},e.actions,e.connectedInputs);return n?cs(e.actions,e.cellType,n):null}function rf(e,t){if(!t)return{};const n=t.options&&typeof t.options=="object"&&!Array.isArray(t.options)?t.options:{};return Object.fromEntries(e.controls.flatMap(o=>{const r=n[o.name]??t[o.name];return typeof r=="string"||typeof r=="number"||typeof r=="boolean"?[[o.name,r]]:[]}))}function hw(e){return ps(e)}function yr(e){return typeof e=="string"?[e]:Array.isArray(e)?e.filter(t=>typeof t=="string"):[]}function bw(e){const n=[...e.refs&&typeof e.refs=="object"&&!Array.isArray(e.refs)?Object.values(e.refs).flatMap(yr):[],...Object.entries(e).flatMap(([o,r])=>/(?:^|_)(?:ref|refs)$/u.test(o)?yr(r):[])];return ps(n.map(o=>o.startsWith("@")?o:`@${o}`).join(" "))}function yw(e,t,n){const o=n.find(i=>i.tool===e);if(o?.cellTypes[0])return o.cellTypes[0];const r=`${t} ${e}`.toLowerCase();return/audio|music|speech|t2a|voice/iu.test(r)?"generate_audio":/image|photo|picture|qart|qr/iu.test(r)?"generate_image":"generate_video"}function ys(e,t){const n=Ao(t);if(!n)throw new Error(`${Z(t)} is not a media-producing cell`);if(!Fe(e,t))throw new Error(`${Z(t)} does not have media output yet`);return{cell:t,kind:n}}function sf(e,t){return t.map(n=>ys(e,xo(e,n)))}function _w(e,t=[],n){const o=new Set(t);return e.cells.flatMap(r=>{if(o.has(r.id))return[];if(n&&ot(e.cells,e.edges,r.id,n)===null)return[];const i=Ao(r);return!i||!Fe(e,r)?[]:[{cell:r,kind:i}]})}function vw(e){const t=sf(e.document,e.command.sourceReferences),n=t.find(p=>ot(e.document.cells,e.document.edges,p.cell.id,e.cellId)===null);if(n)throw new Error(`Connecting ${Z(n.cell)} would create a cycle`);let o=null,r=[];for(const p of hs(t)){const g=bs({actions:e.actions,cellType:e.command.cellType,connectedInputs:p,...e.preferredModel?{preferredModel:e.preferredModel}:{}});if(g){o=g,r=p;break}}if(!o)throw new Error(`No available ${e.command.mediaKind} generation action accepts these references`);const i=Io(o),s=Tt(o,r)[0],a=rf(o,e.routedParams),c={...s?{generationMode:s.id}:{},...Object.keys(a).length>0?{generationSettings:a}:{}},l=t.map(p=>p.cell.slot),u=e.lastWorkSlot??null,m=e.command.cellType==="generate_video"?yo(e.document.cells,l,u):e.command.cellType==="generate_image"||e.command.cellType==="generate_audio"?mn(e.document.cells,l,u):e.fallbackSlot,f={id:e.cellId,type:e.command.cellType,slot:m,prompt:e.command.prompt,...i,...Object.keys(c).length>0?{inputs:c}:{}},d=gs(r);return{action:o,cell:f,connections:t.map((p,g)=>({sourceCellId:p.cell.id,targetInput:d[g]??p.kind})),sourceCellIds:t.map(p=>p.cell.id),sourceAddresses:t.map(p=>Z(p.cell))}}function kw(e,t){const n=new Set(e.sourceCellIds);for(const o of ms(e.cell.prompt??"")){const r=xo(t,o);if(!n.has(r.id))throw new Error(`@${o} is referenced but not connected`)}}function af(e,t){const n=e.connections.map(r=>({source:r.sourceCellId,target:e.cell.id,targetInput:r.targetInput})),o=new Map(gd(e.cell.id,t.cells,n,x(e.cell.inputs?.generationMode)??void 0).map(r=>[r.sourceCellId,r.token]));return oi(e.cell.prompt??"",t.cells.flatMap(r=>{const i=o.get(r.id);return i?[{reference:It(r.slot),replacement:`@${i}`}]:[]}))}function ww(e,t){return e.connections.flatMap(n=>{const o=t.cells.find(i=>i.id===n.sourceCellId),r=o?Ao(o):null;return r?[{kind:r,target:of(r,n.targetInput)}]:[]})}function Eo(e){const t=h(e.cell.inputs),n=h(t?.generationSettings),o=Object.fromEntries(Object.entries(n??{}).flatMap(([i,s])=>typeof s=="string"||typeof s=="number"||typeof s=="boolean"?[[i,s]]:[]));if(us(e.action.model,t?.generationMode))return{...o,aspect_ratio:"adaptive",duration:-1};const r=ds(e.action.model,t??{});return r?{...o,aspect_ratio:r}:o}function Sw(e,t){return{...e,cell:{...e.cell,prompt:t}}}function Iw(e,t,n){if(!t.cellTypes.includes(e.cell.type)||!gn(t,n))throw new Error("The selected generation model does not accept these inputs");const o=Tt(t,n),r=h(e.cell.inputs)??{},i=x(r.generationMode),s=o.find(l=>l.id===i)??o[0];if(!s)throw new Error("The selected generation model does not have a compatible mode");const a=Eo(e),c=Object.fromEntries(t.controls.flatMap(l=>{const u=a[l.name];return u===void 0?[]:[[l.name,u]]}));return{...e,action:t,cell:{...e.cell,...Io(t),inputs:{...r,generationMode:s.id,generationSettings:c}}}}function xw(e,t,n){const o=Tt(e.action,n).find(r=>r.id===t);if(!o)throw new Error("The selected generation type does not accept these inputs");return{...e,cell:{...e.cell,inputs:{...h(e.cell.inputs)??{},generationMode:o.id}}}}function Aw(e,t,n){if(!e.action.controls.some(r=>r.name===t))throw new Error(`The selected generation model does not support ${t}`);const o=Eo(e);return n===void 0?delete o[t]:o[t]=n,{...e,cell:{...e.cell,inputs:{...h(e.cell.inputs)??{},generationSettings:o}}}}function Ew(e){const t=e.draft.cell.type,n=[...new Set(e.sourceCellIds)].map(d=>{const p=e.document.cells.find(g=>g.id===d);if(!p)throw new Error("The selected source cell is no longer available");if(ot(e.document.cells,e.document.edges,p.id,e.draft.cell.id)===null)throw new Error(`Connecting ${Z(p)} to ${Z(e.draft.cell)} would create a cycle`);return ys(e.document,p)}),o=hs(n);let r=null,i=[];for(const d of o)if(gn(e.draft.action,d)){r=e.draft.action,i=d;break}if(!r)for(const d of o){const p=bs({actions:e.actions,cellType:t,connectedInputs:d});if(p){r=p,i=d;break}}if(!r){const d=t==="generate_audio"?"audio":t==="generate_image"?"image":"video";throw new Error(`No available ${d} generation action accepts these references`)}const s=Tt(r,i),a=h(e.draft.cell.inputs)??{},c=x(a.generationMode),l=s.find(d=>d.id===c)??s[0];if(!l)throw new Error("The selected generation model does not have a compatible mode");const u=Eo(e.draft),m=Object.fromEntries(r.controls.flatMap(d=>{const p=u[d.name];return p===void 0?[]:[[d.name,p]]})),f=gs(i);return{action:r,cell:{...e.draft.cell,...Io(r),inputs:{...a,generationMode:l.id,generationSettings:m}},connections:n.map((d,p)=>({sourceCellId:d.cell.id,targetInput:f[p]??d.kind})),sourceCellIds:n.map(d=>d.cell.id),sourceAddresses:n.map(d=>Z(d.cell))}}async function Cw(e){let t=!1;try{const n=h(await e.callTool("create_notebook_cell",{book_id:e.bookId,notebook_id:e.document.id,...e.expectedRevision?{expected_revision:e.expectedRevision}:{},cell:{id:e.draft.cell.id,type:e.draft.cell.type,slot:e.draft.cell.slot,prompt:af(e.draft,e.document),provider:e.draft.cell.provider,model:e.draft.cell.model,operation:e.draft.cell.operation,tool:e.draft.cell.tool,inputs:e.draft.cell.inputs}})),o=x(n?.id);if(!o||o!==e.draft.cell.id)throw new Error("The server did not preserve the planned generation cell");t=!0;for(const r of e.draft.connections)await e.callTool("connect_notebook_cells",{book_id:e.bookId,notebook_id:e.document.id,source_cell_id:r.sourceCellId,target_cell_id:o,target_input:r.targetInput});return{cellId:o,cellAddress:x(n?.address)??Z(e.draft.cell),sourceCellIds:e.draft.sourceCellIds,sourceAddresses:e.draft.sourceAddresses}}catch(n){throw t&&await e.callTool("delete_notebook_cell",{book_id:e.bookId,notebook_id:e.document.id,cell_id:e.draft.cell.id}).catch(()=>{}),n}}const cf=new Set(["","text","number","url","search","email","tel","date","time","datetime-local","password"]);function lf(e){return!e||e.tagName.toLowerCase()!=="input"?!1:cf.has((e.type??"").toLowerCase())}function Mw(e,t){return e.defaultPrevented?"none":e.key==="Escape"?t.busy?"none":"cancel":e.key!=="Enter"||e.altKey||t.busy?"none":e.metaKey||e.ctrlKey||lf(e.target)?"apply":"none"}const Tw={transcribing:!1,analyzing:!1,error:null};function Rw(e,t){return e.transcribing}function $w(e,t){return e==="transcript"?{transcribing:t}:{analyzing:t}}const Nw="GPT-4o Translation",Pw="ElevenLabs Transcript";function uf(e){return e==="timed"||e==="plain"||e==="silence"?e:null}function _r(e){return Array.isArray(e)?e.flatMap(t=>{const n=x(t);return n?[n]:[]}):[]}function _s(e){return typeof e=="number"&&Number.isFinite(e)&&e>0?Math.trunc(e):0}function df(e){return Array.isArray(e)?e.flatMap(t=>{const n=h(t);return!n||typeof n.text!="string"?[]:typeof n.start!="number"||!Number.isFinite(n.start)?[]:typeof n.end!="number"||!Number.isFinite(n.end)?[]:[{text:n.text,start:n.start,end:n.end}]}):[]}function Mn(e){const t=h(e),n=t&&uf(t.kind);return!t||!n?null:{kind:n,languageCode:x(t.language_code??t.languageCode),text:typeof t.text=="string"?t.text:"",wordCount:_s(t.word_count??t.wordCount),words:df(t.words)}}function ff(e){const t=h(e);if(!t)return null;if("elevenlabs"in t||"plain"in t){const o=Mn(t.elevenlabs),r=Mn(t.plain);return!o&&!r?null:{elevenlabs:o,plain:r}}const n=Mn(t);return n?n.kind==="plain"?{elevenlabs:null,plain:n}:{elevenlabs:n,plain:null}:null}function mf(e){const t=h(e);return t?{summary:typeof t.summary=="string"?t.summary:"",mood:x(t.mood),setting:x(t.setting),tags:_r(t.tags),subjects:_r(t.subjects),sceneCount:_s(t.scene_count??t.sceneCount)}:null}function We(e){return e==="video"||e==="audio"||e==="final"}function Ow(e){return!!(e&&e.kind!=="silence"&&e.text.trim())}function pf(e){if(e.kind==="silence")return"No dialog detected";const t=[e.kind==="timed"?"Word-timed":"Plain text",`${e.wordCount} ${e.wordCount===1?"word":"words"}`];return e.languageCode&&t.push(e.languageCode),t.join(" · ")}const gf=.4,hf=12;function bf(e){const t=[];let n=[];for(const o of e){const r=n.at(-1),i=r?o.start-r.end:0,s=r?/[.!?]$/.test(r.text.trim()):!1;if(n.length>0&&(i>gf||s||n.length>=hf)){const a=n.map(c=>c.text).join(" ").replace(/\s+/g," ").trim();a&&t.push({start:n[0].start,text:a}),n=[]}n.push(o)}if(n.length>0){const o=n.map(r=>r.text).join(" ").replace(/\s+/g," ").trim();o&&t.push({start:n[0].start,text:o})}return t}function yf(e){const t=Math.max(0,Math.floor(e)),n=Math.floor(t/60),o=t%60;return`${n}:${String(o).padStart(2,"0")}`}function _f(e){return bf(e).map(t=>`${yf(t.start)} ${t.text}`).join(`
|
|
15
15
|
`)}function Lw(e,t){return t==="json"&&e?"json":"text"}function vf(e){const t=e.transcript;return!t||t.kind==="silence"?"":e.source==="elevenlabs"&&t.kind==="timed"&&t.words.length>0?_f(t.words):t.text}function kf(e){return e.view==="json"?e.jsonText??"":vf(e)}function Fw(e){return kf(e)}function Dw(e){return e.view==="json"?e.jsonFile?`Raw sidecar · ${e.jsonFile}`:"Raw sidecar":e.transcript?pf(e.transcript):null}function Vw(e){return e.view==="json"&&e.jsonLoading?"Loading sidecar…":e.view==="json"&&e.jsonError?e.jsonError:e.transcript?.kind==="silence"?"This clip has a transcript but no spoken dialog.":e.body?null:e.source==="plain"?"No GPT-4o translation yet.":"No transcript yet."}function jw(e){return e?.kind==="timed"}async function wf(e,t,n,o){const r=h(await e("export_asset_file",{book_id:n,asset_id:o,to:t==="copy"?"clipboard":"downloads"},{background:!0})),i=t==="copy"?"copied":"exported";if(r?.status!==i||typeof r.path!="string")throw new Error("The server did not confirm the file action. Try again.");return t==="copy"?"File copied to clipboard":`Saved ${r.path}`}function Gw({call:e,bookId:t,artifactId:n}){const[o,r]=_.useState({phase:"idle"}),i=_.useRef(!1),s=!!(e&&t&&n);async function a(c){if(!(!e||!t||!n||i.current)){i.current=!0,r({phase:"running",action:c});try{const l=await wf(e,c,t,n);r({phase:"done",message:l})}catch(l){r({phase:"failed",message:l instanceof Error?l.message:String(l)})}finally{i.current=!1}}}return{state:o,available:s,run:a}}function Sf(e){const t=e;return t?Ei(t.tags):null}function If(e){const t=e;return!t||!Array.isArray(t.suggestions)?[]:t.suggestions.flatMap(n=>{const o=n,r=typeof o.facet=="string"?o.facet:null,i=typeof o.key=="string"?o.key:null,s=typeof o.label=="string"?o.label:null;if(!r||!i||!s)return[];const a=Number(o.assets);return[{facet:r,key:i,label:s,assets:Number.isFinite(a)?a:0}]})}function qw({call:e,target:t,tags:n}){const o=t?`${t.bookId}/${t.assetId}`:"",r=JSON.stringify(n),[i,s]=_.useState({targetKey:o,source:r,canonical:n,pending:[],error:null}),[a,c]=_.useState({targetKey:o,tags:[]}),l=_.useRef(Promise.resolve()),u=_.useRef(0),m=_.useRef(0);let f=i;(i.targetKey!==o||i.source!==r)&&(f={targetKey:o,source:r,canonical:n,pending:i.targetKey===o?i.pending:[],error:i.targetKey===o?i.error:null},s(f));const d=f.pending.reduce((I,E)=>er(I,E.edit,E.action),f.canonical),p=_.useCallback((I,E)=>{if(!e||!t)return Promise.resolve();let C;try{C=Ai(I,[...d?.effective??[],...d?.dismissed??[],...a.targetKey===o?a.tags:[]])}catch(T){return s(N=>({...N,error:T instanceof Error?T.message:String(T)})),Promise.resolve()}const A=++u.current;s(T=>({...T,pending:[...T.pending,{id:A,edit:C,action:E}],error:null}));const $=l.current.then(async()=>{try{const T=await e("edit_asset_tag",{op:E,book_id:t.bookId,asset_id:t.assetId,facet:C.facet,label:C.label}),N=Sf(T);if(!N)throw new Error("The server returned no tag state");s(M=>M.targetKey!==o||!M.pending.some(R=>R.id===A)?M:{...M,canonical:M.source===r?N:er(M.canonical,C,E),pending:M.pending.filter(R=>R.id!==A)})}catch(T){s(N=>N.targetKey!==o||!N.pending.some(M=>M.id===A)?N:{...N,pending:N.pending.filter(M=>M.id!==A),error:T instanceof Error?T.message:String(T)})}});return l.current=$,$},[e,d,a,r,t,o]),g=_.useCallback(I=>p(I,"add"),[p]),y=_.useCallback(I=>p(I,"remove"),[p]),v=_.useCallback(I=>p(I,"restore"),[p]),S=_.useCallback(async(I,E)=>{if(!e||!t)return;const C=++m.current;try{const A=await e("suggest_asset_tags",{book_id:t.bookId,...I.trim()?{prefix:I.trim()}:{},...E?{facet:E}:{},limit:20},{background:!0});m.current===C&&c({targetKey:o,tags:If(A)})}catch{m.current===C&&c({targetKey:o,tags:[]})}},[e,t,o]),w=_.useMemo(()=>Ll(a.targetKey===o?a.tags:[],d?.effective??[]),[d,a,o]),k=_.useCallback(()=>s(I=>({...I,error:null})),[]);return{tags:d,busy:f.pending.length>0,error:f.error,canEdit:!!(e&&t),suggestions:w,addTag:g,removeTag:y,restoreTag:v,loadSuggestions:S,clearError:k}}const vs="videobook.prompt-history.pins";function xf(){try{const e=window.localStorage.getItem(vs),t=e?JSON.parse(e):[];return new Set(Array.isArray(t)?t.filter(n=>typeof n=="string"):[])}catch{return new Set}}function Af(e){try{window.localStorage.setItem(vs,JSON.stringify([...e]))}catch{return}}function Ef(e){return e instanceof Error?e.message:String(e)}function Uw({call:e,bookId:t,surface:n,prompt:o,onApply:r}){const[i,s]=_.useState(!1),[a,c]=_.useState(!1),[l,u]=_.useState(null),[m,f]=_.useState(null),[d,p]=_.useState(0),[g,y]=_.useState("book"),[v,S]=_.useState("surface"),[w,k]=_.useState(""),[I,E]=_.useState(xf),[C,A]=_.useState(-1),[$,T]=_.useState(""),N=_.useRef(0),M=!!(e&&t&&n),R=C>=0&&m?.[C]?.prompt===o,D=R?C:-1,z=async(P,Y)=>{if(!e||!t||!n)return null;const Me=N.current+1;N.current=Me;const Se={bookId:t,surface:n,scope:P,surfaceFilter:Y};c(!0),u(null);try{const $t=ef(Qd(await e("list_prompt_history",tf(Se))));return N.current!==Me?null:(f($t),p(Date.now()),$t)}catch($t){return N.current===Me&&u(Ef($t)),null}finally{N.current===Me&&c(!1)}},q=(P,Y,Me)=>{if(Y<0){A(-1),r(Me);return}const Se=P[Y];Se&&(A(Y),r(Se.prompt))},J=()=>{if(!M)return;if(D>=0&&m){q(m,D+1,$);return}const P=o;T(P),z(g,v).then(Y=>{Y&&q(Y,0,P)})},pe=()=>{!R||!m||q(m,D-1,$)},ge=()=>{A(-1),r($)},K=()=>{if(i){s(!1);return}s(!0),k(""),z(g,v)},H=P=>{y(P),A(-1),z(P,v)},U=P=>{S(P),A(-1),z(g,P)},we=P=>{const Y=new Set(I);Y.has(P)?Y.delete(P):Y.add(P),E(Y),Af(Y)},Q=P=>{A(-1),s(!1),r(P)},B=P=>P.altKey&&P.key==="ArrowUp"?(P.preventDefault(),J(),!0):P.altKey&&P.key==="ArrowDown"?(P.preventDefault(),pe(),!0):P.key==="Escape"&&R?(P.preventDefault(),P.stopPropagation(),ge(),!0):!1;return{available:M,open:i,loading:a,error:l,entries:m,loadedAt:d,scope:g,surfaceFilter:v,surface:n??"",query:w,pins:I,stepping:R,position:D+1,canOlder:M&&(m===null||!R||D<m.length-1),canNewer:R,toggleOpen:K,close:()=>s(!1),setQuery:k,setScope:H,setSurfaceFilter:U,togglePin:we,use:Q,older:J,newer:pe,handlePromptKeyDown:B}}const Cf={generate_image:"image_generate",generate_video:"video_generate",generate_audio:"audio_generate"};function Bw(e){return Cf[e]??null}function Mf(e){return e==="image-reverse"?"image":"video"}async function Hw(e,{sourceBookId:t,sourceArtifactId:n,mode:o,previewUrl:r,sourceRange:i}){const s=await e("prepare_search_reference",{source_book_id:t,source_artifact_id:n,kind:Mf(o),...i?{source_start_seconds:i.startSeconds,source_duration_seconds:i.durationSeconds}:{}});return ks(s,r)}function Tf(e,t){if(e.type.startsWith(`${t}/`))return!0;const n=e.name.split(".").at(-1)?.toLowerCase()??"";return t==="image"?["jpg","jpeg","png","webp","heic","heif"].includes(n):["mp4","mov","webm","mkv","avi"].includes(n)}function Ww(e,t,n){const o=Number(e||"0");if(!Number.isFinite(o)||o<0)throw new Error("Reference start must be a non-negative number");const r=t.trim()?Number(t):void 0;if(r!==void 0&&(!Number.isFinite(r)||r<=0))throw new Error("Reference duration must be a positive number");const i=n.durationMs===void 0?void 0:n.durationMs/1e3;if(i!==void 0&&o>=i)throw new Error("Reference start must fall within the video");if(i!==void 0&&r!==void 0&&o+r>i)throw new Error("Reference range extends past the end of the video");if(!(o===0&&r===void 0))return{start_seconds:o,...r===void 0?{}:{duration_seconds:r}}}async function Kw(e,t,n){if(!Tf(e,n))throw new Error(`Choose a compatible ${n} file`);const o=e.name.trim()||`${n}-reference.${n==="image"?"png":"mp4"}`,r=new URLSearchParams({filename:o,bookId:t,kind:n}),i=await fetch(`/api/search-references?${r}`,{method:"POST",headers:e.type?{"Content-Type":e.type}:{},body:e}),s=await i.json();if(!i.ok)throw new Error(lt(s,"error")??"Could not prepare search reference");const a=ks(s);return a.previewUrl?a:{...a,previewUrl:URL.createObjectURL(e),localPreview:!0}}async function Rf(e){e&&(e.localPreview&&e.previewUrl&&URL.revokeObjectURL(e.previewUrl),await fetch(`/api/search-references/${encodeURIComponent(e.referenceId)}`,{method:"DELETE"}).catch(()=>{}))}function ks(e,t){const n=lt(e,"reference_id"),o=lt(e,"kind"),r=lt(e,"name"),i=vr(e,"expires_at");if(!n||o!=="image"&&o!=="video"||!r||i===null)throw new Error("The server returned an invalid search reference");const s=vr(e,"duration_ms"),a=lt(e,"preview_url")??t;return{referenceId:n,kind:o,name:r,expiresAt:i,...s===null?{}:{durationMs:s},...a?{previewUrl:a}:{}}}function lt(e,t){if(typeof e!="object"||e===null)return null;const n=e[t];return typeof n=="string"?n:null}function vr(e,t){if(typeof e!="object"||e===null)return null;const n=e[t];return typeof n=="number"&&Number.isFinite(n)?n:null}const ws=.25,kr=.01;function Yn(e){return Math.min(1,Math.max(0,e))}function jt(e){return Math.round(Yn(e)*1e6)/1e6}function $f(e,t){const n=Math.max(e.x,t.x),o=Math.max(e.y,t.y),r=Math.min(e.x+e.width,t.x+t.width),i=Math.min(e.y+e.height,t.y+t.height),s=Math.max(0,r-n)*Math.max(0,i-o),a=e.width*e.height+t.width*t.height-s;return a>0?s/a:0}function zw(e,t){const n=jt(Math.min(e.x,t.x)),o=jt(Math.min(e.y,t.y)),r=jt(Math.min(1-n,Math.abs(t.x-e.x))),i=jt(Math.min(1-o,Math.abs(t.y-e.y)));return r<kr||i<kr?null:{x:n,y:o,width:r,height:i}}function Xw(e,t,n){return n.width<=0||n.height<=0?{x:0,y:0}:{x:Yn((e-n.left)/n.width),y:Yn((t-n.top)/n.height)}}function Nf(e,t,n=ws){return t.flatMap(r=>{if(!r.box)return[];const i=$f(e,r.box);return i>=n?[{subjectId:r.id,iou:i,box:r.box}]:[]}).sort((r,i)=>i.iou-r.iou)[0]??null}function Yw(e,t,n=ws){const o=Nf(e.box,t,n);return o?{...e,box:o.box,matchedSubjectId:o.subjectId}:e}function Jw(e,t,n={}){return{subjectIds:[...e],regions:t.map(o=>({id:o.id,box:o.box,...o.matchedSubjectId?{matchedSubjectId:o.matchedSubjectId}:{}})),replacements:{...n}}}const Pf="Mention a replacement image (for example @g7) or assign one in the panel.",Of="Mention one image for every region, or one image to use for all of them.",Lf="Draw a region or select a person or object to replace.";function Ss(e){const t=new Set,n=[];for(const o of e){const r=o.trim();if(!r)continue;const i=r.toLowerCase();t.has(i)||(t.add(i),n.push(r))}return n}function Zw(e,t,n=e){const o=new Set(e.flatMap(s=>s.matchedSubjectId?[s.matchedSubjectId]:[])),r=e.map(s=>({key:s.id,box:s.box,...s.matchedSubjectId?{subjectId:s.matchedSubjectId}:{},label:s.matchedSubjectId?t.find(a=>a.id===s.matchedSubjectId)?.label??`Region ${n.findIndex(a=>a.id===s.id)+1}`:`Region ${n.findIndex(a=>a.id===s.id)+1}`})),i=t.flatMap(s=>o.has(s.id)?[]:[{key:s.id,...s.box?{box:s.box}:{},subjectId:s.id,label:s.label}]);return[...r,...i]}function Qw(e,t){return e.length>0&&e.every(n=>!!t[n.key]?.trim())}function eS(e,t){return e.flatMap(n=>{const o=t[n.key]?.trim();return o?[{replacementArtifactId:o,...n.box?{box:n.box}:{},...n.subjectId?{subjectId:n.subjectId}:{}}]:[]})}function tS(e,t,n){if(e.length===0)return{ok:!1,error:Lf};const o={};for(const s of e){const a=t[s.key]?.trim();a&&(o[s.key]=a)}const r=Ss(n),i=e.filter(s=>!o[s.key]);if(r.length===1){const s=r[0];for(const a of i)o[a.key]=s}else if(r.length>1){if(r.length!==i.length)return{ok:!1,error:Of};i.forEach((s,a)=>{o[s.key]=r[a]})}return e.every(s=>!!o[s.key])?{ok:!0,replacements:o}:{ok:!1,error:Pf}}function nS(e,t){const n=new Map(t.map(i=>[i.cellAddress.toLowerCase(),i])),o=[],r=new Set;for(const i of Ss(e)){const s=n.get(i.toLowerCase());if(!s)return{ok:!1,error:`@${i.toLowerCase()} is not an image on this notebook.`};if(s.type.toLowerCase()!=="image")return{ok:!1,error:`@${s.cellAddress} is a ${s.type}, not an image.`};r.has(s.artifactId)||(r.add(s.artifactId),o.push(s.artifactId))}return{ok:!0,artifactIds:o}}function oS(e){return`region-${e.length+1}-${Math.random().toString(36).slice(2,8)}`}function rS(e,t,n=!1){if(t.length>0)return`${t.map(r=>r.label).join(", ")}${n?" · replaced with another image":""}`;if(e.length===0)return null;const o=e.slice(0,3).map(r=>r.label).join(", ");return e.length>3?`${o} +${e.length-3}`:o}function iS(e,t,n=!1){return n?"Optional notes for the replacement. Pick an image below, or mention one like @g7.":t.length>0?`Describe how to change ${t.map(o=>o.label).join(" and ")}, e.g. "remove the glass door". To replace with an image, pick one below or mention @g7.`:e.length===0?'Describe a whole-image edit, e.g. "make it look like a snowy night", or select a subject to scope the change.':`Describe how to change ${e.slice(0,2).map(o=>o.label).join(" and ")}, e.g. "make it smooth porcelain".`}function Ff(e){if(e<60)return`${e.toFixed(1)}s`;const t=Math.floor(e/60),n=Math.round(e%60);return`${t}:${String(n).padStart(2,"0")}`}function sS(e){const t=[];return e.width&&e.height&&t.push(`${e.width} × ${e.height}`),e.duration&&e.type!=="image"&&t.push(Ff(e.duration)),t.push(e.type==="final"?"VIDEO":e.type.toUpperCase()),t}const Df=["button","input","select","textarea","[href]",'[contenteditable="true"]',"[tabindex]"].join(", ");function Vf(e){const t=e.getAttribute("tabindex");return!e.hidden&&!e.matches(':disabled, [type="hidden"]')&&(t===null||!Number.isFinite(Number(t))||Number(t)>=0)&&e.closest('[hidden], [aria-hidden="true"], [inert]')===null}function jf(e){return[...e.querySelectorAll(Df)].filter(Vf)}function Gf(e,t,n){const o=e[0],r=e.at(-1);return!o||!r?null:e.includes(t)?n&&t===o?r:!n&&t===r?o:null:n?r:o}function aS(e,t){if(e.key==="Escape"){t.busy||(e.preventDefault(),t.onClose());return}if(e.key!=="Tab"||!t.container)return;const n=jf(t.container),o=t.activeElement===void 0?document.activeElement:t.activeElement,r=Gf(n,o,e.shiftKey);r&&(e.preventDefault(),r.focus())}async function wr(e,t,n,o){await e("delete_notebook_cell",{book_id:t,notebook_id:n,cell_id:o}).catch(()=>{})}function qf(e){const t=h(e);return x(t?.id)}async function Uf(e,t,n,o){const r=h(await e("get_notebook",{book_id:t,notebook_id:n}).catch(()=>null));if(!r)return null;const i=Array.isArray(r.cells)?r.cells:[],s=Array.isArray(r.edges)?r.edges:[];for(const a of s){const c=h(a),l=x(c?.source),u=x(c?.target),m=x(c?.targetInput??c?.target_input);if(l===o&&m==="media"&&u)return u}for(const a of i){const c=h(a);if(x(c?.type)!=="audio")continue;const l=h(c?.inputs);if(x(l?.producerCellId)===o)return qf(c)}return null}async function cS(e){const t=e.text.trim(),n=e.voiceId.trim();if(!t)throw new Error("Speak text is required");if(!n)throw new Error("Speak voice is required");const o=mn(e.document.cells,[],e.lastWorkSlot??null);let r=null,i=null;try{const s=h(await e.callTool("create_notebook_cell",{book_id:e.bookId,notebook_id:e.document.id,...e.expectedRevision?{expected_revision:e.expectedRevision}:{},cell:{type:"generate_audio",label:"Speak",slot:o,prompt:t,inputs:{generationSettings:{voice_id:n}}}}));r=x(s?.id),i=x(h(s?.output_cell)?.id);const a=x(s?.address)??ue(o);if(!r)throw new Error("The server did not return the Speak cell");if(!i)throw new Error("The server did not return the Speak output cell");return{cellId:r,cellAddress:a,outputCellId:i}}catch(s){let a=i;throw r&&!a&&(a=await Uf(e.callTool,e.bookId,e.document.id,r)),a&&await wr(e.callTool,e.bookId,e.document.id,a),r&&await wr(e.callTool,e.bookId,e.document.id,r),s}}function Bf(e){const t=h(e);return{voices:Array.isArray(t?.voices)?t.voices.flatMap(o=>{const r=h(o),i=x(r?.voice_id)??x(r?.voiceId),s=x(r?.name),a=x(r?.source);if(!i||!s||a!=="custom"&&a!=="generic")return[];const c=x(r?.category),l=x(r?.preview_url)??x(r?.previewUrl);return[{voiceId:i,name:s,source:a,...c?{category:c}:{},...l?{previewUrl:l}:{}}]}):[],status:t?.status==="live"?"live":"fallback",warning:W(t?.warning)}}async function Hf(e){return Bf(await e("list_elevenlabs_voices",{},{background:!0}))}function Sr(){return{voices:[],status:"fallback",warning:null,loading:!1,error:null}}function Wf(e){let t=e.ready,n=e.load,o=0,r=!1,i=Sr(),s=null;const a=new Set,c=m=>{i=m;for(const f of a)f()},l=()=>{o+=1,r=!1,s=null,c(Sr())},u=()=>{if(!t)return Promise.resolve(null);if(s)return s;const m=o,f=Promise.resolve().then(()=>n()).then(d=>o!==m||s!==f?null:(r=!0,s=null,c({...d,loading:!1,error:null}),d),d=>(o!==m||s!==f||(r=!1,s=null,c({...i,loading:!1,error:d instanceof Error?d.message:String(d)})),null));return s=f,c({...i,loading:!0,error:null}),f};return{configure(m){t===m.ready&&n===m.load||(t=m.ready,n=m.load,l())},ensureLoaded(){return t?s||(r?Promise.resolve({voices:i.voices,status:i.status,warning:i.warning}):u()):Promise.resolve(null)},getSnapshot(){return i},refresh:u,reset:l,subscribe(m){return a.add(m),()=>a.delete(m)}}}function lS(e){const t=ne.c(25),{callTool:n,ready:o}=e;let r;t[0]!==n?(r=()=>Hf(n),t[0]=n,t[1]=r):r=t[1];const i=r;let s;t[2]!==i||t[3]!==o?(s=()=>Wf({ready:o,load:i}),t[2]=i,t[3]=o,t[4]=s):s=t[4];const[a]=_.useState(s);let c,l;t[5]!==a||t[6]!==i||t[7]!==o?(c=()=>{a.configure({ready:o,load:i})},l=[a,i,o],t[5]=a,t[6]=i,t[7]=o,t[8]=c,t[9]=l):(c=t[8],l=t[9]),_.useEffect(c,l);let u,m;t[10]!==a?(u=()=>()=>a.reset(),m=[a],t[10]=a,t[11]=u,t[12]=m):(u=t[11],m=t[12]),_.useEffect(u,m);const f=_.useSyncExternalStore(a.subscribe,a.getSnapshot,a.getSnapshot);let d;t[13]!==a?(d=()=>a.ensureLoaded(),t[13]=a,t[14]=d):d=t[14];const p=d;let g;t[15]!==a?(g=()=>a.refresh(),t[15]=a,t[16]=g):g=t[16];const y=g;let v;return t[17]!==p||t[18]!==y||t[19]!==f.error||t[20]!==f.loading||t[21]!==f.status||t[22]!==f.voices||t[23]!==f.warning?(v={voices:f.voices,status:f.status,warning:f.warning,loading:f.loading,error:f.error,ensureLoaded:p,refresh:y},t[17]=p,t[18]=y,t[19]=f.error,t[20]=f.loading,t[21]=f.status,t[22]=f.voices,t[23]=f.warning,t[24]=v):v=t[24],v}function Kf(e){const t=h(e);if(!t)return null;const n=o=>t[o]===!0;return{semantic:n("semantic"),regionReplace:n("regionReplace"),wholeImage:n("wholeImage"),exactMask:n("exactMask")}}function zf(e){const t=h(e),n=Array.isArray(t?.models)?t.models:[],o=[];for(const r of n){const i=h(r),s=x(i?.id),a=x(i?.label),c=x(i?.provider),l=Kf(i?.capabilities);if(!s||!a||c!=="kie"&&c!=="fal"||!l)continue;const u=typeof i?.max_input_images=="number"&&Number.isFinite(i.max_input_images)?i.max_input_images:null;o.push({id:s,label:a,provider:c,capabilities:l,maxInputImages:u,available:i?.available===!0})}return{models:o,defaultModelId:x(t?.default_model)??o[0]?.id??bi,lastUsedModelId:x(t?.last_used_model)}}function uS(e){const t=ne.c(13),{callTool:n,ready:o}=e,[r,i]=_.useState(null),[s,a]=_.useState(!1),[c,l]=_.useState(null),u=_.useRef(null),m=_.useRef(null);let f;t[0]!==n||t[1]!==r||t[2]!==o?(f=S=>{if(!o||u.current||m.current===S&&r)return;a(!0),l(null);const w=n("list_image_edit_models",{book_id:S},{background:!0}).then(k=>{u.current===w&&(u.current=null,m.current=S,i(zf(k)),a(!1))}).catch(k=>{u.current===w&&(u.current=null,l(k instanceof Error?k.message:String(k)),a(!1))});u.current=w},t[0]=n,t[1]=r,t[2]=o,t[3]=f):f=t[3];const d=f;let p;t[4]!==r?.models?(p=r?.models??[],t[4]=r?.models,t[5]=p):p=t[5];const g=r?.defaultModelId??bi,y=r?.lastUsedModelId??null;let v;return t[6]!==d||t[7]!==c||t[8]!==s||t[9]!==p||t[10]!==g||t[11]!==y?(v={models:p,defaultModelId:g,lastUsedModelId:y,loading:s,error:c,ensureLoaded:d},t[6]=d,t[7]=c,t[8]=s,t[9]=p,t[10]=g,t[11]=y,t[12]=v):v=t[12],v}function dS(e,t,n){const o=t.find(s=>s.id===e.cell_id)??t.find(s=>s.outputArtifactId!==void 0&&s.outputArtifactId===e.asset_id);if(!o)return{ok:!1,message:"That cell is no longer in this notebook."};const r=ue(o.slot),i=n.find(s=>s.artifactId===o.outputArtifactId);return i?i.type==="audio"?{ok:!1,message:`${r} holds audio; fullscreen shows images and video.`}:!i.mediaUrl&&!i.thumbnailUrl?{ok:!1,message:`${r} is still processing. Try again when it is ready.`}:{ok:!0,cell:o,asset:i,address:r}:{ok:!1,message:`${r} has no media yet.`}}function fS(e,t,n,o){const r=e?.trim()||t?.outputArtifactId;if(!r)return{ok:!1,message:"Select a video cell or pass a target: /watermark @a1"};const i=n.find(a=>a.artifactId===r);if(!i)return{ok:!1,message:`No asset found for ${r}`};if(i.type!=="video")return{ok:!1,message:`Watermark applies to video assets; ${o.get(r)??r} is ${i.type}`};const s=o.get(r);return{ok:!0,artifactId:r,label:s?`@${s}`:r}}const Xf=["top-left","top-center","top-right","middle-left","middle-center","middle-right","bottom-left","bottom-center","bottom-right"],Yf=33,Jf=10,Zf=90,Qf=.5,em=.05,tm=1,Is=32,nm=0,om=96,rm=88,im=26,mS=480,sm=100,am=0,cm=100,lm=["center","above-qr","on-qr","below-qr"];function pS(e){return Number.isFinite(e)?Math.min(Zf,Math.max(Jf,e)):Yf}function gS(e){return Number.isFinite(e)?Math.min(tm,Math.max(em,e)):Qf}function um(e){return Number.isFinite(e)?Math.round(Math.min(om,Math.max(nm,e))):Is}function hS(e){const t=um(e);return Math.max(im+4,rm+2*(t-Is))}function dm(e){return typeof e=="string"&&lm.includes(e)}function bS(e){return Number.isFinite(e)?Math.round(Math.min(cm,Math.max(am,e))):sm}function fm(e){return e==="auto"||Xf.includes(e)}const mm=.5,pm=0,gm=2,hm=.001;function yS(e){if(!Number.isFinite(e))return mm;const t=Math.min(gm,Math.max(pm,e));return Math.round(t*10)/10}function bm(e,t,n,o){const r=Math.max(0,e),s=(t===null?n:Math.min(t,n))-r;if(!(o>0)||!(s>0))return{fadeIn:0,fadeOut:0};const a=Math.min(o,s/2),c=t!==null&&t<n-hm;return{fadeIn:r>0?a:0,fadeOut:c?a:0}}function _S(e,t,n,o,r,i){if(e<t||n!==null&&e>n)return 0;const s=bm(t,n,o,i);let a=1;return s.fadeIn>0&&(a=Math.min(a,(e-t)/s.fadeIn)),s.fadeOut>0&&n!==null&&(a=Math.min(a,(n-e)/s.fadeOut)),r*Math.min(1,Math.max(0,a))}const xs="videobook.watermark-review.v1:",mt=new Map;function Ir(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null}function Co(e){const t=Ir(e);if(!t)return{};const n={};gc(t.platform)&&(n.platform=t.platform),fm(t.position)&&(n.position=t.position),dm(t.handlePlacement)&&(n.handlePlacement=t.handlePlacement),typeof t.url=="string"&&(n.url=t.url);for(const r of["includeQr","includeHandle","includePlatformIcon","includeHandleBorder","saveDefault"])typeof t[r]=="boolean"&&(n[r]=t[r]);for(const r of["handleVerticalPercent","handlePadding","handlePaddingY","handleRounding","qrOpacity","handleOpacity","fadeSeconds","qrStartSeconds","handleStartSeconds"]){const i=t[r];typeof i=="number"&&Number.isFinite(i)&&(n[r]=i)}for(const r of["qrEndSeconds","handleEndSeconds"]){const i=t[r];(i===null||typeof i=="number"&&Number.isFinite(i))&&(n[r]=i)}const o=Ir(t.handles);if(o){n.handles={};for(const r of pc)typeof o[r]=="string"&&(n.handles[r]=o[r])}return n}function ym(e){if(!e)return{};const t=mt.get(e);if(t)return t;try{const n=window.localStorage.getItem(`${xs}${e}`);if(n!==null)return Co(JSON.parse(n))}catch{return mt.get(e)??{}}return mt.get(e)??{}}function vS(e,t,{handle:n,...o}){if(!e)return;const r=ym(e),i={...r,...Co(o),platform:o.platform??t,handles:n===void 0?r.handles:{...r.handles,[t]:n}};try{window.localStorage.setItem(`${xs}${e}`,JSON.stringify(i)),mt.delete(e)}catch{mt.set(e,i)}}function _m(e,t){if(!t||!Number.isFinite(t)||t<=0)return e;const n={...e};for(const[o,r]of[["qrStartSeconds","qrEndSeconds"],["handleStartSeconds","handleEndSeconds"]]){const i=Math.max(0,e[o]??0),s=Math.min(t,e[r]??t);n[o]=i<s?i:0,n[r]=i<s&&e[r]!=null?s:null}return n}function vm(e,t,n){const o=Ra,r=n&&n>0?$a(o,n):null,i={...e},s=a=>e[a]===void 0&&t[a]===void 0;return s("position")&&(i.position="bottom-right"),s("handleVerticalPercent")&&(i.handleVerticalPercent=o.handleVerticalPercent),s("handlePadding")&&(i.handlePadding=o.handlePaddingX),s("handlePaddingY")&&(i.handlePaddingY=o.handlePaddingY),s("handleRounding")&&(i.handleRounding=o.handleRounding),s("qrOpacity")&&(i.qrOpacity=o.qrOpacity),s("handleOpacity")&&(i.handleOpacity=o.handleOpacity),s("fadeSeconds")&&(i.fadeSeconds=o.fadeSeconds),s("includePlatformIcon")&&(i.includePlatformIcon=o.includePlatformIcon),s("includeHandleBorder")&&(i.includeHandleBorder=o.includeHandleBorder),s("handlePlacement")&&(i.handlePlacement=o.handlePlacement),s("url")&&(i.url=o.profileUrl),r&&s("qrStartSeconds")&&s("qrEndSeconds")&&(i.qrStartSeconds=r.qrStartSeconds,i.qrEndSeconds=r.qrEndSeconds),r&&s("handleStartSeconds")&&s("handleEndSeconds")&&(i.handleStartSeconds=r.handleStartSeconds,i.handleEndSeconds=r.handleEndSeconds),i}function kS(e,t,n){const o=t.platform??e.platform??"tiktok",r=o==="tiktok"?vm(e,t,n):e;return{..._m(r,n),...Co(t),platform:o,handles:t.handle===void 0?e.handles:{...e.handles,[o]:t.handle}}}const km=new Set(["queued","running","completing"]);function xr(e){return e.state==="failed"||e.state==="aborted"}function wS(e,t,n,o){const r=o.find(a=>a.id===t);if(!r)return{kind:"missing"};if(xr(r))return{kind:"failed",message:r.error?.message??"Watermark burn failed"};if(r.state!=="done")return{kind:"continue"};const i=o.filter(a=>a.artifactId===e&&a.id>t),s=i.find(xr);return s||n?.status==="error"?{kind:"failed",message:s?.error?.message??"Post-watermark processing failed"}:i.some(a=>km.has(a.state))?{kind:"continue"}:n&&n.status!=="ready"?{kind:"continue"}:{kind:"completed",result:r.result}}function SS(e){const t=e.placementSource==="vision"||e.placementSource==="cached"?" (frame-aware)":"",n=Math.round(e.handleOpacity*100),o=e.includeHandle?e.handlePlacement==="center"?` · handle ${e.handleVerticalPercent}% from top at ${n}%`:` · handle ${e.handlePlacement.replace("-"," ")} at ${n}%`:"",r=e.includeQr?` · QR ${Math.round(e.qrOpacity*100)}%`:"",i=e.corner??e.requestedPosition;return e.includeQr?e.includeHandle?`QR + @${e.handle} watermarks burned in — QR ${i}${t}${r}${o}.`:`QR watermark burned in — ${i}${t}${r}.`:`@${e.handle} watermark burned in${o}.`}function IS(e,t,n,o){return`Burning ${e?t?`QR + @${n} watermarks`:"QR watermark":`@${n} watermark`} into ${o}…`}function xS(e){return e===1?"1 artifact":`${e} artifacts`}function AS(e){return e===1?"1 notebook":`${e} notebooks`}function ES(e,t,n){return n?{mode:e,closeMenu:!1}:t.kind==="close"?{mode:{kind:"idle"},closeMenu:!0}:t.kind==="escape"?e.kind==="idle"?{mode:e,closeMenu:!0}:{mode:{kind:"idle"},closeMenu:!1}:t.kind==="cancel"?e.kind==="idle"?{mode:e,closeMenu:!1}:{mode:{kind:"idle"},closeMenu:!1}:t.kind==="begin-create"?{mode:{kind:"create"},closeMenu:!1}:t.kind==="begin-rename"?{mode:{kind:"rename",bookId:t.bookId},closeMenu:!1}:{mode:{kind:"delete",bookId:t.bookId},closeMenu:!1}}function nn(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)?e:null}function fe(e,t){const n=Array.isArray(e)?e:nn(e)?.[t];return Array.isArray(n)?n.flatMap(o=>{const r=nn(o);return r?[r]:[]}):[]}function ie(e,t,n){return e.flatMap(o=>{const r=t.map(a=>o[a]).find(a=>typeof a=="string"&&!!a);if(!r)return[];const i=n.map(a=>o[a]).find(a=>typeof a=="string"&&!!a)??r,s=[o.type,o.status,o.createdAt??o.date].filter(a=>typeof a=="string").join(" · ");return[{value:r,label:i,...s?{detail:s}:{}}]})}async function CS(e,t,n){const o=e.inputSchema.properties??{},r=e.handler.kind==="tool"?e.handler.tool:"",i={choices:{},entities:{},values:{}};let s=[];const a=[];o.notebook_id&&a.push((async()=>{i.choices.notebook_id=ie(fe(await n("list_notebooks",{}),"notebooks"),["id"],["name"])})()),/^(?:get|update|delete)_entity$/u.test(r)&&a.push((async()=>{const f=fe(await n("list_entities",{}),"entities");i.choices.entity_id=ie(f,["id"],["name"]),i.entities=Object.fromEntries(f.filter(d=>typeof d.id=="string").map(d=>[String(d.id),d])),r.startsWith("update_")&&typeof t.entity_id=="string"&&i.entities[t.entity_id]&&(i.values.entity=i.entities[t.entity_id])})()),o.job_id&&a.push((async()=>{i.choices.job_id=ie(fe(await n("list_jobs",{limit:200}),"jobs"),["id","jobId"],["name","type","tool"])})()),o.archive_ids&&a.push((async()=>{i.choices.archive_ids=ie(fe(await n("search_archive",{limit:100,presign_media:!1}),"results"),["archive_id"],["title","filename"])})());const c=t.asset_id??t.artifact_id,l=typeof c=="string"?c:void 0;(o.commit_hash||o.target_revision||o.action_id||o.target_action_id)&&a.push((async()=>{const f=l&&o.commit_hash?fe(await n("asset_history",{asset_id:l,limit:200}),"commits"):fe(await n("list_book_actions",{limit:200}),"actions"),d=ie(f,["hash","revision"],["message","operation"]);i.choices.commit_hash=d,i.choices.target_revision=d;const p=f.flatMap(y=>{const v=nn(y.details)?.actionId;return typeof v=="string"?[{...y,actionId:v}]:[]}),g=ie(p,["actionId"],["operation","message"]);i.choices.action_id=r==="get_history_action"?ie(f,["hash","revision"],["operation","message"]):g,i.choices.target_action_id=g,r==="read_file_at_commit"&&(s=ie(f.flatMap(y=>{const v=nn(y.details)?.path;return typeof v=="string"?[{name:v}]:[]}),["name"],["name"]))})()),o.filename&&l&&["read_file_at_commit","export_asset_file"].includes(r)&&a.push((async()=>{i.choices.filename=ie(fe(await n("asset_manifest",{asset_id:l}),"files"),["name"],["name"])})()),o.plan_id&&typeof t.notebook_id=="string"&&a.push((async()=>{const f=fe(await n(r.includes("generation")||r==="continue_notebook_generation"?"list_notebook_generation_plans":"list_notebook_run_plans",{notebook_id:t.notebook_id}),"plans");i.choices.plan_id=ie(f,["planId","plan_id"],["prompt","status"])})()),o.model&&e.generation&&a.push((async()=>{const f=fe(await n("list_generation_models",{media:e.generation?.mediaType}),"models");i.choices.model=f.flatMap(d=>ie([d],["id"],["title"]).map(p=>({...p,...typeof d.available=="boolean"?{available:d.available}:{},frontier:is(d.frontier)})))})()),o.voice_id&&a.push((async()=>{i.choices.voice_id=ie(fe(await n("list_elevenlabs_voices",{}),"voices"),["voice_id","id"],["name"])})()),(o.subject_ids||o.subject_id)&&l&&typeof t.object_hash=="string"&&a.push((async()=>{const f=fe(await n("get_image_subject_map",{artifact_id:l,object_hash:t.object_hash}),"subjects");i.choices.subject_id=ie(f,["id","subjectId"],["label","name"]),i.choices.subject_ids=i.choices.subject_id})());const m=(await Promise.allSettled(a)).flatMap(f=>f.status==="rejected"?[f.reason instanceof Error?f.reason.message:String(f.reason)]:[]);if(m.length)throw new Error(`Could not load action choices: ${m.join(" · ")}`);if(s.length){const f=new Map((i.choices.filename??[]).map(d=>[d.value,d]));for(const d of s)f.has(d.value)||f.set(d.value,{...d,detail:"Historical file"});i.choices.filename=[...f.values()]}return i}const MS={open_actions:{kind:"existing"},switch_book:{kind:"existing"},open_projects:{kind:"existing"},open_music_video:{kind:"existing"},start_goal:{kind:"existing"},open_alive_captions:{kind:"existing"},open_cold_open:{kind:"existing"},open_post_dropbox:{kind:"existing"},open_post_icloud:{kind:"existing"},open_watermark:{kind:"existing"},speak_preview:{kind:"existing"},x_connect:{kind:"existing"},open_provider_keys:{kind:"screen",screen:"settings"},open_inbox:{kind:"library"},open_jobs:{kind:"screen",screen:"jobs"},open_status:{kind:"form",tool:"list_book_actions"},open_revisions:{kind:"form",tool:"list_book_actions"},open_diagnostics:{kind:"form",tool:"doctor"},open_entities:{kind:"search",query:"Entities"},open_archive:{kind:"form",tool:"search_archive"},open_rename_all:{kind:"form",tool:"rename_all"},open_crop:{kind:"form",tool:"crop_asset"},open_osg:{kind:"form",tool:"set_video_overlay"},settings_osg:{kind:"form",tool:"set_video_overlay"},settings_audio:{kind:"form",tool:"render_video"},settings_subs:{kind:"form",tool:"render_video"},settings_bg:{kind:"form",tool:"render_video"},viewer_show_settings:{kind:"form",tool:"render_video"},settings_landscape:{kind:"form",tool:"render_video"},settings_portrait:{kind:"form",tool:"render_video"},settings_square:{kind:"form",tool:"render_video"},viewer_focus_file:{kind:"form",tool:"asset_manifest"},open_post_composer:{kind:"form",tool:"post"},timeline_audio_add:{kind:"form",tool:"add_timeline_audio"},timeline_audio_move:{kind:"form",tool:"move_timeline_audio"},timeline_audio_remove:{kind:"form",tool:"remove_timeline_audio"},timeline_audio_update:{kind:"form",tool:"update_timeline_audio"},rewind_activity:{kind:"form",tool:"restore_edit_action"},sidebar_sort:{kind:"form",tool:"list_assets"},run_notebook:{kind:"form",tool:"plan_notebook_run"},open_upload:{kind:"special",action:"upload"},copy_clipboard:{kind:"special",action:"copy"},show_history:{kind:"special",action:"history"},open_asset:{kind:"special",action:"open"},viewer_set_original:{kind:"special",action:"original"},viewer_set_landscape:{kind:"special",action:"landscape"},viewer_set_portrait:{kind:"special",action:"portrait"},viewer_toggle_info:{kind:"form",tool:"read_asset_metadata"},close_viewer:{kind:"special",action:"close"},sidebar_collapse:{kind:"special",action:"collapse"},sidebar_expand:{kind:"special",action:"expand"},save_notebook:{kind:"special",action:"save"},open_notebook:{kind:"special",action:"notebook"},open_slot_player:{kind:"special",action:"play"},extract_skeleton:{kind:"special",action:"skeleton"}};function TS(e,t,n){const o={...t};if(e==="open_osg"&&t.image&&(o.osg_asset_id=t.image),e==="open_post_composer"&&t.asset_ref&&(o.asset_id=t.asset_ref),e==="open_crop"&&t.ratio!==void 0&&t.ratio!==null&&String(t.ratio).trim()!==""&&(o.ratio=Cm(t.ratio)),e==="sidebar_sort"&&(o.sort=Am(t.order)),e==="viewer_toggle_info"&&(o.name="original"),e==="settings_bg"){const i=Em(t.mode);i&&(o.background_mode=i)}["settings_landscape","settings_portrait","settings_square"].includes(e)&&(o.orientation=e.slice(9)),e.startsWith("timeline_audio_")&&((e==="timeline_audio_add"||t.start!==void 0)&&(o.start_frame=Math.round(Number(t.start??0)*n)),t.duration!==void 0&&(o.duration_frames=Math.round(Number(t.duration)*n))),e==="rewind_activity"&&t.commit_hash&&(o.target_revision=t.commit_hash);const r=String(t.field??"").trim().toLowerCase();if(e==="settings_subs"&&["on","off"].includes(r)&&(o.subtitles_enabled=r==="on"),["settings_audio","settings_subs","timeline_audio_update"].includes(e)&&r&&t.value!==void 0){const i=e==="timeline_audio_update"?Mm(r):e==="settings_audio"?Tm(r):As[r]??r,s=String(t.value),a=Number(s);if(e==="timeline_audio_update"&&!Number.isFinite(a))throw new Error("Usage: /audio-set @clip volume|fade-in|fade-out <value>");o[i]=["on","off","true","false"].includes(s.toLowerCase())?["on","true"].includes(s.toLowerCase()):s.trim()&&Number.isFinite(a)?a:Rm(r,i,s)}return o}const wm=["newest","oldest"],Sm=["blur","black"],As={"fade-in":"audio_fade_in","fade-out":"audio_fade_out",volume:"audio_volume",enabled:"subtitles_enabled",style:"highlight_style",size:"font_size",fontsize:"font_size",color:"text_color",textcolor:"text_color",highlight:"highlight_color",highlightcolor:"highlight_color",stroke:"stroke_width",strokewidth:"stroke_width",strokecolor:"stroke_color",shadow:"shadow_blur",shadowblur:"shadow_blur",shadowopacity:"shadow_opacity",language:"subtitle_language"},Im={position:["top","middle","bottom"],highlight_style:["impact","highlight","alive"],font_size:["small","medium","large"]},xm={position:{mid:"middle"},font_size:{s:"small",m:"medium",l:"large"}};function RS(e){if(e==null||e==="")return 1;const t=typeof e=="number"?e:Number(String(e).trim());if(!Number.isInteger(t)||t<1)throw new Error("Usage: /files <position>");return t}function $S(e){const t=(e??"both").trim().toLowerCase();if(t==="left"||t==="right"||t==="both")return t;throw new Error("Choose left, right or both.")}function Am(e){const t=String(e??"newest").trim().toLowerCase();if(t==="newest"||t==="oldest")return t;throw new Error(`Usage: /sort ${wm.join("|")}`)}function Em(e){if(e==null||String(e).trim()==="")return null;const t=String(e).trim().toLowerCase();if(t==="blur"||t==="black")return t;throw new Error(`Usage: /bg ${Sm.join("|")}`)}function Cm(e){const t=String(e).trim().toLowerCase();if(t==="16:9"||t==="landscape")return"16:9";if(t==="9:16"||t==="portrait")return"9:16";if(t==="1:1"||t==="square")return"1:1";throw new Error("Usage: /crop @asset [16:9|9:16|1:1]")}function Mm(e){const t=e.replaceAll("-","_");if(t==="volume"||t==="fade_in"||t==="fade_out")return t;throw new Error("Usage: /audio-set @clip volume|fade-in|fade-out <value>")}function Tm(e){const t=As[e];if(t==="audio_volume"||t==="audio_fade_in"||t==="audio_fade_out")return t;throw new Error("Usage: /audio volume|fade-in|fade-out <value>")}function Rm(e,t,n){if(t==="subtitle_language"){const s=n.trim().toLowerCase();if(/^(original|[a-z]{2})$/u.test(s))return s;throw new Error("Usage: /subs language original|en")}const o=Im[t];if(!o)return n;const r=n.trim().toLowerCase(),i=xm[t]?.[r]??r;if(o.includes(i))return i;throw new Error(`Usage: /subs ${e} ${o.join("|")}`)}const $m={audio:new Set(["aac","flac","m4a","mp3","ogg","wav","weba"]),image:new Set(["gif","heic","heif","jpeg","jpg","png","svg","webp"]),video:new Set(["avi","mkv","mov","mp4","webm"])},NS={audio:"audio/*,.aac,.flac,.m4a,.mp3,.ogg,.wav,.weba",image:"image/*,.gif,.heic,.heif,.jpeg,.jpg,.png,.svg,.webp",video:"video/*,.avi,.mkv,.mov,.mp4,.webm"};function PS(e){const t=e.type.split("/",1)[0];if(t==="audio"||t==="image"||t==="video")return t;const n=e.name.toLowerCase().split(".").pop()??"";for(const o of["audio","image","video"])if($m[o].has(n))return o;return null}function Nm(e){return e==="audio"||e==="image"||e==="video"?e:null}function OS(e,t,n){return Nm(e)!==null&&t===void 0&&n===0}function LS(e){return e.types.includes("Files")}const FS=["Media","Text & analysis","Generation","Edit"],Jn=[{type:"audio",label:"Audio",group:"Media"},{type:"image",label:"Image",group:"Media"},{type:"video",label:"Video",group:"Media"},{type:"post",label:"Post",group:"Media"},{type:"character",label:"Character",group:"Media"},{type:"prompt",label:"Prompt",group:"Text & analysis"},{type:"analyze",label:"Analyze",group:"Text & analysis"},{type:"generate_video",label:"Generate video",group:"Generation"},{type:"generate_image",label:"Generate image",group:"Generation"},{type:"generate_audio",label:"Generate audio",group:"Generation"},{type:"extract_audio",label:"Extract audio",group:"Edit"},{type:"split_video",label:"Split video",group:"Edit"},{type:"concat",label:"Concat",group:"Edit"},{type:"splice",label:"Splice",group:"Edit"},{type:"timeline",label:"Timeline",group:"Edit"}],Pm=new Set(Jn.map(e=>e.type));function Ar(e){return e.trim().toLocaleLowerCase().replaceAll("_"," ")}function DS(e){const t=Ar(e);return t?Jn.filter(n=>Ar(`${n.label} ${n.type} ${n.group}`).includes(t)):Jn}function VS(e){return Pm.has(e)}const Om=new Intl.NumberFormat("en-US",{notation:"compact",maximumFractionDigits:1}),Lm=new Intl.NumberFormat("en-US"),jS={images:"Images",video:"Video",audio:"Audio",chat:"Chat",voice:"Voice",analysis:"Analysis & transcription"};function GS(e,t=!1){return(t?Lm:Om).format(e)}function Fm(e){return e>0&&e<.01?"<$0.01":`$${e.toLocaleString("en-US",{minimumFractionDigits:2,maximumFractionDigits:2})}`}function qS(e){const t=e.reportedUsd+e.estimatedUsd;return t===0&&e.unpriced>0?"— cost":`${e.estimatedUsd>0?"~":""}${Fm(t)}`}function Dm(e){if(!e||typeof e!="object")throw new Error("Usage is unavailable");const t=e;if(typeof t.trackedSince!="number"||!t.totals||!Array.isArray(t.groups)||!Array.isArray(t.recent))throw new Error("Usage is unavailable");return t}function US({bookId:e,ready:t,call:n}){const[o,r]=_.useState(null),[i,s]=_.useState(null),[a,c]=_.useState(0),l=_.useEffectEvent(async u=>{try{const m=Dm(await n("get_book_usage",{book_id:e},{background:!0}));if(!u())return;r(f=>f?.bookId===e&&JSON.stringify(f.data)===JSON.stringify(m)?f:{bookId:e,data:m}),s(null)}catch{u()&&s(e)}});return _.useEffect(()=>{if(!t||!e)return;let u=!0,m=!1,f=0;const d=async()=>{if(window.clearTimeout(f),!(!u||m||document.visibilityState==="hidden")){m=!0;try{await l(()=>u)}finally{m=!1,u&&(f=window.setTimeout(d,2e3))}}},p=()=>{d()};return f=window.setTimeout(p,0),window.addEventListener("focus",p),document.addEventListener("visibilitychange",p),()=>{u=!1,window.clearTimeout(f),window.removeEventListener("focus",p),document.removeEventListener("visibilitychange",p)}},[e,t,a]),{snapshot:o?.bookId===e?o.data:null,stale:!t||i===e,retry:()=>c(u=>u+1)}}const Es=new Set(["video","generate_video","concat","splice"]);function Vm(e,t){const n=ke(t),o=e.cells.find(r=>r.outputArtifactId?.toLowerCase()===n);return o||(e.cells.find(r=>Es.has(r.type)&&ii(e,r)?.toLowerCase()===n)??null)}function Mo(e,t){let n;try{n=xo(e,t)}catch(o){const r=Vm(e,t);if(!r)throw o;n=r}if(!Es.has(n.type))throw new Error(`${Z(n)} is not a video-producing cell`);if(!ii(e,n))throw new Error(`${Z(n)} does not have a video output yet`);return n}const jm="[a-z0-9][a-z0-9-]*",Gm=new RegExp(`^(?:please\\s+)?(?:/split|split)\\s+@(${jm})(?:\\s+([\\s\\S]+?))?(?:\\s+please)?[.!]?$`,"iu"),oe=.02;function G(e){return Math.round(e*1e3)/1e3}function _e(e){const t=Math.max(0,Math.round(e*1e3)),n=Math.floor(t/6e4),o=(t-n*6e4)/1e3;return`${n}:${o.toFixed(3).padStart(6,"0")}`}function BS(e){const t=e.pieces[e.selectedIndex]??e.pieces[0];return t?`Cutting ${_e(t.startSeconds)}–${_e(t.endSeconds)} (${t.durationSeconds.toFixed(3)}s)`:"Split video"}function HS(e){return typeof e!="number"||!Number.isFinite(e)||!(e>0)?null:1/e}function qm(e,t){return(e==="all"?Math.max(1,t):1)+1}function Zn(e){const t=e.trim().toLowerCase(),n=t.match(/^(\d+(?:\.\d+)?)\s*(?:s|secs?|seconds?)?$/u);if(n)return Number(n[1]);const o=t.match(/^(\d+)\s*(?:m|mins?|minutes?)\s*(?:(\d+(?:\.\d+)?)\s*(?:s|secs?|seconds?)?)?$/u);if(o)return Number(o[1])*60+Number(o[2]??0);const r=t.match(/^(?:(\d+):)?(\d+):([0-5]?\d(?:\.\d+)?)$/u);return r?Number(r[1]??0)*3600+Number(r[2])*60+Number(r[3]):null}function Um(e){return e.trim().replace(/^(?:into|at)\s+/iu,"").replace(/\s+(?:and|plus)\s+(?:(?:keep|use)\s+)?(?:the\s+)?(?:remaining|remainder|rest)(?:\s+(?:clip|part|video))?$/iu,"").trim()}function Bm(e){const t=Um(e);return t?t.split(/\s*(?:,|;|\band\b|\bthen\b)\s*/iu).map(n=>n.trim()).filter(Boolean):[]}function Hm(e,t,n){const o=Xe(e),r=Vn(n,o),i=[];let s=r;for(let a=0;a<t;a+=1){const c=Vn(s,[...o,r,...i]);i.push(c),s=c}return{action:r,outputs:i}}function Wm(e){const t={id:Wt(),type:"video",label:`Chunk ${String(e.chunkIndex+1).padStart(2,"0")}`,slot:e.slot,inputs:{chunkCount:e.chunkCount,chunkIndex:e.chunkIndex,endSeconds:e.endSeconds,mediaRole:"split-video-output",producerCellId:e.actionCell.id,sourceCellId:e.source.id,startSeconds:e.startSeconds,state:"pending"}};return{chunkIndex:e.chunkIndex,endSeconds:e.endSeconds,outputCell:t,startSeconds:e.startSeconds}}function Km(e){return{id:e.id,type:e.type,...e.label===void 0?{}:{label:e.label},slot:e.slot,...e.provider===void 0?{}:{provider:e.provider},...e.operation===void 0?{}:{operation:e.operation},...e.tool===void 0?{}:{tool:e.tool},...e.inputs===void 0?{}:{inputs:e.inputs}}}function zm(e){const t=e.trim().match(/^(keep|remove)\s+([\s\S]+)$/iu);if(!t)return null;const n=t[2].trim().match(/^(.+?)\s*[-–]\s*(.+)$/u);if(!n)throw new Error("Use a keep/remove range, for example: /split @a1 keep 0.03-0.11");const o=Zn(n[1]),r=Zn(n[2]);if(o===null||r===null||!Number.isFinite(o)||!Number.isFinite(r)||!(r>o)||o<0)throw new Error("Use positive split times, for example: /split @a1 keep 0.03-0.11");return{endSeconds:G(r),mode:t[1].toLowerCase()==="remove"?"remove":"keep",startSeconds:G(o)}}function WS(e){const t=e.trim().match(Gm);if(!t)return null;const n=t[2]?.trim()??"";if(n&&/^(keep|remove)\b/iu.test(n)){const i=zm(n);if(!i)return null;const s=[i.startSeconds,i.endSeconds].filter(a=>a>0).sort((a,c)=>a-c);return{sourceReference:t[1].toLowerCase(),cutPointsSeconds:s,outputMode:i.mode,selectedChunkIndexes:[i.startSeconds>0?1:0]}}const r=(n?Bm(n):[]).map(Zn);if(r.some(i=>!Number.isFinite(i)||!(i>0)))throw new Error("Use positive split times, for example: /split @a3 at 15s, 28.5s");return{sourceReference:t[1].toLowerCase(),cutPointsSeconds:r.map(i=>G(i)).sort((i,s)=>i-s)}}function Xt(e){for(const t of e)if(!(G(t.endSeconds-t.startSeconds)>=oe))throw new Error(`Keep at least ${oe}s in every output range`)}function hn(e){const t=G(e.sourceDurationSeconds);if(!Number.isFinite(t)||t<oe)throw new Error(`Video must be at least ${oe}s long to split`);const o=(e.cutPointsSeconds.length>0?e.cutPointsSeconds:[t/2]).map(s=>G(s)).sort((s,a)=>s-a);if(o.some(s=>!Number.isFinite(s)))throw new Error("Split times must be finite numbers");const r=[0,...o,t],i=r.slice(0,-1).map((s,a)=>({endSeconds:r[a+1],startSeconds:s}));for(const s of i)if(!(s.endSeconds>s.startSeconds))throw new Error(`Keep at least ${oe}s in every output range`);return i}function KS(e){const t=hn(e);return Xt(t),t.slice(0,-1).map(n=>n.endSeconds)}function Xm(e){const t=hn({cutPointsSeconds:e.cutPointsSeconds,sourceDurationSeconds:e.sourceDurationSeconds}),n=e.outputMode??"all";if(n==="all")return Xt(t),t.map(s=>[s]);const o=new Set((e.selectedChunkIndexes??[0]).filter(s=>Number.isSafeInteger(s)&&s>=0&&s<t.length));if(o.size===0&&o.add(0),n==="keep"){const s=t.filter((a,c)=>o.has(c));if(s.length===0)throw new Error("Keep at least one split piece");return Xt(s),s.map(a=>[a])}const r=t.filter((s,a)=>!o.has(a));if(r.length===0)throw new Error("Remove leaves nothing to keep");const i=r.reduce((s,a)=>s+(a.endSeconds-a.startSeconds),0);return Xt([{startSeconds:r[0].startSeconds,endSeconds:r[0].startSeconds+i}]),[r]}function Ym(e){const t=e.outputMode??"all",n=hn({cutPointsSeconds:e.cutPointsSeconds,sourceDurationSeconds:e.sourceDurationSeconds});if(t==="all")return`Split ${e.sourceAddress} into ${n.length} chunks`;const o=e.selectedChunkIndexes?.[0]??0,r=n[o]??n[0],i=`${_e(r.startSeconds)}-${_e(r.endSeconds)}`;return t==="keep"?`Cut ${i} out of ${e.sourceAddress}`:`Remove ${i} from ${e.sourceAddress}`}function Jm(e,t,n){if(e==="all")return`Chunk ${String(n+1).padStart(2,"0")}`;if(e==="keep"){const a=t[0];return`Cut ${_e(a.startSeconds)}-${_e(a.endSeconds)}`}const o=t[0],r=t[t.length-1],i=o.endSeconds,s=r.startSeconds;return t.length>=2&&s>i?`Without ${_e(i)}-${_e(s)}`:`Without ${_e(o.startSeconds)}-${_e(r.endSeconds)}`}function zS(e){const t=Mo(e.document,e.command.sourceReference);if(!Number.isFinite(e.sourceDurationSeconds)||e.sourceDurationSeconds<=0)throw new Error(`${Z(t)} does not have a usable duration yet; wait for video processing to finish`);const n=e.command.outputMode??"all",o=e.command.selectedChunkIndexes??[],r=Xm({cutPointsSeconds:e.command.cutPointsSeconds,outputMode:n,selectedChunkIndexes:o,sourceDurationSeconds:e.sourceDurationSeconds}),i=hn({cutPointsSeconds:e.command.cutPointsSeconds,sourceDurationSeconds:e.sourceDurationSeconds}).slice(0,-1).map(f=>f.endSeconds),s=Hm(e.document.cells,r.length,t.slot),a=r.map(f=>f.map(d=>({endSeconds:d.endSeconds,startSeconds:d.startSeconds}))),c={id:Wt(),type:"split_video",label:n==="all"?`Split into ${r.length} chunks`:Ym({cutPointsSeconds:i,outputMode:n,selectedChunkIndexes:o.length>0?o:[0],sourceAddress:Z(t),sourceDurationSeconds:e.sourceDurationSeconds}),slot:s.action,provider:"local",operation:n==="all"?"split_at_points":"split_ranges",tool:"ffmpeg",inputs:{cutPointsSeconds:i,endSeconds:e.sourceDurationSeconds,sourceCellId:t.id,sourceDurationSeconds:e.sourceDurationSeconds,startSeconds:0,state:"ready",...n==="all"?{}:{outputsSeconds:a,selectedChunkIndexes:o}}},l=r.map((f,d)=>{const p=f[0].startSeconds,g=f.reduce((v,S)=>v+(S.endSeconds-S.startSeconds),p),y=Wm({actionCell:c,chunkCount:r.length,chunkIndex:d,endSeconds:f.length===1?f[0].endSeconds:g,slot:s.outputs[d],source:t,startSeconds:p});return y.outputCell={...y.outputCell,label:Jm(n,f,d)},y}),u=[c,...l.map(f=>f.outputCell)],m=[{id:Wt(),source:t.id,target:c.id,targetInput:"video"},...l.map(f=>({id:Wt(),source:c.id,target:f.outputCell.id,targetInput:"media"}))];return{actionCell:c,createdCellIds:u.map(f=>f.id),cutPointsSeconds:i,document:{...e.document,cells:[...e.document.cells,...u],edges:[...e.document.edges,...m]},outputs:l,sourceCellId:t.id,sourceAddress:Z(t)}}async function XS(e){const t=[];let n=!1;try{const o=[e.draft.actionCell,...e.draft.outputs.map(c=>c.outputCell)];for(const[c,l]of o.entries()){t.push(l.id);const u=await e.callTool("create_notebook_cell",{book_id:e.bookId,notebook_id:e.draft.document.id,...c===0&&e.expectedRevision?{expected_revision:e.expectedRevision}:{},cell:Km(l)}),m=h(u);if(x(m?.id)!==l.id)throw new Error("The server did not preserve the planned split cell")}await e.callTool("connect_notebook_cells",{book_id:e.bookId,notebook_id:e.draft.document.id,source_cell_id:e.draft.sourceCellId,target_cell_id:e.draft.actionCell.id,target_input:"video"});for(const c of e.draft.outputs)await e.callTool("connect_notebook_cells",{book_id:e.bookId,notebook_id:e.draft.document.id,source_cell_id:e.draft.actionCell.id,target_cell_id:c.outputCell.id,target_input:"media"});n=!0;const r=await e.callTool("run_notebook",{actor:e.actor,book_id:e.bookId,notebook_id:e.draft.document.id,cell_ids:[e.draft.actionCell.id]}),i=h(r),s=x(i?.job_id),a=x(i?.run_id);if(!s||!a)throw new Error("The server did not return a notebook split run");return{actionCellId:e.draft.actionCell.id,actionAddress:Z(e.draft.actionCell),outputs:e.draft.outputs.map(c=>({chunkIndex:c.chunkIndex,outputCellId:c.outputCell.id,outputAddress:Z(c.outputCell)})),cutPointsSeconds:e.draft.cutPointsSeconds,jobId:s,runId:a,sourceCellId:e.draft.sourceCellId,sourceAddress:e.draft.sourceAddress}}catch(o){if(!n)for(const r of t.reverse())await e.callTool("delete_notebook_cell",{book_id:e.bookId,notebook_id:e.draft.document.id,cell_id:r}).catch(()=>{});throw o}}const Zm=1/60;function Qm(e,t){return e[t]}function YS(e){const t=e.windows.filter(a=>Number.isFinite(a.startSeconds)&&Number.isFinite(a.endSeconds)&&a.endSeconds>a.startSeconds);if(t.length===0)return{type:"continue"};const n=e.frameDurationSeconds??Zm,o=e.pendingSeekSeconds;if(typeof o=="number"&&Number.isFinite(o)&&Math.abs(e.currentTimeSeconds-o)>n)return{type:"continue"};const r=Math.min(t.length-1,Math.max(0,e.activeWindowIndex)),i=Qm(t,r),s=e.currentTimeSeconds;if(s>=i.startSeconds&&s<i.endSeconds)return{type:"continue"};if(s>=i.endSeconds){const a=(r+1)%t.length;return{type:"seek",timeSeconds:t[a].startSeconds,windowIndex:a}}return{type:"seek",timeSeconds:i.startSeconds,windowIndex:r}}function JS(e){return e>0&&e<.25}function Je(e){return[...new Set(e.map(G))].filter(t=>Number.isFinite(t)).sort((t,n)=>t-n)}function ep(e){return Je(e.slice(1,-1))}function tp(e,t){return e.length===t.length&&e.every((n,o)=>n===t[o])}function Ce(e){const t=G(e.sourceDurationSeconds),o=[0,...Je(e.cutPointsSeconds).filter(r=>r>0&&r<t),t];return o.slice(0,-1).map((r,i)=>{const s=o[i+1];return{durationSeconds:G(s-r),endSeconds:s,index:i,startSeconds:r}})}function ZS(e){let t=0;return e.map(n=>(t=G(t+n),t))}function QS(e){const t=e.leadSeconds??1.5,n=G(e.sourceDurationSeconds),o=G(e.segment.startSeconds),r=G(e.segment.endSeconds),i=[],s=Math.max(0,G(o-t));o>s&&i.push({startSeconds:s,endSeconds:o});const a=Math.min(n,G(r+t));return a>r&&i.push({startSeconds:r,endSeconds:a}),{segment:{startSeconds:o,endSeconds:r},surroundings:i}}function Cs(e){const t=G(e.sourceDurationSeconds),n=Ce(e),o=n[e.index];if(!o)return{maxEnd:t,maxStart:0,minEnd:oe,minStart:0};const r=n[e.index-1]?.startSeconds??0,i=n[e.index+1]?.endSeconds??t,s=e.index===0?0:G(r+oe);return{maxEnd:e.index===n.length-1?t:G(i-oe),maxStart:G(o.endSeconds-oe),minEnd:G(o.startSeconds+oe),minStart:s}}function To(e){const t=G(e.sourceDurationSeconds),n=Ce(e),o=n[e.index];if(!o)return{cutPointsSeconds:[...e.cutPointsSeconds],selectedIndex:e.index};const r=Cs(e);let i=G(Math.min(r.maxStart,Math.max(r.minStart,e.startSeconds)));i>0&&i<oe&&(i=oe);let s=G(Math.min(r.maxEnd,Math.max(Math.max(r.minEnd,i+oe),e.endSeconds)));if(s<t&&t-s<oe&&(s=G(t-oe)),i===o.startSeconds&&s===o.endSeconds)return{cutPointsSeconds:[...e.cutPointsSeconds],selectedIndex:e.index};const a=n[e.index-1],c=n[e.index+1],l=a?Je(e.cutPointsSeconds.filter(g=>g<=a.startSeconds)):[],u=c?Je(e.cutPointsSeconds.filter(g=>g>=c.endSeconds)):[],m=[];i>0&&m.push(i),s<t&&m.push(s);const f=Je([...l,...m,...u]).filter(g=>g>0&&g<t),p=Ce({cutPointsSeconds:f,sourceDurationSeconds:t}).findIndex(g=>g.startSeconds===i&&g.endSeconds===s);return{cutPointsSeconds:f,selectedIndex:p>=0?p:e.index}}function e0(e){const n=Ce(e)[e.index];return n?To({...e,endSeconds:n.endSeconds,startSeconds:G(n.startSeconds+e.deltaSeconds)}):{cutPointsSeconds:[...e.cutPointsSeconds],selectedIndex:e.index}}function t0(e){const n=Ce(e)[e.index];return n?To({...e,endSeconds:G(n.endSeconds+e.deltaSeconds),startSeconds:n.startSeconds}):{cutPointsSeconds:[...e.cutPointsSeconds],selectedIndex:e.index}}function n0(e){const n=Ce(e)[e.index];if(!n)return{cutPointsSeconds:[...e.cutPointsSeconds],selectedIndex:e.index};const o=n.durationSeconds,r=Cs(e),i=G(Math.min(r.maxEnd-o,Math.max(r.minStart,n.startSeconds+e.deltaSeconds))),s=G(i+o);return i===n.startSeconds&&s===n.endSeconds?{cutPointsSeconds:[...e.cutPointsSeconds],selectedIndex:e.index}:To({...e,endSeconds:s,startSeconds:i})}function o0(e){const n=Ce(e)[e.index];if(!n||n.durationSeconds<oe*2)return{cutPointsSeconds:[...e.cutPointsSeconds],selectedIndex:e.index};const o=G(n.startSeconds+n.durationSeconds/2),r=Je([...e.cutPointsSeconds,o]).filter(i=>i>0&&i<G(e.sourceDurationSeconds));return tp(r,e.cutPointsSeconds)?{cutPointsSeconds:[...e.cutPointsSeconds],selectedIndex:e.index}:{cutPointsSeconds:r,selectedIndex:e.index}}function r0(e){const t=Ce(e),n=t[e.index],o=t[e.index+1];return!n||!o?{cutPointsSeconds:[...e.cutPointsSeconds],selectedIndex:e.index}:{cutPointsSeconds:ep([0,...e.cutPointsSeconds.filter(i=>i!==n.endSeconds),G(e.sourceDurationSeconds)]),selectedIndex:e.index}}const np={steps:[],credits:[]};function i0(e=np,t=At){return{loading:!1,error:null,context:e,options:{enabled:kp(e)},promptOverrides:{},creditsOverride:null,maxCharacters:t}}function s0(e,t){return e.maxCharacters===t?e:{...e,maxCharacters:t}}function yt(e,t){return e.slot.row-t.slot.row||e.slot.column-t.slot.column||e.id.localeCompare(t.id)}function op(e,t){const n=e.cells.filter(o=>!Ge(o)&&(o.outputArtifactId===t||o.outputEntityId===t));if(n.length>0){const o=n.filter(r=>r.type!=="generate_video");return(o.length>0?o:n).sort(yt)}return e.cells.filter(o=>Fe(e,o)===t).sort(yt)}const Er=new Set(["generate_audio","generate_image","generate_video"]),rp=["sourceArtifactId","source_asset_id","first_asset_id","second_asset_id","additional_asset_ids"];function Tn(e,t){const n=e.inputs?.[t];return typeof n=="string"&&n.trim()?n:null}function Gt(e){return e?.trim()?e:null}function Ms(e,t){const n=e.inputs?.[t];return(Array.isArray(n)?n:[n]).filter(r=>typeof r=="string"&&r.trim()!=="")}function ip(e){return rp.flatMap(t=>Ms(e,t))}function sp(e){const t=new Map(e.cells.map(o=>[o.id,o])),n=new Map;for(const o of[...e.cells].sort(yt)){if(Ge(o))continue;const r=Fe(e,o);if(!r)continue;const i=n.get(r);(!i||Er.has(i.type)&&!Er.has(o.type))&&n.set(r,o)}return{cellsById:t,cellsByArtifactId:n}}function Ts(e,t,n){const o=e.edges.filter(s=>s.target===n.id).map(s=>s.source),r=Ms(n,"sourceCellId"),i=ip(n).flatMap(s=>{const a=t.cellsByArtifactId.get(s);return a?[a.id]:[]});return[...new Set([...o,...r,...i])].filter(s=>s!==n.id)}function Cr(e,t,n,o){const r=new Set,i=[],s=[],a=n.map(c=>c.id);for(let c=0;c<a.length;c+=1){const l=a[c];if(!l||r.has(l))continue;r.add(l);const u=t.cellsById.get(l);if(u){if(i.push(u),o(u)){s.push(u);continue}for(const m of Ts(e,t,u))r.has(m)||a.push(m)}}return{visited:i,stopped:s}}function ap(e){return e.type==="generate_video"}function Rs(e,t){const n=t.flatMap(o=>{const r=Fe(e,o);return r?[r]:[]});return[...new Set(n)]}function cp(e,t,n){const o=sa(e,n.id)?.outputCell??null,r=Ts(e,t,n).map(i=>t.cellsById.get(i)).filter(i=>i!==void 0).sort(yt);return{id:n.id,producerCellId:n.id,outputCellId:o?.id??null,outputArtifactId:o?Fe(e,o)??null:Fe(e,n)??null,producerPrompt:Gt(n.prompt)??Tn(n,"prompt"),producerResolvedPrompt:Tn(n,"resolvedPrompt")??Tn(n,"resolved_prompt"),producerTool:Gt(n.tool),producerModel:Gt(n.model),producerProvider:Gt(n.provider),sourceArtifactIds:Rs(e,r)}}function a0(e,t){const n=sp(e),o=op(e,t),r=Cr(e,n,o,ap).stopped.sort(yt),i=Cr(e,n,o,()=>!1).visited;return{steps:r.map(s=>cp(e,n,s)),upstreamArtifactIds:Rs(e,i)}}function c0(e){const t=e.attempts.find(n=>n.status==="completed"&&n.artifactId===e.outputArtifactId&&n.resolvedPrompt?.trim());return t?.resolvedPrompt?.trim()?t.resolvedPrompt:e.outputAssetPrompt?.trim()?e.outputAssetPrompt:e.producerResolvedPrompt?.trim()?e.producerResolvedPrompt:e.producerPrompt?.trim()?e.producerPrompt:""}function l0(e){const t=e.outputArtifactId?e.attempts.find(s=>s.status==="completed"&&s.artifactId===e.outputArtifactId)??null:null,n=t?.tool?.trim()||e.producerTool,o=n?e.actions.find(s=>s.tool===n):void 0,r=o?.title.trim()||t?.model?.trim()||e.producerModel?.trim()||n?.trim()||"";if(!r)return null;const i=o?.providerLabel.trim()||t?.provider?.trim()||e.producerProvider?.trim()||null;return{label:r,provider:i}}const $s="[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}",lp=new RegExp(`^${$s}$`,"iu"),up=new RegExp(`@(${$s}|${aa})(?![\\w-])`,"giu");function dp(e){return e==="video"||e==="final"?"video":e==="image"||e==="audio"?e:"source"}function u0(e,t){const n=new Map(t.map(i=>[ke(i.reference),i.type])),o=new Map,r=new Map;return e.replace(up,(i,s)=>{const a=ke(s),c=o.get(a);if(c)return c;const l=n.get(a);if(!l&&!lp.test(a))return i;const u=dp(l),m=(r.get(u)??0)+1;r.set(u,m);const f=`[${u} ${m}]`;return o.set(a,f),f})}const fp=new Set(["youtube.com","m.youtube.com","music.youtube.com","youtu.be"]),mp=new Set(["x.com","mobile.x.com","twitter.com","mobile.twitter.com"]),pp=new Set(["explore","home","i","intent","messages","notifications","search","settings","share"]);function gp(e,t){if(t==="youtu.be")return e.pathname.split("/")[1]||null;const n=e.searchParams.get("v");return n||(e.pathname.match(/^\/(?:shorts|embed|live|v)\/([A-Za-z0-9_-]+)/)?.[1]??null)}function hp(e,t){const n=gp(e,t);return n&&e.pathname.startsWith("/shorts/")?{kind:"youtube",url:`https://www.youtube.com/shorts/${n}`,videoId:n}:n?{kind:"youtube",url:`https://youtu.be/${n}`,videoId:n}:(e.hash="",{kind:"youtube",url:e.toString(),videoId:null})}function bp(e){const t=e.pathname.match(/^\/([A-Za-z0-9_]{1,15})\/status\/(\d+)/);if(!t)return e.hash="",{kind:"x",url:e.toString(),handle:null,status:!1};const n=t[1],o=pp.has(n.toLowerCase())?null:n;return{kind:"x",url:`https://x.com/${n}/status/${t[2]}`,handle:o,status:!0}}function yp(e){if(typeof e!="string")return null;try{const t=new URL(e);if(t.protocol!=="https:"&&t.protocol!=="http:")return null;const n=t.hostname.toLowerCase().replace(/^www\./,"");return fp.has(n)?hp(t,n):mp.has(n)?bp(t):null}catch{return null}}function _p(e){return e.kind==="youtube"?e.videoId!==null:e.status}function vp(e,t){return typeof e.uploader!="string"?t:e.uploader.replaceAll("@","").replace(/\s+/g," ").trim()||t}function d0(e,t){const n=[t.webpage_url,t.webpageUrl,t.source_url,t.sourceUrl].map(yp).filter(r=>r!==null),o=n.find(_p)??n[0];return o?{id:`${e}:${o.url}`,label:vp(t,o.kind==="x"?"X":"YouTube"),url:o.url,xHandle:o.kind==="x"?o.handle:null}:null}function f0(e){const t=new Set;return e.filter(n=>t.has(n.url)?!1:(t.add(n.url),!0))}const m0="The thread has nothing to post. Add a prompt, or turn the thread off.";function kp(e){return e.credits.length>0||e.steps.some(t=>t.prompt.trim()!==""||t.images.length>0)}function wp(e){return e.slice(0,jn)}function Ns(e,t){return t>1?` (${e+1}/${t})`:""}function Ps(e,t,n){const o=Ns(t,n);if(!e.model)return`Prompt${o}:
|
|
16
16
|
`;const r=e.model.provider?` via ${e.model.provider}`:"";return`Made with ${e.model.label}${r}${o}. Prompt:
|
|
17
17
|
`}const Sp="…",Ip=2;function xp(e,t){for(let n=Math.min(t,e.length-1);n>=0;n-=1)if(/\s/u.test(e.charAt(n)))return n;return-1}function Ap(e,t){if(e.length<=t)return e;const n=Math.max(0,t-Ip),o=xp(e,n),r=o>Math.floor(n/2)?o:n;return`${e.slice(0,r).trimEnd()}${Sp}`}function Ep(e,t,n,o){const r=Ps(e,t,n);return Ap(e.prompt.trim(),o-r.length)}function Cp(e,t){const n=e.context.steps.findIndex(o=>o.id===t.id);return n===-1?0:n}function Mp(e,t){return e.promptOverrides[t.id]??Ep(t,Cp(e,t),e.context.steps.length,e.maxCharacters)}function Tp(e){return e.xHandle?`@${e.xHandle}`:e.label}function Mr(e){return`${Tp(e)}: ${e.url}`}function Rp(e,t=At){const n=[...e].sort((i,s)=>+(i.xHandle===null)-+(s.xHandle===null)),o=n[0];if(!o)return"";if(n.length===1)return`Special thanks to ${Mr(o)}`;const r=`Special thanks to:
|