cueframe 0.8.0 → 0.8.1

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.
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import{E as a}from"./chunk-WJWX26F4.js";import"./chunk-3QSA3EBY.js";export{a as analyzeCommand};
@@ -5,7 +5,7 @@ import{a as g}from"./chunk-3QSA3EBY.js";var u=class extends Error{status;code;de
5
5
 
6
6
  `)}}}finally{try{d.releaseLock()}catch{}}}function rt(e){if(!e.trim())return null;let t=null,o=[];for(let n of e.split(`
7
7
  `)){if(!n||n.startsWith(":"))continue;let r=n.indexOf(":");if(r===-1)continue;let s=n.slice(0,r),i=n.slice(r+1).replace(/^ /,"");s==="event"?t=i:s==="data"&&o.push(i)}return!t||o.length===0?null:{event:t,data:o.join(`
8
- `)}}async function*nt(e,t,o={}){let n=`/v1/projects/${encodeURIComponent(e)}/renders/${encodeURIComponent(t)}/stream`;for await(let r of ot(n,"iterRenderEvents",o)){let s=st(r);s&&(yield s)}}function st(e){let{event:t,data:o}=e;if(o===null||t!=="progress"&&t!=="complete"&&t!=="error")return null;let n;try{n=JSON.parse(o)}catch{return null}return{event:t,data:n}}var b={};g(b,{composeFromSuggestion:()=>dt,getComposeFromSuggestionUrl:()=>G,getListMediaSuggestionsUrl:()=>L,getResetMediaSuggestionsUrl:()=>$,getSuggestBriefsUrl:()=>N,listMediaSuggestions:()=>ut,resetMediaSuggestions:()=>yt,suggestBriefs:()=>lt});var G=e=>`/v1/projects/${e}/composition/from-suggestion`,dt=async(e,t,o)=>{let n=r=>{if(!r)return{};if(r instanceof Headers)return Object.fromEntries(r.entries());if(Symbol.iterator in r)return Object.fromEntries(Array.from(r,i=>Array.from(i)));let s={};for(let[i,p]of Object.entries(r))p!==void 0&&(s[i]=p);return s};return a(G(e),{...o,method:"POST",headers:{"Content-Type":"application/json",...n(o?.headers)},body:JSON.stringify(t)})},L=(e,t)=>{let o=new URLSearchParams;Object.entries(t||{}).forEach(([r,s])=>{s!==void 0&&o.append(r,s===null?"null":String(s))});let n=o.toString();return n.length>0?`/v1/media/${e}/suggestions?${n}`:`/v1/media/${e}/suggestions`},ut=async(e,t,o)=>a(L(e,t),{...o,method:"GET"}),N=e=>`/v1/media/${e}/suggestions`,lt=async(e,t)=>a(N(e),{...t,method:"POST"}),$=e=>`/v1/media/${e}/suggestions`,yt=async(e,t)=>a($(e),{...t,method:"DELETE"});var X={};g(X,{createComponent:()=>Rt,getComponent:()=>bt,getComponentSource:()=>ht,getCreateComponentUrl:()=>_,getGetComponentSourceUrl:()=>z,getGetComponentUrl:()=>V,getListCatalogUrl:()=>J,getPatchComponentUrl:()=>W,getResolveBuiltinComponentUrl:()=>D,getUpdateComponentUrl:()=>H,listCatalog:()=>xt,patchComponent:()=>St,resolveBuiltinComponent:()=>gt,updateComponent:()=>Ct});var D=e=>{let t=new URLSearchParams;Object.entries(e||{}).forEach(([n,r])=>{r!==void 0&&t.append(n,r===null?"null":String(r))});let o=t.toString();return o.length>0?`/v1/components/builtin/resolve?${o}`:"/v1/components/builtin/resolve"},gt=async(e,t)=>a(D(e),{...t,method:"GET"}),J=e=>{let t=new URLSearchParams;Object.entries(e||{}).forEach(([n,r])=>{r!==void 0&&t.append(n,r===null?"null":String(r))});let o=t.toString();return o.length>0?`/v1/components?${o}`:"/v1/components"},xt=async(e,t)=>a(J(e),{...t,method:"GET"}),_=()=>"/v1/components",Rt=async(e,t)=>{let o=n=>{if(!n)return{};if(n instanceof Headers)return Object.fromEntries(n.entries());if(Symbol.iterator in n)return Object.fromEntries(Array.from(n,s=>Array.from(s)));let r={};for(let[s,i]of Object.entries(n))i!==void 0&&(r[s]=i);return r};return a(_(),{...t,method:"POST",headers:{"Content-Type":"application/json",...o(t?.headers)},body:JSON.stringify(e)})},H=e=>`/v1/components/${e}`,Ct=async(e,t,o)=>{let n=r=>{if(!r)return{};if(r instanceof Headers)return Object.fromEntries(r.entries());if(Symbol.iterator in r)return Object.fromEntries(Array.from(r,i=>Array.from(i)));let s={};for(let[i,p]of Object.entries(r))p!==void 0&&(s[i]=p);return s};return a(H(e),{...o,method:"PUT",headers:{"Content-Type":"application/json",...n(o?.headers)},body:JSON.stringify(t)})},W=e=>`/v1/components/${e}`,St=async(e,t,o)=>{let n=r=>{if(!r)return{};if(r instanceof Headers)return Object.fromEntries(r.entries());if(Symbol.iterator in r)return Object.fromEntries(Array.from(r,i=>Array.from(i)));let s={};for(let[i,p]of Object.entries(r))p!==void 0&&(s[i]=p);return s};return a(W(e),{...o,method:"PATCH",headers:{"Content-Type":"application/json",...n(o?.headers)},body:JSON.stringify(t)})},V=e=>`/v1/components/${e}`,bt=async(e,t)=>a(V(e),{...t,method:"GET"}),z=(e,t)=>{let o=new URLSearchParams;Object.entries(t||{}).forEach(([r,s])=>{s!==void 0&&o.append(r,s===null?"null":String(s))});let n=o.toString();return n.length>0?`/v1/components/${e}/source?${n}`:`/v1/components/${e}/source`},ht=async(e,t,o)=>a(z(e,t),{...o,method:"GET"});var te={};g(te,{cancelExport:()=>At,createFcpxmlExport:()=>It,createPremiereExport:()=>wt,getCancelExportUrl:()=>ee,getCreateFcpxmlExportUrl:()=>Z,getCreatePremiereExportUrl:()=>Y,getExport:()=>jt,getGetExportUrl:()=>Q});var Z=e=>`/v1/projects/${e}/exports/fcpxml`,It=async(e,t,o)=>{let n=r=>{if(!r)return{};if(r instanceof Headers)return Object.fromEntries(r.entries());if(Symbol.iterator in r)return Object.fromEntries(Array.from(r,i=>Array.from(i)));let s={};for(let[i,p]of Object.entries(r))p!==void 0&&(s[i]=p);return s};return a(Z(e),{...o,method:"POST",headers:{"Content-Type":"application/json",...n(o?.headers)},body:JSON.stringify(t)})},Y=e=>`/v1/projects/${e}/exports/premiere`,wt=async(e,t,o)=>{let n=r=>{if(!r)return{};if(r instanceof Headers)return Object.fromEntries(r.entries());if(Symbol.iterator in r)return Object.fromEntries(Array.from(r,i=>Array.from(i)));let s={};for(let[i,p]of Object.entries(r))p!==void 0&&(s[i]=p);return s};return a(Y(e),{...o,method:"POST",headers:{"Content-Type":"application/json",...n(o?.headers)},body:JSON.stringify(t)})},Q=(e,t)=>`/v1/projects/${e}/exports/${t}`,jt=async(e,t,o)=>a(Q(e,t),{...o,method:"GET"}),ee=(e,t)=>`/v1/projects/${e}/exports/${t}/cancel`,At=async(e,t,o)=>a(ee(e,t),{...o,method:"POST"});var Ce={};g(Ce,{analyzeTimeline:()=>Yt,analyzeTranscript:()=>Zt,createMediaUpload:()=>Ft,createUploadToken:()=>Bt,deleteMedia:()=>Dt,finalizeMedia:()=>Lt,generateMedia:()=>Nt,getAnalyzeTimelineUrl:()=>Re,getAnalyzeTranscriptUrl:()=>xe,getCreateMediaUploadUrl:()=>ne,getCreateUploadTokenUrl:()=>re,getDeleteMediaUrl:()=>ce,getFinalizeMediaUrl:()=>ie,getGenerateMediaUrl:()=>ae,getGetMediaContextUrl:()=>de,getGetMediaTranscriptUrl:()=>me,getGetMediaUrl:()=>fe,getImportMediaUrl:()=>pe,getListMediaFactsUrl:()=>ye,getListMediaUrl:()=>se,getMedia:()=>Jt,getMediaContext:()=>Ht,getMediaTranscript:()=>_t,getPurchaseMediaFactUrl:()=>ge,getSearchLibraryUrl:()=>oe,getTriggerMatteBakeUrl:()=>le,getTriggerSubjectDetectionUrl:()=>ue,importMedia:()=>$t,listMedia:()=>Gt,listMediaFacts:()=>zt,purchaseMediaFact:()=>Xt,searchLibrary:()=>Kt,triggerMatteBake:()=>Vt,triggerSubjectDetection:()=>Wt});var oe=e=>{let t=new URLSearchParams;Object.entries(e||{}).forEach(([n,r])=>{r!==void 0&&t.append(n,r===null?"null":String(r))});let o=t.toString();return o.length>0?`/v1/media/search?${o}`:"/v1/media/search"},Kt=async(e,t)=>a(oe(e),{...t,method:"GET"}),re=()=>"/v1/uploads/token",Bt=async(e,t)=>{let o=n=>{if(!n)return{};if(n instanceof Headers)return Object.fromEntries(n.entries());if(Symbol.iterator in n)return Object.fromEntries(Array.from(n,s=>Array.from(s)));let r={};for(let[s,i]of Object.entries(n))i!==void 0&&(r[s]=i);return r};return a(re(),{...t,method:"POST",headers:{"Content-Type":"application/json",...o(t?.headers)},body:JSON.stringify(e)})},ne=()=>"/v1/media",Ft=async(e,t)=>{let o=n=>{if(!n)return{};if(n instanceof Headers)return Object.fromEntries(n.entries());if(Symbol.iterator in n)return Object.fromEntries(Array.from(n,s=>Array.from(s)));let r={};for(let[s,i]of Object.entries(n))i!==void 0&&(r[s]=i);return r};return a(ne(),{...t,method:"POST",headers:{"Content-Type":"application/json",...o(t?.headers)},body:JSON.stringify(e)})},se=e=>{let t=new URLSearchParams;Object.entries(e||{}).forEach(([n,r])=>{r!==void 0&&t.append(n,r===null?"null":String(r))});let o=t.toString();return o.length>0?`/v1/media?${o}`:"/v1/media"},Gt=async(e,t)=>a(se(e),{...t,method:"GET"}),ie=e=>`/v1/media/${e}/finalize`,Lt=async(e,t,o)=>{let n=r=>{if(!r)return{};if(r instanceof Headers)return Object.fromEntries(r.entries());if(Symbol.iterator in r)return Object.fromEntries(Array.from(r,i=>Array.from(i)));let s={};for(let[i,p]of Object.entries(r))p!==void 0&&(s[i]=p);return s};return a(ie(e),{...o,method:"POST",headers:{"Content-Type":"application/json",...n(o?.headers)},body:JSON.stringify(t)})},ae=()=>"/v1/media/generate",Nt=async(e,t)=>{let o=n=>{if(!n)return{};if(n instanceof Headers)return Object.fromEntries(n.entries());if(Symbol.iterator in n)return Object.fromEntries(Array.from(n,s=>Array.from(s)));let r={};for(let[s,i]of Object.entries(n))i!==void 0&&(r[s]=i);return r};return a(ae(),{...t,method:"POST",headers:{"Content-Type":"application/json",...o(t?.headers)},body:JSON.stringify(e)})},pe=()=>"/v1/media/import",$t=async(e,t)=>{let o=n=>{if(!n)return{};if(n instanceof Headers)return Object.fromEntries(n.entries());if(Symbol.iterator in n)return Object.fromEntries(Array.from(n,s=>Array.from(s)));let r={};for(let[s,i]of Object.entries(n))i!==void 0&&(r[s]=i);return r};return a(pe(),{...t,method:"POST",headers:{"Content-Type":"application/json",...o(t?.headers)},body:JSON.stringify(e)})},ce=e=>`/v1/media/${e}`,Dt=async(e,t)=>a(ce(e),{...t,method:"DELETE"}),fe=e=>`/v1/media/${e}`,Jt=async(e,t)=>a(fe(e),{...t,method:"GET"}),me=(e,t)=>{let o=new URLSearchParams;Object.entries(t||{}).forEach(([r,s])=>{s!==void 0&&o.append(r,s===null?"null":String(s))});let n=o.toString();return n.length>0?`/v1/media/${e}/transcript?${n}`:`/v1/media/${e}/transcript`},_t=async(e,t,o)=>a(me(e,t),{...o,method:"GET"}),de=e=>`/v1/media/${e}/context`,Ht=async(e,t)=>a(de(e),{...t,method:"GET"}),ue=(e,t)=>{let o=new URLSearchParams;Object.entries(t||{}).forEach(([r,s])=>{s!==void 0&&o.append(r,s===null?"null":String(s))});let n=o.toString();return n.length>0?`/v1/media/${e}/detect-subjects?${n}`:`/v1/media/${e}/detect-subjects`},Wt=async(e,t,o)=>a(ue(e,t),{...o,method:"POST"}),le=e=>`/v1/media/${e}/matte`,Vt=async(e,t,o)=>{let n=r=>{if(!r)return{};if(r instanceof Headers)return Object.fromEntries(r.entries());if(Symbol.iterator in r)return Object.fromEntries(Array.from(r,i=>Array.from(i)));let s={};for(let[i,p]of Object.entries(r))p!==void 0&&(s[i]=p);return s};return a(le(e),{...o,method:"POST",headers:{"Content-Type":"application/json",...n(o?.headers)},body:JSON.stringify(t)})},ye=(e,t)=>{let o=new URLSearchParams;Object.entries(t||{}).forEach(([r,s])=>{s!==void 0&&o.append(r,s===null?"null":String(s))});let n=o.toString();return n.length>0?`/v1/media/${e}/facts?${n}`:`/v1/media/${e}/facts`},zt=async(e,t,o)=>a(ye(e,t),{...o,method:"GET"}),ge=e=>`/v1/media/${e}/facts`,Xt=async(e,t,o)=>{let n=r=>{if(!r)return{};if(r instanceof Headers)return Object.fromEntries(r.entries());if(Symbol.iterator in r)return Object.fromEntries(Array.from(r,i=>Array.from(i)));let s={};for(let[i,p]of Object.entries(r))p!==void 0&&(s[i]=p);return s};return a(ge(e),{...o,method:"POST",headers:{"Content-Type":"application/json",...n(o?.headers)},body:JSON.stringify(t)})},xe=e=>`/v1/media/${e}/transcript/analyze`,Zt=async(e,t,o)=>{let n=r=>{if(!r)return{};if(r instanceof Headers)return Object.fromEntries(r.entries());if(Symbol.iterator in r)return Object.fromEntries(Array.from(r,i=>Array.from(i)));let s={};for(let[i,p]of Object.entries(r))p!==void 0&&(s[i]=p);return s};return a(xe(e),{...o,method:"POST",headers:{"Content-Type":"application/json",...n(o?.headers)},body:JSON.stringify(t)})},Re=()=>"/v1/timeline-analysis",Yt=async(e,t)=>{let o=n=>{if(!n)return{};if(n instanceof Headers)return Object.fromEntries(n.entries());if(Symbol.iterator in n)return Object.fromEntries(Array.from(n,s=>Array.from(s)));let r={};for(let[s,i]of Object.entries(n))i!==void 0&&(r[s]=i);return r};return a(Re(),{...t,method:"POST",headers:{"Content-Type":"application/json",...o(t?.headers)},body:JSON.stringify(e)})};var ke={};g(ke,{createProject:()=>eo,deleteProject:()=>ro,getCreateProjectUrl:()=>be,getDeleteProjectUrl:()=>ve,getGetProjectContextUrl:()=>qe,getGetProjectUrl:()=>he,getListProjectsUrl:()=>Se,getPatchProjectUrl:()=>Pe,getProject:()=>to,getProjectContext:()=>no,listProjects:()=>Qt,patchProject:()=>oo});var Se=e=>{let t=new URLSearchParams;Object.entries(e||{}).forEach(([n,r])=>{r!==void 0&&t.append(n,r===null?"null":String(r))});let o=t.toString();return o.length>0?`/v1/projects?${o}`:"/v1/projects"},Qt=async(e,t)=>a(Se(e),{...t,method:"GET"}),be=()=>"/v1/projects",eo=async(e,t)=>{let o=n=>{if(!n)return{};if(n instanceof Headers)return Object.fromEntries(n.entries());if(Symbol.iterator in n)return Object.fromEntries(Array.from(n,s=>Array.from(s)));let r={};for(let[s,i]of Object.entries(n))i!==void 0&&(r[s]=i);return r};return a(be(),{...t,method:"POST",headers:{"Content-Type":"application/json",...o(t?.headers)},body:JSON.stringify(e)})},he=e=>`/v1/projects/${e}`,to=async(e,t)=>a(he(e),{...t,method:"GET"}),Pe=e=>`/v1/projects/${e}`,oo=async(e,t,o)=>{let n=r=>{if(!r)return{};if(r instanceof Headers)return Object.fromEntries(r.entries());if(Symbol.iterator in r)return Object.fromEntries(Array.from(r,i=>Array.from(i)));let s={};for(let[i,p]of Object.entries(r))p!==void 0&&(s[i]=p);return s};return a(Pe(e),{...o,method:"PATCH",headers:{"Content-Type":"application/json",...n(o?.headers)},body:JSON.stringify(t)})},ve=e=>`/v1/projects/${e}`,ro=async(e,t)=>a(ve(e),{...t,method:"DELETE"}),qe=e=>`/v1/projects/${e}/context`,no=async(e,t)=>a(qe(e),{...t,method:"GET"});var Ue={};g(Ue,{cancelRender:()=>co,createRender:()=>so,getCancelRenderUrl:()=>je,getCreateRenderUrl:()=>Ee,getGetRenderUrl:()=>we,getListProjectRendersUrl:()=>Te,getPreviewClipUrl:()=>Ie,getRefreshRenderUrlUrl:()=>Oe,getRender:()=>po,getRetryRenderUrl:()=>Ae,getStreamRenderUrl:()=>Me,listProjectRenders:()=>io,previewClip:()=>ao,refreshRenderUrl:()=>mo,retryRender:()=>fo,streamRender:()=>uo});var Ee=e=>`/v1/projects/${e}/renders`,so=async(e,t,o)=>{let n=r=>{if(!r)return{};if(r instanceof Headers)return Object.fromEntries(r.entries());if(Symbol.iterator in r)return Object.fromEntries(Array.from(r,i=>Array.from(i)));let s={};for(let[i,p]of Object.entries(r))p!==void 0&&(s[i]=p);return s};return a(Ee(e),{...o,method:"POST",headers:{"Content-Type":"application/json",...n(o?.headers)},body:JSON.stringify(t)})},Te=(e,t)=>{let o=new URLSearchParams;Object.entries(t||{}).forEach(([r,s])=>{s!==void 0&&o.append(r,s===null?"null":String(s))});let n=o.toString();return n.length>0?`/v1/projects/${e}/renders?${n}`:`/v1/projects/${e}/renders`},io=async(e,t,o)=>a(Te(e,t),{...o,method:"GET"}),Ie=e=>`/v1/projects/${e}/preview-clip`,ao=async(e,t,o)=>{let n=r=>{if(!r)return{};if(r instanceof Headers)return Object.fromEntries(r.entries());if(Symbol.iterator in r)return Object.fromEntries(Array.from(r,i=>Array.from(i)));let s={};for(let[i,p]of Object.entries(r))p!==void 0&&(s[i]=p);return s};return a(Ie(e),{...o,method:"POST",headers:{"Content-Type":"application/json",...n(o?.headers)},body:JSON.stringify(t)})},we=(e,t)=>`/v1/projects/${e}/renders/${t}`,po=async(e,t,o)=>a(we(e,t),{...o,method:"GET"}),je=(e,t)=>`/v1/projects/${e}/renders/${t}/cancel`,co=async(e,t,o)=>a(je(e,t),{...o,method:"POST"}),Ae=(e,t)=>`/v1/projects/${e}/renders/${t}/retry`,fo=async(e,t,o)=>a(Ae(e,t),{...o,method:"POST"}),Oe=(e,t)=>`/v1/projects/${e}/renders/${t}/refresh-url`,mo=async(e,t,o)=>a(Oe(e,t),{...o,method:"POST"}),Me=(e,t)=>`/v1/projects/${e}/renders/${t}/stream`,uo=async(e,t,o)=>a(Me(e,t),{...o,method:"GET"});var $e={};g($e,{createSession:()=>xo,deleteSession:()=>Co,getCreateSessionUrl:()=>Be,getDeleteSessionUrl:()=>Ge,getGetMuxJobUrl:()=>Ne,getGetSessionUrl:()=>Fe,getListSessionsUrl:()=>Ke,getMuxJob:()=>bo,getSession:()=>Ro,getTriggerMuxJobUrl:()=>Le,listSessions:()=>go,triggerMuxJob:()=>So});var Ke=e=>{let t=new URLSearchParams;Object.entries(e||{}).forEach(([n,r])=>{r!==void 0&&t.append(n,r===null?"null":String(r))});let o=t.toString();return o.length>0?`/v1/sessions?${o}`:"/v1/sessions"},go=async(e,t)=>a(Ke(e),{...t,method:"GET"}),Be=()=>"/v1/sessions",xo=async(e,t)=>{let o=n=>{if(!n)return{};if(n instanceof Headers)return Object.fromEntries(n.entries());if(Symbol.iterator in n)return Object.fromEntries(Array.from(n,s=>Array.from(s)));let r={};for(let[s,i]of Object.entries(n))i!==void 0&&(r[s]=i);return r};return a(Be(),{...t,method:"POST",headers:{"Content-Type":"application/json",...o(t?.headers)},body:JSON.stringify(e)})},Fe=e=>`/v1/sessions/${e}`,Ro=async(e,t)=>a(Fe(e),{...t,method:"GET"}),Ge=e=>`/v1/sessions/${e}`,Co=async(e,t)=>a(Ge(e),{...t,method:"DELETE"}),Le=e=>`/v1/sessions/${e}/mux-job`,So=async(e,t)=>a(Le(e),{...t,method:"POST"}),Ne=e=>`/v1/sessions/${e}/mux-job`,bo=async(e,t)=>a(Ne(e),{...t,method:"GET"});var k="X-CueFrame-Client";var Eo=/^[A-Za-z0-9][A-Za-z0-9._+-]{0,31}$/,To=["web","console","clips"];function Io(e,t){return To.includes(e)===(t==="browser")}function De(e){if(!Eo.test(e.version))throw new Error(`${k} cannot carry the version ${JSON.stringify(e.version)}.`);if(!Io(e.surface,e.os))throw new Error(`${k} cannot carry ${e.surface} on ${e.os}.`);return`${e.surface}/${e.version}/${e.os}`}function Je(e){return e==="darwin"?"macos":e==="win32"?"windows":e==="linux"?"linux":"unknown"}import{readFileSync as wo,writeFileSync as jo,mkdirSync as Ao,existsSync as Oo}from"fs";import{join as _e}from"path";import{homedir as Mo}from"os";var m={Success:0,UserError:2,ApiClientError:3,ApiServerError:4,NetworkError:5,PaymentRequired:6};function A(e){if(e instanceof u){if(e.status===402)return m.PaymentRequired;if(e.status>=500)return m.ApiServerError;if(e.status>=400)return m.ApiClientError}let t=e?.exitCode;return typeof t=="number"?t:m.NetworkError}function DP(e){return e===402?m.PaymentRequired:e>=500?m.ApiServerError:e>=400?m.ApiClientError:m.Success}function h(e){process.exit(e)}var He=_e(Mo(),".cueframe"),E=_e(He,"auth.json"),R={local:"http://127.0.0.1:3211",prod:"https://api.cueframe.ai"},Uo="prod";function zP(e=Uo){return process.env.CUEFRAME_API_URL??R[e]??R.prod}var P=class extends Error{constructor(o,n){super(n);this.code=o;this.name="AuthStoreError"}code;exitCode=m.UserError};function XP(e){if(!/^cf_(?:live|test)_[A-Za-z0-9_-]{8,}$/.test(e))throw new P("auth_invalid","Invalid API key. Expected a key beginning with cf_live_ or cf_test_.")}function We(){if(!Oo(E))return{targets:{}};let e=wo(E,"utf-8");try{return JSON.parse(e)}catch{throw new P("auth_config_corrupt",`${E} is corrupt and cannot be parsed. Delete it and re-run \`cueframe login\`.`)}}function Ko(e){Ao(He,{recursive:!0,mode:448}),jo(E,JSON.stringify(e,null,2),{mode:384})}function ZP(e,t="prod",o){let n=We(),r=R[t]??R.prod;n.targets[t]={apiKey:e,apiUrl:o??r},Ko(n)}function Ve(e="prod"){let t=process.env.CUEFRAME_API_KEY,o=process.env.CUEFRAME_API_URL;if(t)return{apiKey:t,apiUrl:o??R[e]??R.prod};let r=We().targets[e];if(!r)throw new P("auth_missing",`No auth configured for target "${e}". Run \`cueframe login --target ${e}\` (browser sign-in) or \`cueframe auth <api-key> --target ${e}\` (CI / headless).`);return r}function Bo(){return{[k]:De({surface:"cli",version:"0.8.0",os:Je(process.platform)})}}function ze(e){let{apiKey:t,apiUrl:o}=Ve(e);I({baseUrl:o,apiKey:t,headers:Bo()})}function T(e){let t=e instanceof u?`${e.message} (${e.code}${e.status?`, ${e.status}`:""})`:e instanceof Error?e.message:String(e),o=j(e);return o?`${t}
8
+ `)}}async function*nt(e,t,o={}){let n=`/v1/projects/${encodeURIComponent(e)}/renders/${encodeURIComponent(t)}/stream`;for await(let r of ot(n,"iterRenderEvents",o)){let s=st(r);s&&(yield s)}}function st(e){let{event:t,data:o}=e;if(o===null||t!=="progress"&&t!=="complete"&&t!=="error")return null;let n;try{n=JSON.parse(o)}catch{return null}return{event:t,data:n}}var b={};g(b,{composeFromSuggestion:()=>dt,getComposeFromSuggestionUrl:()=>G,getListMediaSuggestionsUrl:()=>L,getResetMediaSuggestionsUrl:()=>$,getSuggestBriefsUrl:()=>N,listMediaSuggestions:()=>ut,resetMediaSuggestions:()=>yt,suggestBriefs:()=>lt});var G=e=>`/v1/projects/${e}/composition/from-suggestion`,dt=async(e,t,o)=>{let n=r=>{if(!r)return{};if(r instanceof Headers)return Object.fromEntries(r.entries());if(Symbol.iterator in r)return Object.fromEntries(Array.from(r,i=>Array.from(i)));let s={};for(let[i,p]of Object.entries(r))p!==void 0&&(s[i]=p);return s};return a(G(e),{...o,method:"POST",headers:{"Content-Type":"application/json",...n(o?.headers)},body:JSON.stringify(t)})},L=(e,t)=>{let o=new URLSearchParams;Object.entries(t||{}).forEach(([r,s])=>{s!==void 0&&o.append(r,s===null?"null":String(s))});let n=o.toString();return n.length>0?`/v1/media/${e}/suggestions?${n}`:`/v1/media/${e}/suggestions`},ut=async(e,t,o)=>a(L(e,t),{...o,method:"GET"}),N=e=>`/v1/media/${e}/suggestions`,lt=async(e,t)=>a(N(e),{...t,method:"POST"}),$=e=>`/v1/media/${e}/suggestions`,yt=async(e,t)=>a($(e),{...t,method:"DELETE"});var X={};g(X,{createComponent:()=>Rt,getComponent:()=>bt,getComponentSource:()=>ht,getCreateComponentUrl:()=>_,getGetComponentSourceUrl:()=>z,getGetComponentUrl:()=>V,getListCatalogUrl:()=>J,getPatchComponentUrl:()=>W,getResolveBuiltinComponentUrl:()=>D,getUpdateComponentUrl:()=>H,listCatalog:()=>xt,patchComponent:()=>St,resolveBuiltinComponent:()=>gt,updateComponent:()=>Ct});var D=e=>{let t=new URLSearchParams;Object.entries(e||{}).forEach(([n,r])=>{r!==void 0&&t.append(n,r===null?"null":String(r))});let o=t.toString();return o.length>0?`/v1/components/builtin/resolve?${o}`:"/v1/components/builtin/resolve"},gt=async(e,t)=>a(D(e),{...t,method:"GET"}),J=e=>{let t=new URLSearchParams;Object.entries(e||{}).forEach(([n,r])=>{r!==void 0&&t.append(n,r===null?"null":String(r))});let o=t.toString();return o.length>0?`/v1/components?${o}`:"/v1/components"},xt=async(e,t)=>a(J(e),{...t,method:"GET"}),_=()=>"/v1/components",Rt=async(e,t)=>{let o=n=>{if(!n)return{};if(n instanceof Headers)return Object.fromEntries(n.entries());if(Symbol.iterator in n)return Object.fromEntries(Array.from(n,s=>Array.from(s)));let r={};for(let[s,i]of Object.entries(n))i!==void 0&&(r[s]=i);return r};return a(_(),{...t,method:"POST",headers:{"Content-Type":"application/json",...o(t?.headers)},body:JSON.stringify(e)})},H=e=>`/v1/components/${e}`,Ct=async(e,t,o)=>{let n=r=>{if(!r)return{};if(r instanceof Headers)return Object.fromEntries(r.entries());if(Symbol.iterator in r)return Object.fromEntries(Array.from(r,i=>Array.from(i)));let s={};for(let[i,p]of Object.entries(r))p!==void 0&&(s[i]=p);return s};return a(H(e),{...o,method:"PUT",headers:{"Content-Type":"application/json",...n(o?.headers)},body:JSON.stringify(t)})},W=e=>`/v1/components/${e}`,St=async(e,t,o)=>{let n=r=>{if(!r)return{};if(r instanceof Headers)return Object.fromEntries(r.entries());if(Symbol.iterator in r)return Object.fromEntries(Array.from(r,i=>Array.from(i)));let s={};for(let[i,p]of Object.entries(r))p!==void 0&&(s[i]=p);return s};return a(W(e),{...o,method:"PATCH",headers:{"Content-Type":"application/json",...n(o?.headers)},body:JSON.stringify(t)})},V=e=>`/v1/components/${e}`,bt=async(e,t)=>a(V(e),{...t,method:"GET"}),z=(e,t)=>{let o=new URLSearchParams;Object.entries(t||{}).forEach(([r,s])=>{s!==void 0&&o.append(r,s===null?"null":String(s))});let n=o.toString();return n.length>0?`/v1/components/${e}/source?${n}`:`/v1/components/${e}/source`},ht=async(e,t,o)=>a(z(e,t),{...o,method:"GET"});var te={};g(te,{cancelExport:()=>At,createFcpxmlExport:()=>It,createPremiereExport:()=>wt,getCancelExportUrl:()=>ee,getCreateFcpxmlExportUrl:()=>Z,getCreatePremiereExportUrl:()=>Y,getExport:()=>jt,getGetExportUrl:()=>Q});var Z=e=>`/v1/projects/${e}/exports/fcpxml`,It=async(e,t,o)=>{let n=r=>{if(!r)return{};if(r instanceof Headers)return Object.fromEntries(r.entries());if(Symbol.iterator in r)return Object.fromEntries(Array.from(r,i=>Array.from(i)));let s={};for(let[i,p]of Object.entries(r))p!==void 0&&(s[i]=p);return s};return a(Z(e),{...o,method:"POST",headers:{"Content-Type":"application/json",...n(o?.headers)},body:JSON.stringify(t)})},Y=e=>`/v1/projects/${e}/exports/premiere`,wt=async(e,t,o)=>{let n=r=>{if(!r)return{};if(r instanceof Headers)return Object.fromEntries(r.entries());if(Symbol.iterator in r)return Object.fromEntries(Array.from(r,i=>Array.from(i)));let s={};for(let[i,p]of Object.entries(r))p!==void 0&&(s[i]=p);return s};return a(Y(e),{...o,method:"POST",headers:{"Content-Type":"application/json",...n(o?.headers)},body:JSON.stringify(t)})},Q=(e,t)=>`/v1/projects/${e}/exports/${t}`,jt=async(e,t,o)=>a(Q(e,t),{...o,method:"GET"}),ee=(e,t)=>`/v1/projects/${e}/exports/${t}/cancel`,At=async(e,t,o)=>a(ee(e,t),{...o,method:"POST"});var Ce={};g(Ce,{analyzeTimeline:()=>Yt,analyzeTranscript:()=>Zt,createMediaUpload:()=>Ft,createUploadToken:()=>Bt,deleteMedia:()=>Dt,finalizeMedia:()=>Lt,generateMedia:()=>Nt,getAnalyzeTimelineUrl:()=>Re,getAnalyzeTranscriptUrl:()=>xe,getCreateMediaUploadUrl:()=>ne,getCreateUploadTokenUrl:()=>re,getDeleteMediaUrl:()=>ce,getFinalizeMediaUrl:()=>ie,getGenerateMediaUrl:()=>ae,getGetMediaContextUrl:()=>de,getGetMediaTranscriptUrl:()=>me,getGetMediaUrl:()=>fe,getImportMediaUrl:()=>pe,getListMediaFactsUrl:()=>ye,getListMediaUrl:()=>se,getMedia:()=>Jt,getMediaContext:()=>Ht,getMediaTranscript:()=>_t,getPurchaseMediaFactUrl:()=>ge,getSearchLibraryUrl:()=>oe,getTriggerMatteBakeUrl:()=>le,getTriggerSubjectDetectionUrl:()=>ue,importMedia:()=>$t,listMedia:()=>Gt,listMediaFacts:()=>zt,purchaseMediaFact:()=>Xt,searchLibrary:()=>Kt,triggerMatteBake:()=>Vt,triggerSubjectDetection:()=>Wt});var oe=e=>{let t=new URLSearchParams;Object.entries(e||{}).forEach(([n,r])=>{r!==void 0&&t.append(n,r===null?"null":String(r))});let o=t.toString();return o.length>0?`/v1/media/search?${o}`:"/v1/media/search"},Kt=async(e,t)=>a(oe(e),{...t,method:"GET"}),re=()=>"/v1/uploads/token",Bt=async(e,t)=>{let o=n=>{if(!n)return{};if(n instanceof Headers)return Object.fromEntries(n.entries());if(Symbol.iterator in n)return Object.fromEntries(Array.from(n,s=>Array.from(s)));let r={};for(let[s,i]of Object.entries(n))i!==void 0&&(r[s]=i);return r};return a(re(),{...t,method:"POST",headers:{"Content-Type":"application/json",...o(t?.headers)},body:JSON.stringify(e)})},ne=()=>"/v1/media",Ft=async(e,t)=>{let o=n=>{if(!n)return{};if(n instanceof Headers)return Object.fromEntries(n.entries());if(Symbol.iterator in n)return Object.fromEntries(Array.from(n,s=>Array.from(s)));let r={};for(let[s,i]of Object.entries(n))i!==void 0&&(r[s]=i);return r};return a(ne(),{...t,method:"POST",headers:{"Content-Type":"application/json",...o(t?.headers)},body:JSON.stringify(e)})},se=e=>{let t=new URLSearchParams;Object.entries(e||{}).forEach(([n,r])=>{r!==void 0&&t.append(n,r===null?"null":String(r))});let o=t.toString();return o.length>0?`/v1/media?${o}`:"/v1/media"},Gt=async(e,t)=>a(se(e),{...t,method:"GET"}),ie=e=>`/v1/media/${e}/finalize`,Lt=async(e,t,o)=>{let n=r=>{if(!r)return{};if(r instanceof Headers)return Object.fromEntries(r.entries());if(Symbol.iterator in r)return Object.fromEntries(Array.from(r,i=>Array.from(i)));let s={};for(let[i,p]of Object.entries(r))p!==void 0&&(s[i]=p);return s};return a(ie(e),{...o,method:"POST",headers:{"Content-Type":"application/json",...n(o?.headers)},body:JSON.stringify(t)})},ae=()=>"/v1/media/generate",Nt=async(e,t)=>{let o=n=>{if(!n)return{};if(n instanceof Headers)return Object.fromEntries(n.entries());if(Symbol.iterator in n)return Object.fromEntries(Array.from(n,s=>Array.from(s)));let r={};for(let[s,i]of Object.entries(n))i!==void 0&&(r[s]=i);return r};return a(ae(),{...t,method:"POST",headers:{"Content-Type":"application/json",...o(t?.headers)},body:JSON.stringify(e)})},pe=()=>"/v1/media/import",$t=async(e,t)=>{let o=n=>{if(!n)return{};if(n instanceof Headers)return Object.fromEntries(n.entries());if(Symbol.iterator in n)return Object.fromEntries(Array.from(n,s=>Array.from(s)));let r={};for(let[s,i]of Object.entries(n))i!==void 0&&(r[s]=i);return r};return a(pe(),{...t,method:"POST",headers:{"Content-Type":"application/json",...o(t?.headers)},body:JSON.stringify(e)})},ce=e=>`/v1/media/${e}`,Dt=async(e,t)=>a(ce(e),{...t,method:"DELETE"}),fe=e=>`/v1/media/${e}`,Jt=async(e,t)=>a(fe(e),{...t,method:"GET"}),me=(e,t)=>{let o=new URLSearchParams;Object.entries(t||{}).forEach(([r,s])=>{s!==void 0&&o.append(r,s===null?"null":String(s))});let n=o.toString();return n.length>0?`/v1/media/${e}/transcript?${n}`:`/v1/media/${e}/transcript`},_t=async(e,t,o)=>a(me(e,t),{...o,method:"GET"}),de=e=>`/v1/media/${e}/context`,Ht=async(e,t)=>a(de(e),{...t,method:"GET"}),ue=(e,t)=>{let o=new URLSearchParams;Object.entries(t||{}).forEach(([r,s])=>{s!==void 0&&o.append(r,s===null?"null":String(s))});let n=o.toString();return n.length>0?`/v1/media/${e}/detect-subjects?${n}`:`/v1/media/${e}/detect-subjects`},Wt=async(e,t,o)=>a(ue(e,t),{...o,method:"POST"}),le=e=>`/v1/media/${e}/matte`,Vt=async(e,t,o)=>{let n=r=>{if(!r)return{};if(r instanceof Headers)return Object.fromEntries(r.entries());if(Symbol.iterator in r)return Object.fromEntries(Array.from(r,i=>Array.from(i)));let s={};for(let[i,p]of Object.entries(r))p!==void 0&&(s[i]=p);return s};return a(le(e),{...o,method:"POST",headers:{"Content-Type":"application/json",...n(o?.headers)},body:JSON.stringify(t)})},ye=(e,t)=>{let o=new URLSearchParams;Object.entries(t||{}).forEach(([r,s])=>{s!==void 0&&o.append(r,s===null?"null":String(s))});let n=o.toString();return n.length>0?`/v1/media/${e}/facts?${n}`:`/v1/media/${e}/facts`},zt=async(e,t,o)=>a(ye(e,t),{...o,method:"GET"}),ge=e=>`/v1/media/${e}/facts`,Xt=async(e,t,o)=>{let n=r=>{if(!r)return{};if(r instanceof Headers)return Object.fromEntries(r.entries());if(Symbol.iterator in r)return Object.fromEntries(Array.from(r,i=>Array.from(i)));let s={};for(let[i,p]of Object.entries(r))p!==void 0&&(s[i]=p);return s};return a(ge(e),{...o,method:"POST",headers:{"Content-Type":"application/json",...n(o?.headers)},body:JSON.stringify(t)})},xe=e=>`/v1/media/${e}/transcript/analyze`,Zt=async(e,t,o)=>{let n=r=>{if(!r)return{};if(r instanceof Headers)return Object.fromEntries(r.entries());if(Symbol.iterator in r)return Object.fromEntries(Array.from(r,i=>Array.from(i)));let s={};for(let[i,p]of Object.entries(r))p!==void 0&&(s[i]=p);return s};return a(xe(e),{...o,method:"POST",headers:{"Content-Type":"application/json",...n(o?.headers)},body:JSON.stringify(t)})},Re=()=>"/v1/timeline-analysis",Yt=async(e,t)=>{let o=n=>{if(!n)return{};if(n instanceof Headers)return Object.fromEntries(n.entries());if(Symbol.iterator in n)return Object.fromEntries(Array.from(n,s=>Array.from(s)));let r={};for(let[s,i]of Object.entries(n))i!==void 0&&(r[s]=i);return r};return a(Re(),{...t,method:"POST",headers:{"Content-Type":"application/json",...o(t?.headers)},body:JSON.stringify(e)})};var ke={};g(ke,{createProject:()=>eo,deleteProject:()=>ro,getCreateProjectUrl:()=>be,getDeleteProjectUrl:()=>ve,getGetProjectContextUrl:()=>qe,getGetProjectUrl:()=>he,getListProjectsUrl:()=>Se,getPatchProjectUrl:()=>Pe,getProject:()=>to,getProjectContext:()=>no,listProjects:()=>Qt,patchProject:()=>oo});var Se=e=>{let t=new URLSearchParams;Object.entries(e||{}).forEach(([n,r])=>{r!==void 0&&t.append(n,r===null?"null":String(r))});let o=t.toString();return o.length>0?`/v1/projects?${o}`:"/v1/projects"},Qt=async(e,t)=>a(Se(e),{...t,method:"GET"}),be=()=>"/v1/projects",eo=async(e,t)=>{let o=n=>{if(!n)return{};if(n instanceof Headers)return Object.fromEntries(n.entries());if(Symbol.iterator in n)return Object.fromEntries(Array.from(n,s=>Array.from(s)));let r={};for(let[s,i]of Object.entries(n))i!==void 0&&(r[s]=i);return r};return a(be(),{...t,method:"POST",headers:{"Content-Type":"application/json",...o(t?.headers)},body:JSON.stringify(e)})},he=e=>`/v1/projects/${e}`,to=async(e,t)=>a(he(e),{...t,method:"GET"}),Pe=e=>`/v1/projects/${e}`,oo=async(e,t,o)=>{let n=r=>{if(!r)return{};if(r instanceof Headers)return Object.fromEntries(r.entries());if(Symbol.iterator in r)return Object.fromEntries(Array.from(r,i=>Array.from(i)));let s={};for(let[i,p]of Object.entries(r))p!==void 0&&(s[i]=p);return s};return a(Pe(e),{...o,method:"PATCH",headers:{"Content-Type":"application/json",...n(o?.headers)},body:JSON.stringify(t)})},ve=e=>`/v1/projects/${e}`,ro=async(e,t)=>a(ve(e),{...t,method:"DELETE"}),qe=e=>`/v1/projects/${e}/context`,no=async(e,t)=>a(qe(e),{...t,method:"GET"});var Ue={};g(Ue,{cancelRender:()=>co,createRender:()=>so,getCancelRenderUrl:()=>je,getCreateRenderUrl:()=>Ee,getGetRenderUrl:()=>we,getListProjectRendersUrl:()=>Te,getPreviewClipUrl:()=>Ie,getRefreshRenderUrlUrl:()=>Oe,getRender:()=>po,getRetryRenderUrl:()=>Ae,getStreamRenderUrl:()=>Me,listProjectRenders:()=>io,previewClip:()=>ao,refreshRenderUrl:()=>mo,retryRender:()=>fo,streamRender:()=>uo});var Ee=e=>`/v1/projects/${e}/renders`,so=async(e,t,o)=>{let n=r=>{if(!r)return{};if(r instanceof Headers)return Object.fromEntries(r.entries());if(Symbol.iterator in r)return Object.fromEntries(Array.from(r,i=>Array.from(i)));let s={};for(let[i,p]of Object.entries(r))p!==void 0&&(s[i]=p);return s};return a(Ee(e),{...o,method:"POST",headers:{"Content-Type":"application/json",...n(o?.headers)},body:JSON.stringify(t)})},Te=(e,t)=>{let o=new URLSearchParams;Object.entries(t||{}).forEach(([r,s])=>{s!==void 0&&o.append(r,s===null?"null":String(s))});let n=o.toString();return n.length>0?`/v1/projects/${e}/renders?${n}`:`/v1/projects/${e}/renders`},io=async(e,t,o)=>a(Te(e,t),{...o,method:"GET"}),Ie=e=>`/v1/projects/${e}/preview-clip`,ao=async(e,t,o)=>{let n=r=>{if(!r)return{};if(r instanceof Headers)return Object.fromEntries(r.entries());if(Symbol.iterator in r)return Object.fromEntries(Array.from(r,i=>Array.from(i)));let s={};for(let[i,p]of Object.entries(r))p!==void 0&&(s[i]=p);return s};return a(Ie(e),{...o,method:"POST",headers:{"Content-Type":"application/json",...n(o?.headers)},body:JSON.stringify(t)})},we=(e,t)=>`/v1/projects/${e}/renders/${t}`,po=async(e,t,o)=>a(we(e,t),{...o,method:"GET"}),je=(e,t)=>`/v1/projects/${e}/renders/${t}/cancel`,co=async(e,t,o)=>a(je(e,t),{...o,method:"POST"}),Ae=(e,t)=>`/v1/projects/${e}/renders/${t}/retry`,fo=async(e,t,o)=>a(Ae(e,t),{...o,method:"POST"}),Oe=(e,t)=>`/v1/projects/${e}/renders/${t}/refresh-url`,mo=async(e,t,o)=>a(Oe(e,t),{...o,method:"POST"}),Me=(e,t)=>`/v1/projects/${e}/renders/${t}/stream`,uo=async(e,t,o)=>a(Me(e,t),{...o,method:"GET"});var $e={};g($e,{createSession:()=>xo,deleteSession:()=>Co,getCreateSessionUrl:()=>Be,getDeleteSessionUrl:()=>Ge,getGetMuxJobUrl:()=>Ne,getGetSessionUrl:()=>Fe,getListSessionsUrl:()=>Ke,getMuxJob:()=>bo,getSession:()=>Ro,getTriggerMuxJobUrl:()=>Le,listSessions:()=>go,triggerMuxJob:()=>So});var Ke=e=>{let t=new URLSearchParams;Object.entries(e||{}).forEach(([n,r])=>{r!==void 0&&t.append(n,r===null?"null":String(r))});let o=t.toString();return o.length>0?`/v1/sessions?${o}`:"/v1/sessions"},go=async(e,t)=>a(Ke(e),{...t,method:"GET"}),Be=()=>"/v1/sessions",xo=async(e,t)=>{let o=n=>{if(!n)return{};if(n instanceof Headers)return Object.fromEntries(n.entries());if(Symbol.iterator in n)return Object.fromEntries(Array.from(n,s=>Array.from(s)));let r={};for(let[s,i]of Object.entries(n))i!==void 0&&(r[s]=i);return r};return a(Be(),{...t,method:"POST",headers:{"Content-Type":"application/json",...o(t?.headers)},body:JSON.stringify(e)})},Fe=e=>`/v1/sessions/${e}`,Ro=async(e,t)=>a(Fe(e),{...t,method:"GET"}),Ge=e=>`/v1/sessions/${e}`,Co=async(e,t)=>a(Ge(e),{...t,method:"DELETE"}),Le=e=>`/v1/sessions/${e}/mux-job`,So=async(e,t)=>a(Le(e),{...t,method:"POST"}),Ne=e=>`/v1/sessions/${e}/mux-job`,bo=async(e,t)=>a(Ne(e),{...t,method:"GET"});var k="X-CueFrame-Client";var Eo=/^[A-Za-z0-9][A-Za-z0-9._+-]{0,31}$/,To=["web","console","clips"];function Io(e,t){return To.includes(e)===(t==="browser")}function De(e){if(!Eo.test(e.version))throw new Error(`${k} cannot carry the version ${JSON.stringify(e.version)}.`);if(!Io(e.surface,e.os))throw new Error(`${k} cannot carry ${e.surface} on ${e.os}.`);return`${e.surface}/${e.version}/${e.os}`}function Je(e){return e==="darwin"?"macos":e==="win32"?"windows":e==="linux"?"linux":"unknown"}import{readFileSync as wo,writeFileSync as jo,mkdirSync as Ao,existsSync as Oo}from"fs";import{join as _e}from"path";import{homedir as Mo}from"os";var m={Success:0,UserError:2,ApiClientError:3,ApiServerError:4,NetworkError:5,PaymentRequired:6};function A(e){if(e instanceof u){if(e.status===402)return m.PaymentRequired;if(e.status>=500)return m.ApiServerError;if(e.status>=400)return m.ApiClientError}let t=e?.exitCode;return typeof t=="number"?t:m.NetworkError}function DP(e){return e===402?m.PaymentRequired:e>=500?m.ApiServerError:e>=400?m.ApiClientError:m.Success}function h(e){process.exit(e)}var He=_e(Mo(),".cueframe"),E=_e(He,"auth.json"),R={local:"http://127.0.0.1:3211",prod:"https://api.cueframe.ai"},Uo="prod";function zP(e=Uo){return process.env.CUEFRAME_API_URL??R[e]??R.prod}var P=class extends Error{constructor(o,n){super(n);this.code=o;this.name="AuthStoreError"}code;exitCode=m.UserError};function XP(e){if(!/^cf_(?:live|test)_[A-Za-z0-9_-]{8,}$/.test(e))throw new P("auth_invalid","Invalid API key. Expected a key beginning with cf_live_ or cf_test_.")}function We(){if(!Oo(E))return{targets:{}};let e=wo(E,"utf-8");try{return JSON.parse(e)}catch{throw new P("auth_config_corrupt",`${E} is corrupt and cannot be parsed. Delete it and re-run \`cueframe login\`.`)}}function Ko(e){Ao(He,{recursive:!0,mode:448}),jo(E,JSON.stringify(e,null,2),{mode:384})}function ZP(e,t="prod",o){let n=We(),r=R[t]??R.prod;n.targets[t]={apiKey:e,apiUrl:o??r},Ko(n)}function Ve(e="prod"){let t=process.env.CUEFRAME_API_KEY,o=process.env.CUEFRAME_API_URL;if(t)return{apiKey:t,apiUrl:o??R[e]??R.prod};let r=We().targets[e];if(!r)throw new P("auth_missing",`No auth configured for target "${e}". Run \`cueframe login --target ${e}\` (browser sign-in) or \`cueframe auth <api-key> --target ${e}\` (CI / headless).`);return r}function Bo(){return{[k]:De({surface:"cli",version:"0.8.1",os:Je(process.platform)})}}function ze(e){let{apiKey:t,apiUrl:o}=Ve(e);I({baseUrl:o,apiKey:t,headers:Bo()})}function T(e){let t=e instanceof u?`${e.message} (${e.code}${e.status?`, ${e.status}`:""})`:e instanceof Error?e.message:String(e),o=j(e);return o?`${t}
9
9
  \u2192 ${o}`:t}import Fo from"ora";import Go from"pino";var Lo="v1",Xe=Go({level:"trace",base:{schemaVersion:Lo},messageKey:"event",timestamp:()=>`,"ts":${Date.now()}`,formatters:{level:()=>({_:0})}});function O(e,t){return Fo({text:e,isSilent:!!t}).start()}function C(e,t,o={}){e.json&&Xe.info(o,t)}function iv(e,t,o){if(e.json){console.log(JSON.stringify(t,null,2));return}o()}function M(e,t,o,n){let r=o instanceof Error?o.message:String(o),s=typeof o?.code=="string"?o.code:void 0,i=o?.status;e.json?Xe.info({phase:t,message:r,...s?{code:s}:{},...typeof i=="number"?{status:i}:{},exitCode:n},"error"):process.stderr.write(`\u2716 ${t}: ${T(o)}
10
10
  `)}function U(e,t,o,n){e.json&&M(e,t,o,n)}function av(e,t){t.json||console.log(e)}function No(e){for(let t=0;t<e.length;t++){let o=e.charCodeAt(t);if(o<=31||o===127)return!0}return!1}function Ye(e,t,o){e.length===0&&Ze(`${t} is empty.`,o),No(e)&&Ze(`${t} contains a control character (newline, tab, or null byte). Identifiers must be plain text \u2014 check for a stray copy-paste artifact.`,o)}function Ze(e,t){M(t,"preflight",new Error(e),m.UserError),h(m.UserError)}var $o=5e3,K=300*1e3;async function xv(e,t){if(Ye(e,"mediaItemId",t),t.dryRun){C(t,"analyze_dry_run",{mediaItemId:e,target:t.target,wait:!!t.wait,wouldCall:"POST /v1/media/:id/suggestions"}),t.json||console.log(`[dry-run] Would trigger clip analysis for ${e} on ${t.target}.`);return}ze(t.target),C(t,"analyze_prepare",{mediaItemId:e,target:t.target,wait:!!t.wait});let o=O("Triggering clip analysis\u2026",t.json),n;try{n=await b.suggestBriefs(e),o.succeed(`Analysis ${n.alreadyRunning?"already running":"started"}`)}catch(i){o.fail(`Failed to start analysis: ${T(i)}`),U(t,"analyze_prepare",i,A(i)),h(A(i))}if(C(t,"analyze_ready",{mediaItemId:e,status:n.status,alreadyRunning:!!n.alreadyRunning}),!t.wait){t.json||console.log(`
11
11
  Run \`cueframe clips ${e}\` to check results.`);return}let r=O("Waiting for analysis to complete\u2026",t.json),s=Date.now();for(;;){await new Promise(i=>setTimeout(i,$o)),Date.now()-s>K&&(r.fail(`Timed out after ${Math.round(K/1e3)}s. Run \`cueframe clips ${e}\` to check later.`),U(t,"analyze_progress",new Error(`Analysis did not complete within ${Math.round(K/1e3)}s`),m.UserError),h(m.UserError));try{let i=await b.listMediaSuggestions(e);if(i.suggestions.length>0){r.succeed(`Analysis complete \u2014 ${i.suggestions.length} clips found`),C(t,"analyze_complete",{mediaItemId:e,durationMs:Date.now()-s,suggestionCount:i.suggestions.length,suggestions:i.suggestions}),t.json||i.suggestions.forEach((d,c)=>{let f=(d.trim.end-d.trim.start).toFixed(1);console.log(`