@zibby/cli 0.4.27 → 0.4.29
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.
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
var ut=Object.defineProperty;var u=(e,t)=>()=>(e&&(t=e(e=0)),t);var we=(e,t)=>{for(var o in t)ut(e,o,{get:t[o],enumerable:!0})};var Ee,$e=u(()=>{Ee="ffffffff-ffff-ffff-ffff-ffffffffffff"});var Re,Ue=u(()=>{Re="00000000-0000-0000-0000-000000000000"});var Ie,Oe=u(()=>{Ie=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i});function Ut(e){return typeof e=="string"&&Ie.test(e)}var A,N=u(()=>{Oe();A=Ut});function It(e){if(!A(e))throw TypeError("Invalid UUID");let t;return Uint8Array.of((t=parseInt(e.slice(0,8),16))>>>24,t>>>16&255,t>>>8&255,t&255,(t=parseInt(e.slice(9,13),16))>>>8,t&255,(t=parseInt(e.slice(14,18),16))>>>8,t&255,(t=parseInt(e.slice(19,23),16))>>>8,t&255,(t=parseInt(e.slice(24,36),16))/1099511627776&255,t/4294967296&255,t>>>24&255,t>>>16&255,t>>>8&255,t&255)}var U,C=u(()=>{N();U=It});function w(e,t=0){return(h[e[t+0]]+h[e[t+1]]+h[e[t+2]]+h[e[t+3]]+"-"+h[e[t+4]]+h[e[t+5]]+"-"+h[e[t+6]]+h[e[t+7]]+"-"+h[e[t+8]]+h[e[t+9]]+"-"+h[e[t+10]]+h[e[t+11]]+h[e[t+12]]+h[e[t+13]]+h[e[t+14]]+h[e[t+15]]).toLowerCase()}function Ot(e,t=0){let o=w(e,t);if(!A(o))throw TypeError("Stringified UUID is invalid");return o}var h,Te,I=u(()=>{N();h=[];for(let e=0;e<256;++e)h.push((e+256).toString(16).slice(1));Te=Ot});import{randomFillSync as Tt}from"crypto";function O(){return G>W.length-16&&(Tt(W),G=0),W.slice(G,G+=16)}var W,G,B=u(()=>{W=new Uint8Array(256),G=W.length});function At(e,t,o){let r,n=e?._v6??!1;if(e){let s=Object.keys(e);s.length===1&&s[0]==="_v6"&&(e=void 0)}if(e)r=Ae(e.random??e.rng?.()??O(),e.msecs,e.nsecs,e.clockseq,e.node,t,o);else{let s=Date.now(),i=O();Pt(L,s,i),r=Ae(i,L.msecs,L.nsecs,n?void 0:L.clockseq,n?void 0:L.node,t,o)}return t??w(r)}function Pt(e,t,o){return e.msecs??=-1/0,e.nsecs??=0,t===e.msecs?(e.nsecs++,e.nsecs>=1e4&&(e.node=void 0,e.nsecs=0)):t>e.msecs?e.nsecs=0:t<e.msecs&&(e.node=void 0),e.node||(e.node=o.slice(10,16),e.node[0]|=1,e.clockseq=(o[8]<<8|o[9])&16383),e.msecs=t,e}function Ae(e,t,o,r,n,s,i=0){if(e.length<16)throw new Error("Random bytes length must be >= 16");if(!s)s=new Uint8Array(16),i=0;else if(i<0||i+16>s.length)throw new RangeError(`UUID byte range ${i}:${i+15} is out of buffer bounds`);t??=Date.now(),o??=0,r??=(e[8]<<8|e[9])&16383,n??=e.slice(10,16),t+=122192928e5;let p=((t&268435455)*1e4+o)%4294967296;s[i++]=p>>>24&255,s[i++]=p>>>16&255,s[i++]=p>>>8&255,s[i++]=p&255;let a=t/4294967296*1e4&268435455;s[i++]=a>>>8&255,s[i++]=a&255,s[i++]=a>>>24&15|16,s[i++]=a>>>16&255,s[i++]=r>>>8|128,s[i++]=r&255;for(let c=0;c<6;++c)s[i++]=n[c];return s}var L,J,X=u(()=>{B();I();L={};J=At});function j(e){let t=typeof e=="string"?U(e):e,o=bt(t);return typeof e=="string"?w(o):o}function bt(e){return Uint8Array.of((e[6]&15)<<4|e[7]>>4&15,(e[7]&15)<<4|(e[4]&240)>>4,(e[4]&15)<<4|(e[5]&240)>>4,(e[5]&15)<<4|(e[0]&240)>>4,(e[0]&15)<<4|(e[1]&240)>>4,(e[1]&15)<<4|(e[2]&240)>>4,96|e[2]&15,e[3],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])}var ee=u(()=>{C();I()});import{createHash as vt}from"crypto";function Dt(e){return Array.isArray(e)?e=Buffer.from(e):typeof e=="string"&&(e=Buffer.from(e,"utf8")),vt("md5").update(e).digest()}var Pe,be=u(()=>{Pe=Dt});function kt(e){e=unescape(encodeURIComponent(e));let t=new Uint8Array(e.length);for(let o=0;o<e.length;++o)t[o]=e.charCodeAt(o);return t}function F(e,t,o,r,n,s){let i=typeof o=="string"?kt(o):o,p=typeof r=="string"?U(r):r;if(typeof r=="string"&&(r=U(r)),r?.length!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let a=new Uint8Array(16+i.length);if(a.set(p),a.set(i,p.length),a=t(a),a[6]=a[6]&15|e,a[8]=a[8]&63|128,n){if(s=s||0,s<0||s+16>n.length)throw new RangeError(`UUID byte range ${s}:${s+15} is out of buffer bounds`);for(let c=0;c<16;++c)n[s+c]=a[c];return n}return w(a)}var Y,H,te=u(()=>{C();I();Y="6ba7b810-9dad-11d1-80b4-00c04fd430c8",H="6ba7b811-9dad-11d1-80b4-00c04fd430c8"});function oe(e,t,o,r){return F(48,Pe,e,t,o,r)}var ve,De=u(()=>{be();te();oe.DNS=Y;oe.URL=H;ve=oe});import{randomUUID as Nt}from"crypto";var re,ke=u(()=>{re={randomUUID:Nt}});function Ct(e,t,o){if(re.randomUUID&&!t&&!e)return re.randomUUID();e=e||{};let r=e.random??e.rng?.()??O();if(r.length<16)throw new Error("Random bytes length must be >= 16");if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,t){if(o=o||0,o<0||o+16>t.length)throw new RangeError(`UUID byte range ${o}:${o+15} is out of buffer bounds`);for(let n=0;n<16;++n)t[o+n]=r[n];return t}return w(r)}var Ne,Ce=u(()=>{ke();B();I();Ne=Ct});import{createHash as Lt}from"crypto";function jt(e){return Array.isArray(e)?e=Buffer.from(e):typeof e=="string"&&(e=Buffer.from(e,"utf8")),Lt("sha1").update(e).digest()}var Le,je=u(()=>{Le=jt});function ne(e,t,o,r){return F(80,Le,e,t,o,r)}var Fe,Ke=u(()=>{je();te();ne.DNS=Y;ne.URL=H;Fe=ne});function Ft(e,t,o){e??={},o??=0;let r=J({...e,_v6:!0},new Uint8Array(16));if(r=j(r),t){if(o<0||o+16>t.length)throw new RangeError(`UUID byte range ${o}:${o+15} is out of buffer bounds`);for(let n=0;n<16;n++)t[o+n]=r[n];return t}return w(r)}var ze,Ge=u(()=>{I();X();ee();ze=Ft});function ie(e){let t=typeof e=="string"?U(e):e,o=Kt(t);return typeof e=="string"?w(o):o}function Kt(e){return Uint8Array.of((e[3]&15)<<4|e[4]>>4&15,(e[4]&15)<<4|(e[5]&240)>>4,(e[5]&15)<<4|e[6]&15,e[7],(e[1]&15)<<4|(e[2]&240)>>4,(e[2]&15)<<4|(e[3]&240)>>4,16|(e[0]&240)>>4,(e[0]&15)<<4|(e[1]&240)>>4,e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])}var We=u(()=>{C();I()});function zt(e,t,o){let r;if(e)r=Be(e.random??e.rng?.()??O(),e.msecs,e.seq,t,o);else{let n=Date.now(),s=O();Gt(se,n,s),r=Be(s,se.msecs,se.seq,t,o)}return t??w(r)}function Gt(e,t,o){return e.msecs??=-1/0,e.seq??=0,t>e.msecs?(e.seq=o[6]<<23|o[7]<<16|o[8]<<8|o[9],e.msecs=t):(e.seq=e.seq+1|0,e.seq===0&&e.msecs++),e}function Be(e,t,o,r,n=0){if(e.length<16)throw new Error("Random bytes length must be >= 16");if(!r)r=new Uint8Array(16),n=0;else if(n<0||n+16>r.length)throw new RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);return t??=Date.now(),o??=e[6]*127<<24|e[7]<<16|e[8]<<8|e[9],r[n++]=t/1099511627776&255,r[n++]=t/4294967296&255,r[n++]=t/16777216&255,r[n++]=t/65536&255,r[n++]=t/256&255,r[n++]=t&255,r[n++]=112|o>>>28&15,r[n++]=o>>>20&255,r[n++]=128|o>>>14&63,r[n++]=o>>>6&255,r[n++]=o<<2&255|e[10]&3,r[n++]=e[11],r[n++]=e[12],r[n++]=e[13],r[n++]=e[14],r[n++]=e[15],r}var se,Je,Ye=u(()=>{B();I();se={};Je=zt});function Wt(e){if(!A(e))throw TypeError("Invalid UUID");return parseInt(e.slice(14,15),16)}var He,Qe=u(()=>{N();He=Wt});var Ve={};we(Ve,{MAX:()=>Ee,NIL:()=>Re,parse:()=>U,stringify:()=>Te,v1:()=>J,v1ToV6:()=>j,v3:()=>ve,v4:()=>Ne,v5:()=>Fe,v6:()=>ze,v6ToV1:()=>ie,v7:()=>Je,validate:()=>A,version:()=>He});var qe=u(()=>{$e();Ue();C();I();X();ee();De();Ce();Ke();Ge();We();Ye();N();Qe()});var tt={};we(tt,{uploadSessionArtifacts:()=>eo});import{readdirSync as Ze,statSync as ae,createReadStream as Bt,existsSync as Jt}from"node:fs";import{join as Xe,relative as Yt,sep as Ht,extname as Qt}from"node:path";function Zt(e){let t=Qt(e).toLowerCase();return Mt[t]||"application/octet-stream"}function et(e){let t=[],o;try{o=Ze(e)}catch{return t}for(let r of o){if(Vt.has(r)||r.startsWith(".")||qt.has(r))continue;let n=Xe(e,r),s;try{s=ae(n)}catch{continue}s.isDirectory()?t.push(...et(n)):s.isFile()&&t.push(n)}return t}async function Xt({apiUrl:e,apiKey:t,executionId:o,nodeName:r,filename:n,absolutePath:s,sizeBytes:i,contentType:p}){let a;try{let c=await fetch(`${e}/${o}/artifacts/upload-url`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify({nodeName:r,filename:n,contentType:p,sizeBytes:i})});if(!c.ok){let l=await c.text();return console.warn(`[artifacts] upload-url failed for ${r}/${n}: ${c.status} ${l.slice(0,200)}`),null}a=await c.json()}catch(c){return console.warn(`[artifacts] upload-url request errored for ${r}/${n}: ${c.message}`),null}try{let c=Bt(s),l=a.requiredHeaders?{...a.requiredHeaders,"Content-Length":String(i)}:{"Content-Type":p,"Content-Length":String(i)},d=await fetch(a.url,{method:"PUT",headers:l,body:c,duplex:"half"});if(!d.ok)return console.warn(`[artifacts] S3 PUT failed for ${r}/${n}: ${d.status}`),null}catch(c){return console.warn(`[artifacts] S3 PUT errored for ${r}/${n}: ${c.message}`),null}return{nodeName:r,filename:n,s3Key:a.s3Key,contentType:p,sizeBytes:i}}async function eo({sessionPath:e,executionId:t,apiUrl:o,apiKey:r}){let n={uploaded:[],skipped:[]};if(!e||!Jt(e))return n;if(!o||!r||!t)return console.warn("[artifacts] uploader missing required input \u2014 skipping"),n;let s;try{s=Ze(e)}catch(l){return console.warn(`[artifacts] could not read session folder ${e}: ${l.message}`),n}let i=[];for(let l of s){let d=Xe(e,l),g;try{g=ae(d)}catch{continue}if(!g.isDirectory()||l.startsWith(".")||l.startsWith("_"))continue;let K=et(d);for(let $ of K){let b=Yt(d,$).split(Ht).join("/"),T;try{T=ae($).size}catch{continue}if(T>Me){n.skipped.push({nodeName:l,filename:b,reason:`size ${T} > ${Me}`});continue}if(T===0){n.skipped.push({nodeName:l,filename:b,reason:"empty"});continue}i.push({apiUrl:o,apiKey:r,executionId:t,nodeName:l,filename:b,absolutePath:$,sizeBytes:T,contentType:Zt(b)})}}if(i.length===0)return n;let p=4,a=i.slice(),c=Array.from({length:Math.min(p,a.length)},async()=>{for(;a.length;){let l=a.shift(),d=await Xt(l);d?n.uploaded.push(d):n.skipped.push({nodeName:l.nodeName,filename:l.filename,reason:"upload failed"})}});if(await Promise.all(c),n.uploaded.length>0)try{let l=await fetch(`${o}/${t}/artifacts`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r}`},body:JSON.stringify({files:n.uploaded})});if(!l.ok){let d=await l.text();console.warn(`[artifacts] record failed: ${l.status} ${d.slice(0,200)}`)}}catch(l){console.warn(`[artifacts] record errored: ${l.message}`)}return n}var Me,Vt,qt,Mt,ot=u(()=>{Me=500*1024*1024,Vt=new Set([".DS_Store","Thumbs.db",".zibby-stop"]),qt=new Set(["node_modules",".git","dist",".zibby","__tests__","__mocks__",".cache",".next",".turbo"]),Mt={".webm":"video/webm",".mp4":"video/mp4",".mov":"video/quicktime",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".txt":"text/plain",".md":"text/markdown",".csv":"text/csv",".log":"text/plain",".json":"application/json",".yaml":"application/yaml",".yml":"application/yaml",".pdf":"application/pdf",".zip":"application/zip",".tar":"application/x-tar",".gz":"application/gzip"}});import{mkdirSync as at,writeFileSync as to,existsSync as P,readFileSync as rt}from"fs";import{join as E,dirname as oo,resolve as nt}from"path";import{pathToFileURL as le}from"url";import{execSync as ro,spawn as it}from"node:child_process";import{SQSClient as gt,SendMessageCommand as mt}from"@aws-sdk/client-sqs";var M=null;function ht(){return M||(M=new gt({region:process.env.AWS_REGION||"ap-southeast-2"})),M}async function xe(e,{status:t,error:o,finalState:r}){let{EXECUTION_ID:n,SQS_AUTH_TOKEN:s,PROGRESS_API_URL:i,PROGRESS_QUEUE_URL:p,PROJECT_API_TOKEN:a}=e;if(!n)return;let c={executionId:n,...s&&{sqsAuthToken:s},status:t,...o&&{error:o},...r&&typeof r=="object"&&Object.keys(r).length>0?{finalState:r}:{},timestamp:new Date().toISOString()},l=i?"HTTP":p?"SQS":"NONE",d=JSON.stringify(c).length;console.log(`Sending final status: ${t} via ${l} (${(d/1024).toFixed(1)}KB)`);try{if(i)await wt(i,n,c,a);else if(p){let g=["completed","failed","insufficient_context","blocked"].includes(t)?"execution_completed":"progress_update";await xt(p,n,c,g)}else{console.warn("No transport configured for final status \u2014 neither PROGRESS_API_URL nor PROGRESS_QUEUE_URL set");return}console.log(`Final status ${t} sent via ${l}`)}catch(g){console.error(`Failed to send final status (${t}) via ${l}:`),console.error(` Payload: ${(d/1024).toFixed(1)}KB`),console.error(` Error: ${g.message}`),g.name&&console.error(` Error type: ${g.name}`),g.code&&console.error(` Error code: ${g.code}`)}}async function wt(e,t,o,r){let n=`${e}/${t}/progress`,s={"Content-Type":"application/json"};r&&(s.Authorization=`Bearer ${r}`);let i=await fetch(n,{method:"POST",headers:s,body:JSON.stringify(o)});if(!i.ok){let p=await i.text();throw new Error(`HTTP ${i.status}: ${p}`)}}async function xt(e,t,o,r="progress_update"){let n=JSON.stringify(o),s=(n.length/1024).toFixed(1);n.length>256*1024&&console.error(`\u274C SQS message too large: ${s}KB (limit 256KB) for ${t} [${r}]`),await ht().send(new mt({QueueUrl:e,MessageBody:n,MessageGroupId:t,MessageAttributes:{executionId:{DataType:"String",StringValue:t},messageType:{DataType:"String",StringValue:r}}}))}function ye({workflowType:e,jobId:t,projectId:o,agentType:r,model:n,egressIp:s,egressKind:i}){let p="\u2500".repeat(60),a=`${r||"default"} (model: ${n||"auto"})`,c=["",p,` Workflow: ${e}`,` Job: ${t||"local"}`,` Project: ${o||"none"}`,` Agent: ${a}`];if(s||i){let l=s||"unknown",d=i||"static";c.push(` Egress: ${l} (${d})`)}return c.push(p),c.join(`
|
|
3
|
-
`)}import{existsSync as
|
|
2
|
+
var gt=Object.defineProperty;var u=(e,t)=>()=>(e&&(t=e(e=0)),t);var xe=(e,t)=>{for(var o in t)gt(e,o,{get:t[o],enumerable:!0})};var $e,Re=u(()=>{$e="ffffffff-ffff-ffff-ffff-ffffffffffff"});var Ue,Oe=u(()=>{Ue="00000000-0000-0000-0000-000000000000"});var Te,Ie=u(()=>{Te=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i});function Ot(e){return typeof e=="string"&&Te.test(e)}var A,N=u(()=>{Ie();A=Ot});function Tt(e){if(!A(e))throw TypeError("Invalid UUID");let t;return Uint8Array.of((t=parseInt(e.slice(0,8),16))>>>24,t>>>16&255,t>>>8&255,t&255,(t=parseInt(e.slice(9,13),16))>>>8,t&255,(t=parseInt(e.slice(14,18),16))>>>8,t&255,(t=parseInt(e.slice(19,23),16))>>>8,t&255,(t=parseInt(e.slice(24,36),16))/1099511627776&255,t/4294967296&255,t>>>24&255,t>>>16&255,t>>>8&255,t&255)}var U,C=u(()=>{N();U=Tt});function w(e,t=0){return(h[e[t+0]]+h[e[t+1]]+h[e[t+2]]+h[e[t+3]]+"-"+h[e[t+4]]+h[e[t+5]]+"-"+h[e[t+6]]+h[e[t+7]]+"-"+h[e[t+8]]+h[e[t+9]]+"-"+h[e[t+10]]+h[e[t+11]]+h[e[t+12]]+h[e[t+13]]+h[e[t+14]]+h[e[t+15]]).toLowerCase()}function It(e,t=0){let o=w(e,t);if(!A(o))throw TypeError("Stringified UUID is invalid");return o}var h,Ae,O=u(()=>{N();h=[];for(let e=0;e<256;++e)h.push((e+256).toString(16).slice(1));Ae=It});import{randomFillSync as At}from"crypto";function T(){return W>B.length-16&&(At(B),W=0),B.slice(W,W+=16)}var B,W,H=u(()=>{B=new Uint8Array(256),W=B.length});function Pt(e,t,o){let r,n=e?._v6??!1;if(e){let s=Object.keys(e);s.length===1&&s[0]==="_v6"&&(e=void 0)}if(e)r=Pe(e.random??e.rng?.()??T(),e.msecs,e.nsecs,e.clockseq,e.node,t,o);else{let s=Date.now(),i=T();vt(L,s,i),r=Pe(i,L.msecs,L.nsecs,n?void 0:L.clockseq,n?void 0:L.node,t,o)}return t??w(r)}function vt(e,t,o){return e.msecs??=-1/0,e.nsecs??=0,t===e.msecs?(e.nsecs++,e.nsecs>=1e4&&(e.node=void 0,e.nsecs=0)):t>e.msecs?e.nsecs=0:t<e.msecs&&(e.node=void 0),e.node||(e.node=o.slice(10,16),e.node[0]|=1,e.clockseq=(o[8]<<8|o[9])&16383),e.msecs=t,e}function Pe(e,t,o,r,n,s,i=0){if(e.length<16)throw new Error("Random bytes length must be >= 16");if(!s)s=new Uint8Array(16),i=0;else if(i<0||i+16>s.length)throw new RangeError(`UUID byte range ${i}:${i+15} is out of buffer bounds`);t??=Date.now(),o??=0,r??=(e[8]<<8|e[9])&16383,n??=e.slice(10,16),t+=122192928e5;let p=((t&268435455)*1e4+o)%4294967296;s[i++]=p>>>24&255,s[i++]=p>>>16&255,s[i++]=p>>>8&255,s[i++]=p&255;let a=t/4294967296*1e4&268435455;s[i++]=a>>>8&255,s[i++]=a&255,s[i++]=a>>>24&15|16,s[i++]=a>>>16&255,s[i++]=r>>>8|128,s[i++]=r&255;for(let c=0;c<6;++c)s[i++]=n[c];return s}var L,J,ee=u(()=>{H();O();L={};J=Pt});function j(e){let t=typeof e=="string"?U(e):e,o=bt(t);return typeof e=="string"?w(o):o}function bt(e){return Uint8Array.of((e[6]&15)<<4|e[7]>>4&15,(e[7]&15)<<4|(e[4]&240)>>4,(e[4]&15)<<4|(e[5]&240)>>4,(e[5]&15)<<4|(e[0]&240)>>4,(e[0]&15)<<4|(e[1]&240)>>4,(e[1]&15)<<4|(e[2]&240)>>4,96|e[2]&15,e[3],e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])}var te=u(()=>{C();O()});import{createHash as Dt}from"crypto";function kt(e){return Array.isArray(e)?e=Buffer.from(e):typeof e=="string"&&(e=Buffer.from(e,"utf8")),Dt("md5").update(e).digest()}var ve,be=u(()=>{ve=kt});function Nt(e){e=unescape(encodeURIComponent(e));let t=new Uint8Array(e.length);for(let o=0;o<e.length;++o)t[o]=e.charCodeAt(o);return t}function F(e,t,o,r,n,s){let i=typeof o=="string"?Nt(o):o,p=typeof r=="string"?U(r):r;if(typeof r=="string"&&(r=U(r)),r?.length!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let a=new Uint8Array(16+i.length);if(a.set(p),a.set(i,p.length),a=t(a),a[6]=a[6]&15|e,a[8]=a[8]&63|128,n){if(s=s||0,s<0||s+16>n.length)throw new RangeError(`UUID byte range ${s}:${s+15} is out of buffer bounds`);for(let c=0;c<16;++c)n[s+c]=a[c];return n}return w(a)}var Y,Q,oe=u(()=>{C();O();Y="6ba7b810-9dad-11d1-80b4-00c04fd430c8",Q="6ba7b811-9dad-11d1-80b4-00c04fd430c8"});function re(e,t,o,r){return F(48,ve,e,t,o,r)}var De,ke=u(()=>{be();oe();re.DNS=Y;re.URL=Q;De=re});import{randomUUID as Ct}from"crypto";var ne,Ne=u(()=>{ne={randomUUID:Ct}});function Lt(e,t,o){if(ne.randomUUID&&!t&&!e)return ne.randomUUID();e=e||{};let r=e.random??e.rng?.()??T();if(r.length<16)throw new Error("Random bytes length must be >= 16");if(r[6]=r[6]&15|64,r[8]=r[8]&63|128,t){if(o=o||0,o<0||o+16>t.length)throw new RangeError(`UUID byte range ${o}:${o+15} is out of buffer bounds`);for(let n=0;n<16;++n)t[o+n]=r[n];return t}return w(r)}var Ce,Le=u(()=>{Ne();H();O();Ce=Lt});import{createHash as jt}from"crypto";function Ft(e){return Array.isArray(e)?e=Buffer.from(e):typeof e=="string"&&(e=Buffer.from(e,"utf8")),jt("sha1").update(e).digest()}var je,Fe=u(()=>{je=Ft});function ie(e,t,o,r){return F(80,je,e,t,o,r)}var Ke,ze=u(()=>{Fe();oe();ie.DNS=Y;ie.URL=Q;Ke=ie});function Kt(e,t,o){e??={},o??=0;let r=J({...e,_v6:!0},new Uint8Array(16));if(r=j(r),t){if(o<0||o+16>t.length)throw new RangeError(`UUID byte range ${o}:${o+15} is out of buffer bounds`);for(let n=0;n<16;n++)t[o+n]=r[n];return t}return w(r)}var Ge,We=u(()=>{O();ee();te();Ge=Kt});function se(e){let t=typeof e=="string"?U(e):e,o=zt(t);return typeof e=="string"?w(o):o}function zt(e){return Uint8Array.of((e[3]&15)<<4|e[4]>>4&15,(e[4]&15)<<4|(e[5]&240)>>4,(e[5]&15)<<4|e[6]&15,e[7],(e[1]&15)<<4|(e[2]&240)>>4,(e[2]&15)<<4|(e[3]&240)>>4,16|(e[0]&240)>>4,(e[0]&15)<<4|(e[1]&240)>>4,e[8],e[9],e[10],e[11],e[12],e[13],e[14],e[15])}var Be=u(()=>{C();O()});function Gt(e,t,o){let r;if(e)r=He(e.random??e.rng?.()??T(),e.msecs,e.seq,t,o);else{let n=Date.now(),s=T();Wt(ae,n,s),r=He(s,ae.msecs,ae.seq,t,o)}return t??w(r)}function Wt(e,t,o){return e.msecs??=-1/0,e.seq??=0,t>e.msecs?(e.seq=o[6]<<23|o[7]<<16|o[8]<<8|o[9],e.msecs=t):(e.seq=e.seq+1|0,e.seq===0&&e.msecs++),e}function He(e,t,o,r,n=0){if(e.length<16)throw new Error("Random bytes length must be >= 16");if(!r)r=new Uint8Array(16),n=0;else if(n<0||n+16>r.length)throw new RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);return t??=Date.now(),o??=e[6]*127<<24|e[7]<<16|e[8]<<8|e[9],r[n++]=t/1099511627776&255,r[n++]=t/4294967296&255,r[n++]=t/16777216&255,r[n++]=t/65536&255,r[n++]=t/256&255,r[n++]=t&255,r[n++]=112|o>>>28&15,r[n++]=o>>>20&255,r[n++]=128|o>>>14&63,r[n++]=o>>>6&255,r[n++]=o<<2&255|e[10]&3,r[n++]=e[11],r[n++]=e[12],r[n++]=e[13],r[n++]=e[14],r[n++]=e[15],r}var ae,Je,Ye=u(()=>{H();O();ae={};Je=Gt});function Bt(e){if(!A(e))throw TypeError("Invalid UUID");return parseInt(e.slice(14,15),16)}var Qe,Ve=u(()=>{N();Qe=Bt});var qe={};xe(qe,{MAX:()=>$e,NIL:()=>Ue,parse:()=>U,stringify:()=>Ae,v1:()=>J,v1ToV6:()=>j,v3:()=>De,v4:()=>Ce,v5:()=>Ke,v6:()=>Ge,v6ToV1:()=>se,v7:()=>Je,validate:()=>A,version:()=>Qe});var Me=u(()=>{Re();Oe();C();O();ee();te();ke();Le();ze();We();Be();Ye();N();Ve()});var ot={};xe(ot,{uploadSessionArtifacts:()=>to});import{readdirSync as Xe,statSync as ce,createReadStream as Ht,existsSync as Jt}from"node:fs";import{join as et,relative as Yt,sep as Qt,extname as Vt}from"node:path";function Xt(e){let t=Vt(e).toLowerCase();return Zt[t]||"application/octet-stream"}function tt(e){let t=[],o;try{o=Xe(e)}catch{return t}for(let r of o){if(qt.has(r)||r.startsWith(".")||Mt.has(r))continue;let n=et(e,r),s;try{s=ce(n)}catch{continue}s.isDirectory()?t.push(...tt(n)):s.isFile()&&t.push(n)}return t}async function eo({apiUrl:e,apiKey:t,executionId:o,nodeName:r,filename:n,absolutePath:s,sizeBytes:i,contentType:p}){let a;try{let c=await fetch(`${e}/${o}/artifacts/upload-url`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${t}`},body:JSON.stringify({nodeName:r,filename:n,contentType:p,sizeBytes:i})});if(!c.ok){let l=await c.text();return console.warn(`[artifacts] upload-url failed for ${r}/${n}: ${c.status} ${l.slice(0,200)}`),null}a=await c.json()}catch(c){return console.warn(`[artifacts] upload-url request errored for ${r}/${n}: ${c.message}`),null}try{let c=Ht(s),l=a.requiredHeaders?{...a.requiredHeaders,"Content-Length":String(i)}:{"Content-Type":p,"Content-Length":String(i)},d=await fetch(a.url,{method:"PUT",headers:l,body:c,duplex:"half"});if(!d.ok)return console.warn(`[artifacts] S3 PUT failed for ${r}/${n}: ${d.status}`),null}catch(c){return console.warn(`[artifacts] S3 PUT errored for ${r}/${n}: ${c.message}`),null}return{nodeName:r,filename:n,s3Key:a.s3Key,contentType:p,sizeBytes:i}}async function to({sessionPath:e,executionId:t,apiUrl:o,apiKey:r}){let n={uploaded:[],skipped:[]};if(!e||!Jt(e))return n;if(!o||!r||!t)return console.warn("[artifacts] uploader missing required input \u2014 skipping"),n;let s;try{s=Xe(e)}catch(l){return console.warn(`[artifacts] could not read session folder ${e}: ${l.message}`),n}let i=[];for(let l of s){let d=et(e,l),g;try{g=ce(d)}catch{continue}if(!g.isDirectory()||l.startsWith(".")||l.startsWith("_"))continue;let z=tt(d);for(let $ of z){let v=Yt(d,$).split(Qt).join("/"),I;try{I=ce($).size}catch{continue}if(I>Ze){n.skipped.push({nodeName:l,filename:v,reason:`size ${I} > ${Ze}`});continue}if(I===0){n.skipped.push({nodeName:l,filename:v,reason:"empty"});continue}i.push({apiUrl:o,apiKey:r,executionId:t,nodeName:l,filename:v,absolutePath:$,sizeBytes:I,contentType:Xt(v)})}}if(i.length===0)return n;let p=4,a=i.slice(),c=Array.from({length:Math.min(p,a.length)},async()=>{for(;a.length;){let l=a.shift(),d=await eo(l);d?n.uploaded.push(d):n.skipped.push({nodeName:l.nodeName,filename:l.filename,reason:"upload failed"})}});if(await Promise.all(c),n.uploaded.length>0)try{let l=await fetch(`${o}/${t}/artifacts`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r}`},body:JSON.stringify({files:n.uploaded})});if(!l.ok){let d=await l.text();console.warn(`[artifacts] record failed: ${l.status} ${d.slice(0,200)}`)}}catch(l){console.warn(`[artifacts] record errored: ${l.message}`)}return n}var Ze,qt,Mt,Zt,rt=u(()=>{Ze=500*1024*1024,qt=new Set([".DS_Store","Thumbs.db",".zibby-stop"]),Mt=new Set(["node_modules",".git","dist",".zibby","__tests__","__mocks__",".cache",".next",".turbo"]),Zt={".webm":"video/webm",".mp4":"video/mp4",".mov":"video/quicktime",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".txt":"text/plain",".md":"text/markdown",".csv":"text/csv",".log":"text/plain",".json":"application/json",".yaml":"application/yaml",".yml":"application/yaml",".pdf":"application/pdf",".zip":"application/zip",".tar":"application/x-tar",".gz":"application/gzip"}});import{mkdirSync as ct,writeFileSync as oo,existsSync as P,readFileSync as nt}from"fs";import{join as E,dirname as ro,resolve as it}from"path";import{pathToFileURL as fe}from"url";import{execSync as no,spawn as st}from"node:child_process";import{SQSClient as mt,SendMessageCommand as ht}from"@aws-sdk/client-sqs";var Z=null;function wt(){return Z||(Z=new mt({region:process.env.AWS_REGION||"ap-southeast-2"})),Z}async function ye(e,{status:t,error:o,finalState:r}){let{EXECUTION_ID:n,SQS_AUTH_TOKEN:s,PROGRESS_API_URL:i,PROGRESS_QUEUE_URL:p,PROJECT_API_TOKEN:a}=e;if(!n)return;let c={executionId:n,...s&&{sqsAuthToken:s},status:t,...o&&{error:o},...r&&typeof r=="object"&&Object.keys(r).length>0?{finalState:r}:{},timestamp:new Date().toISOString()},l=i?"HTTP":p?"SQS":"NONE",d=JSON.stringify(c).length;console.log(`Sending final status: ${t} via ${l} (${(d/1024).toFixed(1)}KB)`);try{if(i)await xt(i,n,c,a);else if(p){let g=["completed","failed","insufficient_context","blocked"].includes(t)?"execution_completed":"progress_update";await yt(p,n,c,g)}else{console.warn("No transport configured for final status \u2014 neither PROGRESS_API_URL nor PROGRESS_QUEUE_URL set");return}console.log(`Final status ${t} sent via ${l}`)}catch(g){console.error(`Failed to send final status (${t}) via ${l}:`),console.error(` Payload: ${(d/1024).toFixed(1)}KB`),console.error(` Error: ${g.message}`),g.name&&console.error(` Error type: ${g.name}`),g.code&&console.error(` Error code: ${g.code}`)}}async function xt(e,t,o,r){let n=`${e}/${t}/progress`,s={"Content-Type":"application/json"};r&&(s.Authorization=`Bearer ${r}`);let i=await fetch(n,{method:"POST",headers:s,body:JSON.stringify(o)});if(!i.ok){let p=await i.text();throw new Error(`HTTP ${i.status}: ${p}`)}}async function yt(e,t,o,r="progress_update"){let n=JSON.stringify(o),s=(n.length/1024).toFixed(1);n.length>256*1024&&console.error(`\u274C SQS message too large: ${s}KB (limit 256KB) for ${t} [${r}]`),await wt().send(new ht({QueueUrl:e,MessageBody:n,MessageGroupId:t,MessageAttributes:{executionId:{DataType:"String",StringValue:t},messageType:{DataType:"String",StringValue:r}}}))}function Se({workflowType:e,jobId:t,projectId:o,agentType:r,model:n,egressIp:s,egressKind:i}){let p="\u2500".repeat(60),a=`${r||"default"} (model: ${n||"auto"})`,c=["",p,` Workflow: ${e}`,` Job: ${t||"local"}`,` Project: ${o||"none"}`,` Agent: ${a}`];if(s||i){let l=s||"unknown",d=i||"static";c.push(` Egress: ${l} (${d})`)}return c.push(p),c.join(`
|
|
3
|
+
`)}import{existsSync as St,writeFileSync as _t}from"fs";import{join as _e}from"path";var X={width:1280,height:720},Et="on",$t="tests",Rt="test-results/playwright";function Ut(e={}){let t=e.viewport&&typeof e.viewport=="object"?{width:Number(e.viewport.width)||X.width,height:Number(e.viewport.height)||X.height}:X,o=typeof e.video=="string"?e.video:Et,r=e.paths?.generated||$t,n=e.playwrightArtifacts!==!1,s=n?"on":"off",i=n?"only-on-failure":"off";return`// AUTO-GENERATED at workflow run start by @zibby/cli's
|
|
4
4
|
// playwright-config-materialize.js. Derived from the bundled
|
|
5
5
|
// zibby.config.json (which @zibby/workflow-deploy serialized from your
|
|
6
6
|
// project's .zibby.config.mjs). Do NOT edit by hand \u2014 re-run a workflow
|
|
@@ -11,7 +11,7 @@ import { defineConfig } from '@playwright/test';
|
|
|
11
11
|
|
|
12
12
|
export default defineConfig({
|
|
13
13
|
testDir: '${r.replace(/'/g,"\\'")}',
|
|
14
|
-
outputDir: '${
|
|
14
|
+
outputDir: '${Rt}',
|
|
15
15
|
timeout: 60000,
|
|
16
16
|
retries: 0,
|
|
17
17
|
workers: 1,
|
|
@@ -26,7 +26,7 @@ export default defineConfig({
|
|
|
26
26
|
|
|
27
27
|
reporter: [['list']],
|
|
28
28
|
});
|
|
29
|
-
`}function
|
|
30
|
-
Workflow execution failed: ${f.message}`),console.error(f.stack),await
|
|
31
|
-
[done] ${
|
|
32
|
-
[done] ${
|
|
29
|
+
`}function Ee(e,t){if(!e)return{written:!1,path:null,reason:"no workspaceDir"};for(let n of["js","mjs","ts"]){let s=_e(e,`playwright.config.${n}`);if(St(s))return{written:!1,path:s,reason:`existing playwright.config.${n} in workspace`}}let o=_e(e,"playwright.config.js"),r=Ut(t||{});try{return _t(o,r,"utf-8"),{written:!0,path:o,reason:"derived from zibby.config"}}catch(n){return{written:!1,path:null,reason:`write failed: ${n.message}`}}}import"@zibby/core";var K=process.env.WORKSPACE||"/workspace";async function io(e,t){ct(t,{recursive:!0});let o=Date.now();console.log("[setup] Fetching bundle...");let r=setInterval(()=>{let s=((Date.now()-o)/1e3).toFixed(1);console.log(`[setup] still fetching (${s}s elapsed)`)},3e3);try{await new Promise((s,i)=>{let p=st("curl",["-fsSL",e],{stdio:["ignore","pipe","inherit"]}),a=st("tar",["-xzf","-","-C",t],{stdio:["pipe","inherit","inherit"]});p.stdout.pipe(a.stdin);let c,l,d=()=>{if(c!==void 0&&l!==void 0){if(c!==0)return i(new Error(`curl exited ${c}`));if(l!==0)return i(new Error(`tar exited ${l}`));s()}};p.on("close",g=>{c=g,d()}),a.on("close",g=>{l=g,d()}),p.on("error",i),a.on("error",i)})}finally{clearInterval(r)}let n=((Date.now()-o)/1e3).toFixed(1);return console.log(`[setup] Bundle extracted (${n}s)`),t}async function at(){let e=process.env.WORKFLOW_SOURCES_URL;if(!e)throw new Error("WORKFLOW_SOURCES_URL env var is required");let t=await fetch(e);if(!t.ok)throw new Error(`Failed to fetch sources: ${t.status} ${t.statusText}`);let o=await t.json();if(!o.sources||typeof o.sources!="object")throw new Error('Invalid sources payload \u2014 missing "sources" map');return o}function so(e){let t=e?.agent;if(!t)return null;if(typeof t=="string")return t;if(typeof t=="object"){if(typeof t.provider=="string")return t.provider;for(let o of["claude","cursor","codex","gemini"])if(t[o])return o}return null}function ao(e,t){let o=it(t),r=0;for(let[n,s]of Object.entries(e)){let i=it(t,n);if(!i.startsWith(`${o}/`)&&i!==o){console.error(` \u26D4 Skipping unsafe path: ${n}`);continue}ct(ro(i),{recursive:!0}),oo(i,s,"utf-8"),r++}return r}async function co(){let e=process.env.ZIBBY_EGRESS_PROXY_URL,t=process.env.ZIBBY_EGRESS_TOKEN;if(!(!e||!t))try{let o=await import("undici"),r=new o.ProxyAgent({uri:e,token:`Bearer ${t}`});o.setGlobalDispatcher(r)}catch(o){console.warn(`[setup] Failed to install egress proxy dispatcher: ${o.message}`)}}async function lo(){if(process.env.ZIBBY_EGRESS_IP)return{ip:process.env.ZIBBY_EGRESS_IP,kind:"static"};try{let e=new AbortController,t=setTimeout(()=>e.abort(),1500),o=await fetch("https://api.ipify.org?format=json",{signal:e.signal});return clearTimeout(t),o.ok?{ip:(await o.json())?.ip||null,kind:"dynamic"}:{ip:null,kind:"dynamic"}}catch{return{ip:null,kind:"dynamic"}}}async function fo(e,t){let o=E(e,"graph.mjs");if(!P(o))throw new Error(`graph.mjs not found at ${o}`);let r=await import(fe(o).href),n=t?.entryClass,s=n&&r[n]||r.default||Object.values(r).find(i=>typeof i=="function"&&i.prototype?.buildGraph);if(!s)throw new Error("No WorkflowAgent class found in graph.mjs");return s}async function jr(){if(!process.env.NODE_PATH){process.env.NODE_PATH="/opt/zibby/packages";let f=await import("module");f.default._initPaths&&f.default._initPaths()}await co();let{WORKFLOW_JOB_ID:e,WORKFLOW_TYPE:t,PROJECT_ID:o,AGENT_TYPE:r,MODEL:n}=process.env;t||(console.error("Missing WORKFLOW_TYPE env var"),process.exit(1));let s=process.env.WORKFLOW_BUNDLE_URL,i,p={},a,c;if(s){a=t,i=E(K,".zibby","workflows",a);try{await io(s,i);try{let f=await at();p=f.input||{},c=f.version}catch{}}catch(f){console.warn(`[setup] Bundle extract failed (${f.message}); falling back to source install`),i=null}}if(!i){let f=await at(),{sources:m,input:x,workflowType:S,version:y}=f;p=x||{},a=S||t,c=y,console.log(`[setup] Workflow v${c||"?"} (${Object.keys(m).length} files)`),i=E(K,".zibby","workflows",a);let R=ao(m,i);console.log(`[setup] Wrote ${R} files`),console.log("[setup] Installing dependencies...");try{no("npm install --silent --no-audit --no-fund",{cwd:i,stdio:"inherit"}),console.log("[setup] Dependencies installed")}catch(_){console.warn(`[setup] npm install failed: ${_.message}`)}}let l={},d=E(i,"workflow.json");P(d)&&(l=JSON.parse(nt(d,"utf-8")));let g={},z=E(i,"zibby.config.json");if(P(z))try{g=JSON.parse(nt(z,"utf-8")),console.log("[setup] Loaded user config from zibby.config.json")}catch(f){console.warn(`[setup] Failed to parse zibby.config.json: ${f.message} \u2014 falling back to defaults`)}let $=Ee(K,g);$.written?console.log(`[setup] Materialized playwright.config.js \u2192 ${$.path} (${$.reason})`):$.path&&console.log(`[setup] Using existing playwright config: ${$.path}`);let v=so(g)||r,I=await lo();console.log(Se({workflowType:t,jobId:e,projectId:o,agentType:v,model:n,egressIp:I.ip,egressKind:I.kind}));let pe=await fo(i,l);console.log(`[setup] Loaded ${pe.name}`);let b=[],de=E(i,"node_modules","@zibby","agent-workflow"),ue=E(i,"node_modules","@zibby","core","node_modules","@zibby","agent-workflow");P(de)&&b.push({kind:"hoisted",path:de}),P(ue)&&b.push({kind:"nested",path:ue});let V=process.env.ZIBBY_RUN_DIAG==="1";if(V){let{readdirSync:f}=await import("fs");console.log(` [diag] @zibby/agent-workflow copies in bundle: ${b.length}`);for(let m of b)console.log(` [diag] ${m.kind}: ${m.path}`);try{let m=E(i,"node_modules","@zibby");P(m)&&console.log(` [diag] node_modules/@zibby/ contents: [${f(m).join(", ")}]`)}catch{}}let ge=E(i,"node_modules","@zibby","core","dist","index.js");if(P(ge)&&b.length>0)try{let f=await import(fe(ge).href),m=[f.AssistantStrategy,f.CursorAgentStrategy,f.ClaudeAgentStrategy,f.CodexAgentStrategy,f.GeminiAgentStrategy].filter(Boolean);for(let x of b){let S=E(x.path,"dist","index.js");if(!P(S))continue;let y=await import(fe(S).href),R=V?y.listStrategies():null;for(let _ of m)try{y.registerStrategy(new _)}catch(ut){console.warn(` register ${_.name} into ${x.kind} failed: ${ut.message}`)}V&&console.log(` [diag] ${x.kind} registry: before=[${R.join(",")||"empty"}] after=[${y.listStrategies().join(",")||"empty"}]`)}console.log("[setup] Registered 5 agent strategies (assistant, cursor, claude, codex, gemini)")}catch(f){console.warn(`[setup] Failed to bridge strategies: ${f.message}`)}else console.warn("[setup] No @zibby/core or @zibby/agent-workflow in bundle \u2014 agent strategies may be unavailable");let lt=Date.now(),me=new pe({workflow:a||t}),ft=me.buildGraph(),k=process.env.WORKFLOW_UUID||null,G=process.env.ZIBBY_CONVERSATION_ID||null,q=!1;if(k&&G)try{let{v5:f}=await Promise.resolve().then(()=>(Me(),qe)),m=f(`${k}:${G}`,"6ba7b810-9dad-11d1-80b4-00c04fd430c8"),x=(process.env.PROGRESS_API_URL||process.env.ZIBBY_API_BASE||"").replace(/\/executions\/?$/,"").replace(/\/+$/,""),S=process.env.PROJECT_API_TOKEN;if(process.env.ZIBBY_SDK_DEBUG==="1"&&console.log(`[session-preflight] sessionId=${m} apiUrl=${x?"set":"unset"} apiKey=${S?"set":"unset"}`),x&&S){let y=`${x}/workflows/${encodeURIComponent(k)}/sessions/${encodeURIComponent(m)}`,R=await fetch(y,{method:"GET",headers:{Authorization:`Bearer ${S}`}});if(process.env.ZIBBY_SDK_DEBUG==="1"&&console.log(`[session-preflight] GET ${y} \u2192 HTTP ${R.status}`),R.ok){let _=await R.json().catch(()=>({}));q=Array.isArray(_?.entries)&&_.entries.length>0,process.env.ZIBBY_SDK_DEBUG==="1"&&console.log(`[session-preflight] hasPriorSession=${q} entries=${_?.entries?.length??"n/a"}`)}}}catch(f){process.env.ZIBBY_SDK_DEBUG==="1"&&console.log(`[session-preflight] threw: ${f.message}`)}let M=null;try{process.env.REPOS&&(M=JSON.parse(process.env.REPOS))}catch{}let pt={...p||{},cwd:K,runId:e||`run-${Date.now()}`,config:g,input:p||{},...k?{workflowUuid:k}:{},...G?{conversationId:G}:{},...q?{hasPriorSession:!0}:{},workspace:K,...M?{repos:M}:{},...process.env.GITHUB_TOKEN?{githubToken:process.env.GITHUB_TOKEN}:{}};console.log("");let D;try{D=await ft.run(me,pt)}catch(f){console.error(`
|
|
30
|
+
Workflow execution failed: ${f.message}`),console.error(f.stack),await le("failed",f.message),process.exit(1)}let he=((Date.now()-lt)/1e3).toFixed(1),dt=D?.success!==!1,we=a||t;if(process.env.UPLOAD_ARTIFACTS!=="0"){let f=D?.state?.sessionPath,m=process.env.PROGRESS_API_URL||process.env.ZIBBY_API_BASE,x=process.env.PROJECT_API_TOKEN,S=process.env.WORKFLOW_JOB_ID;if(f&&m&&x&&S)try{let{uploadSessionArtifacts:y}=await Promise.resolve().then(()=>(rt(),ot)),{uploaded:R,skipped:_}=await y({sessionPath:f,executionId:S,apiUrl:m,apiKey:x});console.log(`[artifacts] uploaded ${R.length} file(s)${_.length?`, skipped ${_.length}`:""}`)}catch(y){console.warn(`[artifacts] uploader threw: ${y.message}`)}else console.log("[artifacts] skipping upload \u2014 sessionPath/apiUrl/apiKey/executionId missing")}dt?(console.log(`
|
|
31
|
+
[done] ${we} completed in ${he}s`),await le("completed",null,D?.state)):(console.error(`
|
|
32
|
+
[done] ${we} failed after ${he}s`),await le("failed",D?.error||"Workflow execution failed",D?.state),process.exit(1))}async function le(e,t=null,o=void 0){let r={EXECUTION_ID:process.env.WORKFLOW_JOB_ID,PROGRESS_API_URL:process.env.PROGRESS_API_URL,PROGRESS_QUEUE_URL:process.env.PROGRESS_QUEUE_URL,PROJECT_API_TOKEN:process.env.PROJECT_API_TOKEN,SQS_AUTH_TOKEN:process.env.SQS_AUTH_TOKEN};if(r.EXECUTION_ID)try{await ye(r,{status:e,...t&&{error:t},...o?{finalState:o}:{}})}catch(n){console.error(`\u26A0\uFE0F Failed to report status: ${n.message}`)}}export{so as resolveAgentFromConfig,jr as runWorkflowCommand};
|
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zibby/cli",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.29",
|
|
4
4
|
"description": "Zibby CLI - Test automation generator and runner",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"@zibby/core": "^0.5.1",
|
|
39
39
|
"@zibby/skills": "^0.1.11",
|
|
40
40
|
"@zibby/ui-memory": "^1.0.0",
|
|
41
|
-
"@zibby/workflow-templates": "^0.2.
|
|
41
|
+
"@zibby/workflow-templates": "^0.2.1",
|
|
42
42
|
"adm-zip": "^0.5.17",
|
|
43
43
|
"chalk": "^5.3.0",
|
|
44
44
|
"cli-highlight": "^2.1.11",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zibby/cli",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.29",
|
|
4
4
|
"description": "Zibby CLI - Test automation generator and runner",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"@zibby/core": "^0.5.1",
|
|
39
39
|
"@zibby/skills": "^0.1.11",
|
|
40
40
|
"@zibby/ui-memory": "^1.0.0",
|
|
41
|
-
"@zibby/workflow-templates": "^0.2.
|
|
41
|
+
"@zibby/workflow-templates": "^0.2.1",
|
|
42
42
|
"adm-zip": "^0.5.17",
|
|
43
43
|
"chalk": "^5.3.0",
|
|
44
44
|
"cli-highlight": "^2.1.11",
|