@seldonqa/cli 0.2.1 → 0.2.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.
Files changed (2) hide show
  1. package/dist/bin.js +4 -3
  2. package/package.json +1 -1
package/dist/bin.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import{createHash as xo}from"crypto";import{mkdir as So,readFile as Ti,writeFile as Co}from"fs/promises";import{homedir as _o,tmpdir as Io}from"os";import{join as Di}from"path";import{execFileSync as Ro}from"child_process";import{readdir as Eo,readFile as Ui,stat as ji}from"fs/promises";import{join as qi,relative as Oo,sep as Ri}from"path";import{createRequire as Nr}from"module";var Fr=Nr("/"),$e,Dr,Pr;try{$e=Fr("worker_threads"),Dr=$e.Worker,Pr=$e.isMarkedAsUntransferable}catch{}var ue=Uint8Array,ve=Uint16Array,Sn=Int32Array,Cn=new ue([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),_n=new ue([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),St=new ue([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Et=function(n,t){for(var i=new ve(31),r=0;r<31;++r)i[r]=t+=1<<n[r-1];for(var o=new Sn(i[30]),r=1;r<30;++r)for(var s=i[r];s<i[r+1];++s)o[s]=s-i[r]<<5|r;return{b:i,r:o}},$e=Et(Cn,2),Br=$e.b,wn=$e.r;Br[28]=258,wn[258]=28;var Ot=Et(_n,0),Na=Ot.b,Ct=Ot.r,bn=new ve(32768);for(G=0;G<32768;++G)Ce=(G&43690)>>1|(G&21845)<<1,Ce=(Ce&52428)>>2|(Ce&13107)<<2,Ce=(Ce&61680)>>4|(Ce&3855)<<4,bn[G]=((Ce&65280)>>8|(Ce&255)<<8)>>1;var Ce,G,Be=(function(n,t,i){for(var r=n.length,o=0,s=new ve(t);o<r;++o)n[o]&&++s[n[o]-1];var l=new ve(t);for(o=1;o<t;++o)l[o]=l[o-1]+s[o-1]<<1;var c;if(i){c=new ve(1<<t);var p=15-t;for(o=0;o<r;++o)if(n[o])for(var u=o<<4|n[o],f=t-n[o],m=l[n[o]-1]++<<f,g=m|(1<<f)-1;m<=g;++m)c[bn[m]>>p]=u}else for(c=new ve(r),o=0;o<r;++o)n[o]&&(c[o]=bn[l[n[o]-1]++]>>15-n[o]);return c}),Le=new ue(288);for(G=0;G<144;++G)Le[G]=8;var G;for(G=144;G<256;++G)Le[G]=9;var G;for(G=256;G<280;++G)Le[G]=7;var G;for(G=280;G<288;++G)Le[G]=8;var G,Ze=new ue(32);for(G=0;G<32;++G)Ze[G]=5;var G,Ur=Be(Le,9,0);var jr=Be(Ze,5,0);var Lt=function(n){return(n+7)/8|0},Mt=function(n,t,i){return(t==null||t<0)&&(t=0),(i==null||i>n.length)&&(i=n.length),new ue(n.subarray(t,i))};var qr=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Xe=function(n,t,i){var r=new Error(t||qr[n]);if(r.code=n,Error.captureStackTrace&&Error.captureStackTrace(r,Xe),!i)throw r;return r};var _e=function(n,t,i){i<<=t&7;var r=t/8|0;n[r]|=i,n[r+1]|=i>>8},De=function(n,t,i){i<<=t&7;var r=t/8|0;n[r]|=i,n[r+1]|=i>>8,n[r+2]|=i>>16},yn=function(n,t){for(var i=[],r=0;r<n.length;++r)n[r]&&i.push({s:r,f:n[r]});var o=i.length,s=i.slice();if(!o)return{t:Nt,l:0};if(o==1){var l=new ue(i[0].s+1);return l[i[0].s]=1,{t:l,l:1}}i.sort(function(X,oe){return X.f-oe.f}),i.push({s:-1,f:25001});var c=i[0],p=i[1],u=0,f=1,m=2;for(i[0]={s:-1,f:c.f+p.f,l:c,r:p};f!=o-1;)c=i[i[u].f<i[m].f?u++:m++],p=i[u!=f&&i[u].f<i[m].f?u++:m++],i[f++]={s:-1,f:c.f+p.f,l:c,r:p};for(var g=s[0].s,r=1;r<o;++r)s[r].s>g&&(g=s[r].s);var T=new ve(g+1),D=An(i[f-1],T,0);if(D>t){var r=0,R=0,j=D-t,ne=1<<j;for(s.sort(function(oe,te){return T[te.s]-T[oe.s]||oe.f-te.f});r<o;++r){var W=s[r].s;if(T[W]>t)R+=ne-(1<<D-T[W]),T[W]=t;else break}for(R>>=j;R>0;){var V=s[r].s;T[V]<t?R-=1<<t-T[V]++-1:++r}for(;r>=0&&R;--r){var z=s[r].s;T[z]==t&&(--T[z],++R)}D=t}return{t:new ue(T),l:D}},An=function(n,t,i){return n.s==-1?Math.max(An(n.l,t,i+1),An(n.r,t,i+1)):t[n.s]=i},_t=function(n){for(var t=n.length;t&&!n[--t];);for(var i=new ve(++t),r=0,o=n[0],s=1,l=function(p){i[r++]=p},c=1;c<=t;++c)if(n[c]==o&&c!=t)++s;else{if(!o&&s>2){for(;s>138;s-=138)l(32754);s>2&&(l(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(l(o),--s;s>6;s-=6)l(8304);s>2&&(l(s-3<<5|8208),s=0)}for(;s--;)l(o);s=1,o=n[c]}return{c:i.subarray(0,r),n:t}},Pe=function(n,t){for(var i=0,r=0;r<t.length;++r)i+=n[r]*t[r];return i},$t=function(n,t,i){var r=i.length,o=Lt(t+2);n[o]=r&255,n[o+1]=r>>8,n[o+2]=n[o]^255,n[o+3]=n[o+1]^255;for(var s=0;s<r;++s)n[o+s+4]=i[s];return(o+4+r)*8},It=function(n,t,i,r,o,s,l,c,p,u,f){_e(t,f++,i),++o[256];for(var m=yn(o,15),g=m.t,T=m.l,D=yn(s,15),R=D.t,j=D.l,ne=_t(g),W=ne.c,V=ne.n,z=_t(R),X=z.c,oe=z.n,te=new ve(19),Y=0;Y<W.length;++Y)++te[W[Y]&31];for(var Y=0;Y<X.length;++Y)++te[X[Y]&31];for(var U=yn(te,7),ae=U.t,he=U.l,re=19;re>4&&!ae[St[re-1]];--re);var me=u+5<<3,H=Pe(o,Le)+Pe(s,Ze)+l,se=Pe(o,g)+Pe(s,R)+l+14+3*re+Pe(te,ae)+2*te[16]+3*te[17]+7*te[18];if(p>=0&&me<=H&&me<=se)return $t(t,f,n.subarray(p,p+u));var E,J,w,k;if(_e(t,f,1+(se<H)),f+=2,se<H){E=Be(g,T,0),J=g,w=Be(R,j,0),k=R;var L=Be(ae,he,0);_e(t,f,V-257),_e(t,f+5,oe-1),_e(t,f+10,re-4),f+=14;for(var Y=0;Y<re;++Y)_e(t,f+3*Y,ae[St[Y]]);f+=3*re;for(var B=[W,X],q=0;q<2;++q)for(var F=B[q],Y=0;Y<F.length;++Y){var Q=F[Y]&31;_e(t,f,L[Q]),f+=ae[Q],Q>15&&(_e(t,f,F[Y]>>5&127),f+=F[Y]>>12)}}else E=Ur,J=Le,w=jr,k=Ze;for(var Y=0;Y<c;++Y){var $=r[Y];if($>255){var Q=$>>18&31;De(t,f,E[Q+257]),f+=J[Q+257],Q>7&&(_e(t,f,$>>23&31),f+=Cn[Q]);var Z=$&31;De(t,f,w[Z]),f+=k[Z],Z>3&&(De(t,f,$>>5&8191),f+=_n[Z])}else De(t,f,E[$]),f+=J[$]}return De(t,f,E[256]),f+J[256]},Yr=new Sn([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Nt=new ue(0),zr=function(n,t,i,r,o,s){var l=s.z||n.length,c=new ue(r+l+5*(1+Math.ceil(l/7e3))+o),p=c.subarray(r,c.length-o),u=s.l,f=(s.r||0)&7;if(t){f&&(p[0]=s.r>>3);for(var m=Yr[t-1],g=m>>13,T=m&8191,D=(1<<i)-1,R=s.p||new ve(32768),j=s.h||new ve(D+1),ne=Math.ceil(i/3),W=2*ne,V=function(Ae){return(n[Ae]^n[Ae+1]<<ne^n[Ae+2]<<W)&D},z=new Sn(25e3),X=new ve(288),oe=new ve(32),te=0,Y=0,U=s.i||0,ae=0,he=s.w||0,re=0;U+2<l;++U){var me=V(U),H=U&32767,se=j[me];if(R[H]=se,j[me]=H,he<=U){var E=l-U;if((te>7e3||ae>24576)&&(E>423||!u)){f=It(n,p,0,z,X,oe,Y,ae,re,U-re,f),ae=te=Y=0,re=U;for(var J=0;J<286;++J)X[J]=0;for(var J=0;J<30;++J)oe[J]=0}var w=2,k=0,L=T,B=H-se&32767;if(E>2&&me==V(U-B))for(var q=Math.min(g,E)-1,F=Math.min(32767,U),Q=Math.min(258,E);B<=F&&--L&&H!=se;){if(n[U+w]==n[U+w-B]){for(var $=0;$<Q&&n[U+$]==n[U+$-B];++$);if($>w){if(w=$,k=B,$>q)break;for(var Z=Math.min(B,$-2),pe=0,J=0;J<Z;++J){var we=U-B+J&32767,ie=R[we],be=we-ie&32767;be>pe&&(pe=be,se=we)}}}H=se,se=R[H],B+=H-se&32767}if(k){z[ae++]=268435456|wn[w]<<18|Ct[k];var ye=wn[w]&31,Oe=Ct[k]&31;Y+=Cn[ye]+_n[Oe],++X[257+ye],++oe[Oe],he=U+w,++te}else z[ae++]=n[U],++X[n[U]]}}for(U=Math.max(U,he);U<l;++U)z[ae++]=n[U],++X[n[U]];f=It(n,p,u,z,X,oe,Y,ae,re,U-re,f),u||(s.r=f&7|p[f/8|0]<<3,f-=7,s.h=j,s.p=R,s.i=U,s.w=he)}else{for(var U=s.w||0;U<l+u;U+=65535){var ke=U+65535;ke>=l&&(p[f/8|0]=u,ke=l),f=$t(p,f+1,n.subarray(U,ke))}s.i=l}return Mt(c,0,r+Lt(f)+o)},Kr=(function(){for(var n=new Int32Array(256),t=0;t<256;++t){for(var i=t,r=9;--r;)i=(i&1&&-306674912)^i>>>1;n[t]=i}return n})(),Hr=function(){var n=-1;return{p:function(t){for(var i=n,r=0;r<t.length;++r)i=Kr[i&255^t[r]]^i>>>8;n=i},d:function(){return~n}}};var Gr=function(n,t,i,r,o){if(!o&&(o={l:1},t.dictionary)){var s=t.dictionary.subarray(-32768),l=new ue(s.length+n.length);l.set(s),l.set(n,s.length),n=l,o.w=s.length}return zr(n,t.level==null?6:t.level,t.mem==null?o.l?Math.ceil(Math.max(8,Math.min(13,Math.log(n.length)))*1.5):20:12+t.mem,i,r,o)},Ft=function(n,t){var i={};for(var r in n)i[r]=n[r];for(var r in t)i[r]=t[r];return i};var le=function(n,t,i){for(;i;++t)n[t]=i,i>>>=8};function Wr(n,t){return Gr(n,t||{},0,0)}var Dt=function(n,t,i,r){for(var o in n){var s=n[o],l=t+o,c=r;Array.isArray(s)&&(c=Ft(r,s[1]),s=s[0]),ArrayBuffer.isView(s)?i[l]=[s,c]:(i[l+="/"]=[new ue(0),c],Dt(s,l,i,r))}},kt=typeof TextEncoder<"u"&&new TextEncoder,Qr=typeof TextDecoder<"u"&&new TextDecoder,Vr=0;try{Qr.decode(Nt,{stream:!0}),Vr=1}catch{}function Tt(n,t){if(t){for(var i=new ue(n.length),r=0;r<n.length;++r)i[r]=n.charCodeAt(r);return i}if(kt)return kt.encode(n);for(var o=n.length,s=new ue(n.length+(n.length>>1)),l=0,c=function(f){s[l++]=f},r=0;r<o;++r){if(l+5>s.length){var p=new ue(l+8+(o-r<<1));p.set(s),s=p}var u=n.charCodeAt(r);u<128||t?c(u):u<2048?(c(192|u>>6),c(128|u&63)):u>55295&&u<57344?(u=65536+(u&1047552)|n.charCodeAt(++r)&1023,c(240|u>>18),c(128|u>>12&63),c(128|u>>6&63),c(128|u&63)):(c(224|u>>12),c(128|u>>6&63),c(128|u&63))}return Mt(s,0,l)}var xn=function(n){var t=0;if(n)for(var i in n){var r=n[i].length;r>65535&&Xe(9),t+=r+4}return t},Rt=function(n,t,i,r,o,s,l,c){var p=r.length,u=i.extra,f=c&&c.length,m=xn(u);le(n,t,l!=null?33639248:67324752),t+=4,l!=null&&(n[t++]=20,n[t++]=i.os),n[t]=20,t+=2,n[t++]=i.flag<<1|(s<0&&8),n[t++]=o&&8,n[t++]=i.compression&255,n[t++]=i.compression>>8;var g=new Date(i.mtime==null?Date.now():i.mtime),T=g.getFullYear()-1980;if((T<0||T>119)&&Xe(10),le(n,t,T<<25|g.getMonth()+1<<21|g.getDate()<<16|g.getHours()<<11|g.getMinutes()<<5|g.getSeconds()>>1),t+=4,s!=-1&&(le(n,t,i.crc),le(n,t+4,s<0?-s-2:s),le(n,t+8,i.size)),le(n,t+12,p),le(n,t+14,m),t+=16,l!=null&&(le(n,t,f),le(n,t+6,i.attrs),le(n,t+10,l),t+=14),n.set(r,t),t+=p,m)for(var D in u){var R=u[D],j=R.length;le(n,t,+D),le(n,t+2,j),n.set(R,t+4),t+=4+j}return f&&(n.set(c,t),t+=f),t},Jr=function(n,t,i,r,o){le(n,t,101010256),le(n,t+8,i),le(n,t+10,i),le(n,t+12,r),le(n,t+16,o)};function In(n,t){t||(t={});var i={},r=[];Dt(n,"",i,t);var o=0,s=0;for(var l in i){var c=i[l],p=c[0],u=c[1],f=u.level==0?0:8,m=Tt(l),g=m.length,T=u.comment,D=T&&Tt(T),R=D&&D.length,j=xn(u.extra);g>65535&&Xe(11);var ne=f?Wr(p,u):p,W=ne.length,V=Hr();V.p(p),r.push(Ft(u,{size:p.length,crc:V.d(),c:ne,f:m,m:D,u:g!=l.length||D&&T.length!=R,o,compression:f})),o+=30+g+j+W,s+=76+2*(g+j)+(R||0)+W}for(var z=new ue(s+22),X=o,oe=s-o,te=0;te<r.length;++te){var m=r[te];Rt(z,m.o,m,m.f,m.u,m.c.length);var Y=30+m.f.length+xn(m.extra);z.set(m.c,m.o+Y),Rt(z,o,m,m.f,m.u,m.c.length,m.o,m.m),o+=16+Y+(m.m?m.m.length:0)}return Jr(z,o,r.length,oe,X),z}import{readFileSync as hr,writeFileSync as Jo}from"fs";import{join as Zo,resolve as Xo}from"path";function Zr(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var fe={},en={},Te={},Pt;function Ue(){if(Pt)return Te;Pt=1;function n(l){return typeof l>"u"||l===null}function t(l){return typeof l=="object"&&l!==null}function i(l){return Array.isArray(l)?l:n(l)?[]:[l]}function r(l,c){if(c){let p=Object.keys(c);for(let u=0,f=p.length;u<f;u+=1){let m=p[u];l[m]=c[m]}}return l}function o(l,c){let p="";for(let u=0;u<c;u+=1)p+=l;return p}function s(l){return l===0&&Number.NEGATIVE_INFINITY===1/l}return Te.isNothing=n,Te.isObject=t,Te.toArray=i,Te.repeat=o,Te.isNegativeZero=s,Te.extend=r,Te}var kn,Bt;function je(){if(Bt)return kn;Bt=1;function n(i,r){let o="",s=i.reason||"(unknown reason)";return i.mark?(i.mark.name&&(o+='in "'+i.mark.name+'" '),o+="("+(i.mark.line+1)+":"+(i.mark.column+1)+")",!r&&i.mark.snippet&&(o+=`
2
+ import{createHash as xo}from"crypto";import{mkdir as So,readFile as Ti,writeFile as Co}from"fs/promises";import{homedir as _o,tmpdir as Io}from"os";import{join as Di}from"path";import{execFileSync as Ro}from"child_process";import{readdir as Eo,readFile as Ui,stat as ji}from"fs/promises";import{join as qi,relative as Oo,sep as Ri}from"path";import{createRequire as Nr}from"module";var Fr=Nr("/"),$e,Dr,Pr;try{$e=Fr("worker_threads"),Dr=$e.Worker,Pr=$e.isMarkedAsUntransferable}catch{}var ue=Uint8Array,ve=Uint16Array,Sn=Int32Array,Cn=new ue([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),_n=new ue([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),St=new ue([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),Et=function(n,t){for(var i=new ve(31),r=0;r<31;++r)i[r]=t+=1<<n[r-1];for(var o=new Sn(i[30]),r=1;r<30;++r)for(var s=i[r];s<i[r+1];++s)o[s]=s-i[r]<<5|r;return{b:i,r:o}},$e=Et(Cn,2),Br=$e.b,wn=$e.r;Br[28]=258,wn[258]=28;var Ot=Et(_n,0),Fa=Ot.b,Ct=Ot.r,bn=new ve(32768);for(G=0;G<32768;++G)Ce=(G&43690)>>1|(G&21845)<<1,Ce=(Ce&52428)>>2|(Ce&13107)<<2,Ce=(Ce&61680)>>4|(Ce&3855)<<4,bn[G]=((Ce&65280)>>8|(Ce&255)<<8)>>1;var Ce,G,Be=(function(n,t,i){for(var r=n.length,o=0,s=new ve(t);o<r;++o)n[o]&&++s[n[o]-1];var l=new ve(t);for(o=1;o<t;++o)l[o]=l[o-1]+s[o-1]<<1;var c;if(i){c=new ve(1<<t);var p=15-t;for(o=0;o<r;++o)if(n[o])for(var u=o<<4|n[o],f=t-n[o],m=l[n[o]-1]++<<f,g=m|(1<<f)-1;m<=g;++m)c[bn[m]>>p]=u}else for(c=new ve(r),o=0;o<r;++o)n[o]&&(c[o]=bn[l[n[o]-1]++]>>15-n[o]);return c}),Le=new ue(288);for(G=0;G<144;++G)Le[G]=8;var G;for(G=144;G<256;++G)Le[G]=9;var G;for(G=256;G<280;++G)Le[G]=7;var G;for(G=280;G<288;++G)Le[G]=8;var G,Ze=new ue(32);for(G=0;G<32;++G)Ze[G]=5;var G,Ur=Be(Le,9,0);var jr=Be(Ze,5,0);var Lt=function(n){return(n+7)/8|0},Mt=function(n,t,i){return(t==null||t<0)&&(t=0),(i==null||i>n.length)&&(i=n.length),new ue(n.subarray(t,i))};var qr=["unexpected EOF","invalid block type","invalid length/literal","invalid distance","stream finished","no stream handler",,"no callback","invalid UTF-8 data","extra field too long","date not in range 1980-2099","filename too long","stream finishing","invalid zip data"],Xe=function(n,t,i){var r=new Error(t||qr[n]);if(r.code=n,Error.captureStackTrace&&Error.captureStackTrace(r,Xe),!i)throw r;return r};var _e=function(n,t,i){i<<=t&7;var r=t/8|0;n[r]|=i,n[r+1]|=i>>8},De=function(n,t,i){i<<=t&7;var r=t/8|0;n[r]|=i,n[r+1]|=i>>8,n[r+2]|=i>>16},yn=function(n,t){for(var i=[],r=0;r<n.length;++r)n[r]&&i.push({s:r,f:n[r]});var o=i.length,s=i.slice();if(!o)return{t:Nt,l:0};if(o==1){var l=new ue(i[0].s+1);return l[i[0].s]=1,{t:l,l:1}}i.sort(function(X,oe){return X.f-oe.f}),i.push({s:-1,f:25001});var c=i[0],p=i[1],u=0,f=1,m=2;for(i[0]={s:-1,f:c.f+p.f,l:c,r:p};f!=o-1;)c=i[i[u].f<i[m].f?u++:m++],p=i[u!=f&&i[u].f<i[m].f?u++:m++],i[f++]={s:-1,f:c.f+p.f,l:c,r:p};for(var g=s[0].s,r=1;r<o;++r)s[r].s>g&&(g=s[r].s);var T=new ve(g+1),D=An(i[f-1],T,0);if(D>t){var r=0,R=0,j=D-t,ne=1<<j;for(s.sort(function(oe,te){return T[te.s]-T[oe.s]||oe.f-te.f});r<o;++r){var W=s[r].s;if(T[W]>t)R+=ne-(1<<D-T[W]),T[W]=t;else break}for(R>>=j;R>0;){var V=s[r].s;T[V]<t?R-=1<<t-T[V]++-1:++r}for(;r>=0&&R;--r){var z=s[r].s;T[z]==t&&(--T[z],++R)}D=t}return{t:new ue(T),l:D}},An=function(n,t,i){return n.s==-1?Math.max(An(n.l,t,i+1),An(n.r,t,i+1)):t[n.s]=i},_t=function(n){for(var t=n.length;t&&!n[--t];);for(var i=new ve(++t),r=0,o=n[0],s=1,l=function(p){i[r++]=p},c=1;c<=t;++c)if(n[c]==o&&c!=t)++s;else{if(!o&&s>2){for(;s>138;s-=138)l(32754);s>2&&(l(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(l(o),--s;s>6;s-=6)l(8304);s>2&&(l(s-3<<5|8208),s=0)}for(;s--;)l(o);s=1,o=n[c]}return{c:i.subarray(0,r),n:t}},Pe=function(n,t){for(var i=0,r=0;r<t.length;++r)i+=n[r]*t[r];return i},$t=function(n,t,i){var r=i.length,o=Lt(t+2);n[o]=r&255,n[o+1]=r>>8,n[o+2]=n[o]^255,n[o+3]=n[o+1]^255;for(var s=0;s<r;++s)n[o+s+4]=i[s];return(o+4+r)*8},It=function(n,t,i,r,o,s,l,c,p,u,f){_e(t,f++,i),++o[256];for(var m=yn(o,15),g=m.t,T=m.l,D=yn(s,15),R=D.t,j=D.l,ne=_t(g),W=ne.c,V=ne.n,z=_t(R),X=z.c,oe=z.n,te=new ve(19),Y=0;Y<W.length;++Y)++te[W[Y]&31];for(var Y=0;Y<X.length;++Y)++te[X[Y]&31];for(var U=yn(te,7),ae=U.t,he=U.l,re=19;re>4&&!ae[St[re-1]];--re);var me=u+5<<3,H=Pe(o,Le)+Pe(s,Ze)+l,se=Pe(o,g)+Pe(s,R)+l+14+3*re+Pe(te,ae)+2*te[16]+3*te[17]+7*te[18];if(p>=0&&me<=H&&me<=se)return $t(t,f,n.subarray(p,p+u));var E,J,w,k;if(_e(t,f,1+(se<H)),f+=2,se<H){E=Be(g,T,0),J=g,w=Be(R,j,0),k=R;var L=Be(ae,he,0);_e(t,f,V-257),_e(t,f+5,oe-1),_e(t,f+10,re-4),f+=14;for(var Y=0;Y<re;++Y)_e(t,f+3*Y,ae[St[Y]]);f+=3*re;for(var B=[W,X],q=0;q<2;++q)for(var F=B[q],Y=0;Y<F.length;++Y){var Q=F[Y]&31;_e(t,f,L[Q]),f+=ae[Q],Q>15&&(_e(t,f,F[Y]>>5&127),f+=F[Y]>>12)}}else E=Ur,J=Le,w=jr,k=Ze;for(var Y=0;Y<c;++Y){var $=r[Y];if($>255){var Q=$>>18&31;De(t,f,E[Q+257]),f+=J[Q+257],Q>7&&(_e(t,f,$>>23&31),f+=Cn[Q]);var Z=$&31;De(t,f,w[Z]),f+=k[Z],Z>3&&(De(t,f,$>>5&8191),f+=_n[Z])}else De(t,f,E[$]),f+=J[$]}return De(t,f,E[256]),f+J[256]},Yr=new Sn([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Nt=new ue(0),zr=function(n,t,i,r,o,s){var l=s.z||n.length,c=new ue(r+l+5*(1+Math.ceil(l/7e3))+o),p=c.subarray(r,c.length-o),u=s.l,f=(s.r||0)&7;if(t){f&&(p[0]=s.r>>3);for(var m=Yr[t-1],g=m>>13,T=m&8191,D=(1<<i)-1,R=s.p||new ve(32768),j=s.h||new ve(D+1),ne=Math.ceil(i/3),W=2*ne,V=function(Ae){return(n[Ae]^n[Ae+1]<<ne^n[Ae+2]<<W)&D},z=new Sn(25e3),X=new ve(288),oe=new ve(32),te=0,Y=0,U=s.i||0,ae=0,he=s.w||0,re=0;U+2<l;++U){var me=V(U),H=U&32767,se=j[me];if(R[H]=se,j[me]=H,he<=U){var E=l-U;if((te>7e3||ae>24576)&&(E>423||!u)){f=It(n,p,0,z,X,oe,Y,ae,re,U-re,f),ae=te=Y=0,re=U;for(var J=0;J<286;++J)X[J]=0;for(var J=0;J<30;++J)oe[J]=0}var w=2,k=0,L=T,B=H-se&32767;if(E>2&&me==V(U-B))for(var q=Math.min(g,E)-1,F=Math.min(32767,U),Q=Math.min(258,E);B<=F&&--L&&H!=se;){if(n[U+w]==n[U+w-B]){for(var $=0;$<Q&&n[U+$]==n[U+$-B];++$);if($>w){if(w=$,k=B,$>q)break;for(var Z=Math.min(B,$-2),pe=0,J=0;J<Z;++J){var we=U-B+J&32767,ie=R[we],be=we-ie&32767;be>pe&&(pe=be,se=we)}}}H=se,se=R[H],B+=H-se&32767}if(k){z[ae++]=268435456|wn[w]<<18|Ct[k];var ye=wn[w]&31,Oe=Ct[k]&31;Y+=Cn[ye]+_n[Oe],++X[257+ye],++oe[Oe],he=U+w,++te}else z[ae++]=n[U],++X[n[U]]}}for(U=Math.max(U,he);U<l;++U)z[ae++]=n[U],++X[n[U]];f=It(n,p,u,z,X,oe,Y,ae,re,U-re,f),u||(s.r=f&7|p[f/8|0]<<3,f-=7,s.h=j,s.p=R,s.i=U,s.w=he)}else{for(var U=s.w||0;U<l+u;U+=65535){var ke=U+65535;ke>=l&&(p[f/8|0]=u,ke=l),f=$t(p,f+1,n.subarray(U,ke))}s.i=l}return Mt(c,0,r+Lt(f)+o)},Kr=(function(){for(var n=new Int32Array(256),t=0;t<256;++t){for(var i=t,r=9;--r;)i=(i&1&&-306674912)^i>>>1;n[t]=i}return n})(),Hr=function(){var n=-1;return{p:function(t){for(var i=n,r=0;r<t.length;++r)i=Kr[i&255^t[r]]^i>>>8;n=i},d:function(){return~n}}};var Gr=function(n,t,i,r,o){if(!o&&(o={l:1},t.dictionary)){var s=t.dictionary.subarray(-32768),l=new ue(s.length+n.length);l.set(s),l.set(n,s.length),n=l,o.w=s.length}return zr(n,t.level==null?6:t.level,t.mem==null?o.l?Math.ceil(Math.max(8,Math.min(13,Math.log(n.length)))*1.5):20:12+t.mem,i,r,o)},Ft=function(n,t){var i={};for(var r in n)i[r]=n[r];for(var r in t)i[r]=t[r];return i};var le=function(n,t,i){for(;i;++t)n[t]=i,i>>>=8};function Wr(n,t){return Gr(n,t||{},0,0)}var Dt=function(n,t,i,r){for(var o in n){var s=n[o],l=t+o,c=r;Array.isArray(s)&&(c=Ft(r,s[1]),s=s[0]),ArrayBuffer.isView(s)?i[l]=[s,c]:(i[l+="/"]=[new ue(0),c],Dt(s,l,i,r))}},kt=typeof TextEncoder<"u"&&new TextEncoder,Qr=typeof TextDecoder<"u"&&new TextDecoder,Vr=0;try{Qr.decode(Nt,{stream:!0}),Vr=1}catch{}function Tt(n,t){if(t){for(var i=new ue(n.length),r=0;r<n.length;++r)i[r]=n.charCodeAt(r);return i}if(kt)return kt.encode(n);for(var o=n.length,s=new ue(n.length+(n.length>>1)),l=0,c=function(f){s[l++]=f},r=0;r<o;++r){if(l+5>s.length){var p=new ue(l+8+(o-r<<1));p.set(s),s=p}var u=n.charCodeAt(r);u<128||t?c(u):u<2048?(c(192|u>>6),c(128|u&63)):u>55295&&u<57344?(u=65536+(u&1047552)|n.charCodeAt(++r)&1023,c(240|u>>18),c(128|u>>12&63),c(128|u>>6&63),c(128|u&63)):(c(224|u>>12),c(128|u>>6&63),c(128|u&63))}return Mt(s,0,l)}var xn=function(n){var t=0;if(n)for(var i in n){var r=n[i].length;r>65535&&Xe(9),t+=r+4}return t},Rt=function(n,t,i,r,o,s,l,c){var p=r.length,u=i.extra,f=c&&c.length,m=xn(u);le(n,t,l!=null?33639248:67324752),t+=4,l!=null&&(n[t++]=20,n[t++]=i.os),n[t]=20,t+=2,n[t++]=i.flag<<1|(s<0&&8),n[t++]=o&&8,n[t++]=i.compression&255,n[t++]=i.compression>>8;var g=new Date(i.mtime==null?Date.now():i.mtime),T=g.getFullYear()-1980;if((T<0||T>119)&&Xe(10),le(n,t,T<<25|g.getMonth()+1<<21|g.getDate()<<16|g.getHours()<<11|g.getMinutes()<<5|g.getSeconds()>>1),t+=4,s!=-1&&(le(n,t,i.crc),le(n,t+4,s<0?-s-2:s),le(n,t+8,i.size)),le(n,t+12,p),le(n,t+14,m),t+=16,l!=null&&(le(n,t,f),le(n,t+6,i.attrs),le(n,t+10,l),t+=14),n.set(r,t),t+=p,m)for(var D in u){var R=u[D],j=R.length;le(n,t,+D),le(n,t+2,j),n.set(R,t+4),t+=4+j}return f&&(n.set(c,t),t+=f),t},Jr=function(n,t,i,r,o){le(n,t,101010256),le(n,t+8,i),le(n,t+10,i),le(n,t+12,r),le(n,t+16,o)};function In(n,t){t||(t={});var i={},r=[];Dt(n,"",i,t);var o=0,s=0;for(var l in i){var c=i[l],p=c[0],u=c[1],f=u.level==0?0:8,m=Tt(l),g=m.length,T=u.comment,D=T&&Tt(T),R=D&&D.length,j=xn(u.extra);g>65535&&Xe(11);var ne=f?Wr(p,u):p,W=ne.length,V=Hr();V.p(p),r.push(Ft(u,{size:p.length,crc:V.d(),c:ne,f:m,m:D,u:g!=l.length||D&&T.length!=R,o,compression:f})),o+=30+g+j+W,s+=76+2*(g+j)+(R||0)+W}for(var z=new ue(s+22),X=o,oe=s-o,te=0;te<r.length;++te){var m=r[te];Rt(z,m.o,m,m.f,m.u,m.c.length);var Y=30+m.f.length+xn(m.extra);z.set(m.c,m.o+Y),Rt(z,o,m,m.f,m.u,m.c.length,m.o,m.m),o+=16+Y+(m.m?m.m.length:0)}return Jr(z,o,r.length,oe,X),z}import{readFileSync as hr,writeFileSync as Jo}from"fs";import{join as Zo,resolve as Xo}from"path";function Zr(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var fe={},en={},Te={},Pt;function Ue(){if(Pt)return Te;Pt=1;function n(l){return typeof l>"u"||l===null}function t(l){return typeof l=="object"&&l!==null}function i(l){return Array.isArray(l)?l:n(l)?[]:[l]}function r(l,c){if(c){let p=Object.keys(c);for(let u=0,f=p.length;u<f;u+=1){let m=p[u];l[m]=c[m]}}return l}function o(l,c){let p="";for(let u=0;u<c;u+=1)p+=l;return p}function s(l){return l===0&&Number.NEGATIVE_INFINITY===1/l}return Te.isNothing=n,Te.isObject=t,Te.toArray=i,Te.repeat=o,Te.isNegativeZero=s,Te.extend=r,Te}var kn,Bt;function je(){if(Bt)return kn;Bt=1;function n(i,r){let o="",s=i.reason||"(unknown reason)";return i.mark?(i.mark.name&&(o+='in "'+i.mark.name+'" '),o+="("+(i.mark.line+1)+":"+(i.mark.column+1)+")",!r&&i.mark.snippet&&(o+=`
3
3
 
4
4
  `+i.mark.snippet),s+" "+o):s}function t(i,r){Error.call(this),this.name="YAMLException",this.reason=i,this.mark=r,this.message=n(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t.prototype.toString=function(r){return this.name+": "+n(this,r)},kn=t,kn}var Tn,Ut;function Xr(){if(Ut)return Tn;Ut=1;let n=Ue();function t(o,s,l,c,p){let u="",f="",m=Math.floor(p/2)-1;return c-s>m&&(u=" ... ",s=c-m+u.length),l-c>m&&(f=" ...",l=c+m-f.length),{str:u+o.slice(s,l).replace(/\t/g,"\u2192")+f,pos:c-s+u.length}}function i(o,s){return n.repeat(" ",s-o.length)+o}function r(o,s){if(s=Object.create(s||null),!o.buffer)return null;s.maxLength||(s.maxLength=79),typeof s.indent!="number"&&(s.indent=1),typeof s.linesBefore!="number"&&(s.linesBefore=3),typeof s.linesAfter!="number"&&(s.linesAfter=2);let l=/\r?\n|\r|\0/g,c=[0],p=[],u,f=-1;for(;u=l.exec(o.buffer);)p.push(u.index),c.push(u.index+u[0].length),o.position<=u.index&&f<0&&(f=c.length-2);f<0&&(f=c.length-1);let m="",g=Math.min(o.line+s.linesAfter,p.length).toString().length,T=s.maxLength-(s.indent+g+3);for(let R=1;R<=s.linesBefore&&!(f-R<0);R++){let j=t(o.buffer,c[f-R],p[f-R],o.position-(c[f]-c[f-R]),T);m=n.repeat(" ",s.indent)+i((o.line-R+1).toString(),g)+" | "+j.str+`
5
5
  `+m}let D=t(o.buffer,c[f],p[f],o.position,T);m+=n.repeat(" ",s.indent)+i((o.line+1).toString(),g)+" | "+D.str+`
@@ -30,7 +30,7 @@ import{createHash as xo}from"crypto";import{mkdir as So,readFile as Ti,writeFile
30
30
  `+a.slice(A,_),A=_+1),S=M;return O+=`
31
31
  `,a.length-A>h&&S>A?O+=a.slice(A,S)+`
32
32
  `+a.slice(S+1):O+=a.slice(A),O.slice(1)}function gn(a){let h="",C=0;for(let b=0;b<a.length;C>=65536?b+=2:b++){C=ye(a,b);let A=H[C];!A&&Z(C)?(h+=a[b],C>=65536&&(h+=a[b+1])):h+=A||w(C)}return h}function Ve(a,h,C){let b="",A=a.tag;for(let _=0,S=C.length;_<S;_+=1){let M=C[_];a.replacer&&(M=a.replacer.call(C,String(_),M)),(y(a,h,M,!1,!1)||typeof M>"u"&&y(a,h,null,!1,!1))&&(b!==""&&(b+=","+(a.condenseFlow?"":" ")),b+=a.dump)}a.tag=A,a.dump="["+b+"]"}function Je(a,h,C,b){let A="",_=a.tag;for(let S=0,M=C.length;S<M;S+=1){let O=C[S];a.replacer&&(O=a.replacer.call(C,String(S),O)),(y(a,h+1,O,!0,!0,!1,!0)||typeof O>"u"&&y(a,h+1,null,!0,!0,!1,!0))&&((!b||A!=="")&&(A+=F(a,h)),a.dump&&c===a.dump.charCodeAt(0)?A+="-":A+="- ",A+=a.dump)}a.tag=_,a.dump=A||"[]"}function vn(a,h,C){let b="",A=a.tag,_=Object.keys(C);for(let S=0,M=_.length;S<M;S+=1){let O="";b!==""&&(O+=", "),a.condenseFlow&&(O+='"');let N=_[S],P=C[N];a.replacer&&(P=a.replacer.call(C,N,P)),y(a,h,N,!1,!1)&&(a.dump.length>1024&&(O+="? "),O+=a.dump+(a.condenseFlow?'"':"")+":"+(a.condenseFlow?"":" "),y(a,h,P,!1,!1)&&(O+=a.dump,b+=O))}a.tag=A,a.dump="{"+b+"}"}function e(a,h,C,b){let A="",_=a.tag,S=Object.keys(C);if(a.sortKeys===!0)S.sort();else if(typeof a.sortKeys=="function")S.sort(a.sortKeys);else if(a.sortKeys)throw new t("sortKeys must be a boolean or a function");for(let M=0,O=S.length;M<O;M+=1){let N="";(!b||A!=="")&&(N+=F(a,h));let P=S[M],K=C[P];if(a.replacer&&(K=a.replacer.call(C,P,K)),!y(a,h+1,P,!0,!0,!0))continue;let ee=a.tag!==null&&a.tag!=="?"||a.dump&&a.dump.length>1024;ee&&(a.dump&&c===a.dump.charCodeAt(0)?N+="?":N+="? "),N+=a.dump,ee&&(N+=F(a,h)),y(a,h+1,K,!0,ee)&&(a.dump&&c===a.dump.charCodeAt(0)?N+=":":N+=": ",N+=a.dump,A+=N)}a.tag=_,a.dump=A||"{}"}function d(a,h,C){let b=C?a.explicitTypes:a.implicitTypes;for(let A=0,_=b.length;A<_;A+=1){let S=b[A];if((S.instanceOf||S.predicate)&&(!S.instanceOf||typeof h=="object"&&h instanceof S.instanceOf)&&(!S.predicate||S.predicate(h))){if(C?S.multi&&S.representName?a.tag=S.representName(h):a.tag=S.tag:a.tag="?",S.represent){let M=a.styleMap[S.tag]||S.defaultStyle,O;if(r.call(S.represent)==="[object Function]")O=S.represent(h,M);else if(o.call(S.represent,M))O=S.represent[M](h,M);else throw new t("!<"+S.tag+'> tag resolver accepts not "'+M+'" style');a.dump=O}return!0}}return!1}function y(a,h,C,b,A,_,S){a.tag=null,a.dump=C,d(a,C,!1)||d(a,C,!0);let M=r.call(a.dump),O=b;b&&(b=a.flowLevel<0||a.flowLevel>h);let N=M==="[object Object]"||M==="[object Array]",P,K;if(N&&(P=a.duplicates.indexOf(C),K=P!==-1),(a.tag!==null&&a.tag!=="?"||K||a.indent!==2&&h>0)&&(A=!1),K&&a.usedDuplicates[P])a.dump="*ref_"+P;else{if(N&&K&&!a.usedDuplicates[P]&&(a.usedDuplicates[P]=!0),M==="[object Object]")b&&Object.keys(a.dump).length!==0?(e(a,h,a.dump,A),K&&(a.dump="&ref_"+P+a.dump)):(vn(a,h,a.dump),K&&(a.dump="&ref_"+P+" "+a.dump));else if(M==="[object Array]")b&&a.dump.length!==0?(a.noArrayIndent&&!S&&h>0?Je(a,h-1,a.dump,A):Je(a,h,a.dump,A),K&&(a.dump="&ref_"+P+a.dump)):(Ve(a,h,a.dump),K&&(a.dump="&ref_"+P+" "+a.dump));else if(M==="[object String]")a.tag!=="?"&&hn(a,a.dump,h,_,O);else{if(M==="[object Undefined]")return!1;if(a.skipInvalid)return!1;throw new t("unacceptable kind of an object to dump "+M)}if(a.tag!==null&&a.tag!=="?"){let ee=encodeURI(a.tag[0]==="!"?a.tag.slice(1):a.tag).replace(/!/g,"%21");a.tag[0]==="!"?ee="!"+ee:ee.slice(0,18)==="tag:yaml.org,2002:"?ee="!!"+ee.slice(18):ee="!<"+ee+">",a.dump=ee+" "+a.dump}}return!0}function x(a,h){let C=[],b=[];v(a,C,b);let A=b.length;for(let _=0;_<A;_+=1)h.duplicates.push(C[b[_]]);h.usedDuplicates=new Array(A)}function v(a,h,C){if(a!==null&&typeof a=="object"){let b=h.indexOf(a);if(b!==-1)C.indexOf(b)===-1&&C.push(b);else if(h.push(a),Array.isArray(a))for(let A=0,_=a.length;A<_;A+=1)v(a[A],h,C);else{let A=Object.keys(a);for(let _=0,S=A.length;_<S;_+=1)v(a[A[_]],h,C)}}}function I(a,h){h=h||{};let C=new B(h);C.noRefs||x(a,C);let b=a;return C.replacer&&(b=C.replacer.call({"":b},"",b)),y(C,0,b,!0,!0)?C.dump+`
33
- `:""}return Wn.dump=I,Wn}var li;function to(){if(li)return fe;li=1;let n=eo(),t=no();function i(r,o){return function(){throw new Error("Function yaml."+r+" is removed in js-yaml 4. Use yaml."+o+" instead, which is now safe by default.")}}return fe.Type=de(),fe.Schema=ci(),fe.FAILSAFE_SCHEMA=di(),fe.JSON_SCHEMA=yi(),fe.CORE_SCHEMA=wi(),fe.DEFAULT_SCHEMA=Qn(),fe.load=n.load,fe.loadAll=n.loadAll,fe.dump=t.dump,fe.YAMLException=je(),fe.types={binary:xi(),float:vi(),map:pi(),null:hi(),pairs:Ci(),set:_i(),timestamp:bi(),bool:mi(),int:gi(),merge:Ai(),omap:Si(),seq:fi(),str:ui()},fe.safeLoad=i("safeLoad","load"),fe.safeLoadAll=i("safeLoadAll","loadAll"),fe.safeDump=i("safeDump","dump"),fe}var io=to(),ro=Zr(io),{Type:Da,Schema:Pa,FAILSAFE_SCHEMA:Ba,JSON_SCHEMA:Ua,CORE_SCHEMA:ja,DEFAULT_SCHEMA:qa,load:Ii,loadAll:Ya,dump:ki,YAMLException:za,types:Ka,safeLoad:Ha,safeLoadAll:Ga,safeDump:Wa}=ro;var ce=class extends Error{status;detail;requestId;constructor(n,t={}){super(n),this.name=new.target.name,this.status=t.status,this.detail=t.detail,this.requestId=t.requestId}},oo=class extends ce{},ao=class extends ce{},so=class extends ce{},Vn=class extends ce{};function nn(n,t){if(n&&typeof n=="object"&&"detail"in n){let i=n.detail;if(typeof i=="string")return i;if(i&&typeof i=="object"){let r=i;if(typeof r.message=="string")return r.message;if(typeof r.error=="string")return r.error;if(Array.isArray(i)){let o=i.map(s=>s&&typeof s=="object"&&typeof s.msg=="string"?s.msg:null).filter(Boolean);if(o.length)return o.join("; ")}}}return t}function tn(n,t,i){let r={status:n,detail:t,requestId:i};return n===401||n===403?new oo(nn(t,"Authentication failed"),r):n===404?new ao(nn(t,"Not found"),r):n>=500?new so(nn(t,"Server error"),r):new ce(nn(t,`Request failed with status ${n}`),r)}function rn(n){try{return JSON.parse(n)}catch{return n}}var lo=class{constructor(n){this.config=n}config;async request(n,t,i={}){let r=new URL(t.startsWith("http")?t:`${this.config.baseUrl}${t}`);if(i.query)for(let[u,f]of Object.entries(i.query))f!=null&&r.searchParams.set(u,String(f));let o={accept:"application/json",...i.headers};this.config.apiKey&&(o["X-API-Key"]=this.config.apiKey);let s;i.body!==void 0&&(o["content-type"]="application/json",s=JSON.stringify(i.body));let l=await fetch(r,{method:n,headers:o,body:s,signal:AbortSignal.timeout(i.timeoutMs??this.config.timeoutMs),redirect:"manual"});if(l.status>=300&&l.status<400){let u=l.headers.get("location");if(u){let f=new URL(u,r),m=await fetch(f,{method:n,headers:o,body:s,signal:AbortSignal.timeout(i.timeoutMs??this.config.timeoutMs)}),g=await m.text(),T=g?rn(g):null;if(!m.ok)throw tn(m.status,T,m.headers.get("x-request-id")??void 0);return T}}let c=await l.text(),p=c?rn(c):null;if(!l.ok)throw tn(l.status,p,l.headers.get("x-request-id")??void 0);return p}async upload(n,t,i,r={}){let o=new URL(t.startsWith("http")?t:`${this.config.baseUrl}${t}`),s={accept:"application/json"};this.config.apiKey&&(s["X-API-Key"]=this.config.apiKey);let l=new FormData,c=new Blob([i.bytes],{type:i.contentType});l.append(i.field??"file",c,i.filename);let p=await fetch(o,{method:n,headers:s,body:l,signal:AbortSignal.timeout(r.timeoutMs??this.config.timeoutMs),redirect:"manual"});if(p.status>=300&&p.status<400){let m=p.headers.get("location");if(m){let g=new URL(m,o),T=await fetch(g,{method:n,headers:s,body:l,signal:AbortSignal.timeout(r.timeoutMs??this.config.timeoutMs)}),D=await T.text(),R=D?rn(D):null;if(!T.ok)throw tn(T.status,R,T.headers.get("x-request-id")??void 0);return R}}let u=await p.text(),f=u?rn(u):null;if(!p.ok)throw tn(p.status,f,p.headers.get("x-request-id")??void 0);return f}},co=(()=>{try{return"https://api.joinblok.co"}catch{return"http://127.0.0.1:8001"}})(),uo=3e4,fo=3e5;function po(n){return n.endsWith("/")?n.slice(0,-1):n}function ho(n={}){let t=n.baseUrl??process.env.SELDON_BASE_URL??process.env.BLOK_BASE_URL??co,i=n.apiKey??process.env.SELDON_API_KEY??process.env.BLOK_API_KEY??void 0,r=Number(process.env.SELDON_TIMEOUT_MS??process.env.BLOK_TIMEOUT_MS);return{baseUrl:po(t),apiKey:i||void 0,timeoutMs:n.timeoutMs??(Number.isFinite(r)&&r>0?r:uo),specCacheTtlMs:n.specCacheTtlMs??fo}}var mo=new Set(["get","post","put","patch","delete"]),go="_api_v1_";function vo(n){let t=n.indexOf(go);return t>0?n.slice(0,t):n}function yo(n){let t=new Set,i=n.components?.securitySchemes??{};for(let[r,o]of Object.entries(i))o?.type==="apiKey"&&o?.in==="header"&&t.add(r);return t}function wo(n){let t=n.security;if(!Array.isArray(t))return[];let i=[];for(let r of t)r&&typeof r=="object"&&i.push(...Object.keys(r));return i}var bo=class Fi{constructor(t,i){this.operations=t,this.apiKeySchemes=i}operations;apiKeySchemes;static fromSpec(t){let i=yo(t),r=[];for(let[o,s]of Object.entries(t.paths??{}))for(let[l,c]of Object.entries(s)){if(!mo.has(l))continue;let p=c,u=String(p.operationId??`${l}_${o}`),f=Array.isArray(p.parameters)?p.parameters.map(g=>({name:String(g.name),in:g.in,required:!!g.required,description:typeof g.description=="string"?g.description:void 0,schema:g.schema})):[],m=p.tags;r.push({operationId:u,name:vo(u),method:l.toUpperCase(),path:o,tag:m?.[0],summary:typeof p.summary=="string"?p.summary:void 0,description:typeof p.description=="string"?p.description:void 0,params:f,requestBodySchema:Ao(p.requestBody),security:wo(p)})}return new Fi(r,i)}apiKeyOps(){return this.apiKeySchemes.size===0?[]:this.operations.filter(t=>t.security.some(i=>this.apiKeySchemes.has(i)))}get(t){return this.apiKeyOps().find(i=>i.name===t||i.operationId===t)}};function Ao(n){if(!n||typeof n!="object")return;let t=n.content;if(t)return t["application/json"]?.schema??Object.values(t)[0]?.schema}function Pi(){if(process.env.BLOK_CACHE_DIR)return process.env.BLOK_CACHE_DIR;let n=_o()||Io();return Di(n,".cache","blok")}function ko(n){let t=xo("sha256").update(n).digest("hex").slice(0,16);return Di(Pi(),`openapi-${t}.json`)}var To=class{constructor(n,t=fetch){this.config=n,this.fetchImpl=t}config;fetchImpl;async load(n={}){let t=process.env.BLOK_SPEC_PATH;if(t)try{return JSON.parse(await Ti(t,"utf8"))}catch(r){throw new Vn(`Could not read BLOK_SPEC_PATH (${t}): ${String(r)}`)}let i=ko(this.config.baseUrl);if(!n.refresh){let r=await this.readFreshCache(i);if(r)return r}return this.fetchAndCache(i)}async refresh(){return this.load({refresh:!0})}async readFreshCache(n){try{let t=await Ti(n,"utf8"),i=JSON.parse(t);return Date.now()-i.ts<=this.config.specCacheTtlMs?i.spec:null}catch{return null}}async fetchAndCache(n){let t=process.env.SELDON_OPENAPI_URL??process.env.BLOK_OPENAPI_URL??`${this.config.baseUrl}/`,i=t.endsWith(".json")?new URL(t):new URL("/openapi.json",t),r;try{r=await this.fetchImpl(i,{signal:AbortSignal.timeout(this.config.timeoutMs)})}catch(s){throw new Vn(`Could not fetch OpenAPI from ${i.toString()}: ${String(s)}`)}if(!r.ok)throw new Vn(`OpenAPI fetch failed (${r.status}) from ${i.toString()}`,{status:r.status});let o=await r.json();return await this.writeCache(n,o),o}async writeCache(n,t){try{await So(Pi(),{recursive:!0});let i={ts:Date.now(),spec:t};await Co(n,JSON.stringify(i),"utf8")}catch{}}},Jn={upload_qa_package:["POST","/api/v1/code-tests/upload"],create_qa_baseline:["POST","/api/v1/code-tests/qa-experiment"],list_all_baselines:["GET","/api/v1/code-tests/baselines"],get_baseline_plan:["GET","/api/v1/code-tests/baselines/{baseline_id}/plan"],patch_baseline_plan:["PATCH","/api/v1/code-tests/baselines/{baseline_id}/plan"],run_baseline:["POST","/api/v1/code-tests/baselines/{baseline_id}/run"],update_baseline_from_package:["POST","/api/v1/code-tests/baselines/{baseline_id}/update"],delta_baseline:["POST","/api/v1/code-tests/baselines/{baseline_id}/delta"],list_baseline_versions:["GET","/api/v1/code-tests/baselines/{baseline_id}/versions"],promote_baseline:["POST","/api/v1/code-tests/baselines/{baseline_id}/promote"],get_qa_report:["GET","/api/v1/experiments/{experiment_id}/qa-report"],list_qa_experiments:["GET","/integrations/github/experiments"]};function on(n,t={}){return n.replace(/\{([^}]+)\}/g,(i,r)=>{let o=t[r];if(o===void 0)throw new ce(`Missing path parameter: ${r}`);return encodeURIComponent(String(o))})}var Bi=class{config;client;loader;registry;constructor(n={}){this.config=ho(n),this.client=new lo(this.config),this.loader=new To(this.config)}async operations(n={}){if(!this.registry||n.refresh){let t=await this.loader.load(n);this.registry=bo.fromSpec(t)}return this.registry}async apiKeyOps(){return(await this.operations()).apiKeyOps()}async hasOperation(n){return n in Jn?!0:(await this.operations()).get(n)!==void 0}async call(n,t={}){let i=Jn[n];if(i){let[s,l]=i,c=on(l,t.path);return this.client.request(s,c,{query:t.query,body:t.body,timeoutMs:t.timeoutMs})}let r=(await this.operations()).get(n);if(!r)throw new ce(`Unknown or non-API-key operation: ${n}`);let o=on(r.path,t.path);return this.client.request(r.method,o,{query:t.query,body:t.body,timeoutMs:t.timeoutMs})}async upload(n,t,i={}){let r=Jn[n];if(r){let[l,c]=r,p=on(c,i.path);return this.client.upload(l,p,t,{timeoutMs:i.timeoutMs})}let o=(await this.operations()).get(n);if(!o)throw new ce(`Unknown or non-API-key operation: ${n}`);let s=on(o.path,i.path);return this.client.upload(o.method,s,t,{timeoutMs:i.timeoutMs})}};function it(n,t){if(n.length===0)return"";let i=n.map(c=>t.map(p=>p.cell(c))),r=t.map((c,p)=>Math.max(c.header.length,...i.map(u=>u[p].length))),o=(c,p,u="left")=>u==="right"?c.padStart(p):c.padEnd(p),s=t.map((c,p)=>o(c.header,r[p],c.align)).join(" "),l=i.map(c=>c.map((p,u)=>o(p,r[u],t[u].align)).join(" "));return[s,...l].join(`
33
+ `:""}return Wn.dump=I,Wn}var li;function to(){if(li)return fe;li=1;let n=eo(),t=no();function i(r,o){return function(){throw new Error("Function yaml."+r+" is removed in js-yaml 4. Use yaml."+o+" instead, which is now safe by default.")}}return fe.Type=de(),fe.Schema=ci(),fe.FAILSAFE_SCHEMA=di(),fe.JSON_SCHEMA=yi(),fe.CORE_SCHEMA=wi(),fe.DEFAULT_SCHEMA=Qn(),fe.load=n.load,fe.loadAll=n.loadAll,fe.dump=t.dump,fe.YAMLException=je(),fe.types={binary:xi(),float:vi(),map:pi(),null:hi(),pairs:Ci(),set:_i(),timestamp:bi(),bool:mi(),int:gi(),merge:Ai(),omap:Si(),seq:fi(),str:ui()},fe.safeLoad=i("safeLoad","load"),fe.safeLoadAll=i("safeLoadAll","loadAll"),fe.safeDump=i("safeDump","dump"),fe}var io=to(),ro=Zr(io),{Type:Pa,Schema:Ba,FAILSAFE_SCHEMA:Ua,JSON_SCHEMA:ja,CORE_SCHEMA:qa,DEFAULT_SCHEMA:Ya,load:Ii,loadAll:za,dump:ki,YAMLException:Ka,types:Ha,safeLoad:Ga,safeLoadAll:Wa,safeDump:Qa}=ro;var ce=class extends Error{status;detail;requestId;constructor(n,t={}){super(n),this.name=new.target.name,this.status=t.status,this.detail=t.detail,this.requestId=t.requestId}},oo=class extends ce{},ao=class extends ce{},so=class extends ce{},Vn=class extends ce{};function nn(n,t){if(n&&typeof n=="object"&&"detail"in n){let i=n.detail;if(typeof i=="string")return i;if(i&&typeof i=="object"){let r=i;if(typeof r.message=="string")return r.message;if(typeof r.error=="string")return r.error;if(Array.isArray(i)){let o=i.map(s=>s&&typeof s=="object"&&typeof s.msg=="string"?s.msg:null).filter(Boolean);if(o.length)return o.join("; ")}}}return t}function tn(n,t,i){let r={status:n,detail:t,requestId:i};return n===401||n===403?new oo(nn(t,"Authentication failed"),r):n===404?new ao(nn(t,"Not found"),r):n>=500?new so(nn(t,"Server error"),r):new ce(nn(t,`Request failed with status ${n}`),r)}function rn(n){try{return JSON.parse(n)}catch{return n}}var lo=class{constructor(n){this.config=n}config;async request(n,t,i={}){let r=new URL(t.startsWith("http")?t:`${this.config.baseUrl}${t}`);if(i.query)for(let[u,f]of Object.entries(i.query))f!=null&&r.searchParams.set(u,String(f));let o={accept:"application/json",...i.headers};this.config.apiKey&&(o["X-API-Key"]=this.config.apiKey);let s;i.body!==void 0&&(o["content-type"]="application/json",s=JSON.stringify(i.body));let l=await fetch(r,{method:n,headers:o,body:s,signal:AbortSignal.timeout(i.timeoutMs??this.config.timeoutMs),redirect:"manual"});if(l.status>=300&&l.status<400){let u=l.headers.get("location");if(u){let f=new URL(u,r),m=await fetch(f,{method:n,headers:o,body:s,signal:AbortSignal.timeout(i.timeoutMs??this.config.timeoutMs)}),g=await m.text(),T=g?rn(g):null;if(!m.ok)throw tn(m.status,T,m.headers.get("x-request-id")??void 0);return T}}let c=await l.text(),p=c?rn(c):null;if(!l.ok)throw tn(l.status,p,l.headers.get("x-request-id")??void 0);return p}async upload(n,t,i,r={}){let o=new URL(t.startsWith("http")?t:`${this.config.baseUrl}${t}`),s={accept:"application/json"};this.config.apiKey&&(s["X-API-Key"]=this.config.apiKey);let l=new FormData,c=new Blob([i.bytes],{type:i.contentType});l.append(i.field??"file",c,i.filename);let p=await fetch(o,{method:n,headers:s,body:l,signal:AbortSignal.timeout(r.timeoutMs??this.config.timeoutMs),redirect:"manual"});if(p.status>=300&&p.status<400){let m=p.headers.get("location");if(m){let g=new URL(m,o),T=await fetch(g,{method:n,headers:s,body:l,signal:AbortSignal.timeout(r.timeoutMs??this.config.timeoutMs)}),D=await T.text(),R=D?rn(D):null;if(!T.ok)throw tn(T.status,R,T.headers.get("x-request-id")??void 0);return R}}let u=await p.text(),f=u?rn(u):null;if(!p.ok)throw tn(p.status,f,p.headers.get("x-request-id")??void 0);return f}},co=(()=>{try{return"https://api.joinblok.co"}catch{return"http://127.0.0.1:8001"}})(),uo=3e4,fo=3e5;function po(n){return n.endsWith("/")?n.slice(0,-1):n}function ho(n={}){let t=n.baseUrl??process.env.SELDON_BASE_URL??process.env.BLOK_BASE_URL??co,i=n.apiKey??process.env.SELDON_API_KEY??process.env.BLOK_API_KEY??void 0,r=Number(process.env.SELDON_TIMEOUT_MS??process.env.BLOK_TIMEOUT_MS);return{baseUrl:po(t),apiKey:i||void 0,timeoutMs:n.timeoutMs??(Number.isFinite(r)&&r>0?r:uo),specCacheTtlMs:n.specCacheTtlMs??fo}}var mo=new Set(["get","post","put","patch","delete"]),go="_api_v1_";function vo(n){let t=n.indexOf(go);return t>0?n.slice(0,t):n}function yo(n){let t=new Set,i=n.components?.securitySchemes??{};for(let[r,o]of Object.entries(i))o?.type==="apiKey"&&o?.in==="header"&&t.add(r);return t}function wo(n){let t=n.security;if(!Array.isArray(t))return[];let i=[];for(let r of t)r&&typeof r=="object"&&i.push(...Object.keys(r));return i}var bo=class Fi{constructor(t,i){this.operations=t,this.apiKeySchemes=i}operations;apiKeySchemes;static fromSpec(t){let i=yo(t),r=[];for(let[o,s]of Object.entries(t.paths??{}))for(let[l,c]of Object.entries(s)){if(!mo.has(l))continue;let p=c,u=String(p.operationId??`${l}_${o}`),f=Array.isArray(p.parameters)?p.parameters.map(g=>({name:String(g.name),in:g.in,required:!!g.required,description:typeof g.description=="string"?g.description:void 0,schema:g.schema})):[],m=p.tags;r.push({operationId:u,name:vo(u),method:l.toUpperCase(),path:o,tag:m?.[0],summary:typeof p.summary=="string"?p.summary:void 0,description:typeof p.description=="string"?p.description:void 0,params:f,requestBodySchema:Ao(p.requestBody),security:wo(p)})}return new Fi(r,i)}apiKeyOps(){return this.apiKeySchemes.size===0?[]:this.operations.filter(t=>t.security.some(i=>this.apiKeySchemes.has(i)))}get(t){return this.apiKeyOps().find(i=>i.name===t||i.operationId===t)}};function Ao(n){if(!n||typeof n!="object")return;let t=n.content;if(t)return t["application/json"]?.schema??Object.values(t)[0]?.schema}function Pi(){if(process.env.BLOK_CACHE_DIR)return process.env.BLOK_CACHE_DIR;let n=_o()||Io();return Di(n,".cache","blok")}function ko(n){let t=xo("sha256").update(n).digest("hex").slice(0,16);return Di(Pi(),`openapi-${t}.json`)}var To=class{constructor(n,t=fetch){this.config=n,this.fetchImpl=t}config;fetchImpl;async load(n={}){let t=process.env.BLOK_SPEC_PATH;if(t)try{return JSON.parse(await Ti(t,"utf8"))}catch(r){throw new Vn(`Could not read BLOK_SPEC_PATH (${t}): ${String(r)}`)}let i=ko(this.config.baseUrl);if(!n.refresh){let r=await this.readFreshCache(i);if(r)return r}return this.fetchAndCache(i)}async refresh(){return this.load({refresh:!0})}async readFreshCache(n){try{let t=await Ti(n,"utf8"),i=JSON.parse(t);return Date.now()-i.ts<=this.config.specCacheTtlMs?i.spec:null}catch{return null}}async fetchAndCache(n){let t=process.env.SELDON_OPENAPI_URL??process.env.BLOK_OPENAPI_URL??`${this.config.baseUrl}/`,i=t.endsWith(".json")?new URL(t):new URL("/openapi.json",t),r;try{r=await this.fetchImpl(i,{signal:AbortSignal.timeout(this.config.timeoutMs)})}catch(s){throw new Vn(`Could not fetch OpenAPI from ${i.toString()}: ${String(s)}`)}if(!r.ok)throw new Vn(`OpenAPI fetch failed (${r.status}) from ${i.toString()}`,{status:r.status});let o=await r.json();return await this.writeCache(n,o),o}async writeCache(n,t){try{await So(Pi(),{recursive:!0});let i={ts:Date.now(),spec:t};await Co(n,JSON.stringify(i),"utf8")}catch{}}},Jn={upload_qa_package:["POST","/api/v1/code-tests/upload"],create_qa_baseline:["POST","/api/v1/code-tests/qa-experiment"],list_all_baselines:["GET","/api/v1/code-tests/baselines"],get_baseline_plan:["GET","/api/v1/code-tests/baselines/{baseline_id}/plan"],patch_baseline_plan:["PATCH","/api/v1/code-tests/baselines/{baseline_id}/plan"],run_baseline:["POST","/api/v1/code-tests/baselines/{baseline_id}/run"],update_baseline_from_package:["POST","/api/v1/code-tests/baselines/{baseline_id}/update"],delta_baseline:["POST","/api/v1/code-tests/baselines/{baseline_id}/delta"],list_baseline_versions:["GET","/api/v1/code-tests/baselines/{baseline_id}/versions"],promote_baseline:["POST","/api/v1/code-tests/baselines/{baseline_id}/promote"],get_qa_report:["GET","/api/v1/experiments/{experiment_id}/qa-report"],list_qa_experiments:["GET","/integrations/github/experiments"]};function on(n,t={}){return n.replace(/\{([^}]+)\}/g,(i,r)=>{let o=t[r];if(o===void 0)throw new ce(`Missing path parameter: ${r}`);return encodeURIComponent(String(o))})}var Bi=class{config;client;loader;registry;constructor(n={}){this.config=ho(n),this.client=new lo(this.config),this.loader=new To(this.config)}async operations(n={}){if(!this.registry||n.refresh){let t=await this.loader.load(n);this.registry=bo.fromSpec(t)}return this.registry}async apiKeyOps(){return(await this.operations()).apiKeyOps()}async hasOperation(n){return n in Jn?!0:(await this.operations()).get(n)!==void 0}async call(n,t={}){let i=Jn[n];if(i){let[s,l]=i,c=on(l,t.path);return this.client.request(s,c,{query:t.query,body:t.body,timeoutMs:t.timeoutMs})}let r=(await this.operations()).get(n);if(!r)throw new ce(`Unknown or non-API-key operation: ${n}`);let o=on(r.path,t.path);return this.client.request(r.method,o,{query:t.query,body:t.body,timeoutMs:t.timeoutMs})}async upload(n,t,i={}){let r=Jn[n];if(r){let[l,c]=r,p=on(c,i.path);return this.client.upload(l,p,t,{timeoutMs:i.timeoutMs})}let o=(await this.operations()).get(n);if(!o)throw new ce(`Unknown or non-API-key operation: ${n}`);let s=on(o.path,i.path);return this.client.upload(o.method,s,t,{timeoutMs:i.timeoutMs})}};function it(n,t){if(n.length===0)return"";let i=n.map(c=>t.map(p=>p.cell(c))),r=t.map((c,p)=>Math.max(c.header.length,...i.map(u=>u[p].length))),o=(c,p,u="left")=>u==="right"?c.padStart(p):c.padEnd(p),s=t.map((c,p)=>o(c.header,r[p],c.align)).join(" "),l=i.map(c=>c.map((p,u)=>o(p,r[u],t[u].align)).join(" "));return[s,...l].join(`
34
34
  `)}function Yi(n,t){return t<=0||n.length<=t?{shown:n,hiddenCount:0}:{shown:n.slice(0,t),hiddenCount:n.length-t}}var Ei={blocker:0,major:1,minor:2,cosmetic:3},Oi={fail:0,blocked:1,timed_out:2},Li={pass:"\u2705",fail:"\u274C",blocked:"\u{1F6AB}",timed_out:"\u231B"},Lo={pass:"PASS",fail:"FAIL",blocked:"BLOCKED",timed_out:"TIMED_OUT"};function Mo(n){let t=n.toLowerCase();return t==="pass"?"pass":t==="fail"?"fail":t==="timed_out"||t==="timedout"?"timed_out":"blocked"}function $o(n){return n?.evidence?.length?n.evidence.map(t=>{let i={file:t.source_path};return typeof t.start_line=="number"&&typeof t.end_line=="number"&&(i.lines={start:t.start_line,end:t.end_line}),t.chunk_hash&&(i.chunkHash=t.chunk_hash),t.note&&(i.note=t.note),i}):[]}function rt(n){return n.lines?`\`${n.file}\` (lines ${n.lines.start}-${n.lines.end})`:`\`${n.file}\``}function No(n,t,i){let r=[];if(n==="blocked"){let l=t.unmet_preconditions??[];l.length?r.push(`Blocked \u2014 unmet preconditions: ${l.join("; ")}.`):r.push("Blocked before the case could be evaluated.")}else n==="timed_out"&&r.push("The run stalled and never completed; re-run to confirm before triaging.");if(i.length){let l=i.slice(0,3).map(rt).join(", ");r.push(`Likely in ${l}.`)}let o=(t.expected??"").trim(),s=(t.actual??"").trim();return o&&s?r.push(`Expected: ${o} Observed: ${s}`):o?r.push(`Expected: ${o}`):s&&r.push(`Observed: ${s}`),r.length===0&&t.acceptance_criterion&&r.push(`Did not satisfy: ${t.acceptance_criterion}`),r.join(" ").trim()}function Fo(n){if(n.total===0)return"No cases were executed.";let t=Math.round(n.passRate*100),i=[`${n.passed}/${n.total} passed (${t}%)`];return n.failed&&i.push(`${n.failed} failed`),n.blocked&&i.push(`${n.blocked} blocked`),n.timedOut&&i.push(`${n.timedOut} timed out`),i.join(", ")+"."}function Do(n){let t=n.test_plan??{title:"Untitled plan"},i=new Map;for(let g of t.test_cases??[])i.set(g.id,g);let r=n.experiment_id??"",o=n.report?.plan_title||t.title||"Untitled plan",s=t.open_questions??[];if(!n.report)return{experimentId:r,planTitle:o,status:"not_run",summary:{total:t.test_cases?.length??0,passed:0,failed:0,blocked:0,timedOut:0,passRate:0,headline:"Plan generated; not run yet."},failures:[],passed:[],coverage:{journeysExercised:[],unreachable:[],flakyCaseIds:[]},openQuestions:s};let l=n.report,c=l.case_results??[],p=[],u=[];for(let g of c){let T=Mo(g.verdict);if(T==="pass"){u.push({id:g.test_case_id,title:g.title});continue}let D=$o(i.get(g.test_case_id)),R=g.attempts??1,j=g.passes??0;p.push({id:g.test_case_id,title:g.title,area:i.get(g.test_case_id)?.area,verdict:T,severity:g.severity??void 0,acceptanceCriterion:g.acceptance_criterion,expected:g.expected??void 0,actual:g.actual??void 0,reproductionSteps:g.reproduction_steps??[],unmetPreconditions:g.unmet_preconditions??[],evidence:D,hint:No(T,g,D),screenshotUrls:g.screenshot_urls??[],recordingUrl:g.recording_url??void 0,attempts:R,passes:j,flaky:R>1&&j>0&&j<R})}p.sort((g,T)=>{let D=(Oi[g.verdict]??9)-(Oi[T.verdict]??9);if(D!==0)return D;let R=Ei[(g.severity??"").toLowerCase()]??9,j=Ei[(T.severity??"").toLowerCase()]??9;return R-j});let f=l.total_cases??c.length,m={total:f,passed:l.passed??0,failed:l.failed??0,blocked:l.blocked??0,timedOut:l.timed_out??0,passRate:f>0?(l.passed??0)/f:0};return{experimentId:r,planTitle:o,status:"complete",summary:{...m,headline:Fo(m)},failures:p,passed:u,coverage:{journeysExercised:l.coverage?.journeys_exercised??[],unreachable:l.coverage?.unreachable??[],confidenceNote:l.coverage?.confidence_note??void 0,flakyCaseIds:l.coverage?.flaky_case_ids??[]},narrative:l.summary||void 0,openQuestions:s}}var Po=8,Bo=8,Mi=12,zi=5;function Ki(n){let t=n.summary,i=[];t.failed&&i.push(`\u274C${t.failed}`),t.blocked&&i.push(`\u{1F6AB}${t.blocked}`),t.timedOut&&i.push(`\u231B${t.timedOut}`);let r=Math.round(t.passRate*100);return[`${t.passed}/${t.total} passed (${r}%)`,...i].join(" \xB7 ")}function Hi(n){let t=n.failures.map(r=>({verdict:r.verdict,severity:r.severity,id:r.id,title:r.title})),i=n.passed.map(r=>({verdict:"pass",id:r.id,title:r.title}));return[...t,...i]}function Gi(n,t={}){let i=[`Seldon QA \u2014 ${n.planTitle} \xB7 ${Ki(n)}`];if(n.narrative&&i.push("",n.narrative),n.status==="not_run")return i.push("",`Plan has ${n.summary.total} case(s); run it against a URL to produce results.`),i.join(`
35
35
  `);i.push("");for(let s of Hi(n)){let l=Lo[s.verdict].padEnd(Po),c=(s.severity?.toUpperCase()??"").padEnd(Bo);i.push(`${l} ${c} ${s.id} ${s.title}`)}let{shown:r,hiddenCount:o}=t.full?{shown:n.failures,hiddenCount:0}:Yi(n.failures,t.compactLimit??zi);for(let s of r){i.push("",`${s.id} ${s.title}${s.flaky?" (FLAKY)":""}`);let l=(c,p)=>` ${c.padEnd(Mi)}${p}`;s.acceptanceCriterion&&i.push(l("acceptance:",s.acceptanceCriterion)),s.expected&&i.push(l("expected:",s.expected)),s.actual&&i.push(l("observed:",s.actual)),s.evidence.length&&i.push(l("source:",s.evidence.map(rt).join(", "))),s.reproductionSteps.length&&(i.push(l("repro:",s.reproductionSteps[0])),s.reproductionSteps.slice(1).forEach(c=>i.push(" ".repeat(2+Mi)+c))),s.screenshotUrls.length&&i.push(l("evidence:",s.screenshotUrls.join(", "))),s.recordingUrl&&i.push(l("recording:",s.recordingUrl)),!s.acceptanceCriterion&&!s.expected&&!s.actual&&!s.evidence.length&&i.push(l("hint:",s.hint))}return o>0&&i.push("",`\u2026 +${o} more \u2014 pass \`full\` to see every detail block.`),n.coverage.unreachable.length&&i.push("",`Not reached: ${n.coverage.unreachable.join("; ")}`),n.coverage.flakyCaseIds.length&&i.push(`Flaky cases: ${n.coverage.flakyCaseIds.join(", ")}`),i.join(`
36
36
  `)}function Wi(n,t={}){let i=[`**Seldon QA \u2014 ${n.planTitle}** \xB7 ${Ki(n)}`];if(n.narrative&&i.push("",`> ${n.narrative}`),n.status==="not_run")return i.push("",`_Plan has ${n.summary.total} case(s); run it against a URL to produce results._`),i.join(`
@@ -52,5 +52,6 @@ import{createHash as xo}from"crypto";import{mkdir as So,readFile as Ti,writeFile
52
52
  `));let s=()=>{let w=o.opts();return n.makeSdk({baseUrl:w.baseUrl,apiKey:w.apiKey})},l=w=>i(JSON.stringify(w,null,2)),c=(w,k,L)=>{k==="json"?l(w):i(k==="markdown"?Wi(w,{full:L}):Gi(w,{full:L}))},p=(w,k)=>{k==="json"?l(w):i(k==="markdown"?Zi(w):Ji(w))},u=async w=>{let k=w.path??process.cwd(),L=Ie(w,k),B=ge(k),q=w.url||B?.baseline?.run?.url||void 0;r(`Launching QA run for baseline ${L} ...`);let{experimentId:F}=await lr(s(),L,{url:q,credentials:w.credentials});if(Ee(k,$=>({...$,baseline:{...$.baseline,lastRunExperimentId:F,...w.url?{run:{...$.baseline?.run,url:w.url}}:{}}})),r(`Run started \u2014 experiment ${F}. View it in the app under QA, or: seldon baseline report`),!w.wait)return;let Q=pn("Running test cases");await ur(s(),F,{onTick:Q.onTick}),Q.stop(""),r("Test run complete."),c(await ct(s(),F),dn(w,B),w.full)},f=w=>w.option("--url <url>","Live product URL to test against (default: seldon.yml baseline.run.url)").option("--path <dir>","Project directory (default: current directory)").option("--id <baselineId>","Run a specific baseline instead of the saved one").option("--credentials <creds>","Inline login, e.g. 'username: a@b.com, password: secret'").option("--no-wait","Submit the run without waiting for results").option("--md","Render the report as Markdown").option("--json","Render the report as JSON").option("--full","Show every failure/blocked case's full detail block (default: capped at 5, ledger always lists every case)"),m=async w=>{let k=w.path??process.cwd(),L=Cr(w,k),B=ge(k);c(await ct(s(),L),dn(w,B),w.full)},g=w=>w.option("--path <dir>","Project directory (default: current directory)").option("--id <experimentId>","Report on a specific run instead of the last one").option("--md","Render as Markdown (great for PRs / agents)").option("--json","Render as JSON (stable schema for agents)").option("--full","Show every failure/blocked case's full detail block (default: capped at 5, ledger always lists every case)"),T=o.command("config").description("Manage local CLI configuration.");T.command("show").description("Print the saved config (api key redacted).").action(()=>{let w=ze();l({baseUrl:w.baseUrl,apiKey:w.apiKey?"****":void 0})}),T.command("set-key <key>").description("Save an API key to the config file.").action(w=>{un({apiKey:w}),r("Saved API key.")}),T.command("set-url <url>").description("Save the API base URL to the config file.").action(w=>{un({baseUrl:w}),r("Saved base URL.")}),o.command("login <key>").description("Save your API key (alias for `config set-key`).").action(w=>{un({apiKey:w}),r("Saved API key. You're ready to go.")}),o.command("init [path]").description("Create seldon.yml for this project and preview what a baseline would include.").action(async w=>{let k=w??process.cwd();await Er(k,{status:r})});let D=o.command("baseline",{hidden:!0}).description("Grouped aliases of the top-level baseline verbs (back-compat)."),R=w=>w?{hidden:!0}:{},j=async w=>{let{baselines:k}=await lt(s());if(w.json){l({baselines:k});return}if(k.length===0){i("No baselines found for this API key. Generate one with: seldon generate");return}i(ht(`${k.length} baseline${k.length===1?"":"s"}`)+`
53
53
  `),i(it(k,[{header:"ID",cell:L=>L.id},{header:"NAME",cell:L=>L.displayName},{header:"SOURCE",cell:L=>L.createdVia},{header:"CASES",align:"right",cell:L=>String(L.caseCount)},{header:"STATUS",cell:L=>L.status},{header:"UPDATED",cell:L=>L.createdAt?new Date(L.createdAt).toISOString().slice(0,10):"?"}]))},ne=(w,k=!1)=>w.command("list",R(k)).description("List every baseline your API key can see (across every source), not just the one saved locally.").option("--json","Output as JSON").action(j),W=async(w,k)=>{let L=w??process.cwd(),q=ge(L)?.baseline?.generate;r(`Reading codebase at ${L} ...`);let F=await rr(s(),L,{scope:k.scope??q?.scope,label:k.name,filename:q?.filename,ignoreDirs:q?.ignoreDirs});Ee(L,$=>({...$,baseline:{...$.baseline,lineageId:F.lineageId}})),r(`Uploaded ${F.fileCount} file(s); baseline created (lineage ${F.lineageId}).`);let Q={lineageId:F.lineageId};if(k.wait){let $=pn("Generating test plan (this can take a few minutes)"),Z=await or(s(),F.lineageId,{onTick:$.onTick});$.stop(""),Ee(L,pe=>({...pe,baseline:{...pe.baseline,baselineId:Z.id}})),Q={lineageId:F.lineageId,baselineId:Z.id,caseCount:Z.caseCount},r(`Baseline ready: ${Z.caseCount} test case(s). It now appears in the app under QA Baselines.`),r("Run it with: seldon run --url <url>")}k.json?l({...F,...Q}):r(`Saved baseline id to ${Re(L)}`)},V=(w,k=!1)=>w.command("generate [path]",R(k)).description("Read a local codebase, build a QA baseline (test plan), and tie it to this folder.").option("--scope <text>","Free-text emphasis for the analysis (e.g. 'focus on checkout')").option("--name <name>","Baseline name shown in the app (unique per tenant)").option("--no-wait","Return immediately without waiting for the plan to finish generating").option("--json","Output the baseline handle as JSON").action(W),z=async w=>{let k=w.path??process.cwd(),L=Ie(w,k),B=await qe(s(),L),q=ge(k);l({baselineId:B.baseline_id??L,lineageId:B.lineage_id,planTitle:B.title,caseCount:B.case_count??B.cases?.length??0,status:B.status,targetUrl:B.target_url||void 0,lastRunExperimentId:q?.baseline?.lastRunExperimentId||void 0,defaultUrl:q?.baseline?.run?.url||void 0})},X=(w,k=!1)=>w.command("show",R(k)).description("Show the baseline tied to this folder and its status.").option("--path <dir>","Project directory (default: current directory)").option("--id <baselineId>","Inspect a specific baseline instead of the saved one").action(z),oe=async w=>{let k=w.path??process.cwd(),L=Ie(w,k),B=await qe(s(),L),q=B.cases??[];if(w.json){l(q);return}let F=ge(k),Q=q.map($=>$.id);i(`${B.title??"Baseline"} \u2014 ${q.length} case(s)`);for(let $ of q)i(` [${Oa($.id,F,Q)}] [${$.id}] ${$.title} (${$.priority??"?"} \xB7 ${$.area??"general"})`),$.acceptance_criterion&&i(` ${$.acceptance_criterion}`);i(""),i("Legend: [s]=skip [o]=only [f]=fixed [ ]=run normally \xB7 edit interactively: seldon cases")},te=async w=>{if(!w.json&&!w.list&&process.stdin.isTTY){let k=w.path??process.cwd(),L=Ie(w,k);await _r(s(),k,L,{status:r});return}await oe(w)},Y=(w,k=!1)=>w.command("cases",R(k)).description("Browse and edit test-case selection \u2014 skip / only / fixed (interactive in a terminal; --list/--json for a static dump).").option("--path <dir>","Project directory (default: current directory)").option("--id <baselineId>","Inspect a specific baseline instead of the saved one").option("--json","Output full case objects as JSON (always static, never interactive)").option("--list","Force the static text listing even in an interactive terminal").action(te),U=async(w,k)=>{let L=w??process.cwd(),B=Ie(k,L),q=ge(L),F=await At(`Re-evaluating baseline against ${L}`,()=>pr(s(),L,B,{seldonYaml:pt(L),filename:k.name??q?.baseline?.generate?.filename,ignoreDirs:q?.baseline?.generate?.ignoreDirs}));r(`Update complete: ${F.summary.headline}`),p(F,dn(k,q))},ae=(w,k=!1)=>w.command("update [path]",R(k)).description("Re-evaluate the WHOLE repo and move the committed head. Fixed cases are always kept.").option("--id <baselineId>","Update a specific baseline instead of the saved one").option("--name <filename>","Archive name reported to the API").option("--md","Render the diff as Markdown").option("--json","Render the diff as JSON").action(U),he=async(w,k)=>{let L=w??process.cwd(),B=Ie(k,L),q=ge(L),F,Q=!!k.full;if(k.zip)F=new Uint8Array(Ta(k.zip));else if(k.full)F=(await ln(L,{ignoreDirs:q?.baseline?.generate?.ignoreDirs})).bytes,Q=!0;else{let Z=await ir(L,{base:k.base});r(`Reassessing ${Z.fileCount} changed file(s) against the baseline ...`),F=Z.bytes}let $=await At("Reassessing baseline against the changes",()=>dr(s(),B,{zipBytes:F,full:Q,targetUrl:k.url,seldonYaml:pt(L),autoRun:k.autoRun}));r(`Review complete: ${$.report.summary.headline}`),Ee(L,Z=>({...Z,baseline:{...Z.baseline,...$.experimentId?{lastRunExperimentId:$.experimentId}:{}}})),$.experimentId?r(`Draft ${$.draftBaselineId} \u2014 running affected cases as experiment ${$.experimentId} (view under QA).`):r(`Draft ${$.draftBaselineId} \u2014 no affected cases ran (nothing affected, or no target URL).`),p($.report,dn(k,q))},re=(w,k=!1)=>w.command("review [path]",R(k)).alias("delta").description("PR-style: reassess from your code changes into a DRAFT and auto-run the affected cases (does NOT move the head).").option("--id <baselineId>","Reassess a specific baseline instead of the saved one").option("--zip <file>","Use a prebuilt zip (scoped changed-files, or a repo zip with --full) instead of building from git").option("--full","Re-map the whole repo (adds cases for new files) instead of only the changed area").option("--base <ref>","Scoped mode: diff <base>...HEAD instead of the working tree vs HEAD").option("--url <url>","Target URL for the auto-run of the affected cases").option("--no-auto-run","Write the draft without running the affected cases").option("--md","Render the diff as Markdown").option("--json","Render the diff as JSON").action(he),me=async w=>{let k=w.path??process.cwd(),L=Ie(w,k),{versions:B,committedHeadId:q}=await ar(s(),L);if(w.json){l({committedHeadId:q,versions:B});return}if(B.length===0){i("No versions found for this baseline.");return}i(ht(`${B.length} version${B.length===1?"":"s"} \u2014 committed head: ${q??"none"}`)+`
54
54
  `),i(it(B,[{header:"",cell:F=>F.isHead?"*":F.status==="draft"?"d":" "},{header:"ID",cell:F=>F.id},{header:"STATUS",cell:F=>F.status},{header:"SOURCE",cell:F=>F.createdVia},{header:"CASES",align:"right",cell:F=>String(F.caseCount)},{header:"UPDATED",cell:F=>F.createdAt?new Date(F.createdAt).toISOString().slice(0,10):"?"}])),i(wr(`
55
- * = committed head (what runs use) \xB7 d = draft \xB7 promote a draft: seldon promote <id>`))},H=(w,k=!1)=>w.command("versions",R(k)).description("List every version of this baseline's lineage \u2014 the committed head and any draft proposals.").option("--path <dir>","Project directory (default: current directory)").option("--id <baselineId>","Inspect a specific lineage (any version id) instead of the saved one").option("--json","Output as JSON").action(me),se=async(w,k)=>{let L=k.path??process.cwd(),B=w??Ie(k,L),q=await sr(s(),B),F=q.baseline_id??B;Ee(L,Q=>({...Q,baseline:{...Q.baseline,baselineId:F}})),r(`Promoted to committed head ${F} (${q.case_count??q.cases?.length??0} case(s)). Runs now resolve to it.`)},J=[ne,V,X,Y,ae,re,H,(w,k=!1)=>w.command("promote [versionId]",R(k)).description("Promote a draft version to the committed head (the version runs resolve to).").option("--path <dir>","Project directory (default: current directory)").option("--id <versionId>","Promote a specific draft version instead of the positional arg / saved one").action(se)];for(let w of J)w(o,!1),w(D,!0);if(f(o.command("run").description("Run the current baseline against a live URL and print the report.")).action(u),g(o.command("report").description("Show the latest QA report for the current baseline (clean and actionable).")).action(m),f(D.command("run",{hidden:!0})).action(u),g(D.command("report",{hidden:!0})).action(m),t.length>0){let w=o.command("api").description("Call any API operation directly by name (auto-generated from the live OpenAPI spec).\n seldon api <operation> [--path key=value] [--query key=value] [--data '{json}']\n Run `seldon api --help` to see all available operations.");for(let k of t)w.command(k.name).description(k.summary??`${k.method} ${k.path}`).option("--path <pairs...>","Path params as key=value").option("--query <pairs...>","Query params as key=value").option("--data <json>","JSON request body").action(async L=>{l(await s().call(k.name,{path:Lr(L.path),query:Lr(L.query),body:L.data?JSON.parse(L.data):void 0}))})}return o}function $r(n){let t=Sr(n,ze(),process.env);return new Bi(t)}async function La(){try{return await $r({}).apiKeyOps()}catch{return[]}}async function Ma(){let n=yr(process.argv)?await La():[];await Mr({makeSdk:$r},n).parseAsync(process.argv)}Ma().catch(n=>{process.stderr.write(`${n.message}
55
+ * = committed head (what runs use) \xB7 d = draft \xB7 promote a draft: seldon promote <id>`))},H=(w,k=!1)=>w.command("versions",R(k)).description("List every version of this baseline's lineage \u2014 the committed head and any draft proposals.").option("--path <dir>","Project directory (default: current directory)").option("--id <baselineId>","Inspect a specific lineage (any version id) instead of the saved one").option("--json","Output as JSON").action(me),se=async(w,k)=>{let L=k.path??process.cwd(),B=w??Ie(k,L),q=await sr(s(),B),F=q.baseline_id??B;Ee(L,Q=>({...Q,baseline:{...Q.baseline,baselineId:F}})),r(`Promoted to committed head ${F} (${q.case_count??q.cases?.length??0} case(s)). Runs now resolve to it.`)},J=[ne,V,X,Y,ae,re,H,(w,k=!1)=>w.command("promote [versionId]",R(k)).description("Promote a draft version to the committed head (the version runs resolve to).").option("--path <dir>","Project directory (default: current directory)").option("--id <versionId>","Promote a specific draft version instead of the positional arg / saved one").action(se)];for(let w of J)w(o,!1),w(D,!0);if(f(o.command("run").description("Run the current baseline against a live URL and print the report.")).action(u),g(o.command("report").description("Show the latest QA report for the current baseline (clean and actionable).")).action(m),f(D.command("run",{hidden:!0})).action(u),g(D.command("report",{hidden:!0})).action(m),t.length>0){let w=o.command("api").description("Call any API operation directly by name (auto-generated from the live OpenAPI spec).\n seldon api <operation> [--path key=value] [--query key=value] [--data '{json}']\n Run `seldon api --help` to see all available operations.");for(let k of t)w.command(k.name).description(k.summary??`${k.method} ${k.path}`).option("--path <pairs...>","Path params as key=value").option("--query <pairs...>","Query params as key=value").option("--data <json>","JSON request body").action(async L=>{l(await s().call(k.name,{path:Lr(L.path),query:Lr(L.query),body:L.data?JSON.parse(L.data):void 0}))})}return o}function $r(n){let t=Sr(n,ze(),process.env);return new Bi(t)}async function La(){try{return await $r({}).apiKeyOps()}catch{return[]}}function Ma(){let n=()=>{process.stderr.write(`
56
+ \x1B[?25h`),process.stderr.write("Interrupted. In-flight work may still complete server-side \u2014 check `seldon list` / `seldon report`.\n"),process.exit(130)};process.on("SIGINT",n),process.on("SIGTERM",n)}async function $a(){Ma();let n=yr(process.argv)?await La():[];await Mr({makeSdk:$r},n).parseAsync(process.argv)}$a().catch(n=>{process.stderr.write(`${n.message}
56
57
  `),process.exit(1)});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seldonqa/cli",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "Seldon - generate QA baselines from any codebase and run them from your terminal (thin client over @blok/sdk).",
5
5
  "type": "module",
6
6
  "bin": {